ΠΑΝΔΠΗΣΖΜΗΟ ΠΑΣΡΩΝ ΣΜΖΜΑ ΜΖΥΑΝΗΚΩΝ Ζ/Τ ΚΑΗ ΠΛΖΡΟΦΟΡΗΚΖ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΠΑΝΔΠΗΣΖΜΗΟ ΠΑΣΡΩΝ ΣΜΖΜΑ ΜΖΥΑΝΗΚΩΝ Ζ/Τ ΚΑΗ ΠΛΖΡΟΦΟΡΗΚΖ"

Transcript

1 ΠΑΝΔΠΗΣΖΜΗΟ ΠΑΣΡΩΝ ΣΜΖΜΑ ΜΖΥΑΝΗΚΩΝ Ζ/Τ ΚΑΗ ΠΛΖΡΟΦΟΡΗΚΖ Υλοποίηςη Προςωποποιημένησ Πολυμεςικθσ Εφαρμογθσ Ηλεκτρονικοφ Εμπορίου με Λειτουργίεσ Χωρικθσ Αναζθτηςησ Γηπισκαηηθή Δξγαζία γηα ην Μεηαπηπρηαθφ Πξφγξακκα Σπνπδψλ Δπηζηήκεο θαη Τερλνινγίαο Υπνινγηζηψλ ηνπ Μελαδάθε Νηθόιανπ Δπηβιέπσλ θαζεγεηήο: θ. Μεγαιννηθνλόκνπ Βαζίιεηνο Πάηξα 2011

2 Σξηκειήο Δμεηαζηηθή Δπηηξνπή Η παξνχζα δηπισκαηηθή εξγαζία εγθξίζεθε, φπσο νξίδεηαη, απφ ηξηκειή εμεηαζηηθή επηηξνπή ε νπνία απνηεινχληαλ απφ ηνπο: θ.γαξνθαιάθε Ισάλλε θ.μεγαιννηθνλφκνπ Βαζίιεην θ.φαηδειπγεξνχδε Ισάλλε Θα ήζεια λα ηνπο επραξηζηήζσ ηδηαηηέξσο γηα ηελ ζηήξημε θαη ηελ έγθξηζε ηνπο. 1

3 Πεξίιεςε Σκοπόσ τθν εργαςίασ είναι θ δθμιουργία ενόσ ολοκλθρωμζνου θλεκτρονικοφ καταςτιματοσ το οποίο κα παρζχει ςτουσ χριςτεσ μεταξφ άλλων, δυνατότθτα χωρικισ αναηιτθςθσ προϊόντων, και προςωποποίθςθσ. Η εφαρμογι υποςτθρίηει όλεσ τισ λειτουργίεσ ενόσ ςφγχρονου θλεκτρονικοφ καταςτιματοσ προςκζτοντασ ςε αυτζσ ζνα πλικοσ καινοτόμων λειτουργιών. Συγκεκριμζνα υποςτθρίηει λειτουργία καλακιοφ αγορών και παραγγελιών μζςω πιςτωτικισ κάρτασ χρθςιμοποιώντασ ζνα εικονικό ςφςτθμα τραπεηικών ςυναλλαγών, πλικοσ λειτουργιών αναηιτθςθσ προϊόντων, διαφορετικά είδθ προςωποποίθςθσ, πολλαπλά επίπεδα αςφάλειασ με χριςθ κρυπτογράφθςθσ, δθμιουργία λογαριαςμών χρθςτών, forum κα. Στισ καινοτομίεσ τθσ εφαρμογισ ςυγκαταλζγονται θ χωρικι αναηιτθςθ προϊόντων με χριςθ Τ.Κ., θ αναηιτθςθ αντίςτοιχων τιμών ςε άλλα καταςτιματα και θ social προςωποποίθςθ με χριςθ βαρών ςτουσ παράγοντεσ προςωποποίθςθσ. Ιδιαίτερθ βαρφτθτα ζχει δοκεί επίςθσ ςτθν ςυντθρθςιμότθτα του ςυςτιματοσ και ςτθ φιλικότθτα προσ τον χριςτθ. Οι τεχνολογίεσ που χρθςιμοποιικθκαν είναι κατά κφριο λόγο HTML, CSS, PHP, Postgresql, smarty και λειτουργικό ςφςτθμα Linux. Δπραξηζηίεο Γηα ηελ νινθιήξσζε ηεο παξαθάησ δηπισκαηηθήο εξγαζίαο ζα ήζεια λα επραξηζηήζσ ζεξκά ηνλ επηβιέπνληα θαζεγεηή θ. Βαζίιεην Μεγαιννηθνλφκνπ γηα ηελ εκπηζηνζχλε πνπ κνπ έδεημε κε ηελ αλάζεζε ηεο, θαζψο θαη γηα ηελ εμαηξεηηθά ζεκαληηθή ππνζηήξημε ηνπ θαηά ηε δηάξθεηα δηεθπεξαίσζεο ηεο. Τέινο ζα ήζεια λα επραξηζηήζσ ηνπο γνλείο κνπ θαη ηνπο θίινπο κνπ γηα ηελ εζηθή θαη ςπρνινγηθή ηνπο ππνζηήξημε ηφζν θαηά ηε δηάξθεηα εθπφλεζεο ηεο δηπισκαηηθήο φζν θαη θαηά νιφθιεξε ηε δηάξθεηα ησλ ζπνπδψλ κνπ. 2

4 Πίλαθαο Πεξηερνκέλσλ Δηζαγσγή.9 ΚΔΦΑΛΑΗΟ 1 ν : ΒΑΗΚΔ ΔΝΝΟΗΔ 1.1 Ζιεθηξνληθό Δκπόξην Οξηζκφο Ηιεθηξνληθνχ Δκπνξίνπ Ιζηνξηθή εμέιημε Δίδε ειεθηξνληθνχ εκπνξίνπ Πιενλεθηήκαηα Ηιεθηξνληθνχ Δκπνξίνπ Πξνβιήκαηα ηνπ ειεθηξνληθνχ εκπνξίνπ Γηαδηθηπαθέο Δθαξκνγέο Ζιεθηξνληθνύ Δκπνξίνπ Οξηζκφο δηαδηθηπαθήο εθαξκνγήο Δπηζπκεηά ραξαθηεξηζηηθά Παξαδείγκαηα Πξνζσπνπνίεζε Οξηζκφο πξνζσπνπνίεζεο Σηφρνη πξνζσπνπνίεζεο Καηεγνξίεο web πξνζσπνπνίεζεο Μέζνδνη web πξνζσπνπνίεζεο..29 ΚΔΦΑΛΑΗΟ 2 ν : ΠΡΟΓΗΑΓΡΑΦΔ ΣΟΤ GREEK - BAY 2.1 Βαζηθέο Λεηηνπξγίεο Καηάινγνο πξνηφλησλ Δγγξαθή ζην ζχζηεκα Φξήζηεο Πσιεηέο Γηαρεηξηζηέο

5 2.1.4 Παξαθνινχζεζε Καηεγνξηψλ Φφξνπκ Αλαδήηεζε Text αλαδήηεζε πξνηφλησλ κε tsvectors θαη βάξε Φσξηθή αλαδήηεζε πξνηφλησλ κε ρξήζε PostGis θαη Τ.Κ Αλαδήηεζε πξνηφλησλ κέζσ ράξηε Σχλζεηε αλαδήηεζε πξνηφλησλ Αζθάιεηα Φξήζε sessions γηα πινήγεζε Φξήζε SSL - https Κξππηνγξάθεζε θσδηθψλ πξφζβαζεο Κξππηνγξάθεζε ζηνηρείσλ πηζησηηθήο θάξηαο πλαιιαγέο Καιάζη αγνξψλ Πξαγκαηνπνίεζε θαη pipeline παξαγγειηψλ Πξνζσπνπνίεζε Απιή πξνζσπνπνίεζε Social πξνζσπνπνίεζε Πξνζσπνπνίεζε κε ρξήζε facebook Cross-Product πξνζσπνπνίεζε Πξνζσπνπνίεζε κε ρξήζε βαξψλ παξαγφλησλ...37 ΚΔΦΑΛΑΗΟ 3 ν : ΣΔΥΝΟΛΟΓΗΔ ΠΟΤ ΥΡΖΗΜΟΠΟΗΖΘΖΚΑΝ 3.1 HTML Τί είλαη ε HTML? Ιζηνξία ηεο HTML Πιενλεθηήκαηα ηεο HTML

6 3.1.4 Μεηνλεθηήκαηα ηεο HTML PHP Τί είλαη ε PHP? Ιζηνξία ηεο PHP Πιενλεθηήκαηα ηεο PHP Μεηνλεθηήκαηα ηεο PHP Postgresql Τί είλαη ε Postgresql? Ιζηνξία ηεο Postgresql Πιενλεθηήκαηα ηεο Postgresql Μεηνλεθηήκαηα ηεο Postgresql Γεηθηνδφηεζε GIST Tsvectors θαη tsqueries Javascript Τί είλαη ε Javascript? Ιζηνξία ηεο Javascript Πιενλεθηήκαηα ηεο Javascript Μεηνλεθηήκαηα ηεο Javascript Linux Τί είλαη ηα Linux? Ιζηνξία ησλ Linux Πιενλεθηήκαηα ησλ Linux Μεηνλεθηήκαηα Smarty Τί είλαη ην smarty? Πιενλεθηήκαηα ηνπ smarty

7 ΚΔΦΑΛΑΗΟ 4 ν : ΥΔΓΗΑΜΟ ΒΑΖ ΓΔΓΟΜΔΝΩΝ 4.1 Οληόηεηεο θαη γλσξίζκαηα Σν Γηάγξακκα Οληνηήησλ-ρέζεσλ Σν ρεζηαθό Γηάγξακκα Τινπνίεζε ηεο Βάζεο Ο πίλαθαο ησλ ρξεζηψλ users Ο πίλαθαο ησλ θαηαζηεκάησλ store Ο πίλαθαο ησλ θαηεγνξηψλ category Ο πίλαθαο ησλ ΤΚ zip_code Ο πίλαθαο ησλ πξνηφλησλ product Ο πίλαθαο product_ category Ο πίλαθαο ησλ παξαγγειηψλ order_table Ο πίλαθαο order_product Οη πίλαθεο ηνπ forum Βνεζεηηθνί πίλαθεο Σεκαληηθέο εληνιέο ζηελ Postgresql ΚΔΦΑΛΑΗΟ 5 ν : ΒΑΗΚΔ ΛΔΗΣΟΤΡΓΗΔ 5.1 Καηάινγνο Πξνηόλησλ Υπεξθαηεγνξίεο Καηεγνξίεο Λεπηνκέξεηεο πξνηφληνο Σειηδνπνίεζε Αλαδήηεζε ηηκψλ ζε άιια sites Φόξκα Δηζαγσγήο ζην ύζηεκα..78 6

8 5.3 Ζ ειίδα ησλ Γηαρεηξηζηώλ Δπεμεξγαζία θαηεγνξηψλ Δπεμεξγαζία πξνηφλησλ Δπεμεξγαζία ρξεζηψλ Δπεμεξγαζία παξαγγειηψλ Δπεμεξγαζία θαιαζηνχ αγνξψλ Ζ ειίδα ησλ Δγγεγξακκέλσλ Υξεζηώλ Αλέβαζκα πξνηφλησλ πξνο πψιεζε Δπεμεξγαζία πξνηφλησλ Δπεμεξγαζία πξνθίι Δπεμεξγαζία θαιαζηνχ αγνξψλ Παξαθνινχζεζε παξαγγειηψλ Δπεμεξγαζία ζηνηρείσλ πηζησηηθήο θάξηαο Subscribe ζε θαηεγνξίεο Φόξνπκ Θέκαηα Posts 104 ΚΔΦΑΛΑΗΟ 6 ν : ΛΔΗΣΟΤΡΓΗΔ ΑΝΑΕΖΣΖΖ 6.1 Απιή αλαδήηεζε πξνηόλησλ Υσξηθή αλαδήηεζε πξνηόλησλ Αλαδήηεζε πξνηόλησλ κε ρξήζε ράξηε ύλζεηε αλαδήηεζε πξνηόλησλ.117 ΚΔΦΑΛΑΗΟ 7 ν : ΑΦΑΛΔΗΑ 7.1 Υξήζε Sessions Υξήζε SSL - https

9 7.3 Κξππηνγξάθεζε θσδηθώλ πξόζβαζεο Κξππηνγξάθεζε ζηνηρείσλ πηζησηηθήο θάξηαο ΚΔΦΑΛΑΗΟ 8 ν : ΤΝΑΛΛΑΓΔ 8.1 Καιάζη αγνξώλ Pipeline παξαγγειηώλ ΚΔΦΑΛΑΗΟ 9 ν : ΠΡΟΩΠΟΠΟΗΖΖ 9.1 Απιή πξνζσπνπνίεζε Social πξνζσπνπνίεζε Cross - Product πξνζσπνπνίεζε Πξνζσπνπνίεζε κε ρξήζε βαξώλ παξαγόλησλ Άιιεο κνξθέο πξνζσπνπνίεζεο Βηβιηνγξαθία 148 Δπίινγνο 149 8

10 Δηζαγσγή Αληηθείκελν ηεο παξνχζαο δηπισκαηηθήο εξγαζίαο είλαη ε αλάπηπμε κίαο εθαξκνγήο ειεθηξνληθνχ κε πιήξε ιεηηνπξγηθφηεηα θαη ε ελζσκάησζε ζε απηήλ κηαο ζεηξάο λέσλ ιεηηνπξγηψλ. Σηελ εθαξκνγή απηή εηζέξρνληαη ρξήζηεο πξφζπκνη λα αγνξάζνπλ ή λα πνπιήζνπλ πξντφληα. Υπάξρεη ππνζηήξημε εγγξαθήο πνπ δίλεη επηπιένλ δπλαηφηεηεο ζηνπο ρξήζηεο, πξφζβαζε ζηνλ θαηάινγν ησλ πξντφλησλ ν νπνίνο είλαη δηαξζξσκέλνο ζε κνξθή θαηαζηήκαηνο (ππεξθαηεγνξίαο) θαη θαηεγνξηψλ, πνιιαπιέο δπλαηφηεηεο αλαδήηεζεο, πξνζσπνπνίεζε, θξππηνγξάθεζε θσδηθψλ γηα αζθάιεηα ζπλαιιαγψλ, ππνζηήξημε θαιαζηνχ αγνξψλ θαη παξαγγειηψλ θαη αξθεηέο άιιεο ιεηηνπξγίεο. Σηηο ιεηηνπξγίεο αλαδήηεζεο έρεη πξνζηεζεί ε αλαδήηεζε βάζε απφζηαζεο κε ρξήζε ηνπ ΤΚ, επίζεο ππάξρεη δπλαηφηεηα αλαδήηεζεο ηηκψλ ησλ πξντφλησλ ζε άιια θαηαζηήκαηα αιιά θαη πξνζσπνπνίεζε κε ρξήζε βαξψλ ζηνπο παξάγνληεο πνπ ρξεζηκνπνηνχληαη. ια ηα δεδνκέλα απνζεθεχνληαη ζε κία βάζε δεδνκέλσλ ρξεζηκνπνηψληαο ηελ Postgresql ελψ ν ζρεδηαζκφο ηεο εθαξκνγήο έγηλε θπξίσο ζε php θαη HTML κε ηε ρξήζε ηνπ web template ζπζηήκαηνο, smarty. Σην θεθάιαην 1 παξνπζηάδνληαη θάπνηεο βαζηθέο έλλνηεο θαη φξνη θαη ζπγθεθξηκέλα γίλεηαη αλαθνξά ζην Ηιεθηξνληθφ Δκπφξην, ηα είδε ηνπ, ηελ εμέιημε ηνπ, ηα πιενλεθηήκαηα θαη ηα κεηνλεθηήκαηα ηνπ θαζψο θαη ζηα επηζπκεηά ραξαθηεξηζηηθά κηαο δηαδηθηπαθήο εθαξκνγέο. Τέινο παξνπζηάδνληαη ζρεηηθά παξαδείγκαηα. Σην θεθάιαην 2 αλαθέξνληαη νη πξνδηαγξαθέο πνπ πξέπεη λα έρεη ην ζχζηεκα πνπ ζα πινπνηεζεί, ηα θχξηα ραξαθηεξηζηηθά ηνπ θαη νη ιεηηνπξγίεο ηνπ. Σην θεθάιαην 3 παξνπζηάδνληαη νη ηερλνινγίεο πνπ ρξεζηκνπνηήζεθαλ, ε ηζηνξηθή ηνπο εμέιημε, ηα πιενλεθηήκαηα θαη ηα κεηνλεθηήκαηα ηνπο. Σην θεθάιαην 4 παξνπζηάδεηαη ε δηαδηθαζία ζρεδηαζκνχ ηεο βάζεο δεδνκέλσλ πνπ δεκηνπξγήζεθε, ην ER θαη ην ζρεζηαθφ δηάγξακκα, νη πίλαθεο θαη θάπνηεο θχξηεο εληνιέο γηα ρξήζε ηεο. Σην θεθάιαην 5 γίλεηαη αλαθνξά ζηηο βαζηθέο ιεηηνπξγίεο ηνπ θαηαζηήκαηνο φπσο ηελ εγγξαθή ζε απηφ, ηνλ θαηάινγν πξντφλησλ, ηελ ζειίδα ησλ δηαρεηξηζηψλ, ηελ αλαδήηεζε ηηκψλ ζε άιια sites, ην forum θα. Σην θεθάιαην 6 παξνπζηάδνληαη νη ιεηηνπξγίεο αλαδήηεζεο πνπ ππνζηεξίδεη ην θαηάζηεκα θαη ζηνλ ηξφπν πινπνίεζεο ηνπο θαη δίλεηαη ηδηαίηεξε βαξχηεηα ζηελ ρσξηθή αλαδήηεζε πξντφλησλ. 9

11 Σην θεθάιαην 7 γίλεηαη αλαθνξά ζηηο ελέξγεηεο πνπ έγηλαλ γηα ηελ αζθάιεηα ηνπ ζπζηήκαηνο, ζηελ θξππηνγξάθεζε θσδηθψλ πξφζβαζεο ζηελ ππνζηήξημε SSL θαη ζηνλ ηξφπν πνπ πξαγκαηνπνηήζεθαλ. Σην θεθάιαην 8 παξνπζηάδεηαη ε ππνζηήξημε ζπλαιιαγψλ, ην θαιάζη αγνξψλ θαη ην pipeline ησλ παξαγγειηψλ πνπ ππνζηεξίδεη ε εθαξκνγή. Σην θεθάιαην 9 γίλεηαη αλαθνξά ζηηο ιεηηνπξγίεο πξνζσπνπνίεζεο ηνπ ζπζηήκαηνο θαη παξνπζηάδεηαη ε πξνζσπνπνίεζε κε βάξε παξαγφλησλ πξνζσπνπνίεζεο, 10

12 ΚΔΦΑΛΑΗΟ 1 ν ΒΑΗΚΔ ΔΝΝΟΗΔ 1.1 Ζιεθηξνληθό Δκπόξην Οξηζκφο Ηιεθηξνληθνχ Δκπνξίνπ Ηιεθηξνληθφ εκπφξην είλαη νπνηαδήπνηε ζπλαιιαγή πξαγκαηνπνηείηαη ειεθηξνληθά, δειαδή κε ηε ρξήζε ειεθηξνληθψλ ππνινγηζηψλ θαη ππεξεζηψλ δηαδηθηχνπ, παξαθάκπηνληαο ηα θπζηθά κέζα θαη ηνλ αλζξψπηλν παξάγνληα θαη επνκέλσο ηπρφλ πξνβιήκαηα πνπ απηά δεκηνπξγνχλ Ιζηνξηθή εμέιημε Οπζηαζηηθά ην ειεθηξνληθφ εκπφξην έθαλε ηελ εκθάληζε ηνπ ηε δεθαεηία ηνπ 1970 φηαλ νη ηξάπεδεο πηνζέηεζαλ ζπζηήκαηα ειεθηξνληθήο κεηαθνξάο πφξσλ, κε ρξήζε βέβαηα φρη ηνπ internet αιιά αζθαιψλ ηδησηηθψλ δηθηχσλ γλσζηψλ ζαλ VPN. Καηά ηε δηάξθεηα ηεο δεθαεηίαο ηνπ 1980 κε ηε ρξήζε ηεο αξρηηεθηνληθήο αληαιιαγήο κελπκάησλ αλνίγεη ν δξφκνο ψζηε λα γίλνληαη ειεθηξνληθά πνιιέο ιεηηνπξγίεο πνπ απαηηνχζαλ ραξηί. Οη ειεθηξνληθέο επηθνηλσλίεο πιένλ γίλνληαη απαξαίηεηεο γηα θάζε επηρείξεζε θαζψο είλαη επθνιφηεξεο, ηαρχηεξεο θαη κε ζεκαληηθά κηθξφηεξν θφζηνο. Η κεγάιε άλζεζε ηνπ ειεθηξνληθνχ εκπνξίνπ ήξζε ηελ δεθαεηία ηνπ 1990 θαη αηηία ήηαλ ε εμάπισζε ηνπ δηαδηθηχνπ. Με ηε ρξήζε ησλ ππεξεζηψλ απνζηνιήο ειεθηξνληθψλ κελπκάησλ ( ), ηειεδηαζθέςεσλ, chat rooms, ειεθηξνληθψλ δεκνζηεχζεσλ θ.α. θάζε επηρείξεζε ζρεδφλ άξρηζε λα ρξεζηκνπνηεί πηπρέο ηνπ ειεθηξνληθνχ εκπνξίνπ. 11

13 Πξνο απηήλ ηελ θαηεχζπλζε βνήζεζε ζεκαληηθά θαη ε επθνιία απφθηεζεο θαη ρξήζεο ησλ pc s κεηά ηελ αλαθάιπςε ησλ windows. Δπηπιένλ αλαθαιχςεηο φπσο ρξήζε ηεο θξππηνγξάθεζεο θαη επθπή ζπζηήκαηα ειέγρνπ ζε ζπλδπαζκφ κε ηελ επξεία ρξήζε πηζησηηθψλ θαξηψλ δηεπθφιπλε ηελ εμέιημε ηνπ ειεθηξνληθνχ εκπνξίνπ θαη αλαβάζκηζε ηελ αμηνπηζηία ηνπ. Πιένλ είλαη εχθνιν γηα ηνλ θάζε απιφ ρξήζηε λα ζπλδεζεί ζε online ζχζηεκα ειεθηξνληθνχ εκπνξίνπ θαη πξαγκαηνπνηήζεη ηηο ζπλαιιαγέο πνπ επηζπκεί. Τν ειεθηξνληθφ εκπφξην έρεη δηεηζδχζεη ζε φιεο ηηο πηπρέο ηεο θαζεκεξηλφηεηαο, απφ απιέο αγνξέο κέρξη θαη ζπλαιιαγέο κε ην θξάηνο. Σην κέιινλ αλακέλεηαη αθφκα κεγαιχηεξε άλνδνο θαη ρξήζε, θαζψο ηα πιενλεθηήκαηα είλαη πνιιά πεξηζζφηεξα απφ ηα πξνβιήκαηα, ηα νπνία αληηκεησπίδνληαη θαη ηείλνπλ λα εμαιεηθηνχλ Δίδε ειεθηξνληθνχ εκπνξίνπ Μεηαμύ Δπηρεηξήζεσλ - Business to Business (B2B) Πσιήζεηο απφ επηρεηξήζεηο ζε επηρεηξήζεηο, δειαδή θάηη ζαλ ρνλδξηθφ ειεθηξνληθφ εκπφξην. Δπίζεο εθηφο απφ ηηο θιαζζηθέο ιεηηνπξγίεο πψιεζεο θαη αγνξάο νη εθαξκνγέο Β2Β είλαη επξέσο δηαδεδνκέλεο θαη ζε ιεηηνπξγίεο πξνκεζεηψλ θαη γηα απηφ νλνκάδνληαη θαη ζπζηήκαηα ειεθηξνληθψλ πξνκεζεηψλ (e-procurement). Γηα λα επηηεπρζνχλ νη ζπλαιιαγέο κεηαμχ δχν επηρεηξήζεσλ ρξεζηκνπνηείηαη ην extranet, δειαδή ζπλδένληαη κέζσ internet ηα δχν intranets ησλ επηρεηξήζεσλ θαη έηζη επηηπγράλεηαη επθνιφηεξε, γξεγνξφηεξε θαη αζθαιέζηεξε επηθνηλσλία. Με ηηο εθαξκνγέο Β2Β απμάλεηαη ε αζθάιεηα ησλ ζπλαιιαγψλ, θαζψο εθκεδελίδεηαη ε πηζαλφηεηα αλζξψπηλνπ ιάζνπο, απμάλεηαη ε ηαρχηεηα, εθφζνλ δελ ρξεηάδεηαη θπζηθή παξνπζία γηα λα παξαιάβεηο ην δεηνχκελν πξντφλ θαη φιεο νη δηαδηθαζίεο επηθνηλσλίαο πξαγκαηνπνηνχληαη κέζσ αλαθνηλψζεσλ ζε ηζηνζειίδεο θαη πνιιέο θνξέο νη επηβεβαηψζεηο / αθπξψζεηο γίλνληαη απηφκαηα. Δπηπιένλ απινπνηείηαη ε αξρεηνζέηεζε ησλ ζπλαιιαγψλ, νη δηαδηθαζίεο πξνκεζεηψλ θαη ε δηαδηθαζία επαθήο κε εμσηεξηθνχο ζπλεξγάηεο. Τέινο κεηψλεηαη ην θφζηνο πνηθηινηξφπσο, ηφζν απφ ηνλ πεξηνξηζκφ ησλ κεηαθηλήζεσλ θαη ηελ αλάγθε θπζηθήο παξνπζίαο, φζν θαη απφ ηελ εμάιεηςε αλάγθεο εθηππψζεσλ ησλ απαξαίηεησλ εγγξάθσλ, θαζψο κέζσ ησλ B2B εθαξκνγψλ βξίζθνληαη ζε ειεθηξνληθή κνξθή. 12

14 Παξάδεηγκα Β2Β επηρείξεζεο είλαη ε Global Wine & Spirits: Μεηαμύ Δπηρείξεζεο θαη Καηαλαισηή - Business to Costumer (B2C) Πξφθεηηαη γηα «ιηαληθφ» ειεθηξνληθφ εκπφξην θαη είλαη ε πην ζπλεζηζκέλε κνξθή ηνπ. Γειαδή κία επηρείξεζε πνπιάεη πξντφληα ή ππεξεζίεο ζε έλα πειάηε ν νπνίνο κέζσ ηνπ internet επηζθέπηεηαη θαη ρξεζηκνπνηεί ηελ αληίζηνηρε δηαδηθηπαθή εθαξκνγή. Η παξαιαβή γίλεηαη είηε ειεθηξνληθά, αλ κηιάκε πρ γηα ινγηζκηθφ, ηξαγνχδηα ή ειεθηξνληθά βηβιία, είηε ηαρπδξνκηθψο, δειαδή κε παθεηάξηζκα ηνπ πξντφληνο θαη απνζηνιή ζηε δηεχζπλζε ηνπ πειάηε. Τα πιενλεθηήκαηα είλαη ζεκαληηθά ηφζν γηα ηνλ πειάηε ρξήζηε φζν θαη γηα ηελ ίδηα ηελ επηρείξεζε. Ο πειάηεο αγνξάδεη πξντφληα ζε ρακειφηεξεο ηηκέο ρσξίο ηελ αλάγθε λα κεηαβεί ζε θάπνην θαηάζηεκα γηα ην επηηχρεη. Μπνξεί λα πξαγκαηνπνηήζεη ηελ αγνξά επί 24ψξνπ βάζεσο απφ ην ρψξν πνπ απηφο επηζπκεί, ελψ θαη νη ιεηηνπξγίεο αλαδήηεζεο είλαη ζεκαληηθά γξεγνξφηεξεο. Σπλήζσο ηφζν γξήγνξεο φζν ε πιεθηξνιφγεζε ησλ ζηνηρείσλ ηνπ πξντφληνο πνπ ν πειάηεο επηζπκεί λα αγνξάζεη. Δπηπξφζζεηα ηηο πεξηζζφηεξεο θνξέο έρεη πξφζβαζε ζε θξηηηθέο θαη εληππψζεηο άιισλ πειαηψλ θαζψο θαη βαζκνινγίεο ηνπ πξντφληνο, ψζηε λα έρεη κία ζαθέζηεξε εηθφλα ηεο αγνξάο πνπ πξφθεηηαη λα θάλεη. Τέινο κε ηελ πξνζσπνπνίεζε κπνξεί λα ιακβάλεη πξνηάζεηο γηα ηα πξντφληα πνπ ηνλ αθνξνχλ, θαη λα ηξνπνπνηεί ηελ εκθάληζε ηνπ «θαηαζηήκαηνο» φπσο απηφο επηζπκεί. Η επηρείξεζε κε ηε ρξήζε εθαξκνγψλ B2C κπνξεί λα ειέγρεη ηε δήηεζε άξα λα έρεη κφλν ηελ απνιχησο απαξαίηεηε πνζφηεηα απνζεκάησλ. Με απηψλ ηνλ ηξφπν κεηψλεηαη ην θφζηνο απνζήθεπζεο θαη παξαγσγήο πιενλαδφλησλ πξντφλησλ. Δπίζεο 13

15 ζε πνιιέο πεξηπηψζεηο δε ρξεηάδεηαη θαλ ε δεκηνπξγία θαηαζηήκαηνο γηα έθζεζε ησλ πξντφλησλ ή γηα εμππεξέηεζε ησλ πειαηψλ. Με ηε κείσζε ησλ παξαπάλσ εμφδσλ ε επηρείξεζε κπνξεί λα κεηψζεη ηηο ηηκέο ρσξίο λα κεησζεί ην θέξδνο ηεο, γεγνλφο πνπ ηελ θάλεη ζαθψο πην αληαγσληζηηθή. Τν θφζηνο ιεηηνπξγίαο επηηξέπεη ζε κηθξφηεξεο επηρεηξήζεηο λα αληαγσλίδνληαη ζαθψο κεγαιχηεξεο, ελψ κε ηε ρξήζε internet νη απνζηάζεηο εθκεδελίδνληαη θαη ηα φξην δξαζηεξηνπνίεζεο γίλνληαη παγθφζκηα. Δθηφο φκσο απφ ηε κείσζε ηνπ θφζηνπο, κε ηελ πξνζσπνπνίεζε ησλ ζπζηεκάησλ ε επηρείξεζε απνθηάεη πην πηζηνχο πειάηεο, θαη κε ηηο θξηηηθέο θαη βαζκνινγήζεηο ησλ ρξεζηψλ κπνξεί λα βειηηψλεηαη θαη λα δηνξζψλεη ηα πξνβιήκαηα ηεο αλαβαζκίδνληαο ζπλερψο ηελ πνηφηεηα ησλ ππεξεζηψλ ηεο. Δλδεηθηηθά παξαδείγκαηα B2C επηρεηξήζεσλ είλαη νη e-shop θαη ε ebooks:

16 Μεηαμύ Πειαηώλ Costumer to Costumer (C2C) Αθνξά ηηο πεξηπηψζεηο πνπ θάπνηνο απιφο ρξήζηεο πνπιάεη πξντφληα ζε θάπνηνλ άιισλ ρξήζηε κέζσ θάπνηαο δηαδηθηπαθήο εθαξκνγήο. Τν πην θιαζζηθφ παξάδεηγκα είλαη ηα sites δεκνπξαζηψλ φπσο ην e-bay. Τν θπξηφηεξν ραξαθηεξηζηηθφ ησλ C2C εθαξκνγψλ είλαη ε δπλακηθφηεηα ησλ ηηκψλ θαζψο απηέο κεηαβάιινληαη αλάινγα κε ηε δήηεζε. Θα κπνξνχζακε λα πνχκε φηη θαη ην C2C ειεθηξνληθφ εκπφξην εληάζζεηαη ζην B2C θαζψο ν ηδηψηεο πνπ πνπιάεη αληηζηνηρεί ζηελ επηρείξεζε ηνπ B2C. Κιαζζηθφηεξν παξάδεηγκα C2C επηρείξεζεο είλαη ην e-bay: Μεηαμύ Καηαλαισηή θαη Δπηρείξεζεο Costumer to Business (C2B) Σε απηήλ ηελ θαηεγνξία ηνπ ειεθηξνληθνχ εκπνξίνπ θάπνηνο ηδηψηεο θαζνξίδεη κία ηηκή, ε νπνία είλαη θαη δεζκεπηηθή (demand bid), γηα θάπνην πξντφλ θαη ζηε ζπλέρεηα δεηάεη απφ ηνπο πσιεηέο λα θάλνπλ πξνζθνξέο. Πρ έλαο ρξήζηεο ζέιεη λα αγνξάζεη θάπνην βηβιίν κε 20$ θαη δεηάεη απφ δηάθνξα ειεθηξνληθά βηβιηνπσιεία λα απαληήζνπλ αλ δέρνληαη. Φπζηθά απηφ γίλεηαη κέζσ εηδηθά δηακνξθσκέλεο online ππεξεζίαο. 15

17 Μεηαμύ Δπηρείξεζεο θαη Κπβεξλεηηθνύ Φνξέα Business to Government (B2G) Σε απηή ηελ πεξίπησζε θάπνηα επηρείξεζε ζπλαιιάζζεηαη κε θξαηηθφ θνξέα ηηο πεξηζζφηεξεο θνξέο γηα παξνρή ππεξεζηψλ. Φαξαθηεξηζηηθά παξαδείγκαηα είλαη ε θαηαβνιή θφξσλ, ε online απνζηνιή εγγξάθσλ θηι. Παξάδεηγκα B2G επηρείξεζεο είλαη ε onvia: Μεηαμύ Κπβεξλεηηθνύ Φνξέα θαη Πνιηηώλ Government to Citizen (G2C) Αθνξά ζπλαιιαγέο κεηαμχ πνιηηψλ θαη θπβεξλεηηθψλ ππεξεζηψλ φπσο ην ΚΔΠ. Σπρλφηεξεο ιεηηνπξγίεο είλαη ε θαηαβνιή θνξνινγηθψλ δειψζεσλ (TAXIS) θαη ε παξαθνινχζεζε ηεο πνξείαο ηνπο, ε ππνβνιή αηηήζεσλ πξνο επηθχξσζε θαη ε ππνβνιή εξσηήζεσλ ζηα ΚΔΠ. Τo G2C βξίζθεηαη ζε ζπλερή άλνδν θαζψο φιν θαη πεξηζζφηεξεο δεκφζηεο ιεηηνπξγίεο πξαγκαηνπνηνχληαη ειεθηξνληθά. Με απηφλ ηνλ ηξφπν εθκεδελίδεηαη ν ρξφλνο παξακνλήο ζηηο γλσζηέο νπξέο ησλ δεκφζησλ ππεξεζηψλ, ε εμππεξέηεζε είλαη ηχπνπ 24X7, ελψ νη αλάγθεο γηα γξαθηθή χιε θαη ραξηί κεηψλνληαη ξαγδαία. 16

18 Δζσηεξηθό Ζιεθηξνληθό Δκπόξην Γηα ηελ επίηεπμε ηνπ εζσηεξηθνχ ειεθηξνληθνχ εκπνξίνπ ρξεζηκνπνηείηαη ζπλήζσο ελδνδίθηπν (intranet) κε ζθνπφ ηελ θαιχηεξε εζσηεξηθή ιεηηνπξγία ηεο επηρείξεζεο. Με απηφλ ηνλ ηξφπν βειηηψλνληαη ηνκείο φπσο ε επηθνηλσλία, κε ηε ρξήζε , video-conferences θηι, ε δηαλνκή πιεξνθνξηψλ, κέζσ θπξίσο ηεο ειεθηξνληθήο δεκνζίεπζεο θαη ε παξαγσγηθφηεηα πσιήζεσλ. 17

19 1.1.4 Πιενλεθηήκαηα Ηιεθηξνληθνχ Δκπνξίνπ Πιενλεθηήκαηα γηα ηηο Δπηρεηξήζεηο Μείσζε θόζηνπο ιεηηνπξγίαο Τν θφζηνο ιεηηνπξγίαο ηεο επηρείξεζεο κεηψλεηαη αηζζεηά, ηδηαίηεξα φζσλ αθνξά ηηο επηθνηλσλίεο. Γηαδηθαζίεο φπσο 24σξε εμππεξέηεζε πειαηψλ, επηθνηλσλία κεηαμχ ηκεκάησλ, επηθνηλσλία κε πξνκεζεπηέο θηι πξαγκαηνπνηνχληαη κε ηε βνήζεηα ησλ ππνινγηζηψλ ( , video θιήζεηο θηι). Δπηπιένλ ζεκαληηθή κείσζε ηνπ θφζηνπο επηηπγράλεηαη θ κε ηε κείσζε ησλ απνζεκάησλ θαη ησλ ρψξσλ απνζήθεπζεο αθνχ πιένλ ηα πξντφληα παθεηάξνληαη γηα λα ζηαινχλ ηε ζηηγκή πνπ γίλεηαη ε παξαγγειία. Τέινο κεηψλνληαη ζεκαληηθά νη αλάγθεο γηα ραξηί θαη γξαθηθή χιε θαζψο ην ζχλνιν ησλ εγγξάθσλ είλαη ειεθηξνληθά, άξα δελ θνζηίδνπλ. Γηαθήκηζε Με ηελ αμηνπνίεζε ηνπ δηαδηθηχνπ θαη ηα εθαηνκκχξηα ρξεζηψλ πνπ εηζέξρνληαη ζε απηφ θαζεκεξηλά κπνξεί λα ππάξμεη δηαθήκηζε πνπ απεπζχλεηαη ζε ηφζν κεγάιν φγθν αγνξαζηψλ πνπ ρσξίο ηε ρξήζε ηνπ internet ζα απαηηνχληαλ απαγνξεπηηθά πνζά, ηδηαίηεξα γηα ηηο κηθξνκεζαίεο επηρεηξήζεηο γηα λα πξαγκαηνπνηεζεί. Άλνηγκα ζε λέεο αγνξέο Με ηελ νηθνπκεληθφηεηα ηνπ internet, είλαη εχθνιν λα γίλεη άλνηγκα ζε αγνξέο εθηφο ζπλφξσλ ρσξίο λα ρξεηάδεηαη λα δεκηνπξγεζεί θαηάζηεκα ζηηο πεξηνρέο απηέο. Αθφκα θαη κία κηθξή επηρείξεζε κε κία απιή κεηάθξαζε ηεο ζειίδαο ζηελ αληίζηνηρε γιψζζα, κπνξεί κε ειάρηζην θφζηνο λα δξαζηεξηνπνηεζεί ζην εμσηεξηθφ ε αθφκα θαη ζε γεσγξαθηθά δηακεξίζκαηα ηεο ρψξαο πνπ δελ ήηαλ δπλαηφλ πξνεγνπκέλσο. Τν άλνηγκα απηφ είλαη πνιχ εχθνιν γηα ηηο επηρεηξήζεηο ινγηζκηθνχ ή παξνρήο πιεξνθνξηψλ, αιιά αθφκα θαη απηέο πνπ απνζηέιινπλ πξντφληα ην παξαπάλσ θφζηνο έγθεηηαη κφλν ζην θφζηνο κεηαθνξάο. Με ηελ επέθηαζε ζε λέεο αγνξέο εθηφο απφ ηελ αχμεζε ησλ εζφδσλ επσθειείηαη θαη ην θχξνο θαη ε αμηνπηζηία ηεο επηρείξεζεο. 18

20 Μείσζε αλζξώπηλνπ ιάζνπο Με ηε ρξήζε ειεθηξνληθνχ εκπνξίνπ ην αλζξψπηλν ιάζνο εθκεδελίδεηαη. Οη απηνκαηνπνηεκέλεο δηαδηθαζίεο ησλ δηαδηθηπαθψλ εθαξκνγψλ, κε ην ζσζηφ θαη ιεπηνκεξή πάληνηε ζρεδηαζκφ, εγγπνχληαη αμηνπηζηία θαη αζθάιεηα ζε φιεο ηηο ζπλαιιαγέο θαη ηηο δηαπξαγκαηεχζεηο θαζψο θαη ζηηο εηζαγσγέο ζηνηρείσλ πειαηψλ θαη πξντφλησλ. Δπίζεο κε ηε ζπλερή παξαθνινχζεζε ηελ πνξείαο ηεο παξαγγειίαο κέζσ internet ν πειάηεο κπνξεί λα είλαη ζίγνπξνο φηη φια βαίλνπλ θαιψο. Καιύηεξε εμππεξέηεζε πειαηώλ Με ηελ 24σξε εμππεξέηεζε νη πειάηεο κπνξνχλ αλά πάζα ψξα θαη ζηηγκή, θαη απφ φπνπ βξίζθνληαη λα ελεκεξσζνχλ θαη λα ιχζνπλ ηηο απνξίεο ηνπο. Δπίζεο νξηζκέλεο εξσηήζεηο FAQ ιχλνληαη απεπζείαο ρσξίο ηελ ππνβνιή εξσηήκαηνο ελψ πνιχ ρξήζηκα είλαη θαη δηάθνξα forum πνπ δεκηνπξγνχληαη απφ ηνπο ρξήζηεο θαη ιχλνπλ ηηο απνξίεο κεηαμχ ηνπο. ρέζεηο εκπηζηνζύλεο κε ηνπο πειάηεο Με ηελ πξνζσπνπνίεζε ησλ ζπζηεκάησλ δεκηνπξγείηε ζρέζε εκπηζηνζχλεο κε ηνπο πειάηεο θαη απνθηάηαη ην πνιππφζεην loyalty. Οη ρξήζηεο έρνπλ ηελ ςεπδαίζζεζε φηη ην ζχζηεκα ηνπο γλσξίδεη θαη απηφ κπνξεί λα επηηεπρζεί κε έλα απιφ θαισζφξηζκα ή κε κία πξφηαζε γηα αγνξά πξντφλησλ. Σε πνιιέο πεξηπηψζεηο ν θάζε ρξήζηεο κπνξεί λα πξνζαξκφζεη ηελ εκθάληζε ηνπ ζπζηήκαηνο φπσο επηζπκεί άξα ζεσξεηηθά κπνξνχκε λα πνχκε φηη έρνπκε ίδην αξηζκφ θαηαζηεκάησλ κε ηνλ αξηζκφ ησλ ρξεζηψλ. Αύμεζε ηεο αληαγσληζηηθήο δπλαηόηεηαο Με ηε κείσζε ηεο αλάγθεο γηα θπζηθά θαηαζηήκαηα θαη ρψξνπο απνζήθεπζεο κία κηθξή επηρείξεζε κπνξεί κφλν κε έλα θαιφ ζρεδηαζκφ δηαδηθηπαθήο εθαξκνγήο λα αληαγσληζηεί απνηειεζκαηηθά θαη ηζάμηα κεγαιχηεξεο επηρεηξήζεηο ηφζν εγρψξηεο φζν θαη απφ ην εμσηεξηθφ, θάηη πνπ κε ηνπο θιαζζηθνχο ηξφπνπο ιεηηνπξγίαο ζα ήηαλ αδχλαην. Ιδηαίηεξα νη επηρεηξήζεηο παξνρήο ινγηζκηθνχ θαη πιεξνθνξηψλ είλαη δπλαηφλ λα ιεηηνπξγνχλ απνθιεηζηηθά απφ ην internet ζε νξηζκέλεο πεξηπηψζεηο κε ειάρηζην θφζηνο ιεηηνπξγίαο θαη κε ην ίδην απνηέιεζκα. 19

21 Αύμεζε παξαγσγηθόηεηαο Δθφζνλ φπσο αλαθέξζεθε παξαπάλσ κεηψλεηαη ηφζν ην θφζηνο φζν θαη ν ρξφλνο, ηδηαίηεξα κε ηελ απηνκαηνπνίεζε ησλ δηαδηθαζηψλ, απμάλεηαη ε παξαγσγηθφηεηα ηεο επηρείξεζεο θαζψο κπνξνχλ λα παξαρζεί κεγαιχηεξε πνζφηεηα πξντφλησλ ζε ζαθψο κηθξφηεξν ρξνληθφ δηάζηεκα. Δπθνιόηεξε ξνή πιεξνθνξηώλ Με ηηο απηνκαηνπνηεκέλεο δηαδηθαζίεο πνπ έρνπκε αλαθέξεη, ην κηθξφ ρξφλν θαη θφζηνο επηθνηλσλίαο, θαη ηηο θαηάιιειεο ππεξεζίεο ηνπ δηαδηθηχνπ φπσο ηηο ειεθηξνληθέο δεκνζηεχζεηο, ε πιεξνθνξίεο δηαδίδνληαη ηφζν ζην εζσηεξηθφ φζν θαη ζην εμσηεξηθφ ηεο επηρεηξήζεηο ηαρχηαηα θαη αμηφπηζηα. Καιύηεξε δηαρείξηζε απνζεκάησλ θαη βειηίσζε ησλ ιεηηνπξγηώλ πξνκεζεηώλ Με ηηο θαηάιιειεο εθαξκνγέο είλαη δπλαηφο ν θαιχηεξνο έιεγρνο απνζεκάησλ ψζηε θάζε ζηηγκή λα ππάξρνπλ απνζεθεπκέλα κφλν ηα απνιχησο απαξαίηεηα πξντφληα. Τα ππφινηπα πξνκεζεχνληαη ιίγν κεηά ηηο παξαγγειίεο θαη ε ελεκέξσζε ηνπ πξνκεζεπηή κπνξεί λα γίλεηαη απηφκαηα ψζηε λα κεηψλεηαη ν ρξφλνο αλακνλήο. Μεηψλεηαη ινηπφλ ην θφζηνο απνζήθεπζεο απνζεκάησλ θαη ε δεκία απφ πξντφληα ρσξίο δήηεζε ελψ βειηηψλεηαη ε επηθνηλσλία κε ηνπο πξνκεζεπηέο. Δπίζεο κε κειέηε ησλ θηλήζεσλ ησλ ρξεζηψλ, θπξίσο εληφο ηνπ ζπζηήκαηνο κπνξεί λα ππάξμεη πξφβιεςε ησλ αλαγθψλ γηα απφζεκα, ε νπνία λα ζηέιλεηαη ειεθηξνληθά, άξα άκεζα, ζηνλ πξνκεζεπηή ψζηε λα ππάξμεη ε απαξαίηεηε πξνεηνηκαζία ειαρηζηνπνηψληαο φζν γίλεηαη ηνλ ρξφλν εμππεξέηεζεο ησλ παξαγγειηψλ. Πιενλεθηήκαηα γηα ηνπο Πειάηεο Μεησκέλεο ηηκέο πξντόλησλ Άκεζν απνηέιεζκα ηεο κείσζεο ηνπ θφζηνπο παξαγσγήο είλαη θη ε κείσζε ησλ ηηκψλ ρσξίο λα ππάξρεη επίπησζε ζηελ πνηφηεηα. Οπφηε ηα ίδηα πξντφληα πσινχληαη θηελφηεξα κέζσ ηνπ δηαδηθηχνπ απφ φηη ζηα θπζηθά θαηαζηήκαηα. Δθηφο φκσο απφ ηελ απφιπηε ηηκή ην θφζηνο αγνξάο ειαρηζηνπνηείηαη θαη απφ άιινπο παξάγνληεο φπσο ε απνθπγή κεηαθίλεζεο θαη ε δσξεάλ επηθνηλσλία. 20

22 Δμάιεηςε ηεο αλάγθεο θπζηθήο παξνπζίαο ζην θαηάζηεκα Η αλαδήηεζε θαη ε αγνξά ηνπ πξντφληνο πξαγκαηνπνηείηαη απφ ην ρψξν πνπ επηζπκεί ν πειάηεο, ρσξίο λα ρξεηαζηεί λα κεηαθηλεζεί ζε θάπνην θαηάζηεκα αθνχ κεηά ηελ παξαγγειία παθεηάξεηαη θαη κεηαθέξεηαη ζην ρψξν ηνπ, ή θπζηθά αλ είλαη δπλαηφλ κεηαθέξεηαη απεπζείαο ειεθηξνληθά. Δθηφο ηνπ θφζηνπο κε απηφλ ηνλ ηξφπν κεηψλεηαη θαη ν ρξφλνο πνπ απαηηείηαη γηα ηελ αγνξά. 24x7 εμππεξέηεζε Με ηε ρξήζε ησλ ππεξεζηψλ ηνπ δηαδηθηχνπ κπνξεί λα ππάξμεη ελεκέξσζε θαη απάληεζε ζε εξσηήζεηο αλά πάζα ψξα θαη απφ νπνηαδήπνηε ηνπνζεζία, ρσξίο λα ρξεηάδεηαη ν πειάηεο λα πιεξψζεη γηα ηελ επηθνηλσλία ή λα κεηαθεξζεί ζε θάπνην θαηάζηεκα. Πξνζσπνπνίεζε Με ηελ πξνζσπνπνίεζε ηνπ ζπζηήκαηνο ν ρξήζηεο κπνξεί λα πξνζαξκφζεη ην ζχζηεκα ζχκθσλα κε ηηο αλάγθεο θαη ηηο απαηηήζεηο ηνπ. Πξνηάζεηο πξντφλησλ πνπ,ζχκθσλα κε ηηο πξνεγνχκελεο αγνξέο ηνπ, είλαη πηζαλφ λα ηνλ ελδηαθέξνπλ θαη ελεκεξψζεηο θηάλνπλ ζπλερψο ζε απηφλ. Με απηφ ηνλ ηξφπν δίλεηαη βάζε ζηα ελδηαθέξνληα ηνπ ρξήζηε θαη απμάλεηαη ε ηθαλνπνίεζε ηνπ, ελψ ηαπηφρξνλα δεκηνπξγείηε αίζζεκα νηθεηφηεηαο θαη αμηνπηζηίαο. Καιύηεξε θαη πην επαξθήο πιεξνθόξεζε γηα ην πξντόλ Με ηα recommendations άιισλ ρξεζηψλ, ηηο βαζκνινγίεο θαη ηνπο ζρνιηαζκνχο πνπ αθνξνχλ θάζε πξντφλ λ ν ππνςήθηνο πειάηεο απνθηάεη πςεινχ βαζκνχ ελεκέξσζε θαη πιεξνθφξεζε ψζηε λα είλαη ζίγνπξνο γηα ηα ζπλ θαη ηα πιελ ηεο αγνξάο πνπ πξφθεηηαη λα θάλεη. Πξνο απηή ηελ θαηεχζπλζε βνεζάλε θαη ηα θφξνπκ ησλ πειαηψλ, ζηα νπνία αλαθέξνληαη πξνβιήκαηα πνπ πξνέθπςαλ θαη ηξφπνη ιχζεσλ ηνπο. Οπφηε ε πηζαλφηεηα ιαλζαζκέλεο επηινγήο πξντφληνο είλαη ζαθψο κηθξφηεξε ζε κία ζπλαιιαγή ειεθηξνληθνχ εκπνξίνπ απφ φηη ζε κία αληίζηνηρε θιαζζηθή. 21

23 Γξεγνξόηεξε αλαδήηεζε Η δπλαηφηεηα ζχλζεησλ αλαδεηήζεσλ ζε κία εθαξκνγή ειεθηξνληθνχ εκπνξίνπ είλαη ζαθψο ηαρχηεξε απφ φηη ηε ζπλεζηζκέλε αλαδήηεζε κέζα ζε έλα θαηάζηεκα ή θαη πνιιέο θνξέο ζε πεξηζζφηεξα ηνπ ελφο θαηαζηεκάησλ. Ο πειάηεο ζε ιίγα δεπηεξφιεπηα κπνξεί λα βξεη ην πξντφλ πνπ αλαδεηά, κε ηα επηζπκεηά ραξαθηεξηζηηθά θαη ζηελ κηθξφηεξε ηηκή, κε κία απιή ππνβνιή επεξψηεζεο ελψ θπζηνινγηθά κπνξεί λα ρξεηαδφηαλ ψξεο, ή θαη κέξεο, αλαδήηεζεο ζε θαηαζηήκαηα κε ζπλερείο κεηαθηλήζεηο θαη αξθεηφ ρακέλν ρξφλν. Πιενλεθηήκαηα γηα ην Πεξηβάιινλ Μείσζε ηεο ζπαηάιεο θπζηθώλ πόξσλ Με ηηο ειεθηξνληθέο επηθνηλσλίεο θαη ηελ ςεθηνπνίεζε ησλ απαξαίηεησλ εγγξάθσλ, ε θαηαλάισζε ραξηηνχ θαη γξαθηθήο χιεο ειαρηζηνπνηνχληαη. Οη ηφλνη ραξηηψλ πνπ ππήξραλ παιαηφηεξα ζηηο αξρεηνζήθεο ησλ επηρεηξήζεσλ αληηθαζίζηαληαη απφ ειεθηξνληθνχο θαθέινπο θαη αξρεία, κε κεδεληθή επίπησζε ζην πεξηβάιινλ. Πεξηνξηζκόο ησλ κεηαθηλήζεσλ Η δπλαηφηεηα ηηο εθηέιεζεο ησλ απαξαίηεησλ ελεξγεηψλ ρσξίο ηελ αλάγθε κεηαθίλεζεο ζε θπζηθφ θαηάζηεκα ηφζν ησλ πειαηψλ, φζν θαη ησλ πξνκεζεπηψλ αιιά θαη ησλ ππαιιήισλ νδεγεί ζηε κείσζε ησλ κεηαθηλήζεσλ κε απηνθίλεηα, θαη ζε απνθπγή αξθεηψλ σξψλ ζην δξφκν πνπ ζε άιιε πεξίπησζε ζα ήηαλ απαξαίηεηεο. Πξνθαλψο κεηψλνληαη ε ξχπνη πξνο ηελ αηκφζθαηξα θαη κε ηελ εμάπισζε ηνπ ειεθηξνληθνχ εκπνξίνπ απηφ ην γεγνλφο ζα γίλεηαη φιν θαη πην εκθαλέο. 22

24 1.1.5 Πξνβιήκαηα ηνπ ειεθηξνληθνχ εκπνξίνπ Μηθξόηεξε αζθάιεηα ζην internet Σίγνπξα νη θίλδπλνη αζθαιείαο πνπ ππάξρνπλ ζην internet είλαη πνιπάξηζκνη. Καη φηαλ είλαη απαξαίηεηε ε εηζαγσγή πξνζσπηθψλ ζηνηρείσλ φπσο ΑΤ, αξηζκφ πηζησηηθήο θάξηαο θα, νη θίλδπλνη απηνί δξνπλ σο αλαζηαιηηθνί παξάγνληεο γηα ηελ εμάπισζε ηνπ ειεθηξνληθνχ εκπνξίνπ. Ωζηφζν ε αζθάιεηα φιν θαη κεγαιψλεη κε λέα θαη πην εμειηγκέλα ζπζηήκαηα ειέγρνπ. Πιένλ έλα ζσζηφο θαη ιεπηνκεξήο ζρεδηαζκφο ηέηνησλ ζπζηεκάησλ κπνξεί λα εγγπεζεί ίζε, θαη πνιιέο θνξέο κεγαιχηεξε, αζθάιεηα κε απηή ησλ θιαζζηθψλ ηξφπσλ ζπλαιιαγήο. Τςειόο ρξόλνο θαη θόζηνο ζηελ εγθαηάζηαζε θαη ιεηηνπξγία ηεο ππεξεζίαο Τν θφζηνο θαη ν ρξφλνο πνπ απαηηνχληαη γηα ηελ εγθαηάζηαζε ησλ απαξαίηεησλ εθαξκνγψλ είλαη ζαθψο πςειά. Πξέπεη λα πξνεγεζνχλ ζρεηηθά ρξνλνβφξεο δηαδηθαζίεο ζρεδηαζκνχ, θαζνξηζκνχ απαηηήζεσλ,πινπνίεζεο αιιά θαη ειέγρνπ ζσζηήο ιεηηνπξγίαο ηνπ ζπζηήκαηνο πξηλ απηφ εγθαηαζηαζεί ζηελ επηρείξεζε θαη ηεζεί ζε ηζρχ. Γπζθνιία εμνηθείσζεο κε ηηο λέεο ππεξεζίεο Οη λέεο ηερλνινγίεο θαη ε γλψζε απηψλ κπνξνχλ λα πξνθαιέζνπλ δπζθνιίεο εμνηθείσζεο ηφζν γηα ηνπο ππαιιήινπο φζν θαη γηα ηνπο πειάηεο. Σίγνπξα πξέπεη λα ππάξμεη έλα κεηαβαηηθφ ζηάδην ζην νπνίν ζα γίλεη ε εθκάζεζε θαη ε εμνηθείσζε κε ηηο λέεο εθαξκνγέο. Με ηε ζσζηή θαζνδήγεζε θαη ηα απαξαίηεηα εγρεηξίδηα θάηη ηέηνην γίλεηαη αξθεηά επθνιφηεξν θαη νκαιφηεξν. πλερείο αλάγθεο ζπληήξεζεο θαη αλαβάζκηζεο ηνπ εμνπιηζκνύ Ο ηνκέαο ησλ ππνινγηζηψλ θαη ηεο πιεξνθνξηθήο κεηαιιάζζεηαη κε γνξγνχο ξπζκνχο. Η ηερλνινγία εμειίζζεηαη αηζζεηά αθφκα κέζα θαη ζηνλ ίδην ρξφλν νπφηε είλαη απαξαίηεηε ε παξαθνινχζεζε ησλ λέσλ δεδνκέλσλ ψζηε ε επηρείξεζε λα είλαη φζν ην δπλαηφλ πην έγθπξε θαη αλαλεσκέλε. Δπηπξφζζεηα ε πνιππινθφηεηα θαη ν θαθψο ρεηξηζκφο ησλ ζπζηεκάησλ απηψλ πξνθαινχλ πνιιέο θνξέο πξνβιήκαηα πνπ κπνξνχλ λα ζέζνπλ εθηφο ιεηηνπξγίαο γηα θάπνην δηάζηεκα ηελ ππεξεζία, άξα θξίλεηαη αλαγθαία ε χπαξμε ελφο ηθαλνχ ηκήκαηνο ζπληήξεζεο. 23

25 1.2 Γηαδηθηπαθέο Δθαξκνγέο Ζιεθηξνληθνύ Δκπνξίνπ Οξηζκφο δηαδηθηπαθήο εθαξκνγήο «Με ηνλ φξν δηαδηθηπαθή εθαξκνγή ((αγγι.) Web application ή webapp) πεξηγξάθεηαη νπνηνδήπνηε ινγηζκηθφ είλαη πξνζβάζηκν κέζσ ηνπ παγθφζκηνπ ηζηνχ. Τν ζεκαληηθφηεξν πιενλέθηεκα ησλ εθαξκνγψλ ηνπ ηχπνπ απηνχ είλαη φηη δελ απαηηνχλ ηελ εγθαηάζηαζε νπνηνπδήπνηε ινγηζκηθνχ πέξα απφ θάπνην θπιινκεηξεηή, φπσο ν Mozilla Firefox ή ν Internet Explorer. Οη δηαδηθηπαθέο εθαξκνγέο δειαδή κπνξνχλ λα αλαλεψλνληαη θαη λα ελεκεξψλνληαη θαηά βνχιεζε, ρσξίο λα είλαη αλαγθαίν γηα ηνλ πξνγξακκαηηζηή λα αλαδηαλέκεη θαη λα επαλεγθαηαζηήζεη νπνηνδήπνηε ινγηζκηθφ ζηνπο ππνινγηζηέο ησλ - πηζαλψο ρηιηάδσλ - ρξεζηψλ ηεο εθαξκνγήο.» (el.wikipedia.org) Οη δηαδηθηπαθέο εθαξκνγέο πνπ έρνπλ δεκηνπξγεζεί κε ζθνπό ηελ ειεθηξνληθή δηεθπεξαίσζε ζπλαιιαγώλ νλνκάδνληαη δηαδηθηπαθέο εθαξκνγέο ειεθηξνληθνύ εκπνξίνπ Δπηζπκεηά ραξαθηεξηζηηθά Αζθάιεηα Δθφζνλ ζηηο δηαδηθηπαθέο εθαξκνγέο ειεθηξνληθνχ εκπνξίνπ γίλεηαη εηζαγσγή πξνζσπηθψλ ζηνηρείσλ απφ ηνπο πειάηεο φπσο αξηζκφο ηαπηφηεηαο, αξηζκφο πηζησηηθήο θάξηαο ή ηξαπεδηθνχ ινγαξηαζκνχ, ηειέθσλα, θηι είλαη απαξαίηεησλ λα δνζεί ηεξάζηηα βάζε ζηελ δηαθχιαμε απηψλ ησλ δεδνκέλσλ θαη ζηελ αζθάιεηα ησλ ζπλαιιαγψλ. Γηα ηελ επίηεπμε απηνχ ηνπ ζηφρνπ κπνξνχλ λα ρξεζηκνπνηεζνχλ ηερληθέο θξππηνγξάθεζεο, ηερληθέο ειέγρνπ εγθπξφηεηαο ησλ ζηνηρείσλ θαηά ηελ είζνδν ζην ζχζηεκα, εγγχεζε φηη κεηά ην logout δε ζα κπνξεί θαλέλαο άιινο λα έρεη πξφζβαζε ζηα ζηνηρεία ηνπ πειάηε ή δε ζα κπνξεί λα επαλαιάβεη ηηο ελέξγεηεο πνπ έθαλε θαη λα αλαθαιχςεη ηα δεδνκέλα πνπ εηζήγαγε. Δπίζεο θξίλεηαη απαξαίηεην ν πειάηεο λα γλσξίδεη γηα πην ιφγν εηζάγεη ηα ζηνηρεία ηνπ, πνηνί είλαη νη θίλδπλνη πνπ ειινρεχνπλ θαζψο θαη ηηο εγγπήζεηο φηη ζε πεξίπησζε αηπρνχο πεξηζηαηηθνχ παξαβίαζεο ησλ ζηνηρείσλ δε ζα έρεη επζχλε ν ίδηνο αιιά κφλν ε ππεξεζία. Φσξίο ηηο ζσζηέο ιεηηνπξγίεο αζθάιεηαο ν ρξήζηεο ράλεη ηελ εκπηζηνζχλε ηνπ ζην ζχζηεκα θαη είλαη ζρεδφλ βέβαην φηη δε ζα ην μαλαρξεζηκνπνηήζεη ζην κέιινλ. Γηα ηε δηαηήξεζε θαη ηελ αχμεζε ηεο εκπηζηνζχλεο ηνπ ρξήζηε εθηφο ησλ παξαπάλσ είλαη θαιφ λα ππάξρνπλ πηζηνπνηήζεηο αζθάιεηαο, ζρνιηαζκνί απφ άιινπο ρξήζηεο 24

26 θαη εθζέζεηο απφ εηδηθνχο πνπ λα εγγπνχληαη ηελ αζθαιή πινήγεζε θαη ιεηηνπξγία ησλ ρξεζηψλ. Φπζηθά θαη ηα ζπζηήκαηα αζθαιείαο πξέπεη λα ζπληεξνχληαη θαη λα αλαβαζκίδνληαη ζπλερψο ψζηε λα ζπκβαδίδνπλ κε ηηο ζπλερψο απμαλφκελεο θαη θαηλνχξηεο απεηιέο θαη επηπιένλ πξφζβαζε ζηα ζηνηρεία ησλ πειαηψλ πξέπεη λα έρνπλ φζν ην δπλαηφλ ιηγφηεξα άηνκα, θαη αλ γίλεηαη θαλέλα απνιχησο άηνκν παξά κφλν νη ππνινγηζηέο θαη νη εθαξκνγέο πνπ ηα ρξεζηκνπνηνχλ. Δπθνιία Υξήζεο Η πινήγεζε ζην ζχζηεκα θαη ε ρξήζε ησλ ππεξεζηψλ ηνπ ζα πξέπεη λα γίλνληαη εχθνια θαη απιά. Πνιινί ρξήζηεο δελ είλαη εμνηθεησκέλνη κε ην δηαδίθηπν, νπφηε πνιχπινθεο δηαδηθαζίεο ηνπο κπεξδεχνπλ, ηνπο θνβίδνπλ θαη ηειηθά ηνπο νδεγνχλ ζε απφξξηςε ηνπο ζπζηήκαηνο. Γεληθά νη θφξκεο εηζαγσγήο ζηνηρείσλ, νη κεραλέο αλαδήηεζεο, νη ζχλδεζκνη πξνο άιιεο ζειίδεο ζα πξέπεη αλ είλαη εκθαλή, θαη απιά ζηε ρξήζε ελψ πνιχ ρξήζηκε ζα ήηαλ θαη κία ζειίδα βνήζεηαο ή έλα εηζαγσγηθφ επεμεγεκαηηθφ θείκελν γηα ηνπο λένπο πειάηεο πνπ ζα δίλεη νδεγίεο ιεηηνπξγίαο. Φξήζηκα επίζεο ζα ήηαλ θφξνπκ ζηα νπνία ζα απαληψληαη άκεζα νη φπνηεο απνξίεο. Σαρύηεηα Η ηαρχηεηα είλαη απφ ηα ζεκαληηθφηεξα ραξαθηεξηζηηθά κηαο δηαδηθηπαθήο εθαξκνγήο ειεθηξνληθνχ εκπνξίνπ. Καλέλαο ρξήζηεο δελ πξφθεηηαη λα πεξηκέλεη πάλσ απφ 10 δεπηεξφιεπηα γηα ηελ δηεθπεξαίσζε κηαο ελέξγεηαο ηνπ. Ιδηαίηεξα ζηηο ιεηηνπξγίεο αλαδήηεζεο ε ηαρχηεηα είλαη πξσηαξρηθήο ζεκαζίαο. Σπρλά νη ρξήζηεο δηαηππψλνπλ ζχλζεηα εξσηήκαηα ηα νπνία αλαθέξνληαη ζε ηεξάζηηεο βάζεηο δεδνκέλσλ άξα ε εθαξκνγέο αλαδήηεζεο πξέπεη λα είλαη έμππλα ζρεδηαζκέλεο ψζηε λα είλαη φζν απνδνηηθφηεξεο γίλεηαη. Ταρχηεηα πξέπεη λα ππάξρεη θπζηθά θαη ζηελ πινήγεζε. Οη ζειίδεο θαη νη αλαλεψζεηο δε ζα πξέπεη λα αξγνχλ λα εκθαληζηνχλ νπφηε θαιφ είλαη λα πεξηνξηζηνχλ νη πνιπκεζηθέο εθαξκνγέο φπσο video, animation θαη εηθφλεο. Τέινο ζε εθείλεο ηηο εθαξκνγέο πνπ ιακβάλνπλ ρψξα ειεθηξνληθέο ζπλαιιαγέο, ν ρξφλνο δηεθπεξαίσζεο ηνπο ζα πξέπεη λα είλαη ειάρηζηνο γηα λα απνθεχγνληαη θαη αθπξψζεηο ησλ ρξεζηψλ, θαηλφκελα ηδηαίηεξα ζπρλφ αλ θάπνηα ζπλαιιαγή αξγήζεη λα νινθιεξσζεί. 25

27 Καιόο ρεδηαζκόο Η αηζζεηηθή θαη ν άξηηνο ζρεδηαζκφο ηνπ ζπζηήκαηνο παίδνπλ κεγάιε ζεκαζία. Η πξψηε εληχπσζε πάληα είλαη απηή πνπ κεηξάεη πεξηζζφηεξν νπφηε ηδηαίηεξα ε θεληξηθή ζειίδα πξέπεη λα είλαη εληππσζηαθή. Δηθφλεο θαη γξαθηθά βνεζάλε ζεκαληηθά, ελψ κεγάιν ξφιν παίδεη θαη ν ρξσκαηηζκφο. Αλνηθηά θαη ήπηα ρξψκαηα, ή δηαθξηηηθφ background εληππσζηάδνπλ ην ρξήζηε ρσξίο λα είλαη πνιχ έληνλα. Γεληθά πξέπεη λα απνθεχγνληαη νη ππεξβνιέο θαη ηα θνπξαζηηθά ρξψκαηα. Δπηπιένλ θαιφ είλαη λα ρξεζηκνπνηείηαη κεζαίνπ κεγέζνπο γξακκαηνζεηξά θαη ζπλδπαζκφο κηθξψλ θαη θεθαιαίσλ γξακκάησλ, θαζψο κφλν ηα θεθαιαία θνπξάδνπλ θαη είλαη δπζδηάθξηηα. Δπίζεο ε ζηνίρηζε ζα πξέπεη λα είλαη ζσζηή, ηα φξηα κεηαμχ ησλ πηλάθσλ επδηάθξηηα θαη ε νκνηνκνξθία ζηηο ζειίδεο απαξαίηεηε. Με ηα παξαπάλσ κεγαιψλεη ε πηζαλφηεηα επηζηξνθήο θάπνηνπ ρξήζηε ζην ζχζηεκα θαη εγγξαθήο ηνπ ζε απηφ. πλερήο Δλεκέξσζε θαη Δγθπξόηεηα Η εγθπξφηεηα ησλ πιεξνθνξηψλ πνπ παξέρνληαη απφ ην ζχζηεκα είλαη απαξαίηεηε αιιηψο ε εθαξκνγή ζα ράζεη ηελ αμηνπηζηία θαη νη ρξήζηεο ηελ εκπηζηνζχλε ηνπο. Γηα ηνλ ζθνπφ απηφ νη πιεξνθνξίεο ζα πξέπεη λα αλαλεψλνληαη ζπλερψο θαη ην ζχζηεκα λα παξακέλεη ελεκεξσκέλν. Καιφ είλαη λα ππάξρεη εηδηθή νκάδα γηα απηφλ ηνλ ζθνπφ πνπ ζα έρεη ηελ επζχλε αλαλέσζεο ησλ πιεξνθνξηψλ αλ γίλεηαη 24 ψξεο ην 24σξν Παξαδείγκαηα Παξνπζηάδνληαη κεξηθά παξαδείγκαηα ελδεηθηηθψλ δηαδηθηπαθψλ εθαξκνγψλ ειεθηξνληθνχ εκπνξίνπ. Μία απφ ηηο πην άξηηεο εθαξκνγέο ειεθηξνληθνχ εκπνξίνπ είλαη ην site ηεο amazon.com. Αθνινπζεί φιεο ηηο πξνδηαγξαθέο πνπ παξνπζηάζηεθαλ ζηελ πξνεγνχκελε ελφηεηα κε ηδηαίηεξε πξνζνρή ζην ζρεδηαζκφ θαη ζηελ επρξεζηία: 26

28 Άιιν ραξαθηεξηζηηθφ παξάδεηγκα ζσζηνχ ζρεδηαζκνχ είλαη ην site ηνπ e-bay.com: 27

29 1.3 Πξνζσπνπνίεζε Οξηζκφο Πξνζσπνπνίεζεο Με ηνλ φξν Πξνζσπνπνίεζε αλαθεξφκαζηε ζηελ ρξήζε ηερλνινγίαο γηα ηελ ηθαλνπνίεζε θαη ηελ θάιπςε ηεο δηαθνξεηηθφηεηαο ηνπ θάζε αηφκνπ ρξήζηε. Σπγθεθξηκέλα ζπιιέγνληαη πιεξνθνξίεο κέζσ ηεο αιιειεπίδξαζεο ηνπ ρξήζηε θαη ζηελ ζπλέρεηα ρξεζηκνπνηνχληαη ψζηε λα πξνζαξκνζηεί ην ζχζηεκα ζηηο αλάγθεο ηνπ, δίλνληαο ηνπ θαιχηεξε αίζζεζε θαη ζεηηθή εκπεηξία θαηά ηελ ρξήζε. Η πξνζσπνπνίεζε πνπ ιακβάλεη ρψξα ζε we sites νλνκάδεηαη web πξνζσπνπνίεζε Σηφρνη Πξνζσπνπνίεζεο Καιχηεξε εμππεξέηεζε ηνπ πειάηε ηθαλνπνηψληαο ηηο αλάγθεο ηνπ Δπθπήο αιιειεπίδξαζε ηνπ πειάηε κε ην ζχζηεκα Γεκηνπξγία ζρέζεο εκπηζηνζχλεο κε ηνλ πειάηε έηζη ψζηε λα επηζηξέθεη ζην ζχζηεκα Καηεγνξίεο Web Πξνζσπνπνίεζεο Τπνλννύκελε Πξνζσπνπνίεζε Σε απηή ηελ κέζνδν πξνζσπνπνίεζεο ην site πξαγκαηνπνηεί ηελ πξνζσπνπνίεζε απηφκαηα βαζηδφκελν ζε δεδνκέλα φπσο θηλήζεηο ηνπ ρξήζηε ζην site, αγνξέο θηι, ρσξίο ν ρξήζηεο λα ην θαηαιαβαίλεη. Η κέζνδνο απηή ρξεζηκνπνηεί θπξίσο ηνλ ηχπν ηεο πξνζσπνπνίεζεο βάζε ζπκπεξηθνξάο γηα λα απνθηήζεη πιεξνθνξία γηα ηνλ ρξήζηε. Δθηφο απφ ηηο απιέο πξνηάζεηο κπνξεί λα γίλεηε αιιαγή banner δηαθεκίζεσλ κε ηε ζπκπεξηθνξά, παξνπζίαζε ηξίησλ ηζηνηφπσλ πξνο παξαθνινχζεζε θαη γεληθά ππάξρεη έλα πνιχ κεγάιν θάζκα ελεξγεηψλ. Τν κεγάιν πιενλέθηεκα απηήο ηεο κεζφδνπ είλαη φηη επηηπγράλεηαη πςειήο πνηφηεηαο πξνζσπνπνίεζε ρσξίο ν ρξήζηεο λα αληηιεθζεί ην παξακηθξφ αιιά απαηηεί λα πεξάζεη θάπνην ρξνληθφ δηάζηεκα ψζηε λα ζπιιερζνχλ αξθεηά δεδνκέλα. αθήο Πξνζσπνπνίεζε Σε απηή ηελ κέζνδν ν ρξήζηεο επηιέγεη νξίδεη ν ίδηνο ηελ πξνζσπνπνίεζε είηε αιιάδνληαο ηελ εκθάληζε θαη ηελ κνξθνινγία ηεο ζειίδαο, είηε απαληψληαο ζε εξσηήκαηα πνπ έρνπλ απηφλ ηνλ ζθνπφ. Παζεηηθή ζαθήο πξνζσπνπνίεζε ππάξρεη φηαλ ν ρξήζηεο έρεη ηελ δπλαηφηεηα λα επηιέμεη ηφζν ην αλ φζν θαη ην πφζν πξνζσπνπνίεζε ζα ππάξρεη ζην site. Σηγά - ζηγά απηφ ην είδνο πξνζσπνπνίεζεο εγθαηαιείπεηαη θαζψο εμαξηάηαη ζε κεγάιν βαζκφ απφ ηνλ ρξήζηε ε πνηφηεηα ηεο. 28

30 Τκεκαηηθή ζαθήο πξνζσπνπνίεζε ππάξρεη φηαλ ρξεζηκνπνηείηαη ην πξνθίι ηνπ ρξήζηε γηα λα θαζνξηζηεί πνην πεξηερφκελν ζα παξνπζηαζηεί (νπζηαζηηθά ηκεκαηνπνηνχληαη ηα δεδνκέλα αλάινγα κε ην group ρξεζηψλ πνπ αλήθεη ν ρξήζηεο). Απηφ ν ηχπνο πξνζσπνπνίεζεο είλαη ρξήζηκνο ζε sites κεγάινπ κεγέζνπο πιεξνθνξηψλ αθνχ εκπνδίδεη ηελ ππεξβνιηθή έθζεζε πιεξνθνξίαο. Τβξηδηθή Πξνζσπνπνίεζε Η ηειεπηαία κέζνδνο ζπλδπάδεη ηελ ζαθή θαη ηελ ππνλννχκελε πξνζσπνπνίεζε γηα λα πάξεη φζν ην δπλαηφλ θαιχηεξα απνηειέζκαηα. Παξαδείγκαηνο ράξε κπνξεί λα ρξεζηκνπνηείηαη ζαθήο πξνζσπνπνίεζε θαηά ηηο πξψηεο επηζθέςεηο ηνπ ρξήζηε ζην site θαη ζηε ζπλέρεηα φηαλ έρεη ζπιιερζεί αξθεηή πιεξνθνξία απφ ηελ ζπκπεξηθνξά ηνπ ν ηχπνο λα κεηαηξέπεηαη ζηαδηαθά ζε ππνλννχκελε Μέζνδνη Web Πξνζσπνπνίεζεο Πξνζσπνπνίεζε βαζηζκέλε ζην Profile Σε απηφλ ηνλ ηχπν πξνζσπνπνίεζεο ρξεζηκνπνηείηαη ην profile ηνπ ρξήζηε, φπσο ην έρεη δηακνξθψζεη ν ίδηνο. Έηζη ε πιεξνθνξία πνπ ιακβάλεηαη θξίλεηαη αθξηβήο αθνχ ηελ δίλεη ν ίδηνο ν ρξήζηεο αιιά ην κεγάιν κεηνλέθηεκα είλαη φηη δελ αλαλεψλεηαη ζχκθσλα κε ηηο αιιαγέο αλαγθψλ ηνπ ρξήζηεο εθηφο θαη απηφο ελεκεξψζεη ην profile ηνπ. Παξάδεηγκα απηήο ηεο κεζφδνπ είλαη ε πξφηαζε πξντφλησλ βάζε ηεο ειηθίαο, ηνπ επαγγέικαηνο θ.α. Απηφο ν ηχπνο πξνζσπνπνίεζεο ζπρλά αλαθέξεηαη θαη ζαλ απιή πξνζσπνπνίεζε. Πξνζσπνπνίεζε βαζηζκέλε ζηελ ζπκπεξηθνξά Πξνζσπνπνίεζε βαζηζκέλε ζηελ ζπκπεξηθνξά έρνπκε φηαλ ην ζχζηεκα θαηαγξάθεη ηηο θηλήζεηο ηνπ ρξήζηε, πνηα πξντφληα επηζθέθηεθε ηα θιηθ πνπ έθαλε θηι ψζηε λα πάξεη πιεξνθνξίεο γηα ηα ελδηαθέξνληα ηνπ. Η Amazon ήηαλ απφ ηηο πξψηεο εηαηξίεο πνπ ρξεζηκνπνίεζαλ απηφλ ηνλ, πιένλ εμαηξεηηθά δηαδεδνκέλν, ηχπν πξνζσπνπνίεζεο. πλεξγαηηθή πξνζσπνπνίεζε Απηή ε κέζνδνο πξνζσπνπνίεζεο ρξεζηκνπνηεί δεδνκέλα απφ άιινπο ρξήζηεο παξφκνησλ ζηνηρείσλ ή ζπκπεξηθνξάο κε ηνλ ρξήζηε ζηφρν. Παξάδεηγκα απνηειεί ε κειέηε ηνπ rating πνπ πξαγκαηνπνίεζε ν ρξήζηεο ζε θάπνην πξντφλ ζπγθξηλφκελν κε ratings άιισλ ρξεζηψλ. Τν κεηνλέθηεκα απηνχ ηνπ ηχπνπ είλαη φηη ρξεηάδεηαη ζρεηηθά κεγάινο αξηζκφο δείγκαηνο ψζηε λα ππάξμεη πςειή πνηφηεηα πξνζσπνπνίεζεο. 29

31 Πξνζσπνπνίεζε βαζηζκέλε ζε θαλόλεο Με ηελ βνήζεηα θάπνηνπ εκπεηξνγλψκνλα ζπκβνχινπ δεκηνπξγνχληαη θαλφλεο ηχπνπ if then γηα ηελ πξφηαζε πξντφλησλ, ζπλδέζκσλ θηι. Τν cross-selling αλήθεη ζε απηήλ ηελ κέζνδν. Γηα παξάδεηγκα έλαο θαλφλαο κπνξεί λα νξηζηεί λα πξνηείλεη ην πξνηφλ X ζε έλαλ πειάηε πνπ κφιηο αγφξαζε ην Y βαζηδφκελνο ζην είδνο ηνπ βηβιίνπ ή ζηελ αγνξά άιινπ πειάηε παξφκνηνπ πξντφληνο. 30

32 ΚΔΦΑΛΑΗΟ 2 ν Πξνδηαγξαθέο 2.1 Βαζηθέο Λεηηνπξγίεο Καηάινγνο Πξντφλησλ Σηελ θεληξηθή ζειίδα ηνπ ζπζηήκαηνο ππάξρεη ν θαηάινγνο ησλ πξνηφλησλ. Σπγθεθξηκέλα θάζε ρξήζηεο κπνξεί λα επηιέμεη ππεξθαηεγνξία, θαηεγνξία θαη θπζηθά ην πξνηφλ ην νπνίν ζέιεη λα αγνξάζεη ή λα ιάβεη πιεξνθνξίεο. Γηα θάζε πξνηφλ εκθαλίδεηαη κία πεξηγξαθή, κία θσηνγξαθία, ε ηηκή ηνπ, θαη έλα video πνπ ην παξνπζηάδεη. Ο ρξήζηεο κπνξεί λα βαζκνινγήζεη αιιά θαη λα ζπκπεξηιάβεη ην πξνηφλ ζην θαιάζη αγνξψλ ηνπ. Με ηελ είζνδν ζην θαηάζηεκα ν ρξήζηεο βιέπεη γεληθά θάπνηα επηιεγκέλα πξνηφληα, επηιέγνληαο θάπνηα ζπγθεθξηκέλε ππεξθαηεγνξία εκθαλίδνληαη επηιεγκέλα πξνηφληα πνπ αλήθνπλ ζε απηήλ, θαη επηιέγνληαο θαηεγνξία εκθαλίδνληαη φια ηα πξνηφληα πνπ αλήθνπλ ζηελ ζπθεθξηκέλε θαηεγνξία. Έηζη είλαη πην νξζνινγηθή ε πεξηήγεζε ηνπ ρξήζηε ζηελ ππεξεζία. Τα πξνηφληα ηα αλεβάδνπλ ζην ζχζηεκα είηε νη δηαρεηξηζηέο είηε νη εγγεγξακκέλνη ρξήζηεο. Γηα θάζε πξνηφλ θξαηηέηαη θπξίσο ην φλνκα, ε πεξηγξαθή, θσηνγξαθία, video, ΤΚ, πφιε, ηηκή, θαζψο θαη ην username ηνπ ρξήζηε πνπ ην θαηαρψξεζε Δγγξαθή ζην Σχζηεκα Κάζε ρξήζηεο πνπ επηζπκεί λα έρεη πξφζβαζε ζε πεξηζζφηεξεο ππεξεζίεο αιιά θαη ηελ δπλαηφηεηα λα εθρσξεί πξντφληα πξέπεη λα δψζεη ηα ζηνηρεία ηνπ ζηελ αληίζηνηρε θφξκα εγγξαθήο. Απηά πεξηιακβάλνπλ φλνκα, επίζεην, θχιιν, ειηθία, πφιε, επάγγεικα, , password θαη username. Μεηά ηελ εγγξαθή θάζε ρξήζηεο κπνξεί λα εηζέιζεη κε ην username θαη ην password ζηελ ζειίδα ησλ ρξεζηψλ θαη λα έρεη πξφζβαζε ζε επηπιένλ ππεξεζίεο. 31

33 2.1.3 Φξήζηεο Φξήζηεο ηνπ ζπζηήκαηνο ζεσξείηε θάζε άηνκν πνπ πεξηεγείηαη ζε απηφ άζρεηα αλ έρεη θάλεη εγγξαθή ή φρη. Οη απινί ρξήζηεο έρνπλ δπλαηφηεηα λα πεξηεγεζνχλ ζηνλ θαηάινγν ησλ πξντφλησλ, λα ζπκπεξηιάβνπλ πξντφληα ζην θαιάζη αγνξψλ ηνπο, θαη λα ρξεζηκνπνηήζνπλ ηηο ιεηηνπξγίεο αλαδήηεζεο πνπ παξέρνληαη Πσιεηέο Μεηά ηελ εγγξαθή ζην ζχζηεκα νη ρξήζηεο κπνξνχλ λα εηζέιζνπλ ζηελ αληίζηνηρε ζειίδα θαη λα ρξεζηκνπνηήζνπλ επηπιένλ ππεξεζίεο. Απηέο πεξηιακβάλνπλ : αλέβαζκα πξντφληνο, άξα θαη δπλαηφηεηα πψιεζεο, επεμεξγαζία ησλ πξντφλησλ ηνπ δηαγξαθή ησλ πξντφλησλ ηνπ επεμεξγαζία πξνθίι επεμεξγαζία θαιαζηνχ αγνξψλ παξαθνινχζεζε παξαγγειίαο επεμεξγαζία ησλ ζηνηρείσλ πηζησηηθήο θάξηαο subscribe ζε θαηεγνξίεο Γηαρεηξηζηέο Οη δηαρεηξηζηέο είλαη νπζηαζηηθά ηα αθεληηθά ηηο ππεξεζίαο. Δηζέξρνληαη ζηελ αληίζηνηρε ζειίδα θαη έρνπλ ηηο εμήο δπλαηφηεηεο: δεκηνπξγία ππεξθαηεγνξίαο επεμεξγαζία ππεξθαηεγνξίαο δηαγξαθή ππεξθαηεγνξίαο δεκηνπξγία θαηεγνξίαο επεμεξγαζία θαηεγνξίαο δηαγξαθή θαηεγνξίαο αλέβαζκα πξντφληνο επεμεξγαζία πξντφληνο δηαγξαθή πξντφληνο επεμεξγαζία ρξήζηε παξαθνινχζεζε παξαγγειίαο δηαγξαθή παξαγγειίαο δηαγξαθή αλελεξγνχ θαιαζηνχ αγνξψλ 32

34 2.1.4 Παξαθνινχζεζε Καηεγνξηψλ Κάζε ρξήζηεο κπνξεί κέζσ ηνπ ινγαξηαζκνχ ηνπ λα θάλεη subscribe ζε νπνηαδήπνηε θαηεγνξία επηζπκεί θαη λα ελεκεξψλεηαη γηα ηα λέα πξντφληα πνπ εηζέξρνληαη ζε απηήλ. Σπγθεθξηκέλα απφ ηε ζηηγκή πνπ εγγξάθεηαη ζε θάπνηα θαηεγνξία ελεκεξψλεηαη γηα ηα λέα πξντφληα πνπ αλεβάδεη ζε απηήλ θάζε ρξήζηεο θαη θάζε θνξά πνπ αλαλεψλεη ηε ζειίδα ηνπ κπνξεί λα δεη κέζσ ζπλδέζκσλ νηηδήπνηε θαηλνχξην έρεη εηζαρζεί Φφξνπκ Τν ζχζηεκα έρεη ππεξεζία forum ζηελ νπνία ππάξρεη ε δπλαηφηεηα δεκηνπξγίαο λένπ ζέκαηνο ζρεηηθά κε ηα πξντφληα ή κε θάπνηα ππεξεζία ηνπ ζπζηήκαηνο, θαζψο θαη ε δπλαηφηεηα αλάξηεζεο θαη απάληεζεο ζε θάζε ζέκα. Οη δηαρεηξηζηέο είλαη ππεχζπλνη γηα ηελ ιεηηνπξγία ηνπ θφξνπκ θαη κπνξνχλ αλ ζεσξνχλ αλαγθαίν λα δηαγξάςνπλ ή λα ηξνπνπνηήζνπλ θάπνηα αλάξηεζε. Κάζε απάληεζε πεξηέρεη πιεξνθνξίαο ζρεηηθά κε ηνλ ζπγγξαθέα, ηελ εκεξνκελία θαη ηελ ψξα πνπ αλαξηήζεθε. 2.2 Αλαδήηεζε Text Αλαδήηεζε Πξντφλησλ κε tsvectors θαη Βάξε Οη ρξήζηεο ζα κπνξνχλ λα αλαδεηήζνπλ πξντφληα πιεθηξνινγψληαο ιέμεηο. Τν ζχζηεκα αλαδεηά θαη επηζηξέθεη ηα πξντφληα πνπ πεξηέρνπλ ηηο ιέμεηο είηε ζην φλνκα είηε ζηελ πεξηγξαθή ηνπο. Φξεζηκνπνηψληαο βάξε επηζηξέθνληαη πξψηα ηα πξντφληα πνπ πεξηέρνπλ ηελ ιέμε ή ηηο ιέμεηο ζηνλ ηίηιν ηνπ θαη ζηελ ζπλέρεηα απηά πνπ ηηο πεξηέρνπλ ζηελ πεξηγξαθή ηνπο, ψζηε λα ππάξρεη κία πςειή ζρεηηθφηεηα. Με ηελ ρξήζε ησλ tsvectors ν ηίηινο θαη ε πεξηγξαθή θάζε πξντφληνο ζπάλε ζε θαλνληθνπνηεκέλεο ιέμεηο, αθαηξνχληαη νη δηπινηηκέο θαη εηζάγνληαη ζε ζχλνια ιέμεσλ ζηα νπνία νπζηαζηηθά ιακβάλεη ρψξν ε αλαδήηεζε βειηηψλνληαο ηφζν ηελ ηαρχηεηα φζν θαη ηελ ζρεηηθφηεηα ηεο αλαδήηεζεο. 33

35 2.2.2 Φσξηθή Aλαδήηεζε Πξντφλησλ κε Φξήζε PostGis θαη ΤΚ Οη ρξήζηεο κπνξνχλ δίλνληαο ηνλ Τ.Κ. ηεο πεξηνρήο πνπ είηε βξίζθνληαη είηε ζχκθσλα κε ηελ νπνία ζέινπλ λα αλαδεηήζνπλ πξντφληα, θαη ηελ κέγηζηε απφζηαζε αλαδήηεζεο, λα βξνπλ πξντφληα πνπ πξνέξρνληαη απφ πεξηνρέο ζε αθηίλα ίζε ε κηθξφηεξε ηεο απφζηαζεο απηήο. Πρ Αλαδήηεζε πξντφλησλ πνπ βξίζθνληαη ζε αθηίλα 5ρικ απφ ηνλ Τ.Κ Πεξηζζφηεξεο ιεπηνκέξεηεο γηα απηφλ ηνλ ηχπν αλαδήηεζεο δίλνληαη ζην θεθάιαην Αλαδήηεζε Πξντφλησλ κέζσ Φάξηε Φξεζηκνπνηψληαο ηνλ ράξηε ηεο Διιάδαο νη ρξήζηεο κπνξνχλ λα βξνπλ ηα πξντφληα πνπ πξνέξρνληαη απφ ζπγθεθξηκέλνπο λνκνχο απιά θάλνληαο θιηθ ζηνλ ζρεηηθφ λνκφ Σχλζεηε Αλαδήηεζε Πξντφλησλ Σε απηήλ ηελ ιεηηνπξγία γίλεηαη αλαδήηεζε πξντφλησλ ζπλδπάδνληαο ιέμεηο ή θνκκάηηα ιέμεσλ φπσο αλαθέξζεθε ζην 2.2.1, ρσξηθή αλαδήηεζε φπσο αλαθέξζεθε ζην αιιά θαη αλαδήηεζε βάζεη θαηεγνξίαο ή βάζεη ηηκήο. Η αλαδήηεζε κπνξεί λα γίλεη ηφζν κε έλα απφ απηά ηα νξίζκαηα ή κε νπνηνλδήπνηε ζπλδπαζκφ ηνπο. Πρ Αλαδήηεζε απηνθηλήησλ ηηκήο απφ έσο επξψ πνπ βξίζθνληαη ζε κέγηζηε απφζηαζε 100ρικ απφ ηελ πεξηνρή κε ΤΚ Αζθάιεηα Φξήζε Sessions γηα Πινήγεζε Γηα ηελ πξφζβαζε θαη ηελ πεξηήγεζε ζηηο ζειίδεο ηφζν ησλ δηαρεηξηζηψλ φζν θαη ηνλ εγγεγξακκέλσλ ρξεζηψλ απνζεθεχεηαη ζε sessions ην username θαη ειέγρεηαη ζε θάζε κεηάβαζε ψζηε λα δηαπηζησζεί φηη ην άηνκν πνπ ρξεζηκνπνηεί ηε ζειίδα έρεη ην δηθαίσκα. Με ην logout απνδεζκεχνληαη ηα sessions θαη εμαζθαιίδεηαη φηη αθφκα θαη αλ θάπνηνο ηξίηνο έρεη πξφζβαζε ζην pc δελ ζα κπνξεί λα ζπλδεζεί ζηηο πξνζσπηθέο ζειίδεο ηνπ ρξήζηε. 34

36 2.3.2 Φξήζε SSL https Οη ζειίδεο νη νπνίεο πεξηέρνπλ πξνζσπηθά ή ζεκαληηθά δεδνκέλα πξέπεη λα θσδηθνπνηνχληαη ψζηε λα είλαη αδχλαηε ε ππνθινπή ηνπ πεξηερνκέλνπ ηνπο. Γηα απηφλ ην ιφγν θσδηθνπνηνχληαη κε ηελ ρξήζε ηνπ πξσηνθφιινπ SSL πνπ εθαξκφδεηαη αληηθαζηζηψληαο ην http κε https. Παξαδείγκαηα ηέηνησλ ζειίδσλ είλαη απηή πνπ πεξηέρεη ηνπο θσδηθνχο ησλ ρξεζηψλ, ηηο ιεπηνκέξεηεο ησλ παξαγγειηψλ, ηα ζηνηρεία πηζησηηθήο θάξηαο θ.α Κξππηνγξάθεζε Κσδηθψλ Πξφζβαζεο Οη θσδηθνί πξφζβαζεο ησλ ρξεζηψλ θξππηνγξαθνχληαη κε ρξήζε hashing πξηλ ηελ απνζήθεπζε ηνπο θαη έηζη ζηελ βάζε ηνπ ζπζηήκαηνο απνζεθεχνληαη κφλν ηα θξππηνγξαθεκέλα κελχκαηα. Γηα λα εηζέιζεη ζην ζχζηεκα ν ρξήζηεο θξππηνγξαθείηαη ν θσδηθφο πνπ εηζάγεη θαη ζπγθξίλνληαη ηα θξππηνγξαθεκέλα κελχκαηα. Με απηφλ ηνλ ηξφπν εγγπάηαη φηη ν θσδηθφο πξφζβαζεο είλαη γλσζηφο κφλν ζηνλ ρξήζηε θαη αθφκα θαη λα θιαπεί ε βάζε δεδνκέλσλ θαλείο δελ ζα κπνξεί λα ηνλ απνθηήζεη Κξππηνγξάθεζε Σηνηρείσλ Πηζησηηθή Κάξηαο Τα ζηνηρεία ηηο πηζησηηθήο θάξηαο ησλ ρξεζηψλ ζπλελψλνληαη θαη θξππηνγξαθνχληαη ρξεζηκνπνηψληαο θξππηνγξάθεζε ζπκκεηξηθνχ θιεηδηνχ θαη ζπγθεθξηκέλα ηνλ αιγφξηζκν AES 256 πνπ βαζίδεηαη ζηνλ Rijndael. Σηελ βάζε δειαδή απνζεθεχεηαη έλα string απφ ζχκβνια ην νπνίν, ζε πεξίπησζε πνπ θάπνηνο ρξήζηεο ζέιεη λα δεη ηα ζηνηρεία ηνπ, απνθξππηνγξαθείηαη ρξεζηκνπνηψληαο ην κπζηηθφ θιεηδί. Άξα ζε πεξίπησζε θινπήο ή απψιεηαο ηεο βάζεο δεδνκέλσλ δελ ππάξρεη ν θφβνο θινπήο ησλ ζηνηρείσλ ησλ πηζησηηθψλ θαξηψλ. 35

37 2.4 πλαιιαγέο Καιάζη Αγνξψλ Φξεζηκνπνηψληαο cookies δίλεηαη ε δπλαηφηεηα ζε φινπο ηνπο ρξήζηεο ηνπ ζπζηήκαηνο άζρεηα αλ είλαη εγγεγξακκέλνη ή φρη λα πξνζζέζνπλ πξντφληα ζε θαιάζηα αγνξψλ ηα νπνία κέλνπλ ελεξγά αλ δελ απελεξγνπνηήζνπλ ηα cookies. Σην θαιάζη αγνξψλ δίλεηαη ε δπλαηφηεηα εθηφο απφ πξνζζήθε αθαίξεζε ή ζπκπιήξσζε πξντφλησλ λα απνζεθεπηνχλ θάπνηα απφ απηά γηα κειινληηθή αγνξά ή λα παξαγγειζνχλ ηα πξντφληα πνπ ππάξρνπλ ζην θαιάζη Πξαγκαηνπνίεζε θαη Pipeline Παξαγγειηψλ Οη εγγεγξακκέλνη ρξήζηεο κπνξνχλ λα παξαγγείινπλ πξντφληα. Μεηά ηελ παξαγγειία απφ ηνλ ρξήζηε αθνινπζείηαη ε εμήο δηαδηθαζία: 1.Παξαγγειία απφ ρξήζηε θαη δέζκεπζε ρξεκάησλ 2.Δπηβεβαίσζε απφ δηαρεηξηζηή θαη έιεγρνο ρξεκάησλ 3.Δηδνπνίεζε ηνπ πξνκεζεπηή 4.Δπηβεβαίσζε απφ πξνκεζεπηή 5.Απνζηνιή πξντφληνο ζηνλ ρξήζηε 6.Δπηβεβαίσζε παξαιαβήο 7.Πιεξσκή ηνπ πξνκεζεπηή θαη ηέινο παξαγγειίαο Τελ πνξεία ηεο παξαγγειίαο κπνξνχλ λα ηελ ειέγρνπλ ηφζν ν δηαρεηξηζηήο φζν θαη ν ρξήζηεο απφ ηηο ζειίδεο ηνπο. Γηα ηηο πιεξσκέο ρξεζηκνπνηήζεθε εηθνληθή ηξάπεδα κε ρξήζε ησλ αξηζκψλ πηζησηηθψλ θαξηψλ. 36

38 2.5 Πξνζσπνπνίεζε Απιή Πξνζσπνπνίεζε Η ζπγθεθξηκέλε πξνζσπνπνίεζε ζηεξίδεηαη ζηηο παξαγγειίεο πνπ έρεη ρξεζηκνπνηήζεη ν ρξήζηεο, ζηηο θαηεγνξίεο πνπ έρεη πξνηηκήζεη, θαη ζηα πξντφληα πνπ έρεη αγνξάζεη. Σπγθεθξηκέλα πξνηείλνληαη ηα δεκνθηιέζηεξα πξντφληα πνπ αλήθνπλ ζηηο θαηεγνξίεο πνπ έρεη πξνηηκήζεη πεξηζζφηεξν ν ρξήζηεο θαηά ηηο αγνξέο ηνπ ζην ζχζηεκα Social Πξνζσπνπνίεζε Σε απηφλ ηνλ ηχπν πξνζσπνπνίεζεο πξνηείλνληαη ηα δεκνθηιέζηεξα πξντφληα πνπ έρνπλ αγνξαζηεί απφ ρξήζηεο πνπ έρνπλ ηα ίδηα ή παξφκνηα ραξαθηεξηζηηθά κε ηνλ ρξήζηε. Τα ραξαθηεξηζηηθά πνπ ρξεζηκνπνηνχληαη είλαη ε ειηθία, ην επάγγεικα θαη ην θχιιν Πξνζσπνπνίεζε κε Φξήζε Facebook Σηελ ζειίδα εκθαλίδνληαη νη facebook θίινη ηνπ ρξήζηε πνπ έρνπλ θάλεη like αιιά θαη νη θηλήζεηο ηνπο ζην ζχζηεκα Cross Product Πξνζσπνπνίεζε Σε φινπο ηνπο ρξήζηεο, άζρεηα αλ είλαη εγγεγξακκέλνη ή φρη, πξνηείλνληαη ηα πξντφληα πνπ έρνπλ αγνξαζηεί πεξηζζφηεξεο θνξέο καδί κε ην πξντφλ ην νπνίν εμεηάδνπλ. Πρ αλ ειέγρνπλ ηηο ιεπηνκέξεηεο ελφο θηλεηνχ ηειεθψλνπ, θαη έλα κνληέιν hands free έρεη ππάξμεη ζε πάξα πνιιέο παξαγγειίεο κε ην ζπγθεθξηκέλν ηειέθσλν, ηφηε ην hand free ζα πξνηαζεί Πξνζσπνπνίεζε κε Φξήζε Βαξψλ Παξαγφλησλ Πξνζσπνπνίεζεο Άιιε κία θαηλνηνκία ηνπ ζπζηήκαηνο πνπ παξνπζηάδεηαη είλαη ε ρξήζε βαξψλ ζηνπο παξάγνληεο πξνζσπνπνίεζεο. Σπγθεθξηκέλα ρξεζηκνπνηνχληαη νη παξάγνληεο ειηθία, επάγγεικα θαη θχιιν. Σε θάπνηα πξντφληα θάπνηνο απφ απηνχο ηνπο παξάγνληεο παίδεη ζεκαληηθφηεξν ξφιν απφ φηη νη άιινη δχν, νπφηε ρξεζηκνπνηψληαο βάξε δίλεηαη ε δπλαηφηεηα λα εθθξαζηεί απηή ε ζεκαληηθφηεηα. Σηελ ζπλέρεηα θαηά ηελ 37

39 επηινγή ησλ πξντφλησλ, κε ηξφπν αληίζηνηρν κε ηελ social πξνζσπνπνίεζε, ρξεζηκνπνηνχληαη ηα βάξε θαη έηζη αιιάδεη ε ζεηξά ζρεηηθφηεηαο θαη θαηά ζπλέπεηα πξνηείλνληαη δηαθνξεηηθά πην ζρεηηθά πξντφληα. 38

40 ΚΔΦΑΛΑΗΟ 3ν ΣΔΥΝΟΛΟΓΗΔ ΠΟΤ ΥΡΖΗΜΟΠΟΗΖΘΖΚΑΝ 3.1 HTML Τί είλαη ε HTML? Η HTML (Hypertext Markup Language) είλαη κία πεξηγξαθηθή γιψζζα πνπ θάζε έθδνζε ηεο νξίδεηαη απφ έλα Document Type Definition. Mε ηα δηάθνξα tags πνπ δηαζέηεη επηηξέπεη ηελ πεξηγξαθή ηνπ ηξφπνπ εκθάληζεο ηνπ θεηκέλνπ κέζα ζηνλ παγθφζκην ηζηφ (WWW). Τα tags απηά, ηα νπνία βξίζθνληαη πάληα κεηαμχ ησλ ζπκβφισλ < θαη >, είλαη επζχλε ηνπ browser ηνπ επηζθέπηε λα ηα κεηαηξέςεη ζηελ επηζπκεηή κνξθή. Η HTML δελ είλαη γιψζζα πξνγξακκαηηζκνχ θαζψο δε δηαζέηεη ηα απαξαίηεηα ζηνηρεία ψζηε λα ραξαθηεξηζηεί σο ηέηνηα, πρ δελ επηηξέπεη αιιαγή ηεο ξνήο εθηέιεζεο θαη δελ πεξηιακβάλεη πξάμεηο θαη αλαζέζεηο. Τα έγγξαθα ηεο είλαη απιά αξρεία θεηκέλνπ πνπ κπνξνχλ λα δεκηνπξγεζνχλ ζε νπνηνδήπνηε επεμεξγαζηή θεηκέλνπ. Οπζηαζηηθά είλαη ε πξψηε θαη πην δηαδεδνκέλε γιψζζα πεξηγξαθήο ηεο δνκήο κηαο ηζηνζειίδαο θαη ρξεζηκνπνηείηαη επξέσο απφ ζρεδηαζηέο ηζηνζειίδσλ. Κάζε HTML αξρείν έρεη ηνλ παξαθάησ ζθειεηφ: <html> </html> <head></head> <body></body> 39

41 3.1.2 Ιζηνξία ηεο HTML Η HTML απνηειεί ππνζχλνιν ηεο γιψζζαο SGML (Standard Generalized Markup Language) ηεο IBM, πνπ ζθνπφ είρε λα ιχζεη ηελ αζπκβαηφηεηα πνπ πξνέθππηε ιφγσ έιιεηςεο ηππνπνίεζεο ζε δηαθνξεηηθά ππνινγηζηηθά ζπζηήκαηα. Τν 1990 ν Tim Berners-Lee απφ ην Cern, δεκηνχξγεζε ην πξσηφθνιιν Hypertext Transfer Protocol (ην γλσζηφ HTTP), ην νπνίν επηηξέπεη κεηαθνξά αξρείσλ κέζσ ηνπ internet θαη έηζη ν Παγθφζκηνο Ιζηφο πήξε ηε ζεκεξηλή κνξθή ηνπ. ιεο νη ζειίδεο ηνπ www ζρεδηάζηεθαλ ρξεζηκνπνηψληαο ηελ πξψηε έθδνζε ηεο HTML. Τα tags ηεο HTML ήηαλ ε αηηία πνπ ην web κεηαηξάπεθε ζε world wide, θαζψο πιένλ ε κνξθή ησλ ζειίδσλ ήηαλ αλεμάξηεηε απφ ηνλ ππνινγηζηή ζηνλ νπνίν εκθαλίδνληαλ ιφγσ ηεο ηππνπνίεζεο πνπ πξνυπήξμε. Τν 1993 εκθαλίζηεθε ν NSCA Mosaic πνχ ήηαλ ν πξψηνο web browser πνπ ππνζηήξηδε γξαθηθά θαη ζηεξηδφηαλ πάλσ ζηεο πξνδηαγξαθέο ηεο HTML ε νπνία ην 1994 απέθηεζε ηε δεχηεξε έθδνζε ηεο ηελ HTML 2.0. ινη νη θαηλνχξγηνη browsers πνπ δεκηνπξγνχληαλ ρξεζηκνπνηνχζαλ ηελ HTML 2.0 θαη ηδηαίηεξα ν πνιχ δεκνθηιήο, θαη γξήγνξνο, Netscape Navigator, ν νπνίνο εθηφο ηεο HTML πεξηειάκβαλε θαη επηπιένλ εηηθέηεο. Η HTML απέθηεζε θαη άιια ραξαθηεξηζηηθά φπσο ρξψκα, πίλαθεο, θείκελν γχξσ απφ ηηο εηθφλεο θηι. θαη θαζψο νη ρξήζηεο, πνπ φιν θαη απμάλνληαλ, απαηηνχζαλ ηα λέα ραξαθηεξηζηηθά λα ελζσκαησζνχλ ζηελ HTML 3.0 ε δηεζλήο επηηξνπή απνθάζηζε λα ηα ζπκπεξηιάβεη. Τειηθά ε έθδνζε 3 δελ έγηλε απνδεθηή απφ ηεο Microsoft θαη Netscape θαη έηζη ην 1996 δεκηνπξγήζεθε ε έθδνζε 3.2. Η έθδνζε 4.0 ηέζεθε ζε θπθνινθνία ην 1997 θαη παξείρε κεγάιε επειημία ζε αιιαγέο νδεγψληαο ζηελ εμέιημε ηνπ CSS. Σήκεξα πιένλ είλαη δπλαηφλ λα δεκηνπξγήζεηο ηζηνζειίδεο ρσξίο λα ρξεηαζηεί λα γξάςεηο νχηε κία γξακκή θψδηθα θαζψο ππάξρεη ινγηζκηθφ πνπ επηηξέπεη ην ζηήζηκν ηζηνζειίδαο νπηηθά κε παξάδεηγκα ην FrontPage ηεο Microsoft. 40

42 3.1.3 Πιενλεθηήκαηα ηεο HTML Δπθνιία ζηε κάζεζε Η κάζεζε ηεο HTML είλαη πνιχ εχθνιε αθφκα θαη ζε αξράξηνπο ρξήζηεο. Η γλψζε απιά ηνπ βαζηθνχ ζθειεηνχ επηηξέπεη ηε δεκηνπξγία απιήο ηζηνζειίδαο θαη απφ εθεί θαη πέξα φζν απμάλεηαη ε γλψζε ησλ tags απμάλνληαη θαη νη δπλαηφηεηεο κνξθνπνίεζεο. Δπθνιία ζηε ρξήζε Δθφζνλ κάζεηο ηα βαζηθά γηα ηελ HTML ε ρξήζε ηεο είλαη εμαηξεηηθά εχθνιε. Η πνιχ απιή ζχληαμε θαη ιεηηνπξγία ησλ tags εμαζθαιίδεη αξθεηά κηθξή πνιππινθφηεηα ελψ θαη ε δεκηνπξγία αξρείσλ HTML είλαη πνιχ απιή δηαδηθαζία. Δπειημία Η HTML είλαη κία εμαηξεηηθά επέιηθηε γιψζζα. Αιιειεπηδξά κε ηε Javascript, ηε CSS θαη άιια applets θαη επηηξέπεη ηελ εκθψιεπζε πξνγξακκάησλ ζην εζσηεξηθφ ηεο κε ζρεηηθά εχθνιν ηξφπν, ρξεζηκνπνηψληαο ηα θαηάιιεια tags. Αλνρή ζηα ζπληαθηηθά ιάζε Η αλνρή ηεο ζηα ιάζε είλαη πνιχ κεγάιε ζε ζρέζε κε ηηο γιψζζεο πξνγξακκαηηζκνχ. Δθηφο απφ ην βαζηθφ ζθειεηφ θαη νξηζκέλα tags, νη πεξηζζφηεξεο παξαιήςεηο δελ απαγνξεχνπλ ηελ εκθάληζε ηεο ζειίδαο αιιά ηελ εκθαλίδνπλ ζε ιίγν δηαθνξεηηθή κνξθή απφ ηελ επηζπκεηή. Τπνζηήξημε από όινπο ηνπο browsers πσο αλαθέξζεθε θαη ζηελ πξνεγνχκελε ελφηεηα ε HTML ήηαλ ε γιψζζα πνπ ρξεζηκνπνηήζεθε ζηνλ πξψην browser! Απφ εθεί θαη πέξα φινη νη browser ηελ ππνζηεξίδνπλ νπφηε ζρεδηάδνληαο ηελ ηζηνζειίδα ρξεζηκνπνηψληαο ηελ εγγπάηαη ηελ εκθάληζε ηεο απφ φινπο ηνπο ππάξρνληεο browsers. Δπξέσο δηαδεδνκέλε Γελ ππάξρεη πιένλ ηζηνζειίδα πνπ λα κελ έρεη ζρεδηαζηεί ρξεζηκνπνηψληαο ηελ HTML γεγνλφο πνπ δείρλεη ηελ ζεκαληηθφηεηα γλψζεο ηεο θαη ηα πεδία πνπ αλνίγεη. 41

43 Μεδεληθό θόζηνο ρξήζεο Ο πξνγξακκαηηζκφο κε θψδηθα HTML είλαη δσξεάλ! Γε ρξεηάδεηαη εγθαηάζηαζε ζπγθεθξηκέλνπ ινγηζκηθνχ θαζψο ηα HTLM files γξάθνληαη ζε απιά αξρεία θεηκέλνπ, ζε νπνηνδήπνηε θεηκελνγξάθν θαη ζε νπνηνδήπνηε ζχζηεκα Μεηνλεθηήκαηα ηεο HTML Παξά ηα αξθεηά πιενλεθηήκαηα πνπ αλαθέξζεθαλ παξαπάλσ ε HTML έρεη θάπνηεο αηέιεηεο. Σεκαληηθφηεξε φισλ είλαη ην γεγνλφο φηη ηα tags είλαη πξνθαζνξηζκέλα. Γελ κπνξεί ε ρξήζηεο λα δεκηνπξγήζεη ηα δηθά ηνπ tags αλάινγα κε ηηο αλάγθεο ηνπ φπσο πρ ζπκβαίλεη ζηελ XML. Δπίζεο ραξαθηεξίδεηαη απφ ζηαηηθφηεηα θαη θάπνηα θελά αζθάιεηαο ιφγσ ηεο απιφηεηαο ηεο. Παξφια απηά παξακέλεη ε λνχκεξν έλα πεξηγξαθηθή γιψζζα ηφζν ζε ρξήζε φζν θαη ζε απνδνρή. 3.2 PHP Τί είλαη ε PHP? Η PHP (Hypertext Preprocessor) είλαη κία script γιψζζα πξνγξακκαηηζκνχ πνπ εθηειείηαη ζηελ πιεπξά ηνπ δηαθνκηζηή θαη ρξεζηκνπνηείηαη γηα ηε δεκηνπξγία δπλακηθψλ ηζηνζειίδσλ, δειαδή ηζηνζειίδσλ πνπλ αιιάδνπλ κε ηηο ελέξγεηεο ηνπ επηζθέπηε. Σπλήζσο ρξεζηκνπνηείηαη καδί κε ηελ HTML, δειαδή εκθσιεχεηαη ζην ζψκα ηεο, ε νπνία επηηξέπεη ηελ κνξθνπνίεζε ησλ απνηειεζκάησλ. Η PHP δε ρξεζηκνπνηείηαη γηα ηελ κνξθνπνίεζε ηνπ θεηκέλνπ θαη γηα ηε δηαθφζκεζε ησλ ηζηνζειίδσλ αιιά επηηξέπεη ιεηηνπξγίεο πνπ ε HTML δελ είλαη δπλαηφλ λα επηηξέςεη. Παξαδείγκαηα ηέηνησλ ιεηηνπξγηψλ είλαη ε εγγξαθή ζε κία online ππεξεζία, ε εθηέιεζε εξσηεκάησλ ζε βάζεηο δεδνκέλσλ, ε δεκηνπξγία εηθφλσλ, ε δεκηνπξγία forum θ.α. Μεηά ηελ εθηέιεζε κία ηέηνηα ιεηηνπξγίαο ηα ζηνηρεία ηεο HTML δελ αιιάδνπλ αιιά ν θψδηθαο ηεο PHP εθηειείηαη ζηελ πιεπξά ηνπ δηαθνκηζηή θαη ηα παξαγφκελα, πνπ κπνξεί λα είλαη είηε HTML είηε άιιν απνηέιεζκα, απνζηέιινληαη ζην ρξήζηε. Δθηφο ηεο HTML επξεία είλαη ε ρξήζε ηεο θαη κε ηελ XHTML αιιά θπξίσο κε ηελ SQL, ν ζπλδπαζκφο ηεο κε ηελ νπνία επηηξέπεη ηελ δηαρείξηζε βάζεσλ δεδνκέλσλ. 42

44 3.2.2 Ιζηνξία ηεο PHP Η PHP πξνέξρεηαη απφ ηελ PHP/FI πνπ ζήκαηλε Personal Home Page/Form Interpreter ηελ νπνία δεκηνχξγεζε έλαο θνηηεηήο νλφκαηη Rasmus Lerdorf ην Σθνπφο ηνπ ήηαλ λα θαηαγξάθεη ηελ είζνδν ζην online βηνγξαθηθφ ηνπ ζεκείσκα θαη γηα απηφ δεκηνχξγεζε κία ζπιινγή απφ pearl αξρεία ηελ νπνία νλφκαζε Personal Home Page Tools (Δξγαιεία Πξνζσπηθήο Σειίδαο). Καζψο ε ιεηηνπξγηθφηεηα ηεο PHP/FI έπξεπε λα απμάλεη ν Rasmus πξνζέζεζε πνιιά ζηνηρεία ηεο C θαη έηζη επέηξεςε ιεηηνπξγίεο φπσο δηαζχλδεζε κε βάζε δεδνκέλσλ. Σηε ζπλέρεηα απνθάζηζε λα δεκνζηνπνηήζεη ηελ PHP/FI ψζηε λα έρνπλ πξφζβαζε θαη άιινη ρξήζηεο κε ζθνπφ λα δηνξζσζνχλ ηα πξνβιήκαηα (bugs) πνπ ππήξραλ θαη λα βειηησζεί ν θψδηθαο. Η PHP/FI είρε αξθεηά ζηνηρεία ηεο PHP πνπ ρξεζηκνπνηνχκε ζήκεξα, θαη πνιιέο νκνηφηεηεο κε ηελ Perl. Τν 1997 αλαβαζκίδεηαη ζηελ PHP/FI 2.0 θαη ιίγν αξγφηεξα νη Andi Gutmans θαη Zeev Suraski μαλαέγξαςαλ ηε γιψζζα γηα λα θαηαθέξνπλ λα δεκηνπξγήζνπλ κία εθαξκνγή ειεθηξνληθνχ εκπνξίνπ θαη έηζη δεκηνπξγήζεθε ε PHP 3.0. Η PHP 3.0 ζπκίδεη πην πνιχ ηελ PHP φπσο ηε γλσξίδνπκε ζήκεξα, κε πιεζψξα λέσλ ραξαθηεξηζηηθψλ θαη δπλαηνηήησλ. Κπξηφηεξα απφ απηά ε ππνζηήξημε αληηθεηκελνζηξαθνχο πξνγξακκαηηζκνχ θαη ε πην ζπλεπήο ζχληαμε ηεο, αιιά θαη ε ππνζηήξημε πνιιψλ δηαθνξεηηθψλ ζπλδέζεσλ βάζεσλ δεδνκέλσλ θαη πξσηνθφιισλ. Ο Andi θαη Zeev ίδξπζαλ θαη ηελ εηαηξεία Zend ε νπνία είλαη ππεχζπλε γηα ηελ αλάπηπμε ηεο PHP. Τν ρεηκψλα ηνπ 1998 έγηλε δηαζέζηκε ε έθδνζε 4.0 πνπ πεξηειάκβαλε λέα ραξαθηεξηζηηθά βειηηψλνληαο θαη επεθηείλνληαο ηελ PHP 3.0, ρξεζηκνπνηψληαο λέα κεραλή ηε ιεγφκελε Zend Engine. Η ηειεπηαία έθδνζε ηεο PHP, ε PHP 5.0, ηέζεθε ζε θπθινθνξία ην 2004 θαη καδί κε ηελ 4 είλαη νη εθδφζεηο πνπ ρξεζηκνπνηνχληαη ζήκεξα, απφ εθαηνληάδεο ρηιηάδεο ζρεδηαζηψλ ηζηνζειίδσλ. Η PHP απηή ηε ζηηγκή πεξηέρεηαη ζε εθαηνκκχξηα ηζηνζειίδσλ θαη ζην πεξίπνπ 20% ησλ ηζηνηφπσλ. 43

45 3.2.3 Πιενλεθηήκαηα ηεο PHP Δπθνιία Μάζεζεο Η PHP ζηεξίδεηαη ζε πνιχ γλσζηέο γιψζζεο πξνγξακκαηηζκνχ φπσο ε C θαη ε Perl, νπφηε ε εθκάζεζε ηεο αλ ππάξρεη νηθεηφηεηα κε απηέο ηεο γιψζζεο είλαη ζρεηηθά απιή. Τςειή Απόδνζε Η PHP δε ρξεζηκνπνηεί πνιινχο πφξνπο ηνπ ζπζηήκαηνο νπφηε «ηξέρεη» γξήγνξα θαη δελ θαζπζηεξεί άιιεο δηαδηθαζίεο. Σπρλά ρξεζηκνπνηείηαη ζαλ Apache module νπφηε θνξηψλεη θαη εθηειείηαη γξήγνξα πλδεζηκόηεηα κε πνιιά ΒΓ Η PHP παξέρεη δπλαηφηεηα ζχλδεζεο κε πνιιά ζπζηήκαηα βάζεσλ δεδνκέλσλ φπσο MySql, Postgresql, Oracle, msql θα. ελψ ρξεζηκνπνηψληαο ην ODBC κπνξεί λα γίλεη ζχλδεζε κε φπνηα βάζε δεδνκέλσλ ρξεζηκνπνηεί αληίζηνηρν πξφγξακκα νδήγεζεο. πκβαηόηεηα Η PHP είλαη ζπκβαηή κε πνιιά ιεηηνπξγηθά ζπζηήκαηα φπσο LINUX θαη WINDOWS. Η κεηαθνξά αξρείσλ php απφ έλα ζχζηεκα ζε άιιν δελ αιιάδεη ηελ εθηέιεζε νχηε απαηηεί αιιαγέο ζηνλ θψδηθα γηα ηελνξζή ιεηηνπξγία ηνπ. Μεδεληθό Κόζηνο Η php δηαηίζεηαη δσξεάλ ζην web ρσξίο λα απαηηείηαη ε αγνξά ζπγθεθξηκέλνπ ινγηζκηθνχ γηα ηε ρξήζε ηεο. Αζθάιεηα Η PHP παξέρεη πνιιά επίπεδα αζθαιείαο γηα λα απνηξέςεη θαθφβνπιεο επηζέζεηο. Τα επίπεδα απηά απμνκεηψλνληαη απφ ην.ini αξρείν. 44

46 Πιεζώξα Βηβιηνζεθώλ Πεξηέρεη πνιιέο βηβιηνζήθεο φπσο γξαθηθά, XML, θξππηνγξάθεζε θα αιιά επηπιένλ ν θάζε ρξήζηεο κπνξεί λα δεκηνπξγήζεη ηηο δηθέο ηνπ βηβιηνζήθεο θαη λα ηηο πξνζζέζεη ζην ζχζηεκα. Δλεξγή θνηλόηεηα Έλα απφ ηα κεγαιχηεξα πιενλεθηήκαηα ηεο PHP είλαη ε θνηλφηεηα ηεο. Η PHP είλαη αλνηθηνχ θψδηθα νπφηε είλαη πην εχθνιν λα βξεζεί θάπνην script αξρείν απφ άιινπο ρξήζηεο θαη λα ρξεζηκνπνηεζεί γηα ηηο εθάζησηε αλάγθεο Μεηνλεθηήκαηα ηεο PHP Λφγσ ηεο απιφηεηαο ηεο ε PHP δελ επηηξέπεη ηε δεκηνπξγία πνιχπινθσλ εθαξκνγψλ γηα ηηο νπνίεο ζα πξέπεη λα ρξεζηκνπνηεζεί άιιε γιψζζα, φπσο JavaScript θαη επηπιένλ κπνξεί πξνθιεζνχλ θάπνηα θελά αζθαιείαο ιφγσ ηνπ γεγνλφηνο φηη είλαη αλνηρηνχ θψδηθα. Δπίζεο, εθφζνλ ε PHP είλαη βαζηζκέλε ζηα UNIX, δελ γίλεηαη ρξεζηκνπνηεζνχλ ζηελ ηζηνζειίδα WINDOS εθαξκνγέο. 3.3 Postgresql Τί είλαη ε Postgresql? Η Postgresql είλαη κία αλνηθηνχ θψδηθα, εμαηξεηηθά επεθηάζηκε αληηθεηκελνζηξαθείο ζρεζηαθή βάζε δεδνκέλσλ, ηεο νπνίαο ε απφ εμέιημε κεηξάεη ήδε πάλσ απφ 20 ρξφληα. Αλνηρηνχ θψδηθα ζεκαίλεη φηη κπνξείο λα απνθηήζεηο ηνλ πεγαίν θψδηθα, λα ρξεζηκνπνηήζεηο ην πξφγξακκα θαη λα ηνλ ηξνπνπνηήζεηο ειεχζεξα ρσξίο λα ππφθεηηαη ζε πεξηνξηζκνχο πλεπκαηηθψλ δηθαησκάησλ ινγηζκηθνχ. Η Postgresql αλαπηχζζεηαη απφ κία νκάδα πξνγξακκαηηζηψλ εγγεγξακκέλσλ ζηε ιίζηα αιιεινγξαθίαο αλάπηπμεο ηεο Postgresql ηεο νπνίαο εγείηαη ν M.Fournier. Γίλεηαη πξνζπάζεηα ε Postgresql λα απνθηήζεη απφιπηε ζπκβαηφηεηα κε ηελ ANSI/ISO SQL θαη λα γίλεη ε λνχκεξν έλα αλνηθηή βάζε ζηνλ θφζκν ελψ αλακέλεηαη λα επεξεάζεη απφ πνιιέο πιεπξέο ην κέιινλ ηεο ANSI/ ISO SQL. Πνιινί νξγαληζκνί, θξαηηθνί θαη κε, θαη εηαηξείεο ρξεζηκνπνηνχλ ηελ Postgresql φπσο Η Ακεξηθαληθή Φεκηθή Κνηλφηεηα θαη ην ADP. 45

47 3.3.2 Ιζηνξία ηεο Postgresql Η Postgreql, πνπ αξρηθά νλνκαδφηαλ Postgres, δεκηνπξγήζεθε ζην UCB ( University of California at Berkeley) απφ ηνλ Michael Stonebraker, θαζεγεηή πιεξνθνξηθήο. Ο Stonebraker άξρηζε ην 1986 ην Postgres ζα ζπλέρεηα ηνπ Ingres, πνπ είρε αξρίζεη λα αλαπηχζζεηαη ην 1977 ζαλ άζθεζε ζηε δεκηνπξγία ελφο ζπζηήκαηνο βάζεο δεδνκέλσλ αλαθεξφκελν ζηελ θιαζζηθή RDMBS ζεσξία. Η αλάπηπμε ηνπ θξάηεζε απφ ην 1986 έσο ην 1994 θαη ζθνπφ είρε ην άλνηγκα λέσλ ρψξσλ ζηηο βάζεηο δεδνκέλσλ κε ηε δηεξεχλεζε αληηθεηκελνζηξαθψλ ηερλνινγηψλ. Σε απηφ ην δηάζηεκα ησλ νθηψ εηψλ ε Posgres εηζήγαγε θαλφλεο, δηαδηθαζίεο θαη αληηθεηκελνζηξαθή concepts, θαη αξγφηεξα έγηλε Illustra πνπ ηειηθά αγνξάζηεθε απφ ηελ IBM γηα 1 εθαηνκκχξην $. Τν 1995 δχν καζεηέο ηνπ Stonebraker, νη Andrew Yu θαη Jolly Chen αληηθαηέζηεζαλ ηελ γιψζζα επεξσηήζεσλ POSTQUEL κε έλα δηεπξπκέλν ππνζχλνιν ηεο SQL θαη νλφκαζαλ ην ζχζηεκα Postgres95, ην νπνίν κε ηε ζεηξά ηνπ ην 1996 έγηλε αλνηθηνχ θψδηθα θαη ζπλέρηζε λα εμειίζζεηαη απφ πξνγξακκαηηζηέο εθηφο ηνπ Berkley. Σηαδηαθά ην Postgres κεηαιιάρζεθε θαη ηα επφκελα 8 ρξφληα απνθηήζεθαλ ζηαζεξή κνξθή ζηνλ θψδηθα, ιεπηνκεξή test πνηφηεηαο, ιίζηεο κελπκάησλ γηα αλαθνξέο πξνβιεκάησλ, πξνζζήθεο λέσλ ραξαθηεξηζηηθψλ θαζψο θαη θάπνηνη νδεγνί γηα ρξήζηεο θαη πξνγξακκαηηζηέο. Τφηε ήηαλ πνπ ε Postgres κεηνλνκάζηεθε ζε Postgresql θαη ραξαθηεξίζηεθε απφ εμαηξεηηθή ζηαζεξφηεηα. Η Postgresql μεθίλεζε κε ηελ έθδνζε 6.0 θαη κε ηε βνήζεηα ησλ εθαηνληάδσλ ρξεζηψλ αλά ηνλ θφζκν εμειίρζεθε ζε θάζε ηνκέα Σηηο εθδφζεηο απφ 6.0 έσο 7.0 επηηεχρζεθαλ κεγάιεο βειηηψζεηο θαη πξνζηέζεθαλ λέα ραξαθηεξηζηηθά φπσο ζπγρξνληζκφο ειέγρνπ, βειηησκέλνη ηχπνη δεδνκέλσλ, ηαρχηεηα θαη ραξαθηεξηζηηθά ηεο SQL. Οη επφκελεο εθδφζεηο, πξνζέζεζαλ αθφκα πεξηζζφηεξεο ιεηηνπξγίεο φπσο outer joins, πνιχπινθεο επεξσηήζεηο, SQL Schemas, αζθάιεηα, δεηθηνδφηεζε θ.α. Σήκεξα ε βάζε δεδνκέλσλ Postgresql είλαη κεγαιχηεξε απφ πνηέ θαη πεξηιακβάλεη πνιιέο εηαηξείεο πνπ ηε ρξεζηκνπνηνχλ ζε απαηηεηηθά πεξηβάιινληα φπσο ε Fujitsu. Σπλερίδεη λα βειηηψλεηαη θαη ε έθδνζε ηεο 8.0 πεξηιακβάλεη κεηαμχ άιισλ Java Store Procedure, tablespaces θαη savepoints. 46

48 3.3.3 Πιενλεθηήκαηα ηεο Postgresql Αλνηθηνύ Κώδηθα Τν γεγνλφο φηη ε Postgresql είλαη αλνηθηνχ θψδηθα είλαη θαη απφ ηα πην βαζηθά πιενλεθηήκαηα ηεο. Τν θπξηφηεξν είλαη φηη είλαη δπλαηφλ λα γίλνπλ ηξνπνπνηήζεηο ζην θψδηθα απφ νπνηνλδήπνηε ρσξίο λα ππάξρεη ε αλεζπρία γηα θπξψζεηο ιφγσ πλεπκαηηθψλ δηθαησκάησλ. Με απηφλ ηνλ ηξφπν βξίζθεηαη ζε ζπλερή εμέιημε θαη βειηίσζε απφ εθαηνληάδεο άηνκα κέζσ internet. Τςειή ππνζηήξημε Η ππνζηήξημε ηεο θνηλφηεηαο ηεο Postgresql είλαη πνιχ πςεινχ επηπέδνπ κε επαγγεικαηίεο θαη κε λα απαληάλε θαη λα ζηεξίδνπλ κε ελζνπζηαζκφ δίλνληαο ιχζεηο ζε πξνβιήκαηα θαη απαληήζεηο ζε εξσηήκαηα. Υακειό θόζηνο Τν θφζηνο ηεο εγθαηάζηαζεο θαη ρξήζεο ηεο Postgresql είλαη κεδεληθφ αθνχ δηαηίζεηαη δσξεάλ κε φια ηα απαηηνχκελα παθέηα θαη εξγαιεία κέζσ internet. Αμηνπηζηία θαη ζηαζεξόηεηα Σε αληίζεζε κε άιιεο βάζεηο είλαη πνιχ ζηαζεξή θαη αμηφπηζηε. Υπάξρνπλ πνιιέο επηρεηξήζεηο πνπ ηε ρξεζηκνπνηνχλ θαη δελ έρνπλ αλαθέξεη νχηε έλα απιφ θφιιεκα ή πξφβιεκα. Δπεθηαζηκόηεηα Ο θψδηθαο είλαη δηαζέζηκνο ζε φινπο. Οπφηε νπνηαδήπνηε αιιαγή ε επέθηαζε ηνπ είλαη δπλαηή ρσξίο ζπλέπεηεο. πκβαηόηεηα Δίλαη ζπκβαηή κε ηα πεξηζζφηεξα ιεηηνπξγηθά ζπζηήκαηα ηχπνπ Unix ελψ κε ην Cygwin είλαη δηαζέζηκε θαη ζηα windows. 47

49 Απνζεθεπηηθή Ηζρύ Η Postgresql κπνξεί λα δηαρεηξηζηεί απνδνηηθά ηαπηφρξνλα κεγάιν αξηζκφ ρξεζηψλ θαη δεδνκέλσλ. Δλδεηθηηθφο είλαη ν παξαθάησ πίλαθαο: Limit Value Maximum Database Size Unlimited Maximum Table Size 32 TB Maximum Row Size 1.6 TB Maximum Field Size 1 GB Maximum Rows per Table Unlimited Maximum Columns per Table Maximum Indexes per Table Unlimited Αλαγλώξηζε Η Postgresql είλαη αλαγλσξηζκέλε ηφζν απφ ηνπο ρξήζηεο ηεο φζν θαη ηε βηνκεραλία πιεξνθνξηθήο ελψ έρεη ληθήζεη 3 θνξέο ζην Linux Journal Editors Choice Award for best DBMS Μεηνλεθηήκαηα ηεο Postgresql Τα θπξηφηεξα κεηνλεθηήκαηα ηεο Postgresql είλαη φηη δελ δνπιεχεη ζσζηά ζηα Windows, αλ θαη ε έθδνζε 8.0 θαίλεηαη λα ππνζηεξίδεηαη, θαη ε βνήζεηα ιακβάλεηαη κφλν κεηά απφ επηθνηλσλία κε άιινπο ρξήζηεο. Δπίζεο δελ έρεη ηχπνπο auto increment θαη γηα θάηη αληίζηνηρν πξέπεη λα ρξεζηκνπνηεζεί sequence, ην νπνίν είλαη ζαθψο πην πνιχπινθν Γεηθηνδφηεζε GIST Τα αξρηθά Gist πξνέξρνληαη απφ ην Generalized Search Trees δειαδή γεληθεπκέλα δέληξα αλαδήηεζεο. Δίλαη κηα ηζνξξνπεκέλε, δέληξν-δνκεκέλε κέζνδνο πξνζπέιαζεο, πνπ δξα σο πξφηππν βάζεο ζην νπνίν εθαξκφδεη ηα απζαίξεηα ζρήκαηα δεηθηνδφηεζεο. B+-trees, r-trees θαη πνιιά άιια ζρήκαηα επξεηεξίαζεο κπνξνχλ λα εθαξκνζηνχλ ζην GIST. Έλα πιενλέθηεκα ηνπ GIST είλαη φηη επηηξέπεη ηελ αλάπηπμε ηπραίσλ ηχπσλ δεδνκέλσλ κε ηηο θαηάιιειεο κεζφδνπο πξνζπέιαζεο, απφ έλαλ εηδηθφ ζ ηνπο ηχπνπο δεδνκέλσλ, παξά έλαλ εηδηθφ ζηηο βάζεηο δεδνκέλσλ. 48

50 Παξαδνζηαθά, ε εθαξκνγή κηαο λέαο κεζφδνπ πξνζπέιαζεο δεηθηψλ ζήκαηλε πνιιή ζθιεξή δνπιεηά. Ήηαλ απαξαίηεην λα γίλνπλ θαηαλνεηά ηα εζσηεξηθά έξγα ηεο βάζεο δεδνκέλσλ. Η δηεπαθή GIST έρεη έλα πςειφ επίπεδν αθαηξεηηθφηεηαο, πνπ απαηηεί ηνλ εθαξκνζηήο ηεο κεζφδνπ πξνζπέιαζεο λα εθαξκφζεη κφλν ηε ζεκαζηνινγία ηνπ ηχπνπ ζηνηρείσλ πνπ πξνζεγγίδεηαη. Τν ίδην ην επίπεδν GIST νπζίαο θξνληίδεη ην ζπλαγσληζκφ, πνπ θαηαγξάθεη θαη πνπ ςάρλεη ηε δελδξηθή δνκή. Οη δείθηεο GIST είλαη απνηειεζκαηηθνί γηα βάζεηο πνπ ρξεζηκνπνηνχλ ρσξηθά δεδνκέλα θαη ζηεξίδνληα ζηε ιεηηνπξγία ησλ R-trees. Ο ηξφπνο ζχληαμεο ηνπο είλαη ηεο κνξθήο: CREATE INDEX όλνκα_δείθηε ON όλνκα_πίλαθα USING gist(ζηήιε); tsvector θαη tsquery Η PostgreSQL παξέρεη δχν ηχπνπο δεδνκέλσλ, ην tsvector θαη ην tsquery, πνπ είλαη ζρεδηαζκέλνη γηα ηελ ππνζηήξημε αλαδήηεζεο query matches κέζα ζε θείκελα θπζηθήο γιψζζαο. tsvector Μία ηηκή tsvector είλαη κία δηαηεηαγκέλε ιίζηα απφ δηαθξηηέο, θαλνληθνπνηεκέλεο ιέμεηο (lexemes). Κάζε lexeme κπνξεί λα πάξεη βάξνο πνπ ζα θαζνξίζεη ηελ πξνηεξαηφηεηα ηνπ ζηελ αλαδήηεζε. Γηα ηελ θαλνληθνπνίεζε ησλ ιέμεσλ ρξεζηκνπνηείηαη ε ζπλάξηεζε to_tsvector. tsquery Μία ηηκή tsquery απνζεθεχεη ηα lexemes πξνο αλαδήηεζε θαη ηα ζπλδπάδεη κε Boolean ηειεζηέο. Μα ηνλ ζπλδπαζκφ ησλ δχν παξαπάλσ ηχπσλ απμάλεηαη ζεκαληηθά ηφζν ε ηαρχηεηα φζν θαη ε εθπία ηεο αλαδήηεζεο ζε θείκελα θπζηθνχ θεηκέλνπ αθνχ δελ ρξεηάδεηαη ν ρξήζηεο λα εηζάγεη ηνλ αθξηβή φξν ψζηε λα αλαθηήζεη απηφ πνπ ςάρλεη. 49

51 3.4 Javascript Τί είλαη ε Javascript? Η Javascript είλαη κία γιψζζα πξνγξακκαηηζκνχ πνπ ζθνπφ έρεη ηε δεκηνπξγία δπλακηθψλ ηζηνζειίδσλ. Ο θψδηθαο ηεο Javascript ζπλήζσο εκθσιεχεηαη ζηελ HTML θαη ηα script ηεο εθηεινχληαη ρσξίο λα έρεη πξνεγεζεί κεηαγιψηηηζε. Σε αληίζεζε κε ηελ PHP ε εθηέιεζε γίλεηαη ζην κέξνο ηνπ client θαη φρη ηνπ server. Παξέρεη ζε κία ζειίδα ιεηηνπξγίεο πνπ δελ κπνξεί λα εθηειέζεη ε HTML φπσο ε αληίδξαζε ζε events, φηαλ πρ ν ρξήζηεο επηιέγεη έλα θνπκπί ή εζηηάδεη ζε θάπνην κέξνο ηεο ζειίδαο. Τα ζελάξηα κπνξεί λα θάλνπλ απφ απιέο ελέξγεηεο φπσο ην άλνηγκα κίαο ζειίδαο ή ε εκθάληζε HTML εγγξάθσλ, κέρξη πνιχ πνιχπινθεο φπσο ην ςάμηκν ζε βάζεηο δεδνκέλσλ ή ν έιεγρνο πξφζβαζεο. Δπίζεο κπνξνχλ λα επηηεπρζνχλ ελέξγεηεο φπσο ξνιφγηα, εκθάληζε εκεξνκελίαο, επαλαθφξησζε κέξνπο ηνπ παξαζχξνπ, θείκελν πνπ νιηζζαίλεη θ.α. Υπνζηεξίδεηαη απφ ζρεδφλ φινπο ηνπο γλσζηνχο browsers, φπσο ν explorer θαη o netscape θαη γηα λα κπνξεί έλαο browser λα εθηειέζεη ζελάξηα Javascript πξέπεη λα δηαζέηεη έλα Javascript δηεξκελεπηή Τέινο ε Javascript δελ πξέπεη λα ζπγρέεηαη θαζψο είλαη δχν δηαθνξεηηθέο γιψζζεο πξνγξακκαηηζκνχ Ιζηνξία ηεο Javascript Σηελ αξρή ηεο δεκηνπξγίαο ηνπ web φιεο νη ηζηνζειίδεο ήηαλ ζηαηηθέο, δειαδή φινη νη ρξήζηεο έβιεπαλ αθξίβσο ηελ ίδηα ζειίδα ρσξίο λα κπνξνχλ λα αιιειεπηδξνχλ κε απηήλ. Γηα λα κπνξνχλ νη ρξήζηεο λα αιιειεπηδξνχλ κε ηελ ηζηνζειίδα ρξεηαδφηαλ έλα είδνο γιψζζαο πξνγξακκαηηζκνχ πνπ ζα κπνξνχζε λα εθηειεζηεί ζην ίδην ππνινγηζηηθφ ζχζηεκα κε ην browser έηζη ψζηε λε κε ρξεηάδεηαη λα μαλαθνξηψλεη ε ζειίδα. H Netscape εκθάληζε πξψηα κία ηέηνηα γιψζζα πνπ νλνκαδφηαλ Livescript αιιά θαζψο ε Java γηλφηαλ επξέσο γλσζηή απνθάζηζε λα κεηνλνκάζεη ηε Livescript ζε Javascript πηνζεηψληαο θάπνηα ζηνηρεία ηεο Java. Ωζηφζν αλ θαη νη θψδηθεο ησλ δχν γισζζψλ κνηάδνπλ δελ πξέπεη λα ηηο ζπγρένπκε θαζψο εμππεξεηνχλ ηειείσο δηαθνξεηηθέο ιεηηνπξγίεο. Σηε ζπλέρεηα ν internet explorer αλαβαζκίζηεθε ψζηε λα ππνζηεξίδεη ηε Jscript, γιψζζα πνιχ θνληηλή ηεο Javascript, αιιά φζν ν explorer γηλφηαλ φιν θαη πην δεκνθηιήο αλαγθάζηεθε λα ππνζηεξίμεη πιήξσο ηελ Javascript. 50

52 Τν 1996 ε ζεκαληηθφηεηα ηεο Javascript νδήγεζε ζηε ζέζπηζε ελφο ζψκαηνο δηεζλψλ standards πνπ νλνκάζηεθε ECMA θαη ήηαλ ππεχζπλν γηα ηελ εμέιημε ηεο γιψζζαο, έηζη απηή πήξε ηελ νλνκαζία ECMAscript αλ θαη αθφκα πξνηηκάηαη ην Javascript Πιενλεθηήκαηα ηεο Javascript Δπθνιία ζηε κάζεζε Τν γεγνλφο φηη πεξηέρεη πνιιά ζηνηρεία ηεο C θαη ηεο Java ζε ζπλδπαζκφ κε ηελ απιφηεηα ηεο ηελ θάλνπλ εχθνιε ζηελ εθκάζεζε ηδηαίηεξα γηα ρξήζηεο εμνηθεησκέλνπο κε ηηο δχν απηέο γιψζζεο. Μεδεληθό Κόζηνο Η Javascript δηαηίζεηαη δσξεάλ ζην web, είλαη κηθξή ζε κέγεζνο, θαη δε ρξεηάδεηαη ηελ απφθηεζε ζπγθεθξηκέλνπ ινγηζκηθνχ γηα ηε ρξεζηκνπνίεζε ηεο. πκβαηόηεηα Δίλαη ζπκβαηή κε φια ηα γλσζηά ιεηηνπξγηθά ζπζηήκαηα, Windows, Linux, Unix. Γηάδνζε Δίλαη επξέσο δηαδεδνκέλε. ιεο νη θαηλνχξγηεο scripting γιψζζεο βαζίδνληαη ζε απηήλ θαη κεγάινο αξηζκφο ηζηνζειίδσλ ηε ρξεζηκνπνηνχλ. Τπνζηήξημε από browsers Υπνζηεξίδεηαη απφ φινπο ηνπο browsers φπσο Internet Explorer ηεο Microsoft θαη Netscape. Σαρύηεηα Δίλαη γξήγνξε ζηελ εθηέιεζε θαη δε θαηαλαιψλεη ζεκαληηθφ αξηζκφ πφξσλ ηνπ ζπζηήκαηνο. 51

53 3.4.4 Μεηνλεθηήκαηα ηεο Javascript ΗJavascript δελ είλαη κία πιήξεο γιψζζα πξνγξακκαηηζκνχ κε απνηέιεζκα λα πζηεξεί ζε θάπνηνπο ηνκείο φπσο ζε πξνγξακκαηηζκφ απαηηήζεσλ θαη πνιχπινθσλ εθαξκνγψλ. Γελ επηηξέπεη ην ζρεδηαζκφ γξαθηθψλ φπσο ηξηγψλσλ θαη θχθισλ θαη επηπιένλ γηα ιφγνπο αζθαιείαο δελ κπνξεί λα δηαρεηξηζηεί αξρεία ηνπ ππνινγηζηή ζηνλ νπνίν εθηειείηαη. Τέινο θάπνηεο απφ ηηο κεζφδνπο ηεο δελ ιεηηνπξγνχλ νκνηφκνξθα. 3.5 Linux Τί είλαη ηα Linux? Τα Linux είλαη έλα αλνηρηνχ θψδηθα ιεηηνπξγηθφ ζχζηεκα βαζηζκέλν ζηα Unix ην νπνίν έρεη εμειηρζεί κε ηε βνήζεηα εθαηνληάδσλ πξνγξακκαηηζηψλ απφ φινλ ηνλ θφζκν ζηα 20 πεξίπνπ ρξφληα χπαξμεο ηνπ. Μεξηθά απφ ηα ραξαθηεξηζηηθά πνπ δηαζέηνπλ ηα Linux είλαη ηδεαηή κλήκε, multitasking, δηακνηξαδφκελεο βηβιηνζήθεο θ.α. Τν γεγνλφο φηη ν πεγαίνο θψδηθαο ηνπ δηαλέκεηαη ειεχζεξα δίλεη ηε δπλαηφηεηα ζηνπο ρξήζηεο λα αιιάδνπλ ην ζχζηεκα θαηά ηελ θξίζε ηνπο θαη λα ηνπ πξνζθέξνπλ λέα ραξαθηεξηζηηθά. Η αλζεθηηθφηεηα θαη ε πξνζαξκνζηηθφηεηα ηνπ, ηνπ έρνπλ πξνζδψζεη θχξνο θαη ην έρνπλ θέξεη ςειά ζε δεκνηηθφηεηα ψζηε Δηαηξείεο φπσο ε Toshiba, ε IBM θαη ε H&P ην ρξεζηκνπνηνχλ θαη ην ππνζηεξίδνπλ. Απηή ηε ζηηγκή ππάξρνπλ πεξίπνπ 400 δηαθνξεηηθέο δηαλνκέο ησλ Linux κε πην γλσζηέο ηα Ubuntu, πνπ έρεη ρξεζηκνπνηεζεί ζηελ παξνχζα δηαλνκή, Debian θαη Fedora θαη ν αξηζκφο ηνπο ζπλερψο απμάλεηαη απφ ηνπο πνιινχο ρξήζηεο αλά ηνλ θφζκν. Ζ δηαλνκή Ubuntu Δίλαη ίζσο ε πην δηαζέζηκε απφ ηηο δηαλνκέο ησλ Linux, βαζίδεηαη ζην Debian GNU/Linux θαη ραξαθηεξίδεηαη απφ ηελ επθνιία ρξήζεο ηνπ θαη ηελ θηιηθφηεηα πξνο ην ρξήζηε. πσο φιεο νη δηαλνκέο ηνπ Linux δηαηίζεηαη δσξεάλ θαη ππνζηεξίδεηαη απφ ηελ Cononical Ltd. Ubuntu ζηα λνηηναθξηθάληθα ζεκαίλεη, ζε ειεχζεξε κεηάθξαζε, είκαζηε άλζξσπνη ιφγσ ηνλ άιισλ αλζξψπσλ. 52

54 3.5.2 Ιζηνξία ησλ Linux Τν 1983 ν Richard Stallman αλέπηπμε έλα unix ζπκβαηφ ιεηηνπξγηθφ ζχζηεκα, ην GNU, ην νπνίν ήηαλ ειεχζεξνπ ινγηζκηθνχ. Μέρξη ην 1991 είραλ πινπνηεζεί απφ πξνγξακκαηηζηέο ηα πεξηζζφηεξα πξνγξάκκαηα θαη ιεηηνπξγίεο θαη ην κφλν πνπ έιεηπε ήηαλ ν ππξήλαο. Τφηε ν Linux Torvalds, έλαο Φηιαλδφο θνηηεηήο, πνπ ρξεζηκνπνηνχζε Minix άξρηζε λα γξάθεη δηθφ ηνπ ππξήλα, αλαπηχζζνληαο driver ζπζθεπψλ. Απηφο ν ππξήλαο, πνπ νλνκάζηεθε Linux, ζπλδπάζηεθε κε ην GNU θαη έηζη δεκηνπξγήζεθε ην πξψην νινθιεξσκέλν ειεχζεξν ιεηηνπξγηθφ ζχζηεκα. Μεηά απφ κεγάιε πξνζπάζεηα απφ ηνλ Torvalds αιιά θαη πνιινχο εζεινληέο κέζσ Internet ηέζεθε ζε θπθινθνξία ε έθδνζε 0.11, πνπ ήηαλ έλα ζχζηεκα Linux πνπ κπνξνχζε λα ζηαζεί κφλν ηνπ. Με ηελ έθδνζε 0.12 ην Linux απέθηεζε ζηαζεξφηεηα θαη κε ηελ 0.95 πνιπιεηηνπξγηθφηεηα. Με ηε βνήζεηα ησλ αλεμάξηεησλ πξνγξακκαηηζηψλ εμειίρζεθε ηαρχηαηα θαη πνιιά απφ ηα bugs ηνπ δηνξζψζεθαλ, ελψ ην ινγηζκηθφ θαη νη εθαξκνγέο πνπ ζρεδηαδφηαλ γηα ηα Linux απμάλνληαλ ξαγδαία. Τα επφκελα ρξφληα έγηλε δεκνθηιέο ηδηαίηεξα γηα εθαξκνγέο δηαδηθηχνπ θαη βάζεηο δεδνκέλσλ θαη κέρξη ην 2000 νη πεξηζζφηεξεο εηαηξείεο πιεξνθνξηθήο ην ππνζηήξηδαλ. Τν 2001 ην Linux αλαβαζκίζηεθε ζεκαληηθά απνθηψληαο ζπκβαηφηεηα κε επεμεξγαζηέο ησλ 64 bits. Λφγσ ηεο θχζεο ηνπ ην Linux αλαβαζκίδεηαη θαη βειηηψλεηαη ζπλερψο απφ έλα κεγάιν δίθηπν ρξεζηψλ θαη θαίλεηαη φηη απηφ ζα ζπλερίζεη λα γίλεηαη εθζεηηθά θαη ηα επφκελα ρξφληα, αλαγθάδνληαο φιν θαη πεξηζζφηεξνπο νξγαληζκνχο θαη ηδηψηεο λα ην ρξεζηκνπνηνχλ Πιενλεθηήκαηα ησλ Linux Αλνηθηνύ Κώδηθα Τν κεγαιχηεξν πιενλέθηεκα ησλ Linux είλαη ε ειεχζεξε δηαζεζηκφηεηα ηνπ θψδηθα, ε νπνία επηηξέπεη ζηνπο ρξήζηεο λα δεκηνπξγήζνπλ εθαξκνγέο θαη λα ηξνπνπνηήζνπλ ην ιεηηνπξγηθφ φπσο επηζπκνχλ. Δπηπιένλ ρξήζηεο απφ φιν ηνλ θφζκν κε απηφλ ηνλ ηξφπν βειηηψλνπλ ζπλερψο ησλ θψδηθα θαη ιχλνπλ πξνβιήκαηα. 53

55 Μεδεληθό Κόζηνο Οη δηαλνκέο ηνπ Linux δηαηίζεληαη δσξεάλ ζην web ρσξίο λα απαηηείηαη ε απφθηεζε άδεηαο ρξήζεο. Δπίζεο δηαηίζεηαη ινγηζκηθφ πςειήο πνηφηεηαο επίζεο δσξεάλ ζην web ζε αληίζεζε πρ κε ηα windows πνπ απαηηείηαη ηφζν λα αγνξάζεηο ην ιεηηνπξγηθφ φζν θαη ηα πξνγξάκκαηα πνπ δνπιεχνπλ ζε απηφ. ηαζεξόηεηα Η ζηαζεξφηεηα ηνπ Linux είλαη πξαγκαηηθά αμηνζεκείσηε. Παγψκαηα, αλάγθεο γηα επαλεθθίλεζε, θνιιήκαηα απφ έιιεηςε κλήκεο είλαη εμαηξεηηθά ζπάληα θαηλφκελα. Απόδνζε Τν Linux κπνξνχλ λα εμππεξεηήζνπλ κεγάιν αξηζκφ ρξεζηψλ ηα ηαπηφρξνλα, λα απμήζνπλ ηε ιεηηνπξγηθφηεηα παιαηψλ ζπζηεκάησλ θαη λα πξνζθέξνπλ πςειή απφδνζε ζε δίθηπα θαη ζηαζκνχο εξγαζίαο. Δμνηθείσζε κε ην δηαδίθηπν Η αλάπηπμε ηνπ Linux έγηλε νπζηαζηηθά κέζσ ηνπ internet νπφηε ππνζηεξίδεη ηζρπξά ηηο ιεηηνπξγίεο ηνπ δηαδηθηχνπ θαη είλαη ηδαληθφ γηα εθαξκνγέο server client ιφγσ ηεο ηαρχηεηαο θαη ηεο αμηνπηζηίαο ηνπ. Δπειημία Τα Linux κπνξνχλ λα ρξεζηκνπνηεζνχλ γηα εθαξκνγέο server, desktop θαη εκθσιεπκέλα ζπζηήκαηα θαη δελ είλαη απαξαίηεην λα εγθαηαζηήζεηο φια ηα θνκκάηηα κηαο εθαξκνγήο αιιά κφλν απηά πνπ ρξεηάδνληαη. Multitasking Δίλαη ζρεδηαζκέλα γηα λα εθηεινχλ πνιιέο δηεξγαζίεο ηαπηφρξνλα θαη κε πςειή απφδνζε. 54

56 Αζθάιεηα Τα Linux πεξηέρνπλ firewall ζηνλ ππξήλα ηνπο θαη είλαη απφ ηα πην αζθαιή ιεηηνπξγηθά ζπζηήκαηα. Πξνγξάκκαηα θαη εθαξκνγέο αζθαιείαο είλαη εχθνιν λα βξεζνχλ ζην web θαη λα απνθηεζνχλ δσξεάλ ελψ κεγάιν ξφιν παίδεη θαη ην γεγνλφο φηη ε πιεηνλφηεηα ησλ ηψλ είλαη ζρεδηαζκέλε γηα ηα windows. Τπνζηήξημε Παιαηόηεξνπ Hardware Παιηά computers κε κηθξή κλήκε κπνξνχλ λα ηξέμνπλ ζρεηηθά απνδνηηθά ηα Linux ελψ θαη παιηέο ζπζθεπέο πνπ ζεσξνχληαη μεπεξαζκέλεο κπνξνχλ λα εγθαηαζηαζνχλ θαη λα ιεηηνπξγήζνπλ ηθαλνπνηεηηθά Μεηνλεθηήκαηα Τα Linux είλαη ζρεηηθά δχζθνια ζηελ εθκάζεζε. Ο ρξήζηεο πξέπεη λα μέξεη λα δνπιεχεη απφ ηε γξακκή εληνιψλ θαη λα θάλεη πξάγκαηα πνπ δελ έρνπλ θάλεη άιινη γηα απηφλ. Γελ ππάξρεη θηιηθφηεηα θαη δπζηπρψο νη πεξηζζφηεξεο γλψζηεο εθαξκνγέο είλαη γξακκέλεο γηα ηα Windows νπφηε είλαη απαξαίηεηε ε αλαδήηεζε αληίζηνηρσλ. Λφγσ ηεο δηαζεζηκφηεηαο ηνπ θψδηθα δελ ππάξρνπλ εγγπήζεηο φηη ηα πξνγξάκκαηα πνπ απνθηνχληαη δνπιεχνπλ ζσζηά αθνχ δελ έρνπλ πεξάζεη απφ ηνπο απαξαίηεηνπο ειέγρνπο αζθαιείαο ελψ νη πνιιέο δηαθνξεηηθέο δηαλνκέο εκπνδίδνπλ ηελ θπθινθνξία κία θαη κφλν έθδνζεο. Φπζηθά ε ηζρπξή θνηλφηεηα ησλ Linux βνεζάεη ζπλερψο πξνζπαζψληαο λα βειηηψζεη ην ιεηηνπξγηθφ θαη λα ιχζεη πιήξσο ηα παξαπάλσ πξνβιήκαηα. 3.6 Smarty Τη είλαη ην smarty Τν smarty είλαη έλα web template ζχζηεκα γξακκέλν ζε php πνπ παξέρεη δηαρσξηζκφ ηεο παξνπζίαζεο θαη ηεο ινγηθήο ηεο εθαξκνγήο, δειαδή δηαρσξηζκφ HTML/CSS απφ ηελ PHP. Παξάγεη web πεξηερφκελν κε ηελ ηνπνζέηεζε εηδηθψλ smarty tags ζην έγγξαθν, ηα νπνία επεμεξγάδνληαη θαη αληηθαζηζηνχληαη κε άιιν θψδηθα. 55

57 3.6.2 Πιενλεθηήκαηα ηνπ smarty Δπθνιία ζπληήξεζεο Ο δηαρσξηζκφο ζρεδηαζκνχ θαη ινγηθήο έρεη σο απνηέιεζκα ηελ εχθνιε ζπληήξεζε ηνπ ζπζηήκαηνο αθνχ πιένλ δελ ππάξρνπ ηεξάζηηα αξρεία θψδηθα πνπ λα εκπιέθνπλ php, html,css θηι. Σαρύηεξν loading ζε ζρέζε κε άιια templates Τν smarty πξαγκαηνπνηεί γξήγνξν caching ησλ αξρείσλ κεηψλνληαο ηνλ ρξφλν θνξηψκαηνο ηνπ site Βειηίσζε αζθάιεηαο Η ιεηηνπξγίεο πιένλ δελ είλαη πξνζβάζηκεο άξα απμάλεηαη ε αζθάιεηα απφ hackers θαη παξαβηάζεηο ηνπ ζπζηήκαηνο. Δπηηάρπλζε αλάπηπμεο Ο δηαρσξηζκφο πνπ αλαθέξζεθε παξαπάλσ κεηψλεη ην κέγεζνο θαη ηελ πνιππινθφηεηα ησλ αξρείσλ δηεπθνιχλνληαο ηελ αλάπηπμε. Δπαλαρξεζηκόηεηα Με ηελ δεκηνπξγία επέιηθησλ templates ν ίδηνο θψδηθαο κπνξεί λα ρξεζηκνπνηεζεί εχθνια θαη κε κηθξέο αιιαγέο ζε άιια παξφκνηα projects Γσξεάλ ρξήζε Τν smarty είλαη αλνηθηνχ θψδηθα θαη δηαλέκεηαη δσξεάλ ηφζν γηα ηδησηηθή φζν θαη γηα εκπνξηθή ρξήζε. 56

58 ΚΔΦΑΛΑΗΟ 4 ν Βάζε Γεδνκέλσλ 4.1 Οληόηεηεο θαη γλσξίζκαηα Η βάζε δεδνκέλσλ ηνπ ζπζηήκαηνο πεξηιακβάλεη 8 νληφηεηεο. Τνπο ρξήζηεο, ηα πξνηφληα, ηνπο ΤΚ, ηα θαηαζηήκαηα, ηηο θαηεγνξίεο, ηηο παξαγγειίεο, ηα ζέκαηα θαη ηηο απαληήζεηο ηνπ forum. Γηα ηνπο ρξήζηεο απνζεθεχνληαη ην username, ην password, ην φλνκα, ην επίζεην, ην ηειέθσλν, ην e_mail, ην θχιν θαη ην επάγγεικα, ην δηθαίσκα, δειαδή αλ είλαη δηαρεηξηζηήο ή απιφο ρξήζηεο, ε πφιε, ην ηειέθσλν θαη ηα ζηνηρεία ηεο πηζησηηθήο θάξηαο ηνπ. Γηα ηα θαηαζηήκαηα απνζεθεχνληαη ην id, ην φλνκα θαη κία πεξηγξαθή. Γηα ηηο θαηεγνξίεο θξαηάκε ην id, ην φλνκα, θαη κία πεξηγξαθή επίζεο. Κάζε θαηεγνξία αλήθεη ζε έλα θαηάζηεκα. Γηα ηνπο ΤΚ ηνλ πεληαςήθην θσδηθφ θαζψο θαη απφ ην γεσγξαθηθφ πιάηνο θαη κήθνο ηνπ. Γηα ηα πξνηφληα απνζεθεχνληαη έλα κνλαδηθφ id, ην φλνκα ηνπ πξνηφληνο, ε πφιε, ε ηηκή, έλα image, ηα βάξε ησλ παξαγφλησλ πξνζσπνπνίεζεο, έλα video, θαη ε βαζκνιφγεζε πνπ έρεη πάξεη. Κάζε πξνηφλ αληηζηνηρεί ζε έλαλ ΤΚ, έρεη αλέβεη απφ έλαλ ρξήζηε ελψ αλήθεη ζε κία ή πεξηζζφηεξεο θαηεγνξίεο. Κάζε παξαγγειία έρεη έλαλ κνλαδηθφ id, ηελ ζπλνιηθή ηηκή ησλ πξνηφλησλ πνπ πεξηέρεη, ηελ εκεξνκελία δεκηνπξγίαο ηεο θαη ηελ θαηάζηαζε ηεο, ελψ πξαγκαηνπνείηαη απφ έλαλ ρξήζηε. Κάζε ζέκα ηνπ forum έρεη έλαλ κνλαδηθφ ηίηιν, έρεη δεκηνπξγεζεί απφ θάπνηνλ ρξήζηε, θαη επίζεο θξαηηέηαη θαη ε εκεξνκελία δεκηνπξγίαο ηνπ. Κάζε απάληεζε ζην forum αλήθεη ζε έλα ζέκα θαη έρεη δεκηνπξγεζεί απφ θάπνηνλ ρξήζηε, ελψ πεξηέρεη ην κήλπκα, ηελ εκεξνκελία απάληεζεο, θαη έλα κνλαδηθφ id. 57

59 4.2 Σν Γηάγξακκα Οληνηήησλ-ρέζεσλ Τν ER ηεο βάζεο θαίλεηαη παξαθάησ: Οπφηε φπσο θαίλεηαη θαη παξαπάλσ ην πξσηεχνλ θιεηδί ηνπ Φξήζηε είλαη ην username ηνπ. Οη νληφηεηεο Πξνηφλ, Καηεγνξία, Καηάζηεκα, Απάληεζε θαη Παξαγγειία έρνπλ σο πξσηεχνληα θιεηδηά κνλαδηθά id. Τν ζέκα έρεη σο πξσηεχνλ θιεηδί ηνλ ηίηιν ηνπ θαη ν ΤΚ ηνλ θσδηθφ ηνπ. Κάζε θαηεγνξία κπνξεί λα πεξηέρεη 1 ή πεξηζζφηεξα πξνηφληα ελψ θάζε πξνηφλ πξέπεη λα αλήθεη ζε ηνπιάρηζηνλ κία θαηεγνξία. Κάζε θαηεγνξία κπνξεί λα αλήθεη νπσζδήπνηε ζε θάπνην θαηάζηεκα ελψ ζε θάζε θαηάζηεκα κπνξνχλ λα αλήθνπλ 1 ή πεξηζζφηεξεο θαηεγνξίεο. Δπίζεο θάζε πξνηφλ πξέπεη λα έρεη αλέβεη απφ έλα ρξήζηε θαη λα αληηζηνηρεί ζε έλαλ ΤΚ. Κάζε παξαγγειία πξέπεη λα πεξηέρεη έλα ή πεξηζζφηεξα πξνηφληα, γηα ηα νπνία θξαηίέηαη ε ζπλνιηθή πνζφηεηα, θαη λα έρεη δεκηνπξγεζεί απφ έλαλ ρξήζηε. Κάζε απάληεζε πξέπεη λα αλήθεη ζε έλα ζάκα θαη λα έρεη δεκηνπξγεζεί απφ θάπνηνλ ρξήζηε φπσο θαη θάζε ζέκα. Οη ρξήζηεο κπνξνχλ λα αλεβάδνπλ 1 ε πεξηζζφηεξα πξνηφληα, λα πξαγκαηνπνηνχλ κία ή πεξηζζφηεξεο παξαγγειίεο, λα δεκηνπξγνχλ έλα ε πεξηζζφηεξα ζέκαηα θαη λα πνζηάξνπλ κία ή πεξηζζφηεξεο απαληήζεηο ζην forum. 58

60 4.3 Σν ρεζηαθό Γηάγξακκα Τν ζρεζηαθφ δηάγξακκα θαίλεηαη παξαθάησ: Απφ ηα παξαπάλσ πξνθχπηεη φηη ν πίλαθαο Πξνηφλ πεξηέρεη ηα μέλα θιεηδία Τ.Κ, πνπ αληηζηνηρεί ζηνλ θσδηθφ ηνπ ΤΚ πνπ αληηζηνηρεί ην πξνηφλ θαη Φξήζηεο πνπ αληηζηνηρεί ζην username ηνπ ρξήζηε πνπ έρεη αλεβάζεη ην πξνηφλ. Ο πίλαθαο Πεξηέρεη έρεη σο μέλα θιεηδά ην Καηεγνξία πνπ αληηζηνηρεί ζην id ηεο θαηεγνξίαο θαη ην ID_Πξνηφληνο πνπ πξνθαλψο αληηζηνηρεί ζην ID ηνπ πίλαθα πξνηφλ. Ο πίλαθαο απηφο εθθξάδεη ηελ θαηεγνξία πνπ αλήθεη θάζε πξνηφλ. Ο πίλαθαο Καηεγνξία έρεη σο μέλν θιεηδί ην Καηάζηεκα πνπ αληηζηνηρεί ζην ID ηνπ θαηαζηήκαηνο ζην νπνίν αλήθεη. Ο πίλαθαο Παξαγγειία έρεη σο μέλν θιεηδί ην Username_Φξήζηε πνπ αληηζηνηρεί ζην username ηνπ ρξήζηε πνπ ηελ πξαγκαηνπνίεζε ελψ ν πίλαθαο πεξηιακβάλεη εθθξάδεη ηα πξνηφληα πνπ πεξηιακβάλεη θάζε παξαγγειία θαη έρεη μέλα θιεηδηα ηα Παξαγγειία θαη ID_Πξνηφληνο πνπ αληηζηνηρνχλ ζην ID ηεο παξαγγειία θαη ηνπ πξνηφληνο. Ο πίλαθαο Απάληεζε έρεη μέλα θιεηδηά ην Θέκα πνπ αληηζηνηρεί ζηνλ ηίηιν ηνπ ζέκαηνο πνπ αλήθεη θαη ην Uploader πνπ αληηζηνηρεί ζην username ηνπ ρξήζηε πνπ ην αλέβαζε. Τν μέλν θιεηδί Uploader ηνπ πίλαθα Θέκα εθθξάδεη ην ίδην αθξηβψο, δειαδή ην username ρξήζηε πνπ δεκηνχξγεζε ην ζέκα. 59

61 4.4 Τινπνίεζε ηεο Βάζεο Η πινπνίεζε ηεο βάζεο έγηλε ρξεζηκνπνηψληαο ηελ Postgresql. Τν φλνκα πνπ δφζεθε ζηε βάζε είλαη ην the_greek_bay. Η δεκηνπξγία ηεο βάζεο έγηλε κε ηελ εληνιή CREATE DATABASE the_greek_bay WITH OWNER = gbadmin ENCODING = 'UTF8'; Σηε ζπλέρεηα γηα λα ρξεζηκνπνηεζεί ε ζπλάξηεζε distance_sphere() ζπκπεξηιήθζεθε ην postgis σο εμήο: createlang plpgsql the_greek_bay psql -d the_greek_bay -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql psql -d the_greek_bay -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql Αθνινχζσο δεκηνπξγήζεθαλ νη πίλαθεο ηεο βάζεο πνπ αθνινπζνχλ Ο πίλαθαο ησλ ρξεζηψλ users Ο πίλαθαο users δεκηνχξγεζεθε σο εμήο: CREATE TABLE users ( username character varying(50) NOT NULL, "password" character varying(50) NOT NULL, first_name character varying(50) NOT NULL, last_name character varying(50) NOT NULL, phone_num character varying(11) NOT NULL, character varying(50) NOT NULL, city character varying(50) NOT NULL, gender gendr NOT NULL, rights u_rights NOT NULL, ocupp character varying(50) DEFAULT 'unknown'::character varying, credit_card text, money_hold bigint NOT NULL DEFAULT 0, age integer, CONSTRAINT users_pkey PRIMARY KEY (username) ) WITH (OIDS=FALSE); ALTER TABLE users OWNER TO gbadmin; Τν πεδίν money_hold είλαη βνεζεηηθφ γηα ηηο ζπλαιιαγέο κέζσ ηεο εηθνληθή ηξάπεδαο πνπ ζα αλαιεζεί ζε επφκελν θεθάιαην. 60

62 Λφγσ ηνπ φηη ην πεδίν gender παίξλεη ηηκέο κφλν male θαη female θαη ην πεδίν rights παίξλεη ηηκέο admin θαη user δεκηνπξγήζεθαλ ηχπνη πνπ νλνκάζηεθαλ gendr θαη u_rights, αληίζηνηρα, φπσο θαίλεηαη παξαθάησ: CREATE TYPE gendr AS ENUM('male','female'); CREATE TYPE u_rights AS ENUM('admin','user'); Ο πίλαθαο ησλ θαηαζηεκάησλ store Ο πίλαθαο store δεκηνπξγήζεθε σο εμήο: CREATE TABLE store ( store_id serial NOT NULL, store_name character varying(50) NOT NULL, message character varying(100), CONSTRAINT store_pkey PRIMARY KEY (store_id) ) WITH (OIDS=FALSE); ALTER TABLE store OWNER TO gbadmin; Ο ηχπνο serial πνπ δίλεηαη ζην id δειψλεη φηη ζα παίξλεη απηφκαηα ηηκή ην φξηζκα κε ηελ εηζαγσγή λένπ πξνηφληνο ζηε βάζε Ο πίλαθαο ησλ θαηεγνξηψλ category Ο πίλαθαο category δεκηνπξγήζεθε σο εμήο: CREATE TABLE category ( category_id serial NOT NULL, store_id integer NOT NULL, category_name character varying(50) NOT NULL, message character varying(100), CONSTRAINT category_pkey PRIMARY KEY (category_id), CONSTRAINT category_store_id_fkey FOREIGN KEY (store_id) REFERENCES store (store_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT ) WITH (OIDS=FALSE); ALTER TABLE category OWNER TO gbadmin; 61

63 4.4.4 Ο πίλαθαο ησλ ΤΚ zip_code Ο πίλαθαο zip_code δεκηνπξγήζεθε σο εμήο: CREATE TABLE zip_code ( zip integer NOT NULL, latitude double precision NOT NULL, longitude double precision NOT NULL, CONSTRAINT zip_code_pkey PRIMARY KEY (zip) ) WITH (OIDS=FALSE); ALTER TABLE zip_code OWNER TO gbadmin; Μεηά ην παξαθάησ create πξνζηέζεθε ε ζηήιε geom ηχπνπ Geometry ε νπνία πεξηιακβάλεη ην latitude θαη ην longitude κεηαζρεκαηηζκέλα ζε Point ψζηε λα κπνξεί λα ηα επεμεξγαζηεί ε distance_sphere() γηα ηελ νπνία ζα γίλεη αλαθνξά ζηηο επφκελεο ελφηεηεο. Απηέο νη δηαδηθαζίεο έγηλαλ φπσο θαίλεηαη παξαθάησ: ALTER TABLE zip_code ADD COLUMN geom GEOMETRY; UPDATE zip_code SET geom = makepoint(longitude, latitude); Τέινο ε ζηήιε geom δεηθηνδνηήζεθε κε δείθηε ηχπνπ gist ψζηε λα κεησζεί ν ρξφλνο εθηέιεζεο ηεο distance_sphere(): CREATE INDEX g_indx ON zip_code USING gist(geom); Ο πίλαθαο ησλ πξνηφλησλ product Ο πίλαθαο product δεκηνπξγήζεθε σο εμήο: CREATE TABLE product ( product_id serial NOT NULL, product_name character varying(50) NOT NULL, price numeric(12,2) NOT NULL, discounted_price numeric(12,2) NOT NULL DEFAULT 0.00, city character varying(50) NOT NULL, description character varying(1000) NOT NULL, image character varying(150), product_zip_code integer NOT NULL, appearance appear NOT NULL DEFAULT 'category'::appear, searching_help tsvector, uploaded_by character varying(50) NOT NULL, gender_weight double precision DEFAULT 1, 62

64 age_weight double precision DEFAULT 1, job_weight double precision DEFAULT 1, video character varying, uploaded_on timestamp without time zone, rating integer, votes integer, site1 character varying, site2 character varying, CONSTRAINT product_pkey PRIMARY KEY (product_id), CONSTRAINT product_product_zip_code_fkey FOREIGN KEY (product_zip_code) REFERENCES zip_code (zip) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT username FOREIGN KEY (uploaded_by) REFERENCES users (username) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) WITH (OIDS=FALSE); ALTER TABLE product OWNER TO gbadmin; Τν πεδίν searching_help είλαη απαξαίηεην γηα ηελ βειηίσζε ηεο ηαρχηεηαο αλαδήηεζεο θαη ζα αλαιπζεί ζην αληίζηνηρν θεθάιαην. Γηα ηελ δεηθηνδφηεζε ηνπ ρξεζηκνπνηήζεθε ε εληνιή: CREATE INDEX index_searching_help ON product USING gist (searching_help); Τα πεδία site1, site2 θαη votes είλαη βνεζεηηθά γηα ηελ αλαδήηεζε ηηκψλ ζε άιια θαηαζηήκαηα θαη γηα ηελ βαζκνιφγεζε ηνπ πξνηφληνο Ο πίλαθαο product_category Ο πίλαθαο product_category εθθξάδεη πνην πξνηφλ αλήθεη ζε πνηεο θαηεγνξίεο θαη δεκηνπξγήζεθε σο εμήο: CREATE TABLE product_category ( product_id integer NOT NULL, category_id integer NOT NULL, CONSTRAINT product_category_pkey PRIMARY KEY (product_id, category_id), CONSTRAINT product_category_category_id_fkey FOREIGN KEY (category_id) REFERENCES category (category_id) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE RESTRICT, CONSTRAINT product_category_product_id_fkey FOREIGN KEY (product_id) REFERENCES product (product_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT ) WITH (OIDS=FALSE); ALTER TABLE product_category OWNER TO gbadmin; 63

65 4.4.7 Ο πίλαθαο ησλ παξαγγειηψλ order_table Ο πίλαθαο order_table δεκηνπξγήζεθε σο εμήο: CREATE TABLE order_table ( order_id serial NOT NULL, total_price numeric(12,2) NOT NULL DEFAULT 0.00, create_date timestamp without time zone NOT NULL, status integer NOT NULL DEFAULT 0, customer character varying(50), CONSTRAINT order_table_pkey PRIMARY KEY (order_id) ) WITH (OIDS=FALSE); ALTER TABLE order_table OWNER TO gbadmin; Ο πίλαθαο order_product Ο πίλαθαο order_product εθθξάδεη πνηα πξνηφληα πεξηέρνληαη ζε θάζε παξαγγειία θαη δεκηνπξγήζεθε σο εμήο: CREATE TABLE order_product ( order_id integer NOT NULL, product_id integer NOT NULL, product_name character varying(50) NOT NULL, quantity integer NOT NULL, price numeric(10,2) NOT NULL, customer character varying(50), w_gender double precision DEFAULT 1, w_ocupp double precision DEFAULT 1, w_age double precision DEFAULT 1, CONSTRAINT order_product_pkey PRIMARY KEY (order_id, product_id), CONSTRAINT order_product_order_id_fkey FOREIGN KEY (order_id) REFERENCES order_table (order_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT ) WITH (OIDS=FALSE); ALTER TABLE order_product OWNER TO gbadmin; 64

66 4.4.9 Οη πίλαθεο ηνπ forum Γηα ην forum ηνπ θαηαζηήκαηνο δεκηνπξγήζεθαλ νη πίλαθεο topic θαη post πνπ θαίλνληαη παξαθάησ: CREATE TABLE topic ( title character varying(50) NOT NULL, uploader character varying(50) NOT NULL, uploaded timestamp without time zone NOT NULL, CONSTRAINT topic_pkey PRIMARY KEY (title), CONSTRAINT topic_uploader_fkey FOREIGN KEY (uploader) REFERENCES users (username) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT ) WITH (OIDS=FALSE); ALTER TABLE topic OWNER TO gbadmin; CREATE TABLE post ( post_id serial NOT NULL, uploader character varying(50) NOT NULL, uploaded timestamp without time zone NOT NULL, message text NOT NULL, p_topic character varying(50) NOT NULL, CONSTRAINT post_pkey PRIMARY KEY (post_id), CONSTRAINT post_p_topic_fkey FOREIGN KEY (p_topic) REFERENCES topic (title) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT, CONSTRAINT post_uploader_fkey FOREIGN KEY (uploader) REFERENCES users (username) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT ) WITH (OIDS=FALSE); ALTER TABLE post OWNER TO gbadmin; Βνεζεηηθνί Πίλαθεο Πέξα ησλ πηλάθσλ πνπ εθθξάδνπλ ηηο νληφηεηεο θαη ηα γλσξίζκαηα ηνπ ζπζηήκαηνο δεκηνπξγήζεθαλ θαη θάπνηνη βνεζεηηθνί. Απηνί είλαη ν πίλαθαο order_log πνπ θξαηάεη θάπνηεο ρξήζηκεο πιεξνθνξίεο γηα ηηο παξαγγειίεο, ν πίλαθαο rss πνπ εθθξάδεη πνηνη ρξήζηεο έρνπλ θάλεη subscribe ζε πνηεο θαηεγνξίεο θαη ν πίλαθαο bank πνπ παίδεη ηνλ ξφιν εηθνληθήο ηξάπεδαο. Οη πίλαθεο απηνί θαίλνληαη παξαθάησ: 65

67 Ο πίλαθαο order_log: CREATE TABLE order_log ( orderid integer NOT NULL, status integer NOT NULL DEFAULT 0, indate timestamp without time zone NOT NULL, message character varying(100) NOT NULL, CONSTRAINT order_log_pkey PRIMARY KEY (orderid, status), CONSTRAINT order_log_orderid_fkey FOREIGN KEY (orderid) REFERENCES order_table (order_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT ) WITH (OIDS=FALSE); ALTER TABLE order_log OWNER TO gbadmin; Ο πίλαθαο rss: CREATE TABLE rss ( username character varying(50) NOT NULL, category integer NOT NULL, CONSTRAINT rss_pkey PRIMARY KEY (username, category), CONSTRAINT rss_category_fkey FOREIGN KEY (category) REFERENCES category (category_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT, CONSTRAINT rss_username_fkey FOREIGN KEY (username) REFERENCES users (username) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT ) WITH (OIDS=FALSE); ALTER TABLE rss OWNER TO gbadmin; Ο πίλαθαο bank: CREATE TABLE bank ( "name" character varying(100) NOT NULL, credit_number character varying(100) NOT NULL, money bigint, CONSTRAINT bank_pkey PRIMARY KEY (name, credit_number) ) WITH (OIDS=FALSE); ALTER TABLE bank OWNER TO gbadmin; 66

68 Σεκαληηθέο εληνιέο ζηελ Postgresql Γηα λα γίλεη είζνδνο ζηε βάζε ρξεζηκνπνηείηαη ε εληνιή psql the_greek_bay: Γηα εκθάληζε ησλ πηλάθσλ ρξεζηκνπνηείηαη ε εληνιή \dt (display tables): 67

69 ΚΔΦΑΛΑΗΟ 5 ν Βαζηθέο Λεηηνπξγίεο 5.1 Καηάινγνο Πξνηόλησλ Σηελ Κεληξηθή Σειίδα ηνπ ζπζηήκαηνο έρνπλ πξφζβαζε φινη νη ρξήζηεο, αλεμάξηεηα αλ είλαη εγγεγξακκέλνη ζε απηφ. Μέζσ ηεο Κεληξηθήο Σειίδαο έρνπλ πξφζβαζε ζηνλ πιήξε θαηάινγν ησλ πξνηφλησλ ηνπ ζπζηήκαηνο θαη ζηηο ιεπηνκέξεηεο ησλ πξνηφλησλ απηψλ. Γηα ηελ πεξηήγεζε ηνπ ρξήζηε ζηα πξνηφληα έρεη γίλεη θαηεγνξηνπνίεζε απηψλ ζε ππεξθαηεγνξίεο θαη θαηεγνξίεο. Σηελ Κεληξηθή Σειίδα εκθαλίδνληαη επηιεγκέλα πξνηφληα γεληθά απφ φιεο ηηο ππεξθαηεγνξίεο θαη αλάινγα κε ηηο επηινγέο πεξηήγεζεο ηνπο ηα εκθαληδφκελα πξντφληα αιιάδνπλ κέρξη ηελ επηινγή θαηεγνξίαο φπνπ εκθαλίδνληαη φια ηα πξνηφληα ηεο θαηεγνξίαο απηήο. Γειαδή ε δνκή ηνπ θαηαζηήκαηνο έρεη θιηκαθσηή κνξθή. Αξρηθά εκθαλίδνληαη πξνηφληα απφ φιεο ηηο θαηεγνξίεο. Με ηελ επηινγή θαηαζηήκαηνο εκθαλίδνληαη πξνηφληα απφ απηφ ην θαηάζηεκα θαζψο θαη νη αληίζηνηρεο θαηεγνξίεο ηνπ θαηαζηήκαηνο θαη κε ηελ επηινγή θαηεγνξίαο εκθαλίδνληαη φια ηα πξνηφληα πνπ αλήθνπλ ζηελ θαηεγνξία απηή. Με ηελ επηινγή θάζε πξνηφληνο μερσξηζηά εκθαλίδνληαη νη ιεπηνκέξεηεο ηνπ, δειαδή ε πφιε πνπ βξίζθεηαη, ε ηηκή ηνπ, εηθφλα, video, βαζκνινγία. Δπίζεο δίλεηαη ε δπλαηφηεηα πξνζζήθεο ηνπ πξνηφληνο ζην θαιάζη αγνξψλ, βαζκνιφγεζεο ηνπ, αιιά θαη αλαδήηεζεο ησλ ηηκψλ πνπ ην πξνζθέξνπλ επηιεγκέλα ειεθηξνληθά θαηαζηήκαηα. 68

70 Η κενηπική ζελίδα ηος καηαζηήμαηορ: Ο θψδηθαο γηα ηελ εκθάληζε ησλ πξνηφλησλ βξίζθεηαη ζην product_catalog.tpl. Αθνινπζεί ιεπηνκεξήο παξνπζίαζε ηεο πινπνίεζεο ησλ παξαπάλσ ιεηηνπξγηψλ. 69

71 5.1.1 Υπεξθαηεγνξίεο Σηελ αξηζηεξή ζηήιε ηεο θεληξηθή ζειίδαο ππάξρεη ε δπλαηφηεηα επηινγήο ηεο ππεξθαηεγνξίαο ή αιιηψο θαηαζηήκαηνο πνπ ζέιεη λα επηζθεθηεί ν ρξήζηεο. Δπηιέγνληαο ην αληίζηνηρν ππεξθαηάζηεκα εκθαλίδνληαη νη θαηεγνξίεο ηνπ θαηαζηήκαηνο θαη κεξηθά απφ ηα πξνηφληα πνπ αλήθνπλ ζε απηφ. Δπιλογή Καηαζηήμαηορ: Ο θψδηθαο ηνπ div πνπ εκθαλίδεη ηα θαηαζηήκαηα, βξίζθεηαη ζην αξρείν index.tpl, θαη θαίλεηαη παξαθάησ: <div class="left_box"> <table><th class="th_box">κασασημασα<th></table> get_stores} section name=stores loop=$store_id} <input type="button" value="$store_name[stores]}" class=btn onclick="location.href='indexi.php?store_id=$store_id[stores]}'"> /section} </div> Βιέπνπκε φηη θαιείηαη ε ζπλάξηεζε get_stores() ε νπνία παίξλεη ηα θαηαζηήκαηα απφ ηνλ αληίζηνηρν πίλαθα θαη ηα επηζηξέθεη ζαλ κεηαβιεηέο ηνπ smarty. Δπίζεο γηα λα «θαηαιαβαίλεη» ην ζχζηεκα ζε πνην θαηάζηεκα βξίζθεηαη θξαηηέηαη ην id ηνπ θαηαζηήκαηνο ζην url ψζηε λα είλαη πξνζβάζηκν απφ ηελ κέζνδν GET. Ο θψδηθαο ηεο get_stores(): function smarty_function_get_stores($params, $smarty) require_once 'database_functions.php'; DB_functions::dbconnect(); $q="select * from store"; $result = DB_functions::dbexecute($q); $num_results=pg_num_rows($result); for ($i=0;$i<$num_results;$i++) $row=pg_fetch_array($result); $store_id[] = $row['store_id']; $store_name[] =$row['store_name']; $message[] =$row['message'];} $smarty->assign('store_id', $store_id); $smarty->assign('store_name', $store_name); $smarty->assign('message', $message); DB_functions::dbclose(); } 70

72 5.1.2 Καηεγνξίεο Με ηελ επηινγή ηνπ θαηαζηήκαηνο, εκθαλίδνληαη φιεο νη θαηεγνξίεο ηνπ. Πρ κε ηελ επηινγή ηνπ θαηαζηήκαηνο Μεραλνθίλεηα εκθαλίδνληαη νη θαηεγνξίεο Απηνθίλεηα, Μνηνζπθιέηεο θηι. Δπιλογή Καηηγοπίαρ: Ο θψδηθαο ηνπ div πνπ εκθαλίδεη ηηο θαηεγνξίεο βξίζθεηαη ζην αξρείν index.tpl, θαη θαίλεηαη παξαθάησ: <div class="left_box"> <table> <th class="th_box">κασηγοριε</th> </table> get_categories} section name=categories loop=$category_id} <input type="button" value="$category_name[categories]}" class=btn onclick="location.href='indexi.php? category_id=$category_id[categories]}&store_id=$store_id}'"> <br> /section} </div> Βιέπνπκε φηη θαιείηαη ε ζπλάξηεζε get_categories(),ε νπνία παίξλεη ηηο θαηεγνξίεο απφ ηνλ αληίζηνηρν πίλαθα θαη ηηο επηζηξέθεη ζαλ κεηαβιεηέο ηνπ smarty. Δπίζεο, φπσο θαη πξνεγνπκέλσο, γηα λα «θαηαιαβαίλεη» ην ζχζηεκα ζε πνην θαηάζηεκα βξίζθεηαη θξαηηέηαη ην id ηνπ θαηαζηήκαηνο ζην url ψζηε λα είλαη πξνζβάζηκν απφ ηελ κέζνδν GET. Ο θψδηθαο ηεο get_categories(): function smarty_function_get_categories ($params, $smarty) require_once 'database_functions.php'; DB_functions::dbconnect(); if((isset($_get['store_id']))&($_get['store_id']!=null)) $store_id = $_GET['store_id']; elseif(isset($_session['store_id'])) $store_id = $_SESSION['store_id']; else $store_id =1; $q="select * from category where store_id = $store_id"; $result = DB_functions::dbexecute($q); 71

73 $num_results=pg_num_rows($result); for ($i=0;$i<$num_results;$i++) $row=pg_fetch_array($result); $category_id[] = $row['category_id']; $category_name[] =$row['category_name']; $message[] =$row['message'];} $smarty->assign('category_id', $category_id); $smarty->assign('category_name', $category_name); $smarty->assign('message', $message); $smarty->assign('store_id', $store_id); DB_functions::dbclose();} Λεπηνκέξεηεο Πξνηφληνο Με επηινγή ηνπ πξντφληνο απφ ηνλ θαηάινγν εκθαλίδνληαη ζηνλ ρξήζε νη ιεπηνκέξεηεο απηνχ νη νπνίεο πεξηιακβαλνπλ κεηαμχ άιισλ ηηκή, πφιε, θσηνγξαθία, video, βαζκνιφγεζε θαη πεξηγξαθή. Δπίζεο δίλεηαη ε δπλαηφηεηα γηα αγνξά ηνπ πξνηφληνο, γηα ζπλέρηζε ζηνλ θαηάινγν, γηα αλαδήηεζε ηεο ηηκήο ηνπ ζε άιια θαηαζηήκαηα αιιά θαη γηα βαζκνιφγεζε ηνπ. Λεπηομέπειερ Πποιόνηορ: 72

74 Ο θψδηθαο πνπ εκθαλίδεη ηηο ιεπηνκέξεηεο ηνπ πξνηφληνο βξίζθεηαη ζην αξρείν product.tpl. Γηα ηελ αλάθηεζε ησλ ζηνηρείσλ ηνπ πξνηφληνο θαιείηαη ε ζπλάξηεζε get_product(): function smarty_function_get_product($params, $smarty) require_once 'database_functions.php'; DB_functions::dbconnect(); $category_id = $_GET['category_id']; $store_id = $_GET['store_id']; if(isset($_session['product_id'])) $product_id = $_SESSION['product_id']; else $product_id = $_GET['product_id']; $q1="select * from product where product_id = $product_id"; $result1 = DB_functions::dbexecute($q1); $row1=pg_fetch_array($result1); $product_name= $row1['product_name']; $image =$row1['image']; $price = $row1['price']; $description = $row1['description']; $d_price =$row1['discounted_price']; $city=$row1['city']; $video=$row1['video']; $rating=$row1['rating']; $votes=$row1['votes']; if($votes!=0) $rating = $rating/$votes; $smarty->assign('product_name', $product_name); $smarty->assign('product_id', $product_id); $smarty->assign('price', $price); $smarty->assign('d_price', $d_price); $smarty->assign('description', $description); $smarty->assign('image', $image); $smarty->assign('city', $city); $smarty->assign('store_id', $store_id); $smarty->assign('category_id', $category_id); $smarty->assign('video', $video); $smarty->assign('rating', $rating); $smarty->assign('votes', $votes); DB_functions::dbclose(); } 73

75 Γηα ηελ βαζκνιφγεζε θαιείηαη ε ζπλάξηεζε rate(): function smarty_function_rate($params, $smarty) require_once 'database_functions.php'; if(isset($_post['vote'])) DB_functions::dbconnect(); $rating=$_post['rating']; $product_id=$_post['product_to_rate']; $q="update product set rating=rating+$rating, votes=votes+1 where product_id = $product_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); }} Οη ππφινηπεο ιεηηνπξγίεο, φπσο πξνζσπνπνίεζε θηι, ζα αλαιπζνχλ ζηα θεθάιαηα πνπ αθνινπζνχλ Σειηδνπνίεζε Γηα ηελ απνθπγή κεγάινπ χςνπο ζειίδαο, πινπνηήζεθε ζειηδνπνίεζε ψζηε λα εκθαλίδεηαη ζπγθεθξηκέλνο αξηζκφο πξντφλησλ ζηελ νζφλε. Ο θψδηθαο απνηειείηαη απφ δχν κέξε, έλα πνπ ηνπνζεηείηαη ζην template γηα ηελ εκθάληζε ησλ απνηειεζκάησλ θαη έλαο πνπ ηνπνζεηείηαη ζηα αληίζηνηρα plug-ins ψζηε λα θέξεη ηα αλαθηεζέληα απφ ηε βάζε ζηε ζσζηή κνξθή. Αο δνχκε έλα παξάδεηγκα γηα εκθάληζε 4 πξνηφλησλ ζηελ νζφλε: Σπλάξηεζε γηα αλάθηεζε πξνηφλησλ (αθαηξέζεθαλ γξακκέο κε ζρεηηθέο κε ηελ ζειηδνπνίεζε γηα νηθνλνκία ρψξνπ): function smarty_function_get_products($params, $smarty) require_once 'database_functions.php'; DB_functions::dbconnect(); //Αλάθηεζε Πξνηφλησλ απφ ηε Βάζε if((isset($_get['category_id']))&($_get['category_id']!=null)) $category_id = $_GET['category_id']; $store_id = $_GET['store_id']; $smarty->assign('category_id_p', $category_id); $smarty->assign('store_id', $store_id); $q1="select product.product_id as product_id,product_name,image,price,discounted_price,description from product inner join product_category on product.product_id = product_category.product_id where category_id = $category_id"; } 74

76 $page_id = 0; $result1 = DB_functions::dbexecute($q1); $num_results=pg_num_rows($result1); for ($i=0;$i<$num_results;$i++) $row1=pg_fetch_array($result1); $product_id[] = $row1['product_id']; $product_name[] = $row1['product_name']; $image[] = $row1['image']; $price[] = $row1['price']; $description[] = $row1['description']; $d_price[] = $row1['discounted_price']; } $smarty->assign('product_id', $product_id); $smarty->assign('product_name', $product_name); $smarty->assign('price', $price); $smarty->assign('d_price', $d_price); $smarty->assign('description', $description); $smarty->assign('image', $image); $smarty->assign('num', $num_results); //Γηαηξείηαη ην πιήζνο ηνλ πξνηφλησλ κε 4 ψζηε λα ππνινγηζηνχλ νη //ζειίδεο. Αλ ππάξρεη ππφινηπν δεκηνπξγείηαη αθφκα κία ζειίδα γηα //λα ην ζπκπεξηιάβεη if(($num_results%4)==0) $pages=$num_results/4; else $pages=$num_results/4 + 1; $pages = (int)$pages; //αλαηείζεηαη ν αξηζκφο ησλ ζειίδσλ ζε κεηαβιεηή ψζηε λα //πεξάζεη θαη ζηελ παξνπζίαζε $smarty->assign('pages', $pages); //επηζηξέθεηαη ε ζειίδα ζηελ νπνία είλαη ν ρξήζηεο if(isset($_get['page_id'])) $page_id=($_get['page_id']); } //Γείθηεο γηα ππνινγηζκφ ησλ πξνηφλησλ πνπ ζα παξνπζηαζηνχλ $cnt_start=$page_id*4; $smarty->assign('page_id', $page_id); $smarty->assign('cnt_start', $cnt_start); DB_functions::dbclose(); } 75

77 Κψδηθαο ζην product_catalog.tpl πξνηφλησλ ζην θαηάζηεκα: πνπ είλαη ε βαζηθή ζειίδα εκθάληζεο ησλ //Αλαθηνχληαη ηα πξνηφληα get_products} //Γείθηεο πνπ ρξεζηκνπνηείηαη γηα ηελ ζειηδνπνίεζε assign var=cnt value=$page_id} assign var=cnt value=$cnt+1} assign var=pgs value=0} Σειίδα$cnt} απφ $pages}: section name=paging loop=$pages} assign var=cnt value=$pgs+1} //Δκθαλίδεηαη κε θφθθηλν ε ζειίδα ζηελ νπνία βξίζθεηαη ν ρξήζηεο if $pgs == $page_id} <a href="indexi.php?store_id=$store_id}&category_id= $category_id_p}&page_id=$pgs}"><font color="red">$cnt}</font></a> //Δκθαλίδνληαη ζχλδεζκνη πξνο ηηο ππφινηπεο ζειίδεο else} <a href="indexi.php?store_id=$store_id}&category_id= $category_id_p}&page_id=$pgs}">$cnt}</a> /if} assign var=pgs value=$pgs+1} /section} //Αθνινπζεί ε δηαδηθαζία ζειηδνπνίεζεο //Φξεζηκνπνηψληαο ηνπο δείθηεο δεκηνπξγνχληαη αληίζηνηρεο ζειίδεο <table> //Με ηηο δειψζεηο step θαη loop εμαζθαιίδεηαη φηη ζα ππάξρνπλ //δχν πξνηφληα ζε θάζε γξακκή θαη ζπλνιηθά 4 ζε θάζε ζειίδα section name=products start=cnt_start step=2 loop=4} <tr>section name=product loop=2} if $cnt_start < $num}<td> //Δκθαλίδνληαη νη ιεπηνκέξεηεο ησλ πξνηφλησλ <div class="product"> <tr><th width=500px>$product_name[$cnt_start]}</th></tr> <tr><td> <a href="indexi.php?store_id=$store_id}&category_id= $category_id_p}&product_id=$product_id[$cnt_start]}"> <img id="product_image" src="$image[$cnt_start]}"/> </a></td> <td width=150px align="left"> $description[$cnt_start]}</td></tr> <tr><td width=100px> Price: <span class="product_price">$price[$cnt_start]}</span> Old Price:<span class="product_oprice">$d_price[$cnt_start]}</span> </td> </tr> </div> <td>assign var=cnt_start value=$cnt_start+1} /if} /section}</tr> /section} </table> Σειηδνπνίεζε κεηαμχ άιισλ εθηφο απφ ηνλ θαηάινγν ησλ πξντφλησλ έρεη ρξεζηκνπνηεζεί θαη ζηα απνηειέζκαηα ησλ αλαδεηήζεσλ ζην θαηάζηεκα. 76

78 5.1.5 Αλαδήηεζε Τηκψλ ζε άιια Καηαζηήκαηα Οη ρξήζηεο επηιέγνληαο ην button κπνξνχλ λα δνπλ ηελ ηηκή πνπ έρεη ην ζπγθεθξηκέλν πξντφλ ζε άιια θαηαζηήκαηα. Γηα λα γίλεη απηφ ρξεζηκνπνηήζεθε ε βηβιηνζήθε simple_html_dom πνπ δίλεη πξφζβαζε ζε ζπλαξηήζεηο επεμεξγαζίαο ζειίδσλ. Σπγθεθξηκέλα ην DOM είλαη κία πιαηθφξκα αλεμάξηεηε γιψζζαο γηα ηελ παξνπζίαζε θαη ηελ επεμεξγαζία κε αληηθείκελα ζε HTML, XHTML θαη XML έγγξαθα. ιε ε δνπιεηά γίλεηαη ζηελ ζπλάξηεζε find_price(): function smarty_function_find_price($params, $smarty) require_once 'database_functions.php'; //Πεξηιακβάλεηαη ην αξρείν κε ηηο πξναλαθεξζέληεο ζπλαξηήζεηο include('simple_html_dom.php'); if(isset($_post['get_price'])) DB_functions::dbconnect(); $product_id=$_post['product_to_find']; $q="select site1,site2 from product where product_id=$product_id"; $result = DB_functions::dbexecute($q); $row=pg_fetch_array($result); //Αλαηίζεληαη ηα urls ησλ θαηαζηεκάησλ ζηα νπνία γίλεηαη ε //αλαδήηεζε $url1 = $row['site1']; $url2 = $row['site2']; $html = new simple_html_dom(); $html = file_get_html($url1); //Αλαθηάηαη ην πεξηερφκελν πνπ βξίζθεηαη ζην δνζέλ div //ηνπ πξψηνπ θαηαζηήκαηνο $element=$html->find('div[class="mm-price-cont2"]',0); //Κξαηηέηαη κφλν ην θείκελν ην νπνίν είλαη θαη ε ηηκή $price1=$element->plaintext; //Αθνινπζεί παξφκνηα δηαδηθαζία θαη γηα ην 2 ν site $html = file_get_html($url2); $element=$html->find('td[class="small"]',6); $price2=$element->plaintext; //Οη ηηκέο αλαηίζεληαη ζηηο αληίζηνηρεο κεηαβιεηέο πνπ ζα //εκθαληζηνχλ ζηνλ ρξήζηε $smarty->assign('site1', site1name); $smarty->assign('site1_price', $price1); $smarty->assign('site2', 'site2name); $smarty->assign('site2_price', $price2); DB_functions::dbclose();}} 77

79 5.2 Φόξκα εηζαγσγήο ζην ζύζηεκα Οη ρξήζηεο πνπ ζέινπλ λα εγγξάθνπλ ζην ζχζηεκα ψζηε λα έρνπλ πξφζβαζε ζε φιεο ηηο ππεξεζίεο πνπ πξνζθέξεη κπνξνχλ λα ην θάλνπλ κέζσ ηεο θφξκαο εγγξαθήο. Τα ζηνηρεία πνπ πξέπεη λα ζπκπιεξψζνπλ είλαη: φλνκα επίζεην θχιιν ειηθία πφιε επάγγεικα password username Μεηά ηελ εγγξαθή ζην ζχζηεκα κπνξνχλ λα εηζέιζνπλ ζηε ζειίδα ησλ ρξεζηψλ εηζάγνληαο ην username θαη ην password ηνπο ζηελ αληίζηνηρε θφξκα. Η φόρμα εγγραφής: Ο θψδηθαο γηα ηελ εκθάληζε ηεο θφξκαο εγγξαθήο βξίζθεηαη ζην registration.tpl θαη θαίλεηαη παξαθάησ: 78

80 actions_register} <p><b>γηα λα εγγξαθείηε ζην Greek-Bay ζπκπιεξψζηε ηα παξαθάησ πεδία:</b></p> <form name="registration_form" action="indexi.php?sign_up=on" method="post" onsubmit="return validate_form ( );"> <table border="0"> <tr><td>username* :</td> <td><input type="text" name="username" id="username" size="25" maxlength="50"></td></tr> <tr><td>password* :</td> <td><input type="password" name="password" id="password" size="25" maxlength="50"></td></tr> <tr><td>δπηβεβαίσζε password* :</td> <td><input type="password" name="password2" id="password2" size="25" maxlength="50"></td></tr> <tr><td>λνκα* :</td> <td><input type="text" name="first_name" id="first_name" size="25" maxlength="50"></td></tr> <tr><td>δπίζεην* :</td> <td><input type="text" name="last_name" id="last_name" size="25" maxlength="50"></td></tr> <tr><td>πφιε * :</td> <td><input type="text" name="city" id="city" size="25" maxlength="50"></td></tr> <tr><td>τειέθσλν* :</td> <td><input type="text" name="phone_num" id="phone_num" size="25" maxlength="50"></td></tr> <tr><td> * :</td> <td><input type="text" name=" " id=" " size="25" maxlength="50"></td></tr> <tr><td>φχιν* :</td> <td><select name="gender" id="gender"> <option value="male"/>ξ Ξ½Ξ ΟΞ±Ο <option value="female"/>ξ Ο Ξ½Ξ±Ξ ΞΊΞ±</td></select></tr> <tr><td>δπάγγεικα :</td> <td><input type="text" name="occupation" id="occupation" size="25" maxlength="50"></td></tr> <tr><td><input type="submit" value="ξ Ξ³Ξ³ΟΞ±Ο Ξ " name="new_user"><input type="reset" value="reset"></td></tr> <tr><td> <p><font size="2"><i>*υπνρξεσηηθά Πεδία</i></font></p> </td></tr> </table></form> Η ζπλάξηεζε actions_register() πνπ πξαγκαηνπνηεί ηελ εγγξαθή ηνπ ρξήζηε θαη ηελ απνζήθεπζε ησλ ζηνηρείσλ ζηε βάζε θάηλεηαη παξαθάησ: function smarty_function_actions_register($params, $smarty) require_once 'database_functions.php'; if(isset($_post['new_user'])) 79

81 DB_functions::dbconnect(); $username=$_post['username']; $password=$_post['password']; $first_name=$_post['first_name']; $last_name=$_post['last_name']; $phone_num=$_post['phone_num']; $ =$_post[' ']; $city=$_post['city']; $gender=$_post['gender']; $ocupp=$_post['occupation']; $h_password=sha1(hash_prefix. $password. HASH_POSTFIX); $q="insert into users values('$username','$h_password','$first_name','$last_name', $phone_num','$ ','$city','$gender','user','$ocupp')"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();}} Γηα ηνλ έιεγρν ηεο εγθπξφηεηαο ησλ ζηνηρείσλ πνπ εηζάγνπλ νη ρξήζηεο αιιά θαη γηα ηελ απνθπγή ιαζψλ θαη ηελ δηεπθφιπλζε ηνπο, γίλεηαη έιεγρνο κε ρξήζε Javascript. Παπαδείγμαηα ππόλητηρ λαθών: Ο σπήζηηρ ξέσαζε να ζςμπληπώζει ηο πεδίο password οπόηε δέσεηαι ηο μήνςμα: Και ηαςηόσπονα ηο πεδίο password γίνεηαι κίηπινο. 80

82 Με ηην ίδια λογική αν ηο πεδίο password δεν είναι ηαςηόζημο με ηο πεδίο επιβεβαίυζη password δέσεηαι ηο μήνςμα: Και ηα πεδία password και επιβεβαίυζη password γίνονηαι κόκκινα. Τν script πνπ αλαθέξζεθε ππάξρεη νιφθιεξν ζην registration.tpl. Τκήκα απφ ην script θαίλεηαη παξαθάησ: function validate_form ( ) valid = true; if ( document.registration_form.username.value == "" ) document.registration_form.username.style.background = '#FFF000'; alert ( "Δελ έρεηε ζπκπιεξώζεη ην πεδίν username" ); valid = false; } else if ( document.registration_form.password.value == "" ) document.registration_form.password.style.background = '#FFF000'; alert ( "Δελ έρεηε ζπκπιεξώζεη ην πεδίν password" ); valid = false; } else if ( document.registration_form.first_name.value == "" ) document.registration_form.first_name.style.background ='#FFF000'; alert ( "Δελ έρεηε ζπκπιεξώζεη ην πεδίν όλνκα" ); valid = false; } else if ( document.registration_form.city.value == "" ) document.registration_form.city.style.background = '#FFF000'; alert ( "Δελ έρεηε ζπκπιεξώζεη ην πεδίν πόιε " ); valid = false; } else if ( document.registration_form.phone_num.value == "" ) document.registration_form.phone_num.style.background = '#FFF000'; alert ( "Δελ έρεηε ζπκπιεξώζεη ην πεδίν ηειέθωλν" ); valid = false; } return valid; } 81

83 5.3 ειίδα ησλ Γηαρεηξηζηώλ Οη δηαρεηξηζηέο είλαη ρξήζηεο πνπ έρνπλ ηνλ έιεγρν ηνπ ζπζηήκαηνο θαη θπζηθά πξφζβαζε ζε επηπιένλ ιεηηνπξγίεο. Μέζσ ηεο θεληξηθήο ζειίδαο εηζέξρνληαη ζηελ ζειίδα ησλ δηαρεηξηζηψλ ζηελ νπνία ηνπο δίλεηαη έλα πιήζνο απφ δπλαηφηεηεο. Κεληξηθή ζειίδα δηαρεηξηζηψλ: Δπεμεξγαζία Καηεγνξηψλ Οη δηαρεηξηζηέο κπνξνχλ κέζα απφ ηελ ζειίδα ηνπο λα θάλνπλ ηηο εμήο ελέξγεηεο ζρεηηθά κε ηηο θαηεγνξίεο θαη ηηο ππεξθαηεγνξίεο: δεκηνπξγία ππεξθαηεγνξίαο επεμεξγαζία ππεξθαηεγνξίαο δηαγξαθή ππεξθαηεγνξίαο δεκηνπξγία θαηεγνξίαο επεμεξγαζία θαηεγνξίαο δηαγξαθή θαηεγνξίαο Ο θψδηθαο γηα ην interface ηεο επεμεξγαζίαο ησλ θαηαζηεκάησλ ππάξρεη ζην admin_stores.tpl θαη εκθαλίδεηαη ζηελ αξρηθή ζειίδα. 82

84 Η ζπλάξηεζε γηα ηελ πξαγκαηνπνίεζε ησλ παξαπάλσ ελεξγείσλ είλαη ε actions_stores(): function smarty_function_actions_stores($params, $smarty) require_once 'database_functions.php'; if(isset($_post['update_store'])) DB_functions::dbconnect(); $store_name=$_post['store_name']; $description=$_post['description']; $id=$_post['store_id']; $q="update store set store_name='$store_name',message='$description' where store_id=$id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } elseif(isset($_post['delete_store'])) DB_functions::dbconnect(); $id=$_post['store_id']; $q="delete from store where store_id=$id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } elseif(isset($_post['new_store'])) DB_functions::dbconnect(); $store_name=$_post['store_name']; $store_description=$_post['store_description']; $q="insert into store(store_name,message) values('$store_name','$store_description')"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } } 83

85 Ο θψδηθαο γηα ην interface ηεο επεμεξγαζίαο ησλ θαηεγνξηψλ ππάξρεη ζην admin_cat.tpl θαη εκθαλίδεηαη επηιέγνληαο ην button categories απφ ην αληίζηνηρν ππεξθαηάζηεκα. Πρ επηιέγνληαο ην button categories ηνπ θαηαζηήκαηνο αθίλεηα αλνίγεη ε ζειίδα γηα ηελ επεμεξγαζία ησλ αληίζηνηρσλ θαηεγνξηψλ. Η ζπλάξηεζε γηα ηελ πξαγκαηνπνίεζε ησλ παξαπάλσ ελεξγείσλ είλαη ε actions_categories(): function smarty_function_actions_categories($params, $smarty) require_once 'database_functions.php'; //Δπεμεξγαζία Καηεγνξίαο if(isset($_post['update_category'])) DB_functions::dbconnect(); $category_name=$_post['category_name']; $description=$_post['description']; $id=$_post['category_id']; $q="update category set category_name='$category_name',message='$description' where category_id=$id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Γηαγξαθή Καηεγνξίαο elseif(isset($_post['delete_category'])) DB_functions::dbconnect(); $id=$_post['category_id']; $q="delete from category where category_id=$id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Γεκηνπξγία Καηεγνξίαο 84

86 elseif(isset($_post['new_category'])) DB_functions::dbconnect(); $category_name=$_post['category_name']; $category_description=$_post['category_description']; $store_id=$_session['store_id']; $q="insert into category(store_id,category_name,message) values($store_id,'$category_name','$category_description')"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();}} Δπεμεξγαζία Πξνηφλησλ Οη δηαρεηξηζηέο κπνξνχλ κέζα απφ ηελ ζειίδα ηνπο λα θάλνπλ ηηο εμήο ελέξγεηεο ζρεηηθά κε ηα πξνηφληα: αλέβαζκα πξντφληνο επεμεξγαζία πξντφληνο δηαγξαθή πξντφληνο Ο θψδηθαο γηα ην interface ηνπ αλεβάζκαηνο θαη ηεο δηαγξαθήο πξνηφληνο ππάξρεη ζην admin_pro.tpl θαη εκθαλίδεηαη επηιέγνληαο ην button products απφ ηελ αληίζηνηρε θαηεγνξία. Πρ επηιέγνληαο ην button products απφ ηελ θαηεγνξία μελνδνρεία εκθαλίδεηαη ε παξαθάησ ιίζηα: 85

87 Γηα ηελ επεμεξγαζία ησλ πξνηφλησλ ν ρξήζηεο κπνξεί λα επηιέμεη ην button edit θαη λα ηνπ αλνίμεη κία ζειίδα παξφκνηα κε ηελ παξαθάησ ν θψδηθαο ηεο εκθάληζεο ηεο νπνίαο ππάξρεη ζην admin_product.tpl. 86

88 Η ζπλάξηεζε πνπ πινπνηεί ηηο ιεηηνπξγίεο ζρεηηθά κε ηα πξνηφληα είλαη ε actions_products(): function smarty_function_actions_products($params, $smarty) require_once 'database_functions.php'; $c_store_id = $_SESSION['store_id']; $smarty->assign('c_store_id', $c_store_id); $c_category_id = $_SESSION['category_id']; $smarty->assign('c_category_id', $c_category_id); //Δπεμεξγαζία Πξνηφληνο if(isset($_post['update_prod'])) DB_functions::dbconnect(); $product_name=$_post['product_name']; $id=$_post['product_id']; $price = $_POST['product_price']; $description = $_POST['description']; $d_price =$_POST['product_dprice']; $city=$_post['product_city']; $pcode=$_post['product_pcode']; $gender_weight=$_post['gender_weight']; $age_weight=$_post['age_weight']; $job_weight=$_post['job_weight']; $video=$_post['video']; $q="update product set product_name='$product_name',description='$description',price=$price, discounted_price=$d_price,city='$city',product_zip_code=$pcode, gender_weight=$gender_weight,age_weight=$age_weight,job_weight=$job_weight, video='$video' where product_id=$id"; $result = DB_functions::dbexecute($q); $q2="update order_product set w_gender=$gender_weight,w_age=$age_weight,w_ocupp=$job_weight where product_id=$id"; $result2 = DB_functions::dbexecute($q2); DB_functions::dbclose();} //Γηαγξαθή Πξνηφληνο απφ Καηεγνξία elseif(isset($_post['delete_from_cat'])) DB_functions::dbconnect(); $id=$_session['product_id']; $category_id=$_post['del_from_c']; $q="delete from product_category where product_id=$id and category_id=$category_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} 87

89 //Γηαγξαθή Πξνηφληνο elseif(isset($_post['delete_product'])) DB_functions::dbconnect(); $id=$_post['product_id']; $q="delete from product_category where product_id=$id"; $result = DB_functions::dbexecute($q); $q1="delete from shopping_cart where product_id=$id"; $result1 = DB_functions::dbexecute($q1); $q2="delete from product where product_id=$id"; $result2 = DB_functions::dbexecute($q2); DB_functions::dbclose();} //Πξνζζήθε ζε Καηεγνξία elseif(isset($_post['add_to_cat'])) DB_functions::dbconnect(); $id=$_session['product_id']; $category_id=$_post['add_to_c']; $q="insert into product_category values($id,$category_id)"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Αλέβαζκα Πξνηφληνο elseif(isset($_post['insert_prod'])) DB_functions::dbconnect(); $product_name=$_post['product_name']; $id=$_post['product_id']; $price = $_POST['product_price']; $description = $_POST['description']; $d_price =$_POST['product_dprice']; $city=$_post['product_city']; $pcode=$_post['product_pcode']; $video=$_post['video']; if(isset($_session['admin'])) $uploader=$_session['admin']; else if(isset($_session['user'])) $uploader=$_session['user']; $upath = "images/"; $uploadedfile = $upath. basename($_files['img']['name']); $_FILES['img']['tmp_name']; if (copy($_files['img']['tmp_name'], $uploadedfile)) echo ""; else echo "Τν κέγεζνο είλαη κεγαιχηεξν απφ100kb!\n\n"; $q="insert into product(product_id,product_name,image,description,price,discounted_price,city, product_zip_code,video,gender_weight,age_weight,job_weight,uploaded_on,rating,votes,uploaded_by ) values(nextval('product_product_id_seq'),'$product_name','$uploadedfile','$description',$price, 88

90 $d_price,'$city',$pcode,'$video',1,1,1,now(),0,0,'$uploader')"; $result = DB_functions::dbexecute($q); $q2="insert into product_category values(currval('product_product_id_seq'),$c_category_id)"; $result2 = DB_functions::dbexecute($q2); $q3="update product SET searching_help = setweight(to_tsvector(product_name), 'A') to_tsvector(description) WHERE product_id=currval('product_product_id_seq')"; $result3 = DB_functions::dbexecute($q3); DB_functions::dbclose();} elseif(isset($_post['change_image'])) DB_functions::dbconnect(); $id=$_session['product_id']; $q="update product set image='$uploadedfile' where product_id=$id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();}} Δπεμεξγαζία Φξεζηψλ Μέζσ ηεο ζειίδαο ησλ δηαρεηξηζηψλ δίλεηαη ε δπλαηφηεηα λα γίλεη επεμεξγαζία ησλ ζηνηρείσλ θάζε ρξήζηε ψζηε λα αιιαρζνχλ ιάζνο δεδνκέλα ή λα ππάξμεη ελεκέξσζε θαηαπάηεζε απφ θάπνηνλ εγγεγξακκέλν ρξήζηε. Ο θψδηθαο ηεο αληίζηνηρεο θφξκαο ππάξρεη ζηα admin_users.tpl θαη admin_user.tpl. 89

91 Η αληίζηνηρε ζπλάξηεζε είλαη ε actions_admin_users(): function smarty_function_actions_admin_users($params, $smarty) require_once 'database_functions.php'; $username = $_GET['user_name']; if(isset($_post['update_profile'])) DB_functions::dbconnect(); $first_name= $_POST['first_name']; $last_name = $_POST['last_name']; $phone_num = $_POST['phone']; $ = $_POST[' ']; $city = $_POST['city']; $ocupp= $_POST['ocuppation']; $q="update users set first_name='$first_name',last_name='$last_name',phone_num=$phone_num, ='$ ',city='$city',ocupp='$ocupp' where username='$username'"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();}} Δπεμεξγαζία Παξαγγειηψλ Οη δηαρεηξηζηέο κπνξνχλ λα παξαθνινπζήζνπλ ηελ πνξεία θάζε παξαγγειίαο αιιά θαη λα δηαγξάςνπλ φπνηα παξαγγειία επηζπκνχλ κεηά ην ηέινο ηεο. Οη αλαιπηηθέο ελέξγεηεο θάζε δηαρεηξηζηή ζρεηηθά κε ηηο παξαγγειίεο ζα παξνπζηαζηψλ ζην ζρεηηθφ θεθάιαην(8 ν ). Η ζπλάξηεζε πινπνίεζεο ησλ παξαπάλσ ελεξγεηψλ είλαη ε actions_orders(). Ο θψδηθαο γηα ηελ εκθάληζε ησλ παξαγγειηψλ ππάξρεη ζην admin_orders.tpl ελψ ε εκθάληζε κπνξεί λα γίλεη ηφζν θαηά εκέξεο πνπ είλαη ελεξγέο φζν θαη θαηά ηνλ ρξήζηε πνπ ηηο πξαγκαηνπνίεζε. 90

92 Δπηιέγνληαο ην button «Λεπηνκέξεηεο» εκθαλίδνληαη ηα πξνηφληα πνπ πεξηέρεη ε πεξαγγειία, ε θαηάζηαζε ζηελ νπνία βξίζθεηαη θαη νη θηλήζεηο πνπ έρνπλ γίλεη θαη ηελ αθνξνχλ. Γηα ηελ αλάθηεζε ησλ παξαγγειηψλ ρξεζηκνπνηείηαη ε get_admin_order_details(): function smarty_function_get_admin_order_details($params, $smarty) require_once 'database_functions.php'; DB_functions::dbconnect(); if((isset($_get['order_id']))&($_get['order_id']!=null)) $order_id = $_GET['order_id']; } $q1="select * from order_table inner join order_product on order_table.order_id = order_product.order_id where order_table.order_id = $order_id"; $result1 = DB_functions::dbexecute($q1); $num_results=pg_num_rows($result1); for ($i=0;$i<$num_results;$i++) $row1=pg_fetch_array($result1); $product_id[] = $row1['product_id']; $product_name[] = $row1['product_name']; $quantity[] =$row1['quantity']; $price[] = $row1['price']; $order_status = $row1['status']; } 91

93 $q2="select * from order_table inner join order_log on order_table.order_id = order_log.orderid where order_table.order_id = $order_id"; $result2 = DB_functions::dbexecute($q2); $num_results2=pg_num_rows($result2); for ($i=0;$i<$num_results2;$i++) $row2=pg_fetch_array($result2); $status_hist[] = $row2['status']; $status_message[] = $row2['message']; $status_date[] =$row2['indate']; } $smarty->assign('order_id', $order_id); $smarty->assign('product_id', $product_id); $smarty->assign('product_name', $product_name); $smarty->assign('price', $price); $smarty->assign('quantity', $quantity); $smarty->assign('cur_status', $order_status); $smarty->assign('status_h', $status_hist); $smarty->assign('status_message', $status_message); $smarty->assign('status_date', $status_date); DB_functions::dbclose();} Δπεμεξγαζία Καιαζηνχ Αγνξψλ Άιιε κία δπλαηφηεηα πνπ έρνπλ νη δηαρεηξηζηέο είλαη ε δηαγξαθή ησλ αλελεξγψλ θαιαζηψλ αγνξψλ κεηά απφ έλα νξηζκέλν ρξνληθφ δηάζηεκα. Ο ιφγνο πνπ γίλεηαη απηή ε ελέξγεηα είλαη ε απνθπγή ππεξθφξησζεο ηεο βάζεο απφ ηα άρξεζηα δεδνκέλα «πεζακέλσλ» θαιαζηψλ αγνξψλ. Η αληίζηνηρε θφξκα ππάξρεη ζην admin_cart.tpl. 92

94 Η ζπλάξηεζε είλαη ε admin_actions_cart(). function smarty_function_admin_actions_cart($params, $smarty) require_once 'database_functions.php'; if(isset($_post['drop_from_cart'])) DB_functions::dbconnect(); $days=$_post['days']; $q="select cart_id,date_part('day',now()-max(add_date)) from shopping_cart group by cart_id having date_part('day',now()-max(add_date))>$days"; $result = DB_functions::dbexecute($q); $num_results=pg_num_rows($result); for ($i=0;$i<$num_results;$i++) $row=pg_fetch_array($result); $cart_id = $row['cart_id']; $q1="delete from shopping_cart where cart_id='$cart_id'"; $result1 = DB_functions::dbexecute($q1); } DB_functions::dbclose(); } } 93

95 5.4 ειίδα ησλ Δγγεγξακκέλσλ Υξεζηώλ Οη εγγεγξακκέλνη ρξήζηεο έρνπλ πξφζβαζε ζηελ αληίζηνηρε ζειίδα κε ηηο επηπιένλ ελέξγεηεο. Οη θπξηφηεξεο απφ απηέο είλαη ε πψιεζε πξντφλησλ αιιά θαη ε αγνξά κε ρξήζε πηζησηηθήο θάξηαο. Η κενηπική ζελίδα ηυν σπηζηών: Αλέβαζκα Πξντφληνο πξνο Πψιεζε Οη ρξήζηεο έρνπλ ηελ δπλαηφηεηα λα αλεβάζνπλ ηα πξνηφληα πνπ επηζπκνχλ λα δηαζέζνπλ πξνο πψιεζε δίλνληαο ζπγθεθξηκέλα ζηνηρεία. Απηά είλαη: φλνκα πεξηγξαθή θσηνγξαθία video ΤΚ πφιε ηηκή 94

96 Ο θψδηθαο γηα ηελ εκθάληζε ππάξρεη ζην user_products.tpl ελψ νη ζπλαξηήζεηο πνπ πξαγκαηνπνηνχλ ηηο παξαπάλσ δηαδηθαζίεο είλαη παξφκνηεο κε απηέο ησλ δηαρεηξηζηψλ πνπ παξνπζηάζηεθαλ ζηελ πξνεγνχκελε ελφηεηα, νπφηε δελ θξίλεηαη αλαγθαίν λα μαλαπαξνπζηαζηνχλ Δπεμεξγαζία Πξνηφλησλ Οη ρξήζηεο κπνξνχλ λα αιιάμνπλ ηα ζηνηρεία ησλ πξνηφλησλ πνπ έρνπλ αλεβάζεη αιιά θαη λα δηαγξάςνπλ φπνην ζέινπλ λα απνζχξνπλ. Με ηελ επηινγή ηνπ button edit εκθαλίδεηαη ην menu επεμεξγαζίαο ηνπ αληίζηνηρνπ πξνηφληνο. Ο θψδηθαο γηα ηελ εκθάληζε ππάξρεη ζην user_products.tpl θαη ζην user_product.tpl ελψ νη ζπλαξηήζεηο πνπ πξαγκαηνπνηνχλ ηηο παξαπάλσ δηαδηθαζίεο είλαη παξφκνηεο κε απηέο ησλ δηαρεηξηζηψλ πνπ παξνπζηάζηεθαλ ζηελ πξνεγνχκελε ελφηεηα, νπφηε δελ θξίλεηαη αλαγθαίν λα μαλαπαξνπζηαζηνχλ. 95

97 5.4.3 Δπεμεξγαζία Πξνθίι Κάζε ρξήζηεο κπνξεί φπνηα ζηηγκή επηζπκεί λα αιιάμεη ηα ζηνηρεία ηνπ ινγαξηαζκνχ ηνπ εθηφο θπζηθά απφ username ηνπ. Γειαδή κπνξεί λα αιιάμεη ην νλνκαηεπψλπκν ηνπ, ησλ θσδηθφ, ην επάγγεικα, ηελ πφιε, ην e mail, ην ηειέθσλν θαη ηνλ ΤΚ ηνπ. Η ζπλάξηεζε πνπ ηνπο επηηξέπεη λα επεμεξγαζηνχλ ηα ζηνηρεία ηνπ πξνθίι ηνπο είλαη ε: function smarty_function_actions_users($params, $smarty) require_once 'database_functions.php'; $username = $_SESSION['user']; if(isset($_post['update_profile'])) DB_functions::dbconnect(); $first_name= $_POST['first_name']; $last_name = $_POST['last_name']; $phone_num = $_POST['phone']; $ = $_POST[' ']; $city = $_POST['city']; $ocupp= $_POST['ocuppation']; $q="update users set first_name='$first_name',last_name='$last_name',phone_num=$phone_num, ='$ ',city='$city',ocupp='$ocupp' where username='$username'"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); }} Η θφξκα γηα ηελ επεμεξγαζία πεξηέρεηαη ζην user.tpl. 96

98 5.4.4 Δπεμεξγαζία Καιαζηνχ Αγνξψλ Οη ρξήζηεο κπνξνχλ λα επεμεξγαζηνχλ ην θαιάζη αγνξψλ ηνπο θάλνληαο ηηο εμήο ελέξγεηεο: πξνζζήθε πξνηφληνο αχμεζε πνζφηεηαο δηαγξαθή πξνηφληνο απνζήθεπζε πξνηφληνο γηα κειινληηθή αγνξά επαλαθνξά πξνηφληνο ζην θαιάζη Η ζπλάξηεζε πνπ πξαγκαηνπνηεί ηηο παξαπάλσ ελέξγεηεο είλαη ε actions_cart() θαη παξνπζηάδεηαη αλαιπηηθά ζην 8 ν Κεθάιαην. Ο θψδηθαο γηα ηελ εκθάληζε ππάξρεη ζην user_cart.tpl Παξαθνινχζεζε Παξαγγειηψλ Μέζσ ηεο αληίζηνηρεο επηινγήο ππάξρεη ε δπλαηφηεηα παξαθνινχζεζεο ηεο πνξείαο ηεο θάζε παξαγγειίαο ηνπ ρξήζηε αιιά θαη ε πξαγκαηνπνίεζε ζπγθεθξηκέλσλ ελεξγεηψλ πνπ ζα αλαιπζνχλ ζηελ αληίζηνηρε ελφηεηα. 97

99 Με ηελ επηινγή ηνπ button Details εκθαλίδνληαη νη ιεπηνκέξεηεο ηεο παξαγγειίαο φπσο θαίλνληαη παξαθάησ: Ο θψδηθαο γηα ηελ εκθάληζε ππάξρεη ζην user_orderss.tpl θαη ζην user_order.tpl ελψ νη ζπλαξηήζεηο πνπ πξαγκαηνπνηνχλ ηηο παξαπάλσ δηαδηθαζίεο είλαη παξφκνηεο κε απηέο ησλ δηαρεηξηζηψλ πνπ παξνπζηάζηεθαλ ζηελ πξνεγνχκελε ελφηεηα, νπφηε δελ θξίλεηαη αλαγθαίν λα μαλαπαξνπζηαζηνχλ Δπεμεξγαζία ησλ Σηνηρείσλ Πηζησηηθήο Κάξηαο Κάζε ρξήζηεο κπνξεί λα επεμεξγαζηεί ηα ζηνηρεία ηεο πηζησηηθήο ηνπ θάξηαο, αιιάδνληαο ηνλ αξηζκφ ή ην νλνκαηεπψλπκν ηνπ. Λεπηνκέξεηεο γηα απηέο ηηο ιεηηνπξγίεο αιιά θαη γηα ηελ θξππηνγξάθεζε ησλ ζηνηρείσλ πηζησηηθήο θάξηαο δίλνληαη ζην 8 ν Κεθάιαην. 98

100 Γηα ηελ είζνδν ησλ ζηνηρείσλ ηεο πηζησηηθήο απφ ηνλ ρξήζηε εθηειείηαη ν θψδηθαο: function smarty_function_update_credit_card($params, $smarty) require_once 'database_functions.php'; require 'encrypt.php'; if(isset($_post['update_credit_card'])) DB_functions::dbconnect(); $username = $_SESSION['user']; $credit_name = $_POST['credit_name']; $card_number = $_POST['card_number']; $expiring_day = $_POST['expiring_day']; $card_type = $_POST['card_type']; $key = "top secret key"; //Σε απηφ ην ζεκείν γίλεηαη ε ζπλέλσζε ησλ ζηνηρείσλ ζε έλα string //ρξεζηκνπνηψληαο ην ζχκβνιν + ην νπνίν ζα βνεζήζεη ζηελ //απνθξππηνγξάθεζε $plaintext = $credit_name. '+'. $card_number. '+'. $expiring_day. '+'. $card_type; //Απηφ ην string θξππηνγξαθείηαη κε ρξήζε ηεο encrypt_it $encryptedtext =encrypt_it($plaintext, $key); //Τν θξππηνγξαθεκέλν κήλπκα έξρεηαη ζε κνξθή απνζεθεχζηκε ζηε βάζε $encryptedtext_tosave = convert_uuencode($encryptedtext); $encryptedtext_tosave = addslashes($encryptedtext_tosave); //Καη απνζεθεχεηαη $q="update users set credit_card='$encryptedtext_tosave' where username = '$username'"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} Subscribe ζε Καηεγνξίεο Μέζσ ηεο ζειίδαο ησλ ρξεζηψλ δίλεηαη ε δπλαηφηεηα subscription ζε θαηεγνξίεο. Μεηά ην subscribe νη ρξήζηεο ελεκεξψλνληαη γηα ηα θαηλνχξγηα πξντφληα πνπ αλεβαίλνπλ ζε απηέο ηηο θαηεγνξίεο. 99

101 To subscribe πξαγκαηνπνηείηαη κε ηελ ζπλάξηεζε subscribe(): function smarty_function_subscribe($params, $smarty) require_once 'database_functions.php'; $username = $_SESSION['user']; //Δγγξαθή ζε θαηεγνξία if(isset($_post['subscribe'])) DB_functions::dbconnect(); $category=$_post['rss']; $q="insert into rss values('$username','$category')"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } //Γηαγξαθή απφ θαηεγνξία elseif(isset($_post['unsubscribe'])) DB_functions::dbconnect(); $category=$_post['rss']; $q="delete from rss where username='$username' and category='$category'"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); }} Η επηινγή ησλ λέσλ πξνηφλησλ ζηηο θαηεγνξίεο πνπ έρεη θάλεη subscribe ν ρξήζηεο γίλεηαη κε ηελ rss(): function smarty_function_rss($params, $smarty) require_once 'database_functions.php'; $username = $_SESSION['user']; DB_functions::dbconnect(); $q="select product.product_id as productid,product_name,image FROM product INNER JOIN product_category ON product.product_id = product_category.product_id WHERE category_id IN (SELECT category FROM rss WHERE username='$username') AND date_part('day',now()-uploaded_on)<10 LIMIT 5"; $result = DB_functions::dbexecute($q); $num_results=pg_num_rows($result); for ($i=0;$i<$num_results;$i++) 100

102 $row=pg_fetch_array($result); $product_name[]=$row['product_name']; $productid[]=$row['productid']; $image[]=$row['image']; } $smarty->assign('productid', $productid); $smarty->assign('product_name', $product_name); $smarty->assign('rimage', $image); } DB_functions::dbclose(); Ο θψδηθαο γηα ηελ εκθάληζε απηψλ ησλ πξνηφλησλ βξίζθεηαη ζην user.tpl: <div class="aleft_box"> <p id="p_box">subscribe</p><hr> subscribe} get_rss_categories} <table> section name=categories loop=$category_id} <form method="post" action="user.php"> <tr><td><input type="hidden" name="rss" value="$category_id[categories]}"/> $category_name[categories]}</td> <td><input type="submit" name="subscribe" value="sub"/></td></tr> </form> /section} </table> <table> section name=categories2 loop=$category_id2} <form method="post" action="user.php"> <tr><td><input type="hidden" name="rss" value="$category_id2[categories2]}"/> $category_name2[categories2]}</td> <td><input type="submit" name="unsubscribe" value="unsub"/></td></tr> </form> /section} </table> </div> <div class="aleft_box"> <p id="p_box">rss</p><hr> rss} Νέα Πξνηφληα: <table> section name=rssproducts loop=$productid} <tr><td><a href="indexi.php?product_id=$productid[rssproducts]}"> <img title=$product_name[rssproducts]} alt=$product_name[rssproducts]} width=190 /section} </table> </div> height=190 src="$rimage[rssproducts]}"/></a></td> </tr> 101

103 5.5 Φόξνπκ Κάζε εγγεγξακκέλνο ρξήζηεο έρεη πξφζβαζε ζην θφξνπκ ηνπ ζπζηήκαηνο ζην νπνίν κπνξεί λα δεκηνπξγήζεη έλα ζέκα ή λα απαληήζεη ππάξρνληα ζέκαηα ζρεηηθά κε ηελ ππεξεζία. πσο θαη κε ηελ είζνδν ζηηο ζειίδεο δηαρεηξηζηψλ ή ρξεζηψλ, έηζη θαη ε είζνδνο ζην forum γίλεηαη κε ηελ θφξκα log-in. Οη ιεηηνπξγίεο πνπ κπνξεί λα επηηειέζεη έλαο δηαρεηξηζηήο ζην forum είλαη πεξηζζφηεξεο απφ απηέο ελφο απινχ ρξήζηε. ια απηά παξνπζηάδνληαη ζηηο επφκελεο ελφηεηεο. Κένηπικη ζελίδα forum: Θέκαηα Κάζε απιφο ρξήζηεο κπνξεί λα δεκηνπξγήζεη έλα ζέκα ζρεηηθά κε ην θαηάζηεκα. Οη δηαρεηξηζηέο κπνξνχλ ηφζν λα δεκηνπξγνχλ ζέκαηα φζν θαη λα δηαγξάθνπλ φπνην απφ ηα ππάξρνληα επηζπκνχλ Η ζπλάξηεζε forum_actions() είλαη ππεχζπλε γηα απηέο ηηο ιεηηνπξγίεο: function smarty_function_forum_actions($params, $smarty) 102

104 require_once 'database_functions.php'; //Γεκηνπξγία topic if(isset($_post['new_topic'])) DB_functions::dbconnect(); if(isset($_session['user'])) $uploader=$_session['user']; elseif(isset($_session['admin'])) $uploader=$_session['admin']; $title=$_post['title']; $q="insert into topic(uploader,uploaded,title) values('$uploader',now(),'$title')"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } //Γηαγξαθή ζέκαηνο πνπ γίλεηαη κφλν απφ ηνπο admins elseif(isset($_post['delete_topic'])) DB_functions::dbconnect(); $title=$_post['title']; $q="delete from topic where title='$title'"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); }} Γηα ηελ αλάθηεζε ησλ ζεκάησλ απφ ηελ βάζε ρξεζηκνπνηείηαη ε forum_get_topics(): function smarty_function_forum_get_topics($params, $smarty) require_once 'database_functions.php'; DB_functions::dbconnect(); $q="select * from topic"; $result = DB_functions::dbexecute($q); $num_results=pg_num_rows($result); for ($i=0;$i<$num_results;$i++) $row=pg_fetch_array($result); $title[] = $row['title']; $uploader[] =$row['uploader']; $uploaded[] =$row['uploaded']; } $smarty->assign('title', $title); $smarty->assign('uploader', $uploader); $smarty->assign('uploaded', $uploaded); DB_functions::dbclose(); } 103

105 5.5.2 Posts Κάζε ρξήζηεο κπνξεί λα απαληήζεη ζε νπνηνζδήπνηε ζέκα επηζπκεί εθθξάδνληαο ηελ άπνςε ηνπ ζρεηηθά κε απηφ. Οη δηαρεηξηζηέο κπνξνχλ αλ θξίλνπλ απαξαίηεην, ιφγσ βσκνινρηψλ θηι, λα δηαγξάςνπλ ή λα επεμεξγαζηνχλ ηηο απαληήζεηο ησλ ρξεζηψλ. Παξάδεηγκα Posts γηα ην ζέκα «Δξσηήζεηο»: Η ζπλάξηεζε forum_actions() είλαη ππεχζπλε γηα απηέο ηηο ιεηηνπξγίεο: function smarty_function_forum_actions($params, $smarty) require_once 'database_functions.php'; //Νέν post if(isset($_post['new_post'])) DB_functions::dbconnect(); if(isset($_session['user'])) $uploader=$_session['user']; elseif(isset($_session['admin'])) $uploader=$_session['admin']; $message=$_post['message']; $p_topic=$_session['topic_title']; $q="insert into post(uploader,uploaded,message,p_topic) values('$uploader',now(),'$message','$p_topic')"; $result = DB_functions::dbexecute($q); 104

106 DB_functions::dbclose(); } //Γηαγξαθή post elseif(isset($_post['delete_post'])) DB_functions::dbconnect(); $post_id=$_post['post_id']; $q="delete from post where post_id=$post_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } //Δπεμεξγαζία post elseif(isset($_post['edit_post'])) DB_functions::dbconnect(); $post_id=$_post['post_id']; $message=$_post['posted_message']; $q="update post set message='$message' where post_id=$post_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } } Γηα ηελ αλάθηεζε ησλ posts ρξεζηκνπνηείηαη ε forum_get_posts: function smarty_function_forum_get_posts ($params, $smarty) require_once 'database_functions.php'; DB_functions::dbconnect(); if(isset($_session['topic_title'])) $topic= $_SESSION['topic_title']; $q="select * from post where p_topic = '$topic' order by uploaded"; $result = DB_functions::dbexecute($q); $num_results=pg_num_rows($result); for ($i=0;$i<$num_results;$i++) $row=pg_fetch_array($result); $post_id[] = $row['post_id']; $uploader[] =$row['uploader']; $uploaded[] =$row['uploaded']; $message[] =$row['message']; } $smarty->assign('post_id', $post_id); 105

107 $smarty->assign('uploader', $uploader); $smarty->assign('uploaded', $uploaded); $smarty->assign('message', $message); $smarty->assign('topic', $topic); DB_functions::dbclose(); } 106

108 ΚΔΦΑΛΑΗΟ 6 ν Λεηηνπξγίεο Αλαδήηεζεο 6.1 Απιή Αλαδήηεζε Πξντόλησλ ινη νη ρξήζηεο κπνξνχλ λα αλαδεηήζνπλ πξντφληα πιεθηξνινγψληαο ηηο αληίζηνηρεο ιέμεηο ζηελ θφξκα πνπ ππάξρεη ζηελ αξρηθή ζειίδα. Τν ζχζηεκα αλαδεηά θαη επηζηξέθεη ηα πξντφληα πνπ πεξηέρνπλ ηηο ιέμεηο είηε ζην φλνκα είηε ζηελ πεξηγξαθή ηνπο ελψ ππάξρεη ε επηινγή κέζσ checkbox λα γίλεη αλαδήηεζε φισλ ησλ ιέμεσλ ή φρη. Γηα παξάδεηγκα αλ ν ρξήζηεο δψζεη ην φξηζκα ford toyota θαη ην checkbox δελ είλαη επηιεγκέλν ηφηε ζα επηζηξαθνχλ ηα πξνηφληα πνπ πεξηέρνπλ ζην ηίηιν ηνπο ή ζηελ πεξηγξαθή ηνπο ή ην ford ή ην toyota ή θαη ηα δχν. Αληίζεηα αλ είλαη επηιεγκέλν ζα επηζηξαθνχλ κφλν ηα πξνηφληα πνπ πεξηέρνπλ θαη ηηο δχν ιέμεηο. Το ανηίζηοισο div box: Γηα ηελ αχμεζε ηεο απνδνηηθφηεηαο ρξεζηκνπνηήζεθαλ νη tsvectors πνπ παξέρεη ε Postgresql αιιά θαη βάξε. Αλαιπηηθά ρξεζηκνπνηψληαο βάξε δίλεηαη πξνηεξαηφηεηα ζηηο ιέμεηο πνπ βξέζεθαλ ζηνλ ηίηιν ηνπ πξντφληνο, δειαδή επηζηξέθνληαη πξψηα ηα πξντφληα πνπ πεξηέρνπλ ηελ ιέμε ή ηηο ιέμεηο ζηνλ ηίηιν ηνπο θαη ζηελ ζπλέρεηα απηά πνπ ηηο πεξηέρνπλ ζηελ πεξηγξαθή ηνπο. 107

109 πσο αλαθέξζεθε θαη ζην 2 ν θεθάιαην κε ηελ ρξήζε ησλ tsvectors ν ηίηινο θαη ε πεξηγξαθή θάζε πξντφληνο ζπάλε ζε θαλνληθνπνηεκέλεο ιέμεηο, αθαηξνχληαη νη δηπινηηκέο θαη εηζάγνληαη ζε ζχλνια ιέμεσλ ζηα νπνία νπζηαζηηθά ιακβάλεη ρψξν ε αλαδήηεζε βειηηψλνληαο ηφζν ηελ ηαρχηεηα φζν θαη ηελ ζρεηηθφηεηα ηεο αλαδήηεζεο. Παξαδείγκαηνο ράξε γηα ηελ αλαδήηεζε ησλ πξνηφλησλ πνπ πεξηέρνπλ ηελ ιέμε ford: Παηψληαο ην button search εκθαλίδνληαη ηα απνιέζκαηα: Γηα ηελ πινπνίεζε ηεο δηαδηθαζίαο πνπ αλαθέξζεθε πξνεγνπκέλσο ρξεζηκνπνηήζεθαλ νη παξαθάησ εληνιέο ζηελ Postgresql: --Πξνζζήθε ηεο ζηήιεο searching_help,ε νπνία πεξηέρεη ηηο θαλνληθνπνηεκέλεο ιέμεηο, ζηνλ πίλαθα product-- ALTER TABLE product ADD COLUMN searching_help tsvector; --Γεηθηνδφηεζε ηεο ζηήιεο searching_help-- CREATE INDEX index_searching_help ON product USING gist(searching_help); --Γεκηνπξγία ηεο ιίζηαο κε ηηο θαλνληθνπνηεκέλεο ιέμεηο φπσο αλαθέξζεθε πξνεγνπκέλσο. Με ηελ ρξήζε ηνπ A δίλεηαη πξνηεξαηφηεηα ζην φλνκα ηνπ πξνηφληνο θαη ζηελ ζπλέρεηα ζηελ πεξηγξαθή-- UPDATE product SET searching_help = setweight(to_tsvector(product_name), 'A') to_tsvector(description); 108

110 Ο θψδηθαο γηα ηελ αλαδήηεζε ππάξρεη ζην index.tpl θαη είλαη: <div class="left_box"> <table> <th class="th_box">αλαδήηεζε<th> <form action="indexi.php"> <tr><td><input maxlength="40" name="search_value" size="15" /> <input type="submit" value="search"/></td></tr> <tr><td>αλαδήηεζε όιωλ ηωλ ιέμεωλ: <input type="checkbox" name="all_words"></td></tr> </form> <tr><td><a href="indexi.php?advanced_search=on"> <i><font size=2>πξνρωξεκέλε Αλαδήηεζε</font></i></a></td></tr> </table> </div> Η ζπλάξηεζε πνπ πξαγκαηνπνηεί ηελ αλαδήηεζε είλαη ε search(): function smarty_function_search($params, $smarty) require_once 'database_functions.php'; if(isset($_get['search_value'])) DB_functions::dbconnect(); $search_value = $_GET['search_value']; if($_get['all_words']=='on') $look_for = str_replace(' ',' ',$search_value); else $look_for = str_replace(' ',' & ',$search_value); //Αθνινπζεί ε επεξψηεζε πνπ θάλεη ρξήζε ησλ ts_vectors ρξεζηκνπνηψληαο //ηελ to_tsquery ψζηε λα θέξεη ηηο ιέμεηο ζε θαλνληθνπνηεκέλε κνξθή //θαη ζηελ ζπλέρεηα ηα θαηαηάζζεη ζχκθσλα κε ην βάξνο κε ηελ ts_rank //ψζηε λα επηζηξέθνληαη πξψηα ηα πξνηφληα πνπ πεξηέρνπλ ηηο ιέμεηο ζηνλ //ηίηιν ηνπο $q1="select product_id,product_name, description, price,image,discounted_price FROM product WHERE to_tsquery('$look_for') ORDER BY ts_rank(searching_help,to_tsquery('$look_for')) DESC"; $result1 = DB_functions::dbexecute($q1); $num_results=pg_num_rows($result1); for ($i=0;$i<$num_results;$i++) $row1=pg_fetch_array($result1); $product_id[] = $row1['product_id']; $product_name[] = $row1['product_name']; $image[] =$row1['image']; $price[] = $row1['price']; $description[] = $row1['description']; $d_price[] =$row1['discounted_price']; } 109

111 $smarty->assign('product_id', $product_id); $smarty->assign('product_name', $product_name); $smarty->assign('price', $price); $smarty->assign('d_price', $d_price); $smarty->assign('description', $description); $smarty->assign('image', $image); $smarty->assign('num', $num_results); $smarty->assign('search_value', $search_value); DB_functions::dbclose(); }} Γηα ηελ εκθάληζε ησλ απνηειεζκάησλ ρξεζηκνπνηείηαη ην search.tpl πνπ είλαη παξφκνηαο κνξθήο κε ην product_catalog.tpl νπφηε δελ θξίλεηαη απαξαίηεην λα παξνπζηαζηεί. 6.2 Υσξηθή Αλαδήηεζε Πξντόλησλ Σην ζχζηεκα ππάξρεη ε δπλαηφηεηα ρσξηθήο αλαδήηεζεο ζπλδπάδνληαο θάπνηεο ιεηηνπξγίεο ηνπ PostGis θαη ηνπο Τ.Κ. Σπγθεθξηκέλα δίλνληαο θάπνηνλ Τ.Κ. θαη ηελ κέγηζηε απφζηαζε αλαδήηεζεο επηζηξέθνληαη ηα πξντφληα πνπ βξίζθνληαη ζε αθηίλα ίζε κε ηελ απφζηαζε απηή. πρ Αλαδήηεζε πξντφλησλ πνπ βξίζθνληαη ζε αθηίλα 5ρικ απφ ηνλ Τ.Κ Το ανηίζηοισο div box: 110

112 Γηα ηελ επίηεπμε ηεο παξαπάλσ ιεηηνπξγίαο αθνινπζήζεθαλ ηα παξαθάησ βήκαηα: 1. πιινγή Σ.Κ. Διιάδαο Τν πξψην βήκα ήηαλ ε ζπιινγή φισλ ησλ Τ.Κ. ηεο Διιάδαο. Τειηθά ε πιεξνθνξία πάξζεθε απφ ην site ησλ ειιεληθψλ ηαρπδξνκείσλ 2. Δύξεζε ζπληεηαγκέλσλ ησλ πεξηνρώλ πνπ αληηπξνζσπεύνπλ νη Σ.Κ. απηώλ ησλ πεξηνρώλ. Σηε ζπλέρεηα νη ΤΚ αληηζηνηρίζηεθαλ κε ηηο πεξηνρέο πνπ αληηπξνζσπεχνπλ θαη βξέζεθαλ νη ζπληεηαγκέλεο ησλ θέληξσλ. Παξαδείγκαηνο ράξε ν Τ.Κ αληηπξνζσπεχεη ηελ πεξηνρή Ν. Αιηθαξλαζζφο Ηξαθιείνπ ην θέληξν ηεο νπνίαο έρεη ζπληεηαγκέλεο θαη Screenshot από ηο απσείο: 3. Γεκηνπξγία αληίζηνηρνπ πίλαθα ζηελ βάζε δεδνκέλσλ Η παξαπάλσ πιεξνθνξία απνζεθεχηεθε ζηνλ πίλαθα zip_code (βι. Κεθάιαην 4) ηεο βάζεο δεδνκέλσλ ν νπνίνο έρεη σο νξίζκαηα ηνλ ΤΚ θαη ηηο ζπληεηαγκέλεο. Ο πίλαθαο δεηθηνδνηήζεθε κε δείθηεο Gist γηα ηελ κείσζε ηνπ ρξφλνπ αλαδήηεζεο. 4. Τινπνίεζε ππνινγηζκνύ απόζηαζεο Γηα ηνλ ππνινγηζκφ ηεο απφζηαζεο εγθαηαζηάζεθε ην PostGis νπνίν δίλεη πξφζβαζε ζε επηπιένλ γεσγξαθηθέο ζπλαξηήζεηο ζηελ Postgresql θαη ζπγθεθξηκέλα ζηελ ζπλάξηεζε distancesphere() πνπ δέρεηαη σο νξίζκαηα ηηο ζπληεηαγκέλεο δχν ζεκείσλ θαη επηζηξέθεη ηελ κεηαμχ ηνπο απφζηαζε. 111

113 //Δληνιέο γηα ππνζηήξημε ηνπ PostGis createlang plpgsql psql -d gbay -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql psql -d gbay -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql //Γεκηνπξγία ζηήιεο πνπ πεξηέρεη ηηο ζπληεηαγκέλεο ζαλ ζεκείν //ψζηε λα κπνξνχλ λα ηεζνχλ ζαλ νξζκάηα ζηηο ζπλαξηήζεηο ηνπ PostGis ALTER TABLE zip_code ADD COLUMN geom GEOMETRY; UPDATE zip_code SET geom = makepoint(longitude, latitude); 5. Τινπνίεζε δηαδηθαζίαο επηζηξνθήο ησλ αληίζηνηρσλ πξνηόλησλ Τέινο κε ηελ αληίζηνηρε επεξψηεζε ζηελ Posgresql επηζηξέθνληαη ηα πξνηφληα πνπ βξίζθνληαη ζε απφζηαζε ίζε κε ηελ κέγηζηε απφζηαζε αλαδήηεζεο. Γηα παξάδεηγκα έζησ φηη ν πειάηεο βξίζθεηαη ζηελ Πάηξα, ζε πεξηνρή κε ΤΚ θαη ζέιεη λα ηνπ επηζηξαθνχλ ηα πξνηφληα πνπ βξίζθνληαη ζε αθηίλα 10ρικ απφ απηφλ. Τφηε πιεθηξνινγεί: Καη ηνπ επηζηξέθνληαη: 112

114 Καη γηα ηνπ ιφγνπ ην αιεζέο επηιέγνληαο ην πξνηφλ: Η αλαδήηεζε γίλεηαη ρξεζηκνπνηψληαο ηελ ζπλάξηεζε search_distance(): function smarty_function_search_distance($params, $smarty) require_once 'database_functions.php'; if(isset($_get['zip_code'])) DB_functions::dbconnect(); $zip_code = $_GET['zip_code']; if($_get['max_distance']==null) $distance = 0; else $distance = $_GET['max_distance']; //Μεηαηξνπή απφζηαζεο ζε κέηξα $distance_km=$distance*1000; //Φξεζηκνπνηψληαο ηελ distance_sphere ππνινγίδνληαη νη απνζηάζεηο //κεηαμχ ησλ ζεκείσλ θαη επηζηξέθνληαη ηα πξνηφληα πνπ βξίζθνληαη //κέζα ζηελ δεηνχκελε απφζηαζε $q1="select product_id,product_name, description, price,image,discounted_price FROM WHERE product INNER JOIN zip_code ON product_zip_code=zip distance_sphere((select geom from zip_code where zip=$zip_code),geom) <= $distance_km"; $result1 = DB_functions::dbexecute($q1); $num_results=pg_num_rows($result1); 113

115 for ($i=0;$i<$num_results;$i++) $row1=pg_fetch_array($result1); $product_id[] = $row1['product_id']; $product_name[] = $row1['product_name']; $image[] =$row1['image']; $price[] = $row1['price']; $description[] = $row1['description']; $d_price[] =$row1['discounted_price']; } $smarty->assign('product_id', $product_id); $smarty->assign('product_name', $product_name); $smarty->assign('price', $price); $smarty->assign('d_price', $d_price); $smarty->assign('description', $description); $smarty->assign('image', $image); $smarty->assign('num', $num_results); $smarty->assign('distance', $distance); $smarty->assign('zip_code', $zip_code); $smarty->assign('search_value', $search_value); DB_functions::dbclose();}} Γηα ηελ ρσξηθή αλαδήηεζε ππάξρεη ε θφξκα ζην index.tpl: <div class="left_box"> <table> <th class="th_box">χωξηθή Αλαδήηεζε<th> <form action="indexi.php"> <tr><td>ο ηαρπδξνκηθόο ζαο θώδηθαο είλαη:</td></tr> <tr><td><input maxlength="7" name="zip_code" size="7" /> </td></tr> <tr><td>η κέγηζηε απόζηαζε αλαδήηεζεο(km):</td></tr> <tr><td><input maxlength="7" name="max_distance" size="7" /> </td></tr> <tr><td><input type="submit" value="search"/></td></tr> </form> </table> </div> Γηα ηελ εκθάληζε ησλ απνηειεζκάησλ ρξεζηκνπνηείηαη ην search_distance.tpl πνπ είλαη παξφκνηαο κνξθήο κε ην product_catalog.tpl νπφηε δελ θξίλεηαη απαξαίηεην λα παξνπζηαζηεί. 114

116 6.3 Αλαδήηεζε Πξντόλησλ κε Υξήζε Υάξηε Φξεζηκνπνηψληαο ηνλ ράξηε ηεο Διιάδαο νη ρξήζηεο κπνξνχλ λα βξνπλ ηα πξντφληα πνπ πξνέξρνληαη απφ ζπγθεθξηκέλνπο λνκνχο απιά θάλνληαο θιηθ ζηνλ ζρεηηθφ λνκφ. Γηα ηελ πινπνίεζε απηήο ηεο ιεηηνπξγίαο ρξεζηκνπνηήζεθε ην tag map ηεο html. Με ηελ ρξήζε ησλ polygon θαη rectangular δφζεθαλ ζπληεηαγκέλεο ζε θάζε λνκφ ηεο Διιάδαο θαη κε ρξήζε ηεο θφξκαο έγηλε αληηζηνίρεζε κε ηνπο ΤΚ νη νπνίνη ζηέιλνληαη ζαλ νξίζκαηα ψζηε λα γίλεη ε αλαδήηεζε κε ηελ επεξψηεζε θαη λα επηζηξαθνχλ ηα αληίζηνηρα πξνηφληα. Το ανηίζηοισο div box: «Κιηθάξνληαο» πάλσ ζηνλ ράξηε ζχλδεζκν, αλνίγεη ζηελ νζφλε ν ράξηεο ηεο Διιάδαο απφ ηνλ νπνίν, ν ρξήζηεο, κπνξεί λα επηιέμεη φπνην λνκφ επηζπκεί: Ο θψδηθαο πνπ δεκηνπξγεί ηνλ ράξηε είλαη ζην αξρείν map.tl, έλα ελδεηθηηθφ θνκκάηη ηνπ νπνίνπ θαίλεηαη παξαθάησ: <body> <img src="images/greece.jpg" usemap="#greece" border="0"> <map name="greece"> <area shape="rect" coords="313,528,249,589" href="indexi.php?area=73000" title="chania"> <area shape="rect" coords="352,550,314,571" href="indexi.php?area=74000" title="rethymno"> <area shape="rect" coords="391,548,348,596" href="indexi.php?area=70000" title="iraklio"> <area shape="rect" coords="453,551,394,593" href="indexi.php?area=72000" title="lasithi"> <area shape="rect" coords="426,328,314,483" href="indexi.php?area=84000" title="cyclades"> <area shape="rect" coords="472,195,386,244" href="indexi.php?area=81000" title="mitilini"> <area shape="rect" coords="452,271,384,322" href="indexi.php?area=82000" title="chios"> <area shape="rect" coords="493,331,407,378" href="indexi.php?area=83000" title="samos"> <area shape="rect" coords="291,215,257,237" href="indexi.php?area=37000" title="sporades"> <area shape="rect" coords="229,467,212,488" href="indexi.php?area=80000" title="kithira"> </body> 115

117 Γηα παξάδεηγκα, γηα ηελ δεκηνπξγία ηνπ λνκνχ Ηξαθιείνπ είλαη ππεχζπλε ε γξακκή <area shape="rect" coords="391,548,348,596" href="indexi.php?area=70000" title="iraklio"> Η γξακκή απηή δίλεη ηηο ζπληεηαγκέλεο κέζα ζηηο νπνίεο βξίζθνληαη ηα εξαθιεηψηηθα πξντφληα θαη ηα αληηζηνηρεί ζηνλ ζχλδεζκν κε ηελ κεηαβιεηή area= Ωο γλσζηφλ νη ΤΚ ηνπ Ηξαθιείνπ είλαη απφ έσο Σηε ζπλέρεηα απηφ πεξλάεη ζηελ ζπλάξηεζε map_search() ε νπνία θαίλεηαη παξαθάησ: function smarty_function_map_search($params, $smarty) require_once 'database_functions.php'; require_once 'products.php'; if(isset($_get['area'])) DB_functions::dbconnect(); $area = $_GET['area']; //Παξαθάησ ιακβάλνληαη ππφςηλ πεξηνρέο πνπ έρνπλ πάλσ απφ κία //ρηιηάδα γηα ηνπο TK ηνπο, φπσο ν //Ννκφο Ηξαθιείνπ πνπ πεξηιακβάλεη 3 ρηιηάδεο if($area<20000) $area2=$area+10000; elseif(($area >= 54000)&($area <58000)) $area2=$area+4000; elseif(($area >= 70000)&($area <72000)) $area2=$area+2000; elseif(($area >= 25000)&($area <27000)) $area2=$area+2000; elseif(($area >= 40000)&($area <42000)) $area2=$area+2000; elseif(($area >= 64000)&($area <66000)) $area2=$area+2000; elseif(($area >= 44000)&($area <46000)) $area2=$area+2000; else $area2=$area+1000; //Δπηιέγνληαη ηα πξνηφληα πνπ αληηζηνηρνχλ ζηνπο ΤΚ ηνπ λνκνχ //πνπ έρεη επηιεγεί $q1="select product_id,product_name, description, price,image,discounted_price FROM product WHERE product_zip_code >= $area AND product_zip_code < $area2 "; $result1 = DB_functions::dbexecute($q1); $num_results=pg_num_rows($result1); for ($i=0;$i<$num_results;$i++) $row1=pg_fetch_array($result1); $product_id[] = $row1['product_id']; $product_name[] = $row1['product_name']; $image[] =$row1['image']; $price[] = $row1['price']; $description[] = $row1['description']; 116

118 $d_price[] =$row1['discounted_price']; } $smarty->assign('product_id', $product_id); $smarty->assign('product_name', $product_name); $smarty->assign('price', $price); $smarty->assign('d_price', $d_price); $smarty->assign('description', $description); $smarty->assign('image', $image); $smarty->assign('num', $num_results); $smarty->assign('distance', $distance); $smarty->assign('area', $area); $smarty->assign('search_value', $search_value); DB_functions::dbclose();}} Γηα ηελ εκθάληζε ησλ απνηειεζκάησλ ρξεζηκνπνηείηαη ην map_search.tpl πνπ είλαη παξφκνηαο κνξθήο κε ην product_catalog.tpl νπφηε δελ θξίλεηαη απαξαίηεην λα παξνπζηαζηεί. 6.4 ύλζεηε Αλαδήηεζε Πξντόλησλ Οπζηαζηηθά πξφθεηηαη γηα αλαδήηεζε ρξεζηκνπνηψληαο φινπο ηνπο παξαπάλσ ηξφπνπο Σπγθεθξηκέλα γίλεηαη αλαδήηεζε πξντφλησλ ζπλδπάδνληαο ιέμεηο ή θνκκάηηα ιέμεσλ φπσο αλαθέξζεθε ζην 6.1, ρσξηθή αλαδήηεζε φπσο αλαθέξζεθε ζην 6.2 αιιά θαη αλαδήηεζε βάζεη θαηεγνξίαο ή βάζεη ηηκήο. Η αλαδήηεζε κπνξεί λα γίλεη ηφζν κε έλα απφ απηά ηα νξίζκαηα ή κε νπνηνλδήπνηε ζπλδπαζκφ ηνπο. Πρ Αλαδήηεζε απηνθηλήησλ ηηκήο απφ έσο επξψ πνπ βξίζθνληαη ζε κέγηζηε απφζηαζε 100ρικ απφ ηελ πεξηνρή κε ΤΚ Μεηά ηελ επηινγή ηνπ ζπλδεζκνπ «Πξνρσξεκέλε αλαδήηεζε» ζην div ηεο απιήο αλαδήηεζεο αλνίγεη ην menu: Ο θψδηθαο ηεο θφξκαο αλαδήηεζεο είλαη ζην advanced_search.tpl: 117

119 advanced_search} get_search_categories} <p><b>πξνρσξεκέλε Αλαδήηεζε Πξνηφληνο:</b></p> <form action="indexi.php?advanced_search=on" method="post"> <table border="0"> <tr><td>λνκα :</td> <td><input type="text" name="product_name" id="product_name" size="25" maxlength="50"></td></tr> <tr><td>καηεγνξία<td> <td> <select name='cat'>section name=categories loop=$category_name} <option>value=$category_id[categories]}> $category_name[categories]}</option>/section}</select></td></tr> <tr><td>τηκή :</td> <td>απφ <input type="text" name="apo" id="apo" size="10" maxlength="10"> Δψο: <input type="text" name="ews" id="ews" size="10" maxlength="10"> </td></tr> <tr> <td>μέγηζηε Απφζηαζε(km):</td> <td>t.k.<input type="text" name="postalcode" id="postalcode" size="5" maxlength="5"> Απφζηαζε<input type="text" name="distance" id="distance" size="10" maxlength="10"></td></tr> <tr><td></td> <td><input type="submit" value="αλαδήηεζε" name="search"> <input type="reset" value="reset" onclick="return confirm ('Are you sure you want to reset the form?')"></td></tr> </table> Η αλαδήηεζε γίλεηαη κε ηελ ζπλάξηεζε advanced_search(): function smarty_function_advanced_search($params, $smarty) require_once 'database_functions.php'; if(isset($_post['search'])) DB_functions::dbconnect(); $name = $_POST['product_name']; $apo = $_POST['apo']; $ews = $_POST['ews']; $cat = $_POST['cat']; $distance = $_POST['distance']; $zip_code = $_POST['postalcode']; if($apo=='') $apo=0; if($ews=='') $ews= ; $distance_km = $distance*1000; //Αλ είλαη ζπκπιεξσκέβα θαη ν ΤΚ θαη ε απφζηαζε γίλεηαη αλαδήηεζε απφζηαζεο if(($zip_code!='')&&($distance!='')) $q1="select product.product_id,product_name, description,price,image,discounted_price 118

120 FROM product INNER JOIN product_category ON product.product_id=product_category.product_id INNER JOIN zip_code ON product_zip_code=zip WHERE distance_sphere((select geom from zip_code where zip=$zip_code),geom) <= $distance_km AND product_name like '%".$name."%' AND price>=$apo AND price<=$ews AND category_id=$cat";} else $q1="select product.product_id,product_name, description,price,image,discounted_price FROM product INNER JOIN product_category ON product.product_id=product_category.product_id WHERE product_name like '%".$name."%' AND price>=$apo AND price<=$ews AND category_id=$cat "; } $result1 = DB_functions::dbexecute($q1); $num_results=pg_num_rows($result1); for ($i=0;$i<$num_results;$i++) $row1=pg_fetch_array($result1); $product_id[] = $row1['product_id']; $product_name[] = $row1['product_name']; $image[] =$row1['image']; $price[] = $row1['price']; $description[] = $row1['description']; $d_price[] =$row1['discounted_price']; } $smarty->assign('product_id', $product_id); $smarty->assign('product_name', $product_name); $smarty->assign('price', $price); $smarty->assign('d_price', $d_price); $smarty->assign('description', $description); $smarty->assign('image', $image); $smarty->assign('num', $num_results); DB_functions::dbclose();}} Γηα ηελ εκθάληζε ησλ απνηειεζκάησλ ρξεζηκνπνηείηαη ην advanced_search_results.tpl πνπ είλαη παξφκνηαο κνξθήο κε ην product_catalog.tpl νπφηε δελ θξίλεηαη απαξαίηεην λα παξνπζηαζηεί. 119

121 ΚΔΦΑΛΑΗΟ 7 ν Αζθάιεηα 7.1 Υξήζε Sessions Γηα ηελ πξφζβαζε ζηηο ζειίδεο πνπ ρξεηάδνληαη log in (admin,user,forum) θαη ηελ πεξηήγεζε ζε απηέο απνζεθεχεηαη ζε sessions ην username θαη ειέγρεηαη ζε θάζε κεηάβαζε ψζηε λα δηαπηζησζεί φηη ην άηνκν πνπ ρξεζηκνπνηεί ηε ζειίδα έρεη ην δηθαίσκα. Δπίζεο sessions ρξεζηκνπνηνχληαη θαηά ηελ πεξηήγεζε ζηα θαηαζηήκαηα θαη ζηηο θαηεγνξίεο ζηελ ζειίδα ηνπ admin ψζηε λα «θαηαιαβαίλεη» ην ζχζηεκα πνπ βξίζθεηαη θαη λα ππάξρεη κία λνεηή δελδξηθή δνκή. Αξρηθά ν ρξήζηεο εηζάγεη ηα ζηνηρεία ηνπ ζηελ αληίζηνηρε θφξκα γηα log in Σηε ζπλέρεηα, φπσο θαίλεηαη παξαθάησ, ειέγρεηαη αλ ππάξρεη ην δηθαίσκα γηα είζνδν θαη αλ λαη απνζεθεχεηαη ην username κε ηε ρξήζε sessions θαη ειέγρεηαη ζε θάζε ζειίδα πνπ επηζθέπηεηαη ν ρξήζηεο ψζηε λα απμεζεί ε αζθάιεηα ησλ δεδνκέλσλ. 120

122 DB_functions::dbconnect(); //Τα password θαη username πνπ έζεζε ν ρξήζηεο ζηελ θφξκα log in $username=$_post['username']; $password=$_post['password']; $h_password=sha1(hash_prefix. $password. HASH_POSTFIX); //Διέγρεηαη αλ ηα ζηνηρεία πνπ έδσζε ν ρξήζηεο είλαη έγθπξα $q1="select * from users where username = '$username' and password= '$h_password'"; $result1 = DB_functions::dbexecute($q1); $row1=pg_fetch_array($result1); $right=$row1['rights']; DB_functions::dbclose(); //Αλ είλαη έγθπξα γίλεηαη ε απνζήθεπζε ηνπ κνλαδηθνχ username ζε sessions αλάινγα κε ην δηθαίσκα if($right=='admin') $_SESSION['admin'] = $username; require_once 'admin.php'; } elseif($right=='user') $_SESSION['user'] = $username; require_once 'user.php'; } //Αλ δελ είλαη έγθπξα γίλεηαη redirect ζηελ θεληξηθή ζειίδα ηνπ θαηαζηήκαηνο. else require_once 'index.php'; Με ην logout απνδεζκεχνληαη ηα sessions θαη εμαζθαιίδεηαη φηη αθφκα θαη αλ θάπνηνο ηξίηνο έρεη πξφζβαζε ζην pc δελ ζα κπνξεί λα ζπλδεζεί ζηηο πξνζσπηθέο ζειίδεο ηνπ ρξήζηε. Ο παξαθάησ θψδηθαο ππάξρεη ζην admin.php πνπ θαζνξίδεη ηηο θηλήζεηο ζην ζχζηεκα. elseif($_get['logout']==1) //Απνδέζκεπζε sessions session_unset(); } //Μεηάβαζε ζηελ θεληξηθή ζειίδα ηνπ θαηαζηήκαηνο $urlnew = " greek-bay/index.php"; echo "<script>"; echo "location = '$urlnew';"; echo "</script>"; echo $urlnew; 121

123 7.2 Υξήζε SSL https πσο αλαθέξζεθε θαη ζην 2 ν θεθάιαην, νη ζειίδεο νη νπνίεο πεξηέρνπλ πξνζσπηθά ή ζεκαληηθά δεδνκέλα πξέπεη λα θσδηθνπνηνχληαη ψζηε λα είλαη αδχλαηε ε ππνθινπή ηνπ πεξηερνκέλνπ ηνπο. Γηα απηφλ ην ιφγν θσδηθνπνηνχληαη κε ηελ ρξήζε ηνπ πξσηνθφιινπ SSL πνπ εθαξκφδεηαη αληηθαζηζηψληαο ην http κε https. Πιεξνθνξηαθά, ην SSL είλαη έλα πξσηφθνιιν πνπ δεκηνπξγήζεθε απφ ηελ Netscape έηζη ψζηε λα θξππηνγξαθνχληαη ηα δεδνκέλα πνπ αληαιιάζζνληαη κεηαμχ δχν ππνινγηζηηθψλ ζπζηεκάησλ εγθαζηδξχνληαο κηα αζθαιή ζχλδεζε κεηαμχ ηνπο. Τν πξσηφθνιιν απηφ ρξεζηκνπνηεί ην TCP/IP γηα ηε κεηαθνξά ησλ δεδνκέλσλ θαη είλαη αλεμάξηεην απφ ηελ εθαξκνγή πνπ ρξεζηκνπνηεί ν ηειηθφο ρξήζηεο γηα απηφ θαη κπνξεί λα παξέρεη ππεξεζίεο αζθαινχο κεηάδνζεο πιεξνθνξηψλ ζε πξσηφθνιια αλψηεξνπ επηπέδνπ φπσο γηα παξάδεηγκα ην HTTP, ην FTP, ην telnet θνθ. Τέινο ην SSL ρξεζηκνπνηείηαη επξχηαηα ζε ηζηνζειίδεο κεηαθνξάο θαη δηαρείξηζεο επαίζζεησλ δεδνκέλσλ, φπσο ειεθηξνληθψλ θαηαζηεκάησλ, θνξνινγηθψλ αηηήζεσλ αιιά θαη ηζηνζειίδσλ θνηλσληθήο δηθηχσζεο. Παξαδείγκαηα ηέηνησλ ζειίδσλ ζην θαηάζηεκα είλαη απηή πνπ πεξηέρεη ηνπο θσδηθνχο ησλ ρξεζηψλ, ηηο ιεπηνκέξεηεο ησλ παξαγγειηψλ, ηα ζηνηρεία πηζησηηθήο θάξηαο θ.α. Παξάδεηγκα ρξήζεο ηνπ SLL έρνπκε θαηά ηελ είζνδν ηνπ admin ζηελ ζειίδα κε ηηο παξαγγειίεο. Τφηε ρξεζηκνπνηείηαη ν θψδηθαο: //Έιεγρνο αλ έρεη δηθαίσκα πξφζβαζεο θαη κεηαθνξά ζηελ αληίζηνηρε ζειίδα elseif((isset($_session['admin']))&&($_get['admin_page']==6)) //Αλ δελ είλαη ελεξγνπνηεκέλν ην SSL if (getenv('https')!= 'on') //Τφηε ελεξγνπνηείηαη header ('Location: getenv('server_name'). getenv('request_uri')); //Καη εκθαλίδεηαη ε θξππηνγξαθεκέλε ζειίδα $page->display('admin_orders.tpl'); } Γηα ηελ εγθαηάζηαζε ηνπ SLL ππάξρνπλ πιεξνθνξίεο ζην 10 ν θεθάιαην. 122

124 7.3 Κξππηνγξάθεζε Κσδηθώλ Πξόζβαζεο Οη θσδηθνί πξφζβαζεο ησλ ρξεζηψλ θξππηνγξαθνχληαη κε ρξήζε hashing πξηλ ηελ απνζήθεπζε ηνπο θαη έηζη ζηελ βάζε ηνπ ζπζηήκαηνο απνζεθεχνληαη κφλν ηα θξππηνγξαθεκέλα κελχκαηα. Σπγθεθξηκέλα ε πιεξνθνξία πνπ απνζεθεχεηαη ζην ζχζηεκα έρεη ηελ παξαθάησ κνξθή: Γηα λα εηζέιζεη ζην ζχζηεκα ν ρξήζηεο θξππηνγξαθείηαη ν θσδηθφο πνπ εηζάγεη θαη ζπγθξίλνληαη ηα θξππηνγξαθεκέλα κελχκαηα. Σηελ βάζε είλαη απνζεθεπκέλν ην θξππηνγξαθεκέλν κήλπκα ηνπ θσδηθνχ πξφζβαζεο ην νπνίν ζπγθξίλεηαη κε ηελ θξππηνγξάθεζε ηνπ θσδηθνχ πνπ πιεθηξνινγεί ν ρξήζηεο θαη αλ απηά ηα δχν είλαη ίδηα επηηξέπεηαη ε είζνδνο. Καηά ηελ απνζήθεπζε ησλ ζηνηρείσλ ηνπ ρξήζηε ζην ζχζηεκα εθηειείηαη ν θψδηθαο: $h_password=sha1(hash_prefix. $password. HASH_POSTFIX); Ο νπνίνο θξππηνγξαθεί ην password πνπ έδσζε ν ρξήζηεο ρξεζηκνπνηψληαο ηελ κέζνδν sha1 κε νξηζκέλα prefix θαη postfix. Σηελ ζπλέρεηα θαηά ην log-in ηνπ ρξήζηε ν θσδηθφο ηνπ μαλαθξππηνγξαθείηαη θαη ζπγθξίλνληαη ηα δχν θξππηνγξαθεκέλα strings ψζηε λα ειεγρζεί ε εγθπξφηεηα ηνπ. //Τα password θαη username πνπ έζεζε ν ρξήζηεο ζηελ θφξκα log in $username=$_post['username']; $password=$_post['password']; //Κξππηνγξαθείηαη κε hashing ην username πνπ έδσζε ν ρξήζηεο ψζηε λα γίλεη ν έιεγρνο κε ην //απνζεθεπκέλν ζηε βάζε $h_password=sha1(hash_prefix. $password. HASH_POSTFIX); //Διέγρεηαη αλ ηα ζηνηρεία πνπ έδσζε ν ρξήζηεο είλαη έγθπξα $q1="select * from users where username = '$username' and password= '$h_password'"; $result1 = DB_functions::dbexecute($q1); 123

125 7.4 Κξππηνγξάθεζε ηνηρείσλ Πηζησηηθή Κάξηαο Τα ζηνηρεία ηεο πηζησηηθήο θάξηαο θάζε ρξήζηε, δειαδή ην νλνκαηεπψλπκν θαη ν αξηζκφο θάξηαο ζπλελψλνληαη κε ηηο ζπλαξηήζεηο επεμεξγαζίαο string θαη ζηελ ζπλέρεηα απηφ ην string θξππηνγξαθείηαη κε ρξήζε θξππηνγξάθεζεο ζπκκεηξηθνχ θιεηδηνχ θαη ζπγθεθξηκέλα ηνλ αιγφξηζκν AES 256 πνπ βαζίδεηαη ζηνλ Rijndael. Σηελ βάζε ηειηθά απνζεθεχεηαη απηφ string απφ ζχκβνια ην νπνίν, ζε πεξίπησζε πνπ θάπνηνο ρξήζηεο ζέιεη λα δεη ηα ζηνηρεία ηνπ, απνθξππηνγξαθείηαη ρξεζηκνπνηψληαο ην κπζηηθφ θιεηδί. Άξα ζε πεξίπησζε θινπήο ή απψιεηαο ηεο βάζεο δεδνκέλσλ δελ ππάξρεη ν θφβνο θινπήο ησλ ζηνηρείσλ ησλ πηζησηηθψλ θαξηψλ. Σπγθεθξηκέλα ηα ζηνηρεία αξηζκφο θάξηαο, εκεξνκελία ιήμεο, φλνκα θαη ηχπνο θάξηαο, ζπλελψλνληαη, θξππηνγξαθνχληαη θαη ηειηθά απνζεθεχεηαη έλα string ηεο παξαθάησ κνξθήο: Γηα ηελ είζνδν ησλ ζηνηρείσλ ηεο πηζησηηθήο απφ ηνλ ρξήζηε εθηειείηαη ν θψδηθαο: function smarty_function_update_credit_card($params, $smarty) require_once 'database_functions.php'; require 'encrypt.php'; if(isset($_post['update_credit_card'])) DB_functions::dbconnect(); $username = $_SESSION['user']; $credit_name = $_POST['credit_name']; $card_number = $_POST['card_number']; $expiring_day = $_POST['expiring_day']; $card_type = $_POST['card_type']; $key = "top secret key"; //Σε απηφ ην ζεκείν γίλεηαη ε ζπλέλσζε ησλ ζηνηρείσλ ζε έλα string //ρξεζηκνπνηψληαο ην ζχκβνιν + ην νπνίν ζα βνεζήζεη ζηελ //απνθξππηνγξάθεζε $plaintext = $credit_name. '+'. $card_number. '+'. $expiring_day. '+'. $card_type; //Απηφ ην string θξππηνγξαθείηαη κε ρξήζε ηεο encrypt_it $encryptedtext =encrypt_it($plaintext, $key); //Τν θξππηνγξαθεκέλν κήλπκα έξρεηαη ζε κνξθή απνζεθεχζηκε ζηε βάζε $encryptedtext_tosave = convert_uuencode($encryptedtext); $encryptedtext_tosave = addslashes($encryptedtext_tosave); 124

126 //Καη απνζεθεχεηαη $q="update users set credit_card='$encryptedtext_tosave' where username = '$username'"; $result = DB_functions::dbexecute($q); DB_functions::dbclose(); } Η encrypt_it() πνπ είλαη ε ζπλάξηεζε πνπ θξππηνγξαθεί ην κήλπκα θαίλεηαη παξαθάησ: function encrypt_it($plaintext, $key) //Τν κέγεζνο ηνπ vector $iv_size = mcrypt_get_iv_size(mcrypt_rijndael_256, MCRYPT_MODE_ECB); //Γεκηνπξγείηαη ην vector $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); //Με ρξήζε ηεο mcrypt_encrypt θξππηνγξαθείηαη ην κήλπκα $enctryptedtext = mcrypt_encrypt(mcrypt_rijndael_256, $key, $plaintext, MCRYPT_MODE_ECB, $iv); return $enctryptedtext; } Γηα ηελ εκθάληζε ησλ ζηνηρείσλ ηεο πηζησηηθήο ρξεζηκνπνηείηαη ε αληίζεηε δηαδηθαζία. Δθφζσλ ηα ζηνηρεία είλαη απνζεθεπκέλα ζε κνξθή θξππηνγξαθεκέλε ζηε βάζε πξέπεη λα γίλεη ε απνθξππηνγξάθεζε θαη ην ρψξηζκα ηνπ αιθαξηζκεηηθνχ ζηα ζηνηρεία ηεο θάξηαο θαη λα εκθαληζηνχλ απηά ζηνλ ρξήζηε. Γηα απηφ ην ιφγν ππάξρεη ε ζπλάξηεζε get_user_credit_card(): function smarty_function_get_user_credit_card($params, $smarty) require_once 'database_functions.php'; require 'decrypt.php'; DB_functions::dbconnect(); $username = $_SESSION['user']; //Αλαθηάηαηην θξππηνγξαθεκέλν string $q1="select credit_card from users where username = '$username'"; $result1 = DB_functions::dbexecute($q1); $row1=pg_fetch_array($result1); if($row1[0]!=null) $encryptedtext=$row1[0]; $key = "top secret key"; //Γίλεηαη ε απνθξππηνγξάθεζε ηνπ sting κε ρξήζε ηεο decrypt_it $encryptedtext = convert_uudecode($encryptedtext); 125

127 $encryptedtext_loaded = decrypt_it($encryptedtext,$key); //Γίλεηαη δηαρσξηζκφο ησλ ζηνηρείσλ $card_info = explode("+",$encryptedtext_loaded); $name = $card_info[0]; $card_number = $card_info[1]; $expiring_date = $card_info[2]; $card_type = $card_info[3]; $smarty->assign('credit_name',$name); $smarty->assign('card_number', $card_number); $smarty->assign('expiring_date', $expiring_date); $smarty->assign('card_type', $card_type); } DB_functions::dbclose(); } Η decrypt_it() πνπ είλαη ε ζπλάξηεζε πνπ απνθξππηνγξαθεί ην κήλπκα θαίλεηαη παξαθάησ: function decrypt_it($enctryptedtext, $key) $iv_size = mcrypt_get_iv_size(mcrypt_rijndael_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); //Με ρξήζε ηεο mcrypt_decrypt απνθξππηνγξαθείηαη ην κήλπκα $decryptedtext = mcrypt_decrypt(mcrypt_rijndael_256, $key, $enctryptedtext, MCRYPT_MODE_ECB, $iv); return trim($decryptedtext); } Ο θψδηθαο γηα ηελ εκθάληζε φισλ απηψλ ησλ ζηνηρείσλ ζηνλ ρξήζηε θαη γηα ηελ επεμεξγαζία ηνπο πεξηέρεηαη ζην user_credit.tpl 126

128 <div id="main"> <table align="center" border=1> <tr bgcolor=silver> <th colspan=2><b>ηνηρεία Πηζηωηηθήο Κάξηαο </b></th> </tr> <form method="post" action="user?user_page=6.php"> <tr> <td width="150">όλνκα Δηθαηνύρνπ</td> <td width="150"> <input type="text" name="credit_name" value="$credit_name}"/> </td> </tr> <tr> <td width="150">αξηζκόο Κάξηαο</td> <td width="150"> <input type="text" name="card_number" value="$card_number}"/> </td> </tr> <tr> <td width="150">ηκεξνκελία Λήμεο</td> <td width="150"> <input type="text" name="expiring" value="$expiring_date}"/> </td> </tr> <tr> <td width="150">σύπνο Κάξηαο</td> <td width="150"> <input type="text" name="card_type" value="$card_type}"/> </td> </tr> <tr> <td colspan = 2 align="center"> <input type="submit" name="update_credit_card" value="αιιαγή onclick="return confirm(είζηε ζίγνπξνο όηη ζέιεηε λα γίλνπλ νη αιιαγέο?')"/> </td> </tr> </form> </table> </div> 127

129 ΚΔΦΑΛΑΗΟ 8 ν πλαιιαγέο 8.1 Καιάζη Αγνξώλ Ο βαζηθφο ηξφπνο πξαγκαηνπνίεζεο αγνξάο απφ ην θαηάζηεκα είλαη κέζσ ηνπ θαιαζηνχ αγνξψλ πνπ παξέρεηαη. Κάζε πειάηεο κπνξεί λα πξνζζέηεη πξντφληα ζην θαιάζη κέζσ ηνπ αληίζηνηρνπ button θαη ζηελ ζπλέρεηα λα έρεη πξφζβαζε ζην θαιάζη απηφ ψζηε λα κπνξεί λα πξνζζέηεη, λα αθαηξεί ή λα απνζεθεχεη θάπνηα απφ απηά γηα κειινληηθή αγνξά. Φπζηθά κπνξεί λα παξαγγέιλεη ηα ελεξγά πξνηφληα ψζηε λα αξρίδεη ε δηαδηθαζία αγνξάο ηνπο απφ ην θαηάζηεκα. Screenshot ηος καλαθιού αγοπών: 128

130 Γηα λα δίλεηαη ε δπλαηφηεηα θαη ζηνπο κε εγγεγξακκέλνπο ρξήζηεο λα πξνζζέζνπλ πξντφληα ζε θαιάζηα αγνξψλ ρξεζηκνπνηνχληαη cookies ηα νπνία κέλνπλ ελεξγά γηα ζπγθεθξηκέλν ρξνληθφ δηάζηεκα. Κάζε θνξά πνπ εηζέξρεηαη θάπνηνο ρξήζηεο ζην ζχζηεκα εθηειείηαη ν θψδηθαο: //Αλ ην cookie ηνπ είλαη ελεξγφ αλαλεψλεηαη γηα άιιεο 10 κέξεο if(isset($_cookie['cart_id'])) $expire = time() + 60*60*24*10; $value = $_COOKIE['cart_id']; setcookie('cart_id',$value,$expire); } //Αληίζεηα δεκηνπξγείηαη θαηλνχξγην cookie ελεξγφ γηα επίζεο 10 κέξεο else $expire = time() + 60*60*24*10; setcookie('cart_id',md5(uniqid(rand())),time()+$expire); } Κάζε ζηηγκή ν ρξήζηεο κπνξεί λα βιέπεη πνηα πξνηφληα έρεη ζην θαιάζη απφ ην αληίζηνηρν div πνπ ππάξρεη ζηελ θεληξηθή ζειίδα. Ο θψδηθαο γηα ην παξαπάλσ div βξίζθεηαη ζην index.tpl θαη θαίλεηαη παξαθάησ: <div class="left_box"> <table><th class="th_box">καιάζη Αγνξώλ<th> get_from_cart} if $num_of_products==0} <tr><td><i>δελ ππάξρνπλ πξνηόληα ζην θαιάζη</i></td></tr></table> else} <tr><td>σν θαιάζη ζαο πεξηέρεη ηα πξνηόληα:</td></tr> <tr><td>section name=cart_products loop=$cart_product_id} <a href="indexi.php?product_id=$cart_product_id[cart_products]}"> <img title=$cart_product_name[cart_products]} alt=$cart_product_name[cart_products]} width=50 height=50 src="$cart_product_image[cart_products]}"/></a> /section}</td></tr> <tr><td><a href="indexi.php?shopping_cart=on"> <i><font size=2>πεξηζζόηεξα <font></i></a></td></tr></table> /if} </div> 129

131 Η ζπλάξηεζε γηα ηελ πξνζζήθε πξνηφληνο ζην θαιάζη είλαη ε add_to_cart: function smarty_function_add_to_cart($params, $smarty) require_once 'database_functions.php'; if(isset($_post['add_to_cart'])) DB_functions::dbconnect(); if(isset($_cookie['cart_id'])) $product_id=$_get['product_id']; $cart_id=$_cookie['cart_id']; $q="insert into shopping_cart values('$cart_id',$product_id,1,false,now())"; $result = DB_functions::dbexecute($q); } DB_functions::dbclose(); }} Η ζπλάξηεζε γηα ηηο ιεηηνπξγίεο ηνπ θαιαζηνχ είλαη ε actions_cart(): function smarty_function_actions_cart($params, $smarty) require_once 'database_functions.php'; //Γηαγξαθή απφ ην θαιάζη if(isset($_post['delete_from_cart'])) DB_functions::dbconnect(); $cart_id=$_cookie['cart_id']; $product_id=$_post['product_id']; $q="delete from shopping_cart where cart_id='$cart_id' and product_id=$product_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Απνζήθεπζε γηα κειινληηθή ρξήζε elseif(isset($_post['save'])) DB_functions::dbconnect(); $cart_id=$_cookie['cart_id']; $product_id=$_post['product_id']; $q="update shopping_cart set save=true where cart_id='$cart_id' and product_id=$product_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Αχμεζε ηνπ πιήζνπο ησλ πξνηφλησλ elseif(isset($_post['increase'])) DB_functions::dbconnect(); $cart_id=$_cookie['cart_id']; $product_id=$_post['product_id']; $q="update shopping_cart set quantity=quantity+1 where cart_id='$cart_id' and product_id=$product_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} 130

132 //Μείσζε ηνπ πιήζνπο ησλ πξνηφλησλ elseif(isset($_post['decrease'])) DB_functions::dbconnect(); $cart_id=$_cookie['cart_id']; $product_id=$_post['product_id']; $q="update shopping_cart set quantity=quantity-1 where cart_id='$cart_id' and product_id=$product_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Γηαγξαθή απνζεθεπκέλνπ πξνηφληνο elseif(isset($_post['saved_delete_from_cart'])) DB_functions::dbconnect(); $cart_id=$_cookie['cart_id']; $product_id=$_post['saved_product_id']; $q="delete from shopping_cart where cart_id='$cart_id' and product_id=$product_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Δπαλαθνξά απνζεθεπκέλνπ πξνηφληνο elseif(isset($_post['move_to_cart'])) DB_functions::dbconnect(); $cart_id=$_cookie['cart_id']; $product_id=$_post['saved_product_id']; $q="update shopping_cart set save=false where cart_id='$cart_id' and product_id=$product_id"; $result = DB_functions::dbexecute($q); DB_functions::dbclose();} //Παξαγγειία ησλ πξνηφλησλ ηνπ θαιαζηνχ elseif(isset($_post['order'])) DB_functions::dbconnect(); $cart_id=$_cookie['cart_id']; $product_id=$_post['saved_product_id']; $total_price=$_post['total_price']; //Αλ γλσξίδνπκε ηνλ πειάηε πνπ αγφξαζε ην πξνηφλ ζπκπεξηιακβάλνπκε ην //username ηνπ if(isset($_session['user'])) $username=($_session['user']); $q="insert into order_table(total_price,create_date,status,customer) values($total_price,now(),1000,'$username')"; $result = DB_functions::dbexecute($q); $q2="insert into order_log(orderid,status,indate) values(currval('order_table_order_id_seq'),1000,now())"; $result2 = DB_functions::dbexecute($q2); $q2="select * from shopping_cart inner join product on shopping_cart.product_id = product.product_id where cart_id='$cart_id' and save=false"; $result2 = DB_functions::dbexecute($q2); $num_results=pg_num_rows($result2); for ($i=0;$i<$num_results;$i++) $row2=pg_fetch_array($result2); $product_id = $row2['product_id']; $quantity = $row2['quantity']; 131

133 $product_name = $row2['product_name']; $price = $row2['price']; $q3="insert into order_product(order_id,product_id,product_name,quantity,price,customer) values(currval('order_table_order_id_seq'),$product_id,'$product_name',$quantity, $price,'$username')"; $result3 = DB_functions::dbexecute($q3);} } else $q="insert into order_table(total_price,create_date) values($total_price,now())"; $result = DB_functions::dbexecute($q); $q2="select * from shopping_cart inner join product on shopping_cart.product_id = product.product_id where cart_id='$cart_id' and save=false"; $result2 = DB_functions::dbexecute($q2); $num_results=pg_num_rows($result2); for ($i=0;$i<$num_results;$i++) $row2=pg_fetch_array($result2); $product_id = $row2['product_id']; $quantity = $row2['quantity']; $product_name = $row2['product_name']; $price = $row2['price']; $q3="insert into order_product(order_id,product_id,product_name,quantity,price) values(currval('order_table_order_id_seq'),$product_id, '$product_name',$quantity,$price)"; $result3 = DB_functions::dbexecute($q3);} } }} DB_functions::dbclose(); Η θφξκα γηα ηελ εκθάληζε θαη ηελ επεμεξγαζία ηνπ θαιαζηνχ αγνξψλ ππάξρεη ζην cart.tpl θαη ιφγσ κεγέζνπο θαη ζρεηηθήο απιφηεηαο δελ θξίλεηαη απαξαίηεην λα παξνπζηαζηεί. 132

134 8.2 Πξαγκαηνπνίεζε θαη Pipeline Παξαγγειηώλ Οη εγγεγξακκέλνη ρξήζηεο κπνξνχλ λα παξαγγείινπλ πξντφληα κέζσ ηεο δηαδηθαζίαο παξαγγειηψλ ηνπ ζπζηήκαηνο, επηιέγνληαο ην button «παξαγγειία» ηνπ θαιαζηνχ αγνξψλ. Μεηά ηελ παξαγγειία απφ ηνλ ρξήζηε αθνινπζείηαη ε εμήο δηαδηθαζία: 1.Παξαγγειία από ρξήζηε θαη δέζκεπζε ρξεκάησλ Δπηιέγνληαο ην αληίζηνηρν button ν ρξήζηεο κπνξεί λα παξαγγείιεη ηα πξνηφληα πνπ βξίζθνληαη ζην θαιάζη αγνξψλ. Ταπηφρξνλα δεζκεχεηαη ην αληίζηνηρν πνζφ απφ ηνλ ινγαξηαζκφ ηνπ ρξήζηε κέρξη ην πέξαο ηεο παξαγγειίαο. 2.Δπηβεβαίσζε από δηαρεηξηζηή θαη έιεγρνο ρξεκάησλ Σηε ζπλέρεηα εηδνπνηείηαη ν δηαρεηξηζηήο γηα ηελ παξαγγειία θαη πξνρσξάεη ζηνλ έιεγρν ησλ ρξεκάησλ, δειαδή ειέγρεη αλ ην πνζφ πνπ δεζκεχηεθε απφ ηνλ ρξήζηε επαξθεί γηα ηελ εμφθιεζε ηεο παξαγγειίαο. 133

135 3.Δηδνπνίεζε ηνπ πξνκεζεπηή Δθφζνλ ν έιεγρνο ηνλ ρξεκάησλ πξαγκαηνπνηεζεί κε επηηπρία ν δηαρεηξηζηήο πξνρσξάεη ζηελ εηδνπνίεζε ηνπ πξνκεζεπηή γηα λα επηβεβαηψζεη φηη ππάξρεη ην απαξαίηεην απφζεκα πξντφλησλ. 4.Δπηβεβαίσζε από πξνκεζεπηή Αθνινπζεί ε επηβεβαίσζε απφ ηνλ πξνκεζεπηή είηε ηειεθσληθά είηε ειεθηξνληθά. Δπίζεο ν πξνκεζεπηήο ελεκεξψλεη θαη ηνλ αξηζκφ ησλ εκεξψλ πνπ ζα ρξεηαζηεί γηα λα θζάζνπλ ηα πξνηφληα ζηνλ πειάηε. 5.Απνζηνιή πξντόληνο ζηνλ ρξήζηε Μεηά ηελ επηβεβαίσζε ν δηαρεηξηζηήο απνζηέιιεη ηα πξνηφληα θαη ελεκεξψλεη ηνλ ρξήζηε φηη ε παξαγγειία δξνκνινγήζεθε αιιά θαη πφζεο κέξεο ζα ρξεηαζηνχλ γηα λα πξαγκαηνπνηεζεί. 134

136 6.Δπηβεβαίσζε παξαιαβήο Απφ εθεί θαη πέξα ε δξάζε πεξλάεη ζηνλ ρξήζηε ν νπνίνο πξέπεη λα επηβεβαηψζεη φηη έιαβε ηα πξνηφληα. 7.Πιεξσκή ηνπ πξνκεζεπηή θαη ηέινο παξαγγειίαο Μεηά ηελ επηβεβαίσζε απφ ηνλ πειάηε ε παξαγγειία ηεξκαηίδεη θαη ηα δεζπκεπκέλα ρξήκαηα κεηαθέξνληαη ζηνλ ινγαξηαζκφ ηνπ πξνκεζεπηή. 135

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP ηότοι εργαζηηρίοσ ην πιαίζην ηνπ ζπγθεθξηκέλνπ εξγαζηεξίνπ ζα παξνπζηαζηνύλ βαζηθέο ιεηηνπξγίεο ησλ Windows XP πνπ ζρεηίδνληαη

Διαβάστε περισσότερα

Η αξρή ζύλδεζεο Client-Server

Η αξρή ζύλδεζεο Client-Server Η αξρή ζύλδεζεο Client-Server Δηαθνκηζηήο (Server) Πξνζθέξεη ππεξεζίεο ζηνπο Πειάηεο (Client) Μεγάινη ππνινγηζηέο γηα ηηο ππεξεζίεο Internet (π.ρ. WWW, FTP) Λακβάλεη εξσηήζεηο θαη δίδεη απαληήζεηο Πειάηεο

Διαβάστε περισσότερα

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση Πώς πρέπει να τιμολογεί ένα μονοπώλιο; Μέρξη ζηηγκήο ην κνλνπώιην έρεη ζεσξεζεί ζαλ κηα επηρείξεζε ε νπνία πσιεί ην πξντόλ ηεο ζε θάζε πειάηε ζηελ

Διαβάστε περισσότερα

Κεθάλαιο 1. Ενόηηηα 2 Πλάνο Μάρκεηινγκ. Εξγαιεία Μάξθεηηλγθ. Dr. Andrea Grimm Dr. Astin Malschinger

Κεθάλαιο 1. Ενόηηηα 2 Πλάνο Μάρκεηινγκ. Εξγαιεία Μάξθεηηλγθ. Dr. Andrea Grimm Dr. Astin Malschinger Κεθάλαιο 1 Ενόηηηα 2 Πλάνο Μάρκεηινγκ Εξγαιεία Μάξθεηηλγθ Dr. Andrea Grimm Dr. Astin Malschinger ΠΕΡΙΕΧΟΜΕΝΑ ΕΝΟΤΗΤΑ 2 ΠΛΑΝΟ ΜΑΡΚΕΤΙΝΓΚ Κεθάιαην 1: Εξγαιεία Μάξθεηηλγθ Σπγγξαθείο: Δξ. Andrea Grimm, Δξ.

Διαβάστε περισσότερα

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ 2015-2016

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ 2015-2016 Βάσεις Δεδομέμωμ Εξγαζηήξην V Τκήκα Πιεξνθνξηθήο ΑΠΘ 2015-2016 2 Σκοπός του 5 ου εργαστηρίου Σθνπόο απηνύ ηνπ εξγαζηεξίνπ είλαη: ε κειέηε ζύλζεησλ εξσηεκάησλ ζύλδεζεο ζε δύν ή πεξηζζόηεξεο ζρέζεηο ε κειέηε

Διαβάστε περισσότερα

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν 2011-12

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν 2011-12 Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν 11-12 Project 6: Ταμίδη κε ηε Μεραλή ηνπ Φξόλνπ Υπεύζπλνη Καζεγεηέο: Ε. Μπηιαλάθε Φ. Αλησλάηνο Δρώηηζη 3: Πνηα από ηα παξαθάησ ΜΜΕ ηεξαξρείηε από πιεπξάο ζεκαζίαο;

Διαβάστε περισσότερα

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) 30.04.67 FritzBox Fon WLAN 7140 - Annex B (30.04.67)

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) 30.04.67 FritzBox Fon WLAN 7140 - Annex B (30.04.67) Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) 30.04.67 FritzBox Fon WLAN 7140 - Annex B (30.04.67) Γηα λα επαλαθέξεηε ην FritzBox Fon WLAN 7140 ζηηο πξνεπηιεγκέλεο ηνπ ξπζκίζεηο

Διαβάστε περισσότερα

Ενδεικτικά Θέματα Στατιστικής ΙΙ

Ενδεικτικά Θέματα Στατιστικής ΙΙ Ενδεικτικά Θέματα Στατιστικής ΙΙ Θέματα. Έζησ όηη ζε δείγκα 35 θαηνηθηώλ πνπ ελνηθηάδνληαη ζε θνηηεηέο ζηελ Κνδάλε βξέζεθε ην κέζν κεληαίν κίζζσκα ζηα 5 επξώ, ελώ ζην Ζξάθιεην ην κέζν κεληαίν κίζζσκα ζε

Διαβάστε περισσότερα

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην  ζαο Δίζνδνο ζηελ Υπεξεζία Αλ είζηε ήδε εγγεγξακκέλνο ρξήζηεο ζηελ ππεξεζία, γηα ηελ είζνδν ζαο (login) ζηελ ππεξεζία e-bill, εηζάγεηαη ην Όλνκα Φξήζηε (username) θαη ηνλ Κωδηθό Πξόζβαζεο (password) πνπ είραηε

Διαβάστε περισσότερα

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress. Αιγόξηζκνη 2.2.7.3 Γνκή επηινγήο Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ 1 Πνιιαπιή Δληνιή Δπηινγήο Αν ζπλζήθε_1 ηόηε εληνιέο_1 αλλιώς_αν ζπλζήθε_2 ηόηε εληνιέο_2...

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0 ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0 Γενικά Η έθδνζε 8.0.0 ηνπ ελόηεηεο: Business ERP, πεξηιακβάλεη λέεο ιεηηνπξγίεο πνπ αλαιύνληαη ζηηο παξαθάησ Γεληθόηεξε ιεηηνπξγία ηεο εθαξκνγήο Εκπνξηθή Δηαρείξηζε 7/2/2013 SingularLogic

Διαβάστε περισσότερα

Οργάνωση και Δομή Παρουσιάσεων

Οργάνωση και Δομή Παρουσιάσεων Οργάνωση και Δομή Παρουσιάσεων Οη παξνπζηάζεηο κε βνήζεηα ηνπ ππνινγηζηή γίλνληαη κε πξνγξάκκαηα παξνπζηάζεσλ, όπσο ην OpenOffice.org Impress [1] θαη ην Microsoft Office PowerPoint [2]. Απηά ηα πξνγξάκκαηα

Διαβάστε περισσότερα

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2 ΣΡΙΓΩΝΟΜΔΣΡΙΚΔ EΞΙΩΔΙ Πνηα παξαδείγκαηα εμηζώζεσλ ή θαη πξνβιεκάησλ πηζηεύεηαη όηη είλαη θαηάιιεια γηα ηελ επίιπζε ηνπο θαηά ηελ δηάξθεηα ηεο δηδαθηηθήο δηαδηθαζίαο κέζα ζηελ ηάμε; 1 ε ΓΙΓΑΚΣΙΚΗ ΩΡΑ Α.

Διαβάστε περισσότερα

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ ΘΔΜΑ Α Α1. α. Σ β. Σ γ. Λ δ. Λ ε. Λ ζη. Σ Α2. Γ Α3. 1. γ 2. ε 3. δ 4. α Β1. ΘΔΜΑ Β Οη ηειηθνί ππνινγηζηέο παίξλνπλ απνθάζεηο δξνκνιόγεζεο κόλν γηα ηα δηθά ηνπο απηνδύλακα

Διαβάστε περισσότερα

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά: ΑΝΤΗΛΙΑΚΑ Η Μηκή θαη ν Νηίλνο αλαξσηήζεθαλ πνην αληειηαθό πξντόλ παξέρεη ηελ θαιύηεξε πξνζηαζία ζην δέξκα ηνπο. Τα αληειηαθά πξντόληα έρνπλ έλα δείθηε αληειηαθήο πξνζηαζίαο (SPF), ν νπνίνο δείρλεη πόζν

Διαβάστε περισσότερα

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ Αιγόξηζκνη 2.2.7.4 Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Υ 1 Άζθεζε 34 ζει 53 Έλα ςεθηαθό θσηνγξαθηθό άικπνπκ έρεη απνζεθεπηηθό ρώξν N Mbytes. Να αλαπηύμεηε

Διαβάστε περισσότερα

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε. ΑΝΟΙΓΜΑ ΝΔΑ ΥΡΗΗ 1. Γεκηνπξγείηε ηε λέα ρξήζε από ηελ επηινγή «Παξάκεηξνη/Παξάκεηξνη Δηαηξίαο/Γηαρείξηζε Δηαηξηώλ». Πιεθηξνινγείηε ηνλ θσδηθό ηεο εηαηξίαο ζαο θαη παηάηε Enter. Σηελ έλδεημε «Υξήζεηο» παηάηε

Διαβάστε περισσότερα

Σ Δ Υ Ν Ι Κ Η Δ Κ Θ Δ Η Π Ρ Ο Μ Η Θ Δ Ι Α Ο Ι Κ Ο Γ Ο Μ Ι Κ Ω Ν Τ Λ Ι Κ Ω Ν Γ Η Μ Ο Τ Β Ο Λ Β Η

Σ Δ Υ Ν Ι Κ Η Δ Κ Θ Δ Η Π Ρ Ο Μ Η Θ Δ Ι Α Ο Ι Κ Ο Γ Ο Μ Ι Κ Ω Ν Τ Λ Ι Κ Ω Ν Γ Η Μ Ο Τ Β Ο Λ Β Η Σ Δ Υ Ν Ι Κ Η Δ Κ Θ Δ Η Π Ρ Ο Μ Η Θ Δ Ι Α Ο Ι Κ Ο Γ Ο Μ Ι Κ Ω Ν Τ Λ Ι Κ Ω Ν Γ Η Μ Ο Τ Β Ο Λ Β Η ΠΔΡΙΔΥΟΜΔΝΑ 1. Τερληθή Έθζεζε 2. Δλδεηθηηθφο Πξνυπνινγηζκφο 3. Έληππν νηθνλνκηθήο πξνζθνξάο ΘΔΜΑ : Πξνκήζεηα

Διαβάστε περισσότερα

Άσκηση 1 - Μοπυοποίηση Κειμένου

Άσκηση 1 - Μοπυοποίηση Κειμένου Άσκηση 1 - Μοπυοποίηση Κειμένου Σηηο παξαθάησ γξακκέο εθαξκόζηε ηε κνξθνπνίεζε πνπ πεξηγξάθνπλ Γξακκή κε έληνλε γξαθή Γξακκή κε πιάγηα γξαθή Γξακκή κε ππνγξακκηζκέλε γξαθή Γξακκή κε Arial Font κεγέζνπο

Διαβάστε περισσότερα

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report. Case Study Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report. Βήκα 1 ο : Login ζηο Turnitin. Κάλεηε είζνδν ζην Turnitin κε

Διαβάστε περισσότερα

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H ) Ξ G O O G L E S C H O L A R Α Ο Ξ Ε Κ Ε Θ Λ Θ Α Λ Η Τ Α Μ Η Α Μ Α Ζ Η Η Ρ Η Ρ Οξαγκαηνπνηώληαο αλαδήηεζε ζην GoogleScholar (http://scholar.google.com/) ν ρξήζηεο κπνξεί λα εληνπίζεη πιηθό αθαδεκαϊθνύ θαη

Διαβάστε περισσότερα

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ. Μονοψϊνιο Ολιγοψώνιο Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ. Οπιακή αξία Δπηπξόζζεηα νθέιε από ηελ ρξήζε/θαηαλάισζε κηαο επηπξόζζεηε

Διαβάστε περισσότερα

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ Φξεζηκόηεηα καζεκαηηθώλ Αξρή θαηακέηξεζεο Όζα έδσζαλ νη Έιιελεο... Τξίγσλνη αξηζκνί Τεηξάγσλνη αξηζκνί Δπηκήθεηο αξηζκνί Πξώηνη αξηζκνί Αξηζκνί κε μερσξηζηέο ηδηόηεηεο Γίδπκνη πξώηνη

Διαβάστε περισσότερα

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots)

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots) Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots) 1.1 Σςνοπτική Πεπιγπαυή Hot Spots Σα ζεκεία αζύξκαηεο πξόζβαζεο πνπ επηιέρζεθαλ αλαθέξνληαη ζηνλ επόκελν πίλαθα θαη παξνπζηάδνληαη αλαιπηηθά ζηηο επόκελεο παξαγξάθνπο.

Διαβάστε περισσότερα

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD Γηα ηε δηεπθόιπλζή ζαο θαηά ην switch-off ηεο πεξηνρήο ηεο Πεινπνλλήζνπ έρνπκε πξνζζέζεη ζηνπο ςεθηαθνύο καο δέθηεο κία λέα,

Διαβάστε περισσότερα

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX Σηότοι εργαζηηρίοσ Σην πιαίζην ηνπ ζπγθεθξηκέλνπ εξγαζηεξίνπ, νη θνηηεηέο ζα εμνηθεησζνύλ κε βαζηθέο εληνιέο δηθηπαθώλ πξσηνθόιισλ νη νπνίεο βξίζθνπλ εθαξκνγή ζε πεξηβάιινληα Windows

Διαβάστε περισσότερα

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird 1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird 1.1 Εγκαηάζηαζη ηυν οδηγών ηηρ έξςπνηρ κάπηαρ ζηο λογιζμικό Mozilla Thunderbird

Διαβάστε περισσότερα

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις Έκδοζη 2.89.31 08/10/2014 Η έκδοζη 2.89.31, περιλαμβάνει : Βεληιώζεις Καηάζηαζη Υπερφριών (Ε8) Αναγγελία πρόζληυης (Ε3) 08/10/2014 1 Βεληιώζεις Καηάζηαζη Υπερφριών (Ε8) Επεηδή ζηελ ειεθηξνληθή ππνβνιή

Διαβάστε περισσότερα

Σρήκα Α. Γξάθνπκε ηα ζηνηρεία ηνπ Πξνκεζεπηή θαη παηάκε Δηζαγσγή. Σρήκα Β1

Σρήκα Α. Γξάθνπκε ηα ζηνηρεία ηνπ Πξνκεζεπηή θαη παηάκε Δηζαγσγή. Σρήκα Β1 MENU ΜΗΤΡΩΑ Προμηθεστές Σε απηό ην ζεκείν ηεο εθαξκνγήο επεμεξγαδόκαζηε ηo κεηξών Πξνκεζεπηώλ. Κάλνληαο θιηθ κε ην πνληίθη πάλσ ζην Πξνζζήθε (βειάθη 1) ζα βγεη ε θόξκα γηα ηελ εηζαγσγή λέαο εγγξαθήο (Σρήκα

Διαβάστε περισσότερα

ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε. Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο

ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε. Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο Πξαθηηθή Άζθεζε (επίπεδν 2): ηόρνο ηεο άζθεζεο είλαη ε πεξαηηέξω εμνηθείωζε

Διαβάστε περισσότερα

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν. B-Δέλδξα Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν. Δέλδξα AVL n = 2 30 = 10 9 (πεξίπνπ). 30

Διαβάστε περισσότερα

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα 10000 παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο 30000.

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα 10000 παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο 30000. ΔΕΟ 13 Ποσοτικές Μέθοδοι Σσνάρηηζη Κόζηοσς C(), μέζο κόζηος C()/. Παράδειγμα 1 Μηα εηαηξεία δαπαλά γηα θάζε πξντόλ Α πνπ παξάγεη 0.0 λ.κ. Τα πάγηα έμνδα ηεο εηαηξείαο είλαη 800 λ.κ. Ζεηείηαη 1) Να πεξηγξάςεηε

Διαβάστε περισσότερα

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ. Απαντήσεις θέματος 2 Απηά πνπ έπξεπε λα γξάςεηε (δελ ρξεηαδόηαλ δηθαηνιόγεζε εθηόο από ην Γ) Α return a*b; Β 0:acegf2, 1: acegf23, 2: acegf234, 3:acegf2345, 4:acegf23456, 5:acegf234567, 6:acegf2345678,

Διαβάστε περισσότερα

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2 TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 Δημιουργία σελίδων και βιβλίων Έλα θαηλνύξην βηβιίν πεξηέρεη κία άδεηα ζειίδα κε έλα άδεην background. Δελ κπνξνύκε λα μερσξίζνπκε

Διαβάστε περισσότερα

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο : ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ Ον/μο:.. Γ Λσκείοσ Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη. 11-1-11 Εήηημα 1 ο : Α. Γηα ηελ ζπλάξηεζε f, λα βξείηε ην δηάζηεκα ζην νπνίν είλαη παξαγσγίζηκε θαζώο θαη

Διαβάστε περισσότερα

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο 1 ε Δξαζηεξηόηεηα Αλνίμηε ην αξρείν «Μεηαηόπηζε παξαβνιήο.ggb». Με ηε καύξε γξακκή παξηζηάλεηαη ε γξαθηθή παξάζηαζε ηεο f(x)=αx 2 πνπ ζα ηελ

Διαβάστε περισσότερα

ύζηεκα Ωξνκέηξεζεο Πξνζσπηθνύ (Έθδνζε 2) ΤΠΗΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΤΣΗΜΑΣΩΝ

ύζηεκα Ωξνκέηξεζεο Πξνζσπηθνύ (Έθδνζε 2) ΤΠΗΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΤΣΗΜΑΣΩΝ ύζηεκα Ωξνκέηξεζεο Πξνζσπηθνύ (Έθδνζε 2) ΤΠΗΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΤΣΗΜΑΣΩΝ Πεξηερόκελα Σερληθά Υαξαθηεξηζηηθά Καηαγξαθή Ώξαο πγρξνληζκόο πζηήκαηνο Παξνπζίαζε πζηήκαηνο Πηζαλά ελάξηα Υξήζεο 2 Σερληθά Υαξαθηεξηζηηθά

Διαβάστε περισσότερα

Γραφεύα Επικοινωνύασ & Ενημϋρωςησ ϋρρεσ, Τψηλϊντου 4 3οσ Όροφοσ ΣΗΛ 2321023640 ΥΑΦ 2321051861

Γραφεύα Επικοινωνύασ & Ενημϋρωςησ ϋρρεσ, Τψηλϊντου 4 3οσ Όροφοσ ΣΗΛ 2321023640 ΥΑΦ 2321051861 Οπγάνωζη και διοίκηζη ηοςπιζηικών επισειπήζεων (ξενοδοσεία, ηοςπιζηικά γπαθεία ) Α) ΑΔΙ ΣΔΙ και Β) ΑΠΟΦΟΙΣΟΙ ΤΠΟΥΡΔΩΣΙΚΗ ΓΔΤΣΔΡΟΒΑΘΜΙΑ και ΜΔΣΑΓΔΤΣΔΡΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ Ρν πξόγξακκα απηό ζρεδηάζηεθε γηα

Διαβάστε περισσότερα

Ηλεκηρονική Επιχειρημαηικόηηηα ζηην Ελλάδα

Ηλεκηρονική Επιχειρημαηικόηηηα ζηην Ελλάδα ΣΔΥΝΟΛΟΓΙΚΟ ΔΚΠΑΙΓΔΤΣΙΚΟ ΙΓΡΤΜΑ ΚΑΒΑΛΑ τολή Γιοίκηζης και Οικονομίας Σμήμα Λογιζηικής Θέμα πηστιακής εργαζίας: Ηλεκηρονική Επιχειρημαηικόηηηα ζηην Ελλάδα σποβληθείζα ζηον Αναπλ. Καθηγηηή Κλεοβούλοσ Ιωάννη

Διαβάστε περισσότερα

ΦΤΛΛΟ ΔΡΓΑΙΑ 1 Βαζηθέο Έλλνηεο & Καηεγνξίεο Γηθηύσλ Τπνινγηζηώλ

ΦΤΛΛΟ ΔΡΓΑΙΑ 1 Βαζηθέο Έλλνηεο & Καηεγνξίεο Γηθηύσλ Τπνινγηζηώλ ΦΤΛΛΟ ΔΡΓΑΙΑ 1 Βαζηθέο Έλλνηεο & Καηεγνξίεο Γηθηύσλ Τπνινγηζηώλ Γξαζηεξηόηεηα 1ε αο δίλεηαη ν ελλνηνινγηθφο ράξηεο "Γίθηπα Τπνινγηζηψλ - Βαζηθέο Έλλνηεο" πνπ αθνξά ζηελ θεληξηθή έλλνηα "Γίθηπα Τπνινγηζηψλ".

Διαβάστε περισσότερα

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS ηότοι εργαζηηρίοσ ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS ην πιαίζην ηνπ ζπγθεθξηκέλνπ εξγαζηεξίνπ ζα παξνπζηαζηεί ε δηαδηθαζία ηωλ ξπζκίζεωλ δηθηύνπ ζε ιεηηνπξγηθό ζύζηεκα Windows XP. Η δηαδηθαζία ζε γεληθέο γξακκέο

Διαβάστε περισσότερα

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ Κεθάλαιο 7 Πξνζθνξά ηνπ θιάδνπ 1 Προζθορά ανηαγωνιζηικού κλάδοσ Πώο πξέπεη λα ζπλδπαζηνύλ νη απνθάζεηο πξνζθνξάο ησλ πνιιώλ επηκέξνπο επηρεηξήζεσλ ελόο αληαγσληζηηθνύ θιάδνπ γηα λα βξνύκε ηελ θακπύιε πξνζθνξάο

Διαβάστε περισσότερα

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2 ΛΙΜΝΗ ΤΣΑΝΤ Τν Σρήκα 1 δείρλεη ηελ αιιαγή ηεο ζηάζκεο ηεο Λίκλεο Τζαλη, ζηε Σαράξα ηεο Βόξεηαο Αθξηθήο. Η Λίκλε Τζαλη εμαθαλίζηεθε ηειείσο γύξσ ζην 20.000 π.χ., θαηά ηε δηάξθεηα ηεο ηειεπηαίαο επνρήο ησλ

Διαβάστε περισσότερα

Διιεληθά Σειρά Moov Δγτειρίδιο τρήζηη Δνημέρφζης ταρηών Web Αλαζεώξεζε: R00 (2010/05) Πώς να ενημερώζφ ηοσς τάρηες; Υπάξρνπλ ηέζζεξα βήκαηα γηα ηελ ελεκέξσζε ηνπ ράξηε. Βήκα

Διαβάστε περισσότερα

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α Σει.1 Σο ζςγκεκπιμένο εγσειπίδιο δημιοςπγήθηκε για να βοηθήζει ηην καηανόηζη ηηρ διαδικαζίαρ μεηαθοπάρ δεδομένων ηηρ

Διαβάστε περισσότερα

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ (Δλδεηθηηθέο Απαληήζεηο) ΘΔΜΑ Α Α1. α. Σωζηό β. Λάζνο

Διαβάστε περισσότερα

ΠΡΩΣΟΚΟΛΛΑ ΓΙΑΥΔΙΡΗΗ ΣΩΝ ΣΔΡΗΓΟΝΙΚΩΝ ΒΛΑΒΩΝ Δ ΔΝΗΛΙΚΔ

ΠΡΩΣΟΚΟΛΛΑ ΓΙΑΥΔΙΡΗΗ ΣΩΝ ΣΔΡΗΓΟΝΙΚΩΝ ΒΛΑΒΩΝ Δ ΔΝΗΛΙΚΔ ΠΡΩΣΟΚΟΛΛΑ ΓΙΑΥΔΙΡΗΗ ΣΩΝ ΣΔΡΗΓΟΝΙΚΩΝ ΒΛΑΒΩΝ Δ ΔΝΗΛΙΚΔ Σν ζύγρξνλν πξόηππν αληηκεηώπηζεο ηεο ηεξεδόλαο ελειίθσλ δελ εζηηάδεηαη κόλν ζηελ απνθαηάζηαζε ησλ ηεξεδνληθώλ βιαβώλ πνπ έρνπλ εθδεισζεί, αιιά έρεη

Διαβάστε περισσότερα

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ Διαφάνεια 1 η ΕΚΚΙΝΗΣΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΚΑΙ ΕΙΣΟΔΟΣ ΣΤΟ BIOS UITILITY Τν ζπλεζέζηεξν πιήθηξν γηα ηελ είζνδν ζην BIOS Utility είλαη ην πιήθηξν Del. Παξόια απηά δηαθνξεηηθνί θαηαζθεπαζηέο, ρξεζηκνπνηνύλ δηαθνξεηηθά

Διαβάστε περισσότερα

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code) Μορθές Κακόβοσλοσ Κώδικα (Malicious Code) Page 1 Υποπλοίαρτος Ν. Πεηράκος ΠΝ Αηδένηα Γνύξεηνη Ίππνη (Trojan Horses) Ινί (Viruses) Worms Root-kit Page 2 Γνύξεηνο Ίππνο (Trojan Horse) Οξηζκόο: Πξόγξακκα

Διαβάστε περισσότερα

Κεθάιαην 20. Ελαχιστοποίηση του κόστους

Κεθάιαην 20. Ελαχιστοποίηση του κόστους Κεθάιαην 0 Ελαχιστοποίηση του κόστους Ειαρηζηνπνίεζε ηνπ θόζηνπο Μηα επηρείξεζε ειαρηζηνπνηεί ην θόζηνο ηεο αλ παξάγεη νπνηνδήπνηε δεδνκέλν επίπεδν πξντόληνο y 0 ζην κηθξόηεξν δπλαηό ζπλνιηθό θόζηνο. Τν

Διαβάστε περισσότερα

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84 Διαηιμήζεις για Αιολικά Πάρκα Κώδικες 28, 78 και 84 Διαηιμήζεις για Αιολικά Πάρκα Οη Διαηιμήζεις για Αιολικά Πάρκα εθαξκόδνληαη γηα ηελ απνξξνθνύκελε ελέξγεηα από Αηνιηθά Πάξθα πνπ είλαη ζπλδεδεκέλα ζην

Διαβάστε περισσότερα

A. Αιιάδνληαο ηε θνξά ηνπ ξεύκαηνο πνπ δηαξξέεη ηνλ αγωγό.

A. Αιιάδνληαο ηε θνξά ηνπ ξεύκαηνο πνπ δηαξξέεη ηνλ αγωγό. ΤΠΟΤΡΓΔΙΟ ΠΑΙΓΔΙΑ ΚΑΙ ΠΟΛΙΣΙΜΟΤ ΛΔΤΚΩΙΑ ΦΤΛΛΟ ΔΡΓΑΙΑ Μειέηε ηωλ παξαγόληωλ από ηνπο νπνίνπο εμαξηάηαη ε ειεθηξνκαγλεηηθή δύλακε. Τιηθά - πζθεπέο: Ηιεθηξνληθή δπγαξηά, ηξνθνδνηηθό ηάζεο, ξννζηάηεο, ακπεξόκεηξν,

Διαβάστε περισσότερα

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access) Έρνπκε απνζεθεύζεη κηα ζπιινγή αξρείσλ ζε κηα ζπλδεδεκέλε ιίζηα, όπνπ θάζε αξρείν έρεη κηα εηηθέηα ηαπηνπνίεζεο. Μηα εθαξκνγή παξάγεη κηα αθνινπζία από αηηήκαηα πξόζβαζεο ζηα αξρεία ηεο ιίζηαο. Γηα λα

Διαβάστε περισσότερα

Επαναληπτική Άσκηση - Δέντρα

Επαναληπτική Άσκηση - Δέντρα Η NovelGadgets Α.Ε. είλαη κηα πνιπεζληθή εηαηξεία πνπ δξαζηεξηνπνηείηαη ζηνλ ρώξν ηεο πιεξνθνξηθήο θαη θαηαζθεπάδεη θαηλνηνκηθέο εθαξκνγέο (gadgets) γηα ηνπο πειάηεο ηεο. Πξόζθαηα, δεκηνύξγεζε έλα λέν

Διαβάστε περισσότερα

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο: Πίνακες Σσμβόλων Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο: Εηζαγσγή ελόο ζηνηρείνπ Αλαδήηεζε ζηνηρείνπ κε δεδνκέλν θιεηδί Άιιεο ρξήζηκεο ιεηηνπξγίεο είλαη: Δηαγξαθή ελόο θαζνξηζκέλνπ ζηνηρείνπ

Διαβάστε περισσότερα

ΑΞΙΟΘΕΑΣΑ ΣΟΤ ΥΩΡΙΟΤ ΜΑ

ΑΞΙΟΘΕΑΣΑ ΣΟΤ ΥΩΡΙΟΤ ΜΑ ΑΞΙΟΘΕΑΣΑ ΣΟΤ ΥΩΡΙΟΤ ΜΑ α. Η ΕΚΚΛΗΙΑ ΣΟΤ ΥΩΡΙΟΤ ΜΑ β. ΣΟ ΠΝΕΤΜΑΣΙΚΟ ΜΑ ΚΕΝΣΡΟ γ. Η ΠΑΝΟΡΑΜΙΚΗ ΘΕΗ ΣΟΤ ΥΩΡΙΟΤ ΜΑ α. Η ΕΚΚΛΗΙΑ ΣΟΤ ΥΩΡΙΟΤ ΜΑ. Η Εθθιεζία ηνπ ρσξηνύ καο, ε Αγία Άλλα, είλαη θηηζκέλε πξηλ πνιιά

Διαβάστε περισσότερα

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ 1.Απηόο πνπ ζα αλαγλσξηζηεί απνπζηάδεη γηα πνιύ θαηξό. 2.Δπηζηξέθεη κε πιαζηή ηαπηόηεηα ή κεηακνξθσκέλνο. 3.Απνκνλώλνληαη ηα δύν πξόζσπα 4.Άξζε κεηακόξθσζεο 5.Απνθάιπςε 6.Ακθηβνιίεο-απνδεηθηηθά

Διαβάστε περισσότερα

Ηλεκηπονικά Απσεία και Διεπαθέρ

Ηλεκηπονικά Απσεία και Διεπαθέρ MENU ΑΝΑΦΟΡΕΣ Ηλεκηπονικά Απσεία και Διεπαθέρ Σε απηό ην ζεκείν ηεο εθαξκνγήο δεκηνπξγνύκε ηα δηάθνξα Ηιεθηξνληθά Αξρεία έηζη ώζηε λα ηα ππνβάινπκε ζηνπο δηάθνξνπο θνξείο. Γηα λα επηιέμνπκε έλα είδνο αξρείνπ

Διαβάστε περισσότερα

ΑΓΩΜΘΡΘΙΞΘ ΤΩΠΞΘ ΡΘΡ ΛΘΙΠΕΡ ΗΚΘΙΘΕΡ ΛΘΤΑΗΚΘΔΗΡ Τ.

ΑΓΩΜΘΡΘΙΞΘ ΤΩΠΞΘ ΡΘΡ ΛΘΙΠΕΡ ΗΚΘΙΘΕΡ ΛΘΤΑΗΚΘΔΗΡ Τ. ΑΓΩΜΘΡΘΙΞΘ ΤΩΠΞΘ ΡΘΡ ΛΘΙΠΕΡ ΗΚΘΙΘΕΡ ΟΑIΤΜΘΔΘ ΡΕ ΛΕΓΑΚΞ ΓΗΟΕΔΞ 11V11 ΗΚΘΙΘΑ 6-10 ΤΠΞΜΩΜ ΛΕΘΞΜΕΙΗΛΑΑ ΞΣ ΟΑΘΤΜΘΔΘΞΣ ΡΕ ΛΕΓΑΚΞ ΓΗΟΕΔΞ ΓΘΑ ΟΑΘΙΕΡ ΗΚΘΙΘΑΡ 6-10 ΕΩΜ Η ΔΘΑΔΠΞΛΗ ΑΟΞ Η ΛΘΑ ΕΡΘΑ ΡΗΜ ΑΚΚΗ ΕΘΜΑΘ ΛΕΓΑΚΗ

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ Είμαζηε ηυχεροί που είμαζηε δάζκαλοι Ον/μο:.. A Λσκείοσ Ύλη: Εσθύγραμμη Κίνηζη 8-11-2015 Θέμα 1 ο : 1. Η εμίζωζε θίλεζεο ελόο θηλεηνύ πνπ θηλείηαη επζύγξακκα είλαη ε x = 5t. Πνηα

Διαβάστε περισσότερα

ιαχείριση Εφοδιαστικής Αλυσίδας

ιαχείριση Εφοδιαστικής Αλυσίδας ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΙΣΑΓΩΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ: ΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ιαχείριση Εφοδιαστικής Αλυσίδας Ασκήσεις αποθεµάτωνµ Δρ.

Διαβάστε περισσότερα

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ ΚΕΦ..3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ Οπιζμόρ απόλςηηρ ηιμήρ: Σηνλ άμνλα ησλ πξαγκαηηθώλ αξηζκώλ ζεσξνύκε έλαλ αξηζκό α πνπ ζπκβνιίδεηαη κε ην ζεκείν Α. Η απόζηαζε ηνπ ζεκείνπ Α από ηελ αξρή Ο, δειαδή

Διαβάστε περισσότερα

Joomla! developer syllabus v1.0

Joomla! developer syllabus v1.0 Joomla! developer syllabus v1.0 ζειίδα2 Joomla! 1. Διζαγωγή ζηο Joomla! 1. Ση είλαη θαη ζε ηη καο ρξεζηκεύεη 2. Πνύ δηαηίζεηαη; 2. Δγκαηάζηαζη ηος Joomla! 3. Ανηίγπαθα αζθαλείαρ και αποκαηάζηαζη αςηών

Διαβάστε περισσότερα

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ ΜΑΘΗΜΑ : ΑΡΧΑΙΑ ΕΛΛΗΝΙΚΑ ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ Α/Α : 0_1382/153 1. Καη όηαλ έγηλε ε ππνρώξεζε αξγά ην απόγεπκα, επεηδή θνβήζεθαλ νη νιηγαξρηθνί κήπσο νη δεκνθξαηηθνί, αθνύ θάλνπλ επίζεζε, θαηαιάβνπλ

Διαβάστε περισσότερα

ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ

ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ Η ζεκεξηλή ξαγδαία εμέιημε ηεο ηερλνινγίαο ηεο κηθξνειεθηξνληθήο επέηξεςε ηελ θαηαζθεπή εηδηθώλ νινθιεξσκέλσλ θπθισκάησλ απνζήθεπζεο δεδνκέλσλ θαη πιεξνθνξηώλ θαηαιακβάλνπλ

Διαβάστε περισσότερα

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη ΔΠΑΝΑΛΗΠΣΙΚΑ ΘΔΜΑΣΑ ΣΟ ΓΙΑΦΟΡΙΚΟ ΛΟΓΙΜΟ Μάρτιος 0 ΘΔΜΑ Να ππνινγίζεηε ηα όξηα: i ii lim 0 0 lim iii iv lim e 0 lim e 0 ΘΔΜΑ Γίλεηαη ε άξηηα ζπλάξηεζε '( ) ( ) γηα θάζε 0 * : R R γηα ηελ νπνία ηζρύνπλ:

Διαβάστε περισσότερα

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ: Απλό ηλεκτπικό κύκλυμα Η δηδαζθαιία ηνπ απινύ ειεθηξηθνύ θπθιώκαηνο ππάξρεη ζην κάζεκα «Φπζηθά» ηεο Ε ηάμεο ηνπ δεκνηηθνύ θαη επαλαιακβάλεηαη ζην κάζεκα ηεο Φπζηθήο ζηε Γ ηάμε ηνπ Γπκλαζίνπ.

Διαβάστε περισσότερα

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ Ειζαγωγή ζηη Φωηογραθία Χριζηάκης Σαζεΐδης EFIAP 1 ΜΑΘΗΜΑ 6 ο Προγράμμαηα θωηογραθικών μηχανών Επιλογέας προγραμμάηων Μαο δίλεη ηε δπλαηόηεηα λα ειέγμνπκε ην άλνηγκα δηαθξάγκαηνο θαη

Διαβάστε περισσότερα

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ Α ΛΤΚΔΙΟΤ Ζμεπομηνία: 18/12/10 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΕΙΝΟΜΕΝΕ ΛΤ ΕΙ 1. Δίλεηαη ην πνιπώλπκν Αλ θαη., λα βξείηε ην ηειεπηαίν ςεθίν ηνπ αξηζκνύ έρνπκε:

Διαβάστε περισσότερα

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο Φςζική Πποζαναηολιζμού Γ Λςκείος Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο Επιμέλεια: Αγκανάκηρ Α. Παναγιώηηρ Επωηήζειρ Σωζηό- Λάθορ Να χαπακηηπίζεηε ηιρ παπακάηω πποηάζειρ ωρ ζωζηέρ ή λάθορ: 1. Η ηαιάλησζε είλαη

Διαβάστε περισσότερα

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ. Μία αθηίλα θωηόο πξνζπίπηεη κε κία γωλία ζ ζηε επάλω επηθάλεηα ελόο θύβνπ από πνιπεζηέξα ν νπνίνο έρεη δείθηε δηάζιαζεο ε =,49 (ζρήκα ). Βξείηε πνηα ζα είλαη ε κέγηζηε γωλία

Διαβάστε περισσότερα

ΜΕΛΕΣΗ E.O.K. ΜΕ ΑΙΘΗΣΗΡΑ ΘΕΗ

ΜΕΛΕΣΗ E.O.K. ΜΕ ΑΙΘΗΣΗΡΑ ΘΕΗ ΜΕΛΕΣΗ E.O.K. ΜΕ ΑΙΘΗΣΗΡΑ ΘΕΗ ΦΤΛΛΟ ΕΡΓΑΙΑ (Θεοδώρα Γιώηη, Νικόλας Καραηάζιος- Τπεύθσνη εκ/κος Λ. Παπαηζίμπα) ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΤΜΗΜΑ:.., ΗΜΕΡΟΜΗΝΙΑ:.// Σε ακαμίδην πνπ κπνξεί λα θηλείηαη ρσξίο ηξηβέο πάλσ

Διαβάστε περισσότερα

Σπληήξεζε ηξνθίκσλ ρσξίο ρεκηθά πξόζζεηα PROJECT B ΛΥΚΕΙΟΥ 2 014-15

Σπληήξεζε ηξνθίκσλ ρσξίο ρεκηθά πξόζζεηα PROJECT B ΛΥΚΕΙΟΥ 2 014-15 Σπληήξεζε ηξνθίκσλ ρσξίο ρεκηθά πξόζζεηα PROJECT B ΛΥΚΕΙΟΥ 2 014-15 Εηζαγσγή Οη ηερληθέο ζπληήξεζεο ηξνθίκσλ έρνπλ ζθνπό : α) λα παξεκπνδίζνπλ αλεπηζύκεηεο κεηαβνιέο ζηα ραξαθηεξηζηηθά (γεύζε - ρξώκα -

Διαβάστε περισσότερα

Αντισταθμιστική ανάλυση

Αντισταθμιστική ανάλυση Θεσξήζηε έλαλ αιγόξηζκν Α πνπ ρξεζηκνπνηεί κηα δνκή δεδνκέλσλ Γ : Καηά ηε δηάξθεηα εθηέιεζεο ηνπ Α ε Γ πξαγκαηνπνηεί κία αθνινπζία από πξάμεηο. Παξάδεηγκα: Θπκεζείηε ην πξόβιεκα ηεο εύξεζεο-έλσζεο Δίρακε

Διαβάστε περισσότερα

Περιεχόμενο 10ης διάλεξης ΒΑΙΚΔ ΑΡΥΔ ΑΘΛΗΣΙΚΟΤ ΜΑΡΚΔΣΙΝΓΚ

Περιεχόμενο 10ης διάλεξης ΒΑΙΚΔ ΑΡΥΔ ΑΘΛΗΣΙΚΟΤ ΜΑΡΚΔΣΙΝΓΚ Περιεχόμενο 10ης διάλεξης ΒΑΙΚΔ ΑΡΥΔ ΑΘΛΗΣΙΚΟΤ ΜΑΡΚΔΣΙΝΓΚ Σα βασικότεπα σαπακτηπιστικά τος αθλητισμού ωρ ςπηπεσία Είναι: άπιε βησκαηηθή δελ απνζεθεχεηαη επεξεάδεηαη θαηαλαιψλεηαη ηαπηφρξνλα κε ηελ παξαγσγή

Διαβάστε περισσότερα

EL Eνωμένη στην πολυμορυία EL A8-0046/92. Τροπολογία. Sylvie Goddyn εμ νλόκαηνο ηεο νκάδαο ENF

EL Eνωμένη στην πολυμορυία EL A8-0046/92. Τροπολογία. Sylvie Goddyn εμ νλόκαηνο ηεο νκάδαο ENF 21.10.2015 A8-0046/92 92 Σημείο 8 (8) Οη βηηακίλεο, ηα αλόξγαλα ζπζηαηηθά θαη άιιεο νπζίεο πνπ πξννξίδνληαη γηα ρξήζε ζε ζπκπιεξώκαηα δηαηξνθήο ή γηα πξνζζήθε ζε ηξόθηκα φπσο ηα παξαζθεπάζκαηα γηα βξέθε

Διαβάστε περισσότερα

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε. Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε. Παξάκεηξνη πξνο αμηνιόγεζε Ννκνζεηηθή ζσξάθηζε Κνηλόο Σύιινγνο Ακνηβή Καηαγγειία/Λύζε

Διαβάστε περισσότερα

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2011-12 Ρέππα Μαξγαξίηα FORMAT, UNFORMAT Format format , όποσ = a:, b: Μνξθνπνηεί, δειαδή πξνεηνηκάδεη

Διαβάστε περισσότερα

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288 ΔΡΓΑΙΑ 1 Γιαδικησακά πληροθοριακά σζηήμαηα Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές ηέθανος Κονηοβάς ΑΔΜ :283 Πάζτος Βαζίλειος ΑΔΜ :288 1.Γιάγραμμα Ονηολογίας. Σην παξαπάλω δηάγξακκα θαίλεηαη ε δηάξζξωζε

Διαβάστε περισσότερα

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14 .1.10 ζκήζεις ζτ.βιβλίοσ ζελίδας 13 14 Ερωηήζεις Καηανόηζης 1. ύν δηαθνξεηηθέο επζείεο κπνξεί λα έρνπλ θαλέλα θνηλό ζεκείν Έλα θνηλό ζεκείν i ύν θνηλά ζεκεία iλ) Άπεηξα θνηλά ζεκεία ηηηνινγήζηε ηελ απάληεζε

Διαβάστε περισσότερα

Constructors and Destructors in C++

Constructors and Destructors in C++ Constructors and Destructors in C++ Σύνθεζη Πνιύ ζπρλά ζηε C++ κία θιάζε κπνξεί λα πεξηέρεη ζαλ κέιεδεδνκέλα αληηθείκελα άιισλ θιάζεσλ. Πνηα είλαη ε ζεηξά κε ηελ νπνία δεκηνπξγνύληαη θαη θαηαζηξέθνληαη

Διαβάστε περισσότερα

ΑΠΟΛΤΣΗΡΙΔ ΔΞΔΣΑΔΙ Γ ΣΑΞΗ ΔΠΔΡΙΝΟΤ ΓΔΝΙΚΟΤ ΛΤΚΔΙΟΤ ΑΒΒΑΣΟ 23 MAΪΟΤ ΑΔΠΠ

ΑΠΟΛΤΣΗΡΙΔ ΔΞΔΣΑΔΙ Γ ΣΑΞΗ ΔΠΔΡΙΝΟΤ ΓΔΝΙΚΟΤ ΛΤΚΔΙΟΤ ΑΒΒΑΣΟ 23 MAΪΟΤ ΑΔΠΠ ΑΠΟΛΤΣΗΡΙΔ ΔΞΔΣΑΔΙ Γ ΣΑΞΗ ΔΠΔΡΙΝΟΤ ΓΔΝΙΚΟΤ ΛΤΚΔΙΟΤ ΑΒΒΑΣΟ 23 MAΪΟΤ 2009 - ΑΔΠΠ ΘΔΜΑ 1ο Α. Να ραξαθηεξίζεηε θάζε κία από ηηο πξνηάζεηο πνπ αθνινπζνύλ γξάθνληαο ζην ηεηξάδηό ζαο, δίπια από ηνλ αξηζκό θάζε

Διαβάστε περισσότερα

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ.. ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου έλαξμεο 09.30 ιήμεο 09.45 Σην παξαθάησ ζρήκα θαίλεηαη ηκήκα ελόο πνιενδνκηθνύ ζρεδίνπ κηαο πόιεο. Οη ζθηαζκέλεο

Διαβάστε περισσότερα

ΔΓΤ Μεηαπηπρηαθφ Πξφγξακκα «Γηνίθεζε Τπεξεζηψλ Τγείαο» - 177 --

ΔΓΤ Μεηαπηπρηαθφ Πξφγξακκα «Γηνίθεζε Τπεξεζηψλ Τγείαο» - 177 -- ΔΓΤ Μεηαπηπρηαθφ Πξφγξακκα «Γηνίθεζε Τπεξεζηψλ Τγείαο» - 177 -- 5. Σίηινο καζήκαηνο Δηζαγσγή ζηα παθέηα Λνγηζκηθνχ 6. Τπεχζπλνο καζήκαηνο Ησάλλεο Απνζηνιάθεο 7. θνπφο θνπφο ηνπ καζήκαηνο είλαη ε εμνηθείσζε

Διαβάστε περισσότερα

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ.. ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου έλαξμεο 09.30 ιήμεο 09.45 Σην παξαθάησ ζρήκα θαίλεηαη ηκήκα ελόο πνιενδνκηθνύ ζρεδίνπ κηαο πόιεο. Οη ζθηαζκέλεο

Διαβάστε περισσότερα

Καθαβηάο 20 173 42 - Αγ. Δεκήηξηνο - Αζήλα Τει. 210-9821788 Φαμ 210-9821789

Καθαβηάο 20 173 42 - Αγ. Δεκήηξηνο - Αζήλα Τει. 210-9821788 Φαμ 210-9821789 Καθαβηάο 20 173 42 - Αγ. Δεκήηξηνο - Αζήλα Τει. 210-9821788 Φαμ 210-9821789 Web site : www.versus-software.gr software.gr Email : info@versus-software.gr software.gr Versus Software AdDesk v7.0 Πξόθεηηαη

Διαβάστε περισσότερα

Η/Υ A ΤΑΞΕΩΣ ΑΕ 2010-2011. Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Η/Υ A ΤΑΞΕΩΣ ΑΕ 2010-2011. Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ Συστήματα Αρίθμησης Υποπλοίαρχος Ν. Πετράκος ΠΝ 1 Ειζαγωγή Τν bit είλαη ε πην βαζηθή κνλάδα κέηξεζεο. Είλαη κία θαηάζηαζε on ή off ζε έλα ςεθηαθό θύθισκα. Άιιεο θνξέο είλαη κία θαηάζηαζε high ή low voltage

Διαβάστε περισσότερα

ΠΣΤΥΙΑΚΗ ΔΡΓΑΙΑ ΜΠΟΡΟΤΝ ΝΑ ΑΛΛΑΞΟΤΝ ΟΗ ΗΣΟΔΛΗΓΔ ΣΗ ΑΠΟΦΔΗ ΣΧΝ ΚΑΣΑΝΑΛΧΣΧΝ; ΜΔΛΔΣΖ ΜΔΣΑΓΔΝΔΣΔΡΧΝ ΑΠΟΦΔΧΝ ΣΟ ΖΛΔΚΣΡΟΝΗΚΟ ΔΜΠΟΡΗΟ.

ΠΣΤΥΙΑΚΗ ΔΡΓΑΙΑ ΜΠΟΡΟΤΝ ΝΑ ΑΛΛΑΞΟΤΝ ΟΗ ΗΣΟΔΛΗΓΔ ΣΗ ΑΠΟΦΔΗ ΣΧΝ ΚΑΣΑΝΑΛΧΣΧΝ; ΜΔΛΔΣΖ ΜΔΣΑΓΔΝΔΣΔΡΧΝ ΑΠΟΦΔΧΝ ΣΟ ΖΛΔΚΣΡΟΝΗΚΟ ΔΜΠΟΡΗΟ. Α.Σ.Δ.Η ΚΑΒΑΛΑ ΥΟΛΖ ΓΗΟΗΚΖΖ ΟΗΚΟΝΟΜΗΑ ΣΜΖΜΑ ΓΗΟΗΚΖΖ ΔΠΗΥΔΗΡΖΔΧΝ ΠΣΤΥΙΑΚΗ ΔΡΓΑΙΑ ΜΠΟΡΟΤΝ ΝΑ ΑΛΛΑΞΟΤΝ ΟΗ ΗΣΟΔΛΗΓΔ ΣΗ ΑΠΟΦΔΗ ΣΧΝ ΚΑΣΑΝΑΛΧΣΧΝ; ΜΔΛΔΣΖ ΜΔΣΑΓΔΝΔΣΔΡΧΝ ΑΠΟΦΔΧΝ ΣΟ ΖΛΔΚΣΡΟΝΗΚΟ ΔΜΠΟΡΗΟ. ΦΑΚΗΣΑ ΣΑΜΑΣΗΑ

Διαβάστε περισσότερα

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε Κβαντικοί Υπολογισμοί Πέκπηε Γηάιεμε Kπθισκαηηθό Mνληέιν Έλαο θιαζηθόο ππνινγηζηήο απνηειείηαη από αγσγνύο θαη ινγηθέο πύιεο πνπ απνηεινύλ ηνπο επεμεξγαζηέο. Σηνπο θβαληηθνύο ε πιεξνθνξία βξίζθεηαη κέζα

Διαβάστε περισσότερα

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training Dipl.Biol.cand.med. Stylianos Kalaitzis Stylianos Kalaitzis Μνλνϋβξηδηζκνο 1 Γπν γνλείο, εηεξόδπγνη γηα ηνλ αιθηζκό θάλνπλ παηδηά. Πνία ε πηζαλόηεηα

Διαβάστε περισσότερα

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο. 7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Ση είλαη έλαο θαηαρσξεηήο; O θαηαρσξεηήο είλαη κηα νκάδα από flip-flop πνπ κπνξεί λα απνζεθεύζεη πξνζσξηλά ςεθηαθή πιεξνθνξία. Μπνξεί λα δηαηεξήζεη ηα δεδνκέλα ηνπ

Διαβάστε περισσότερα

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο: Σύνθεζη ηαλανηώζεων Α. Σύλζεζε δύν α.α.η ηεο ίδιας ζστνόηηηας Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο: Η απνκάθξπλζε

Διαβάστε περισσότερα

CT_back office. Internet Business Hellas

CT_back office. Internet Business Hellas CT_back office Internet Business Hellas To CT_call center, είλαη έλα πξωηνπνξηαθό πξνϊόλ δηαρείξηζεο θαη νξγάλωζεο επαθώλ πειαηνινγίνπ. έρεη αλαπηπρζεί από ηελ εηαηξεία καο ζην ζύλνιό ηνπ, είλαη πιήξωο

Διαβάστε περισσότερα

ΣΔΥΝΟΛΟΓΙΚΟ ΔΚΠΑΙΓΔΤΣΙΚΟ ΙΓΡΤΜΑ ΚΑΒΑΛΑ ΥΟΛΗ ΓΙΟΙΗΚΗΗ ΚΑΙ ΟΙΚΟΝΟΜΙΑ ΣΜΗΜΑ ΛΟΓΙΣΙΚΗ

ΣΔΥΝΟΛΟΓΙΚΟ ΔΚΠΑΙΓΔΤΣΙΚΟ ΙΓΡΤΜΑ ΚΑΒΑΛΑ ΥΟΛΗ ΓΙΟΙΗΚΗΗ ΚΑΙ ΟΙΚΟΝΟΜΙΑ ΣΜΗΜΑ ΛΟΓΙΣΙΚΗ ΣΔΥΝΟΛΟΓΙΚΟ ΔΚΠΑΙΓΔΤΣΙΚΟ ΙΓΡΤΜΑ ΚΑΒΑΛΑ ΥΟΛΗ ΓΙΟΙΗΚΗΗ ΚΑΙ ΟΙΚΟΝΟΜΙΑ ΣΜΗΜΑ ΛΟΓΙΣΙΚΗ Πηστηαθή Δργαζία Θέκα: «Γηερεύλεζε ηωλ δηαδηθαζηώλ ζσλαιιαγής Ηιεθηροληθού Δκπορίοσ ζηελ εσρύηερε περηοτή ηοσ λοκού Καβάιας

Διαβάστε περισσότερα

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12 ΑΚΖΔΗ ΤΜΝΑΗΟΤ - ΚΤΚΛΟ ΠΡΩΣΟ - - ηα πνηεο ηηκέο ηνπ ηα παξαθάησ θιάζκαηα δελ νξίδνληαη ; (Τπόδεημε : έλα θιάζκα νξίδεηαη αλ ν παξνλνκαζηήο είλαη δηάθνξνο ηνπ κεδελόο) - (-) - (-) - Να απινπνηεζνύλ ηα θιάζκαηα

Διαβάστε περισσότερα

ΘΔΜΑ 1 ο Μονάδες 5,10,10

ΘΔΜΑ 1 ο Μονάδες 5,10,10 ΟΝΟΜΑΣΔΠΩΝΤΜΟ ΗΜΔΡΟΜΗΝΙΑ ΘΔΜΑ 1 ο Μονάδες 5,1,1 ΓΙΑΓΩΝΙΜΑ 1 ου ΜΔΡΟΤ ΣΗ ΑΝΑΛΤΗ Α Γώζηε ηνλ νξηζκό ηεο αληίζηξνθεο ζπλάξηεζεο Β Γείμηε όηη αλ κηα ζπλάξηεζε είλαη αληηζηξέςηκε ηόηε νη γξαθηθέο παξαζηάζεηο

Διαβάστε περισσότερα

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ ηαηηθή ηωλ ξεπζηώλ (Τδξνζηαηηθή) Ση είλαη ηα ξεπζηά - Γεληθά Ππθλόηεηα Πίεζε Μεηαβνιή ηεο πίεζεο ζπλαξηήζεη ηνπ βάζνπο Αξρή ηνπ Pascal Τδξνζηαηηθή πίεζε Αηκνζθαηξηθή πίεζε Απόιπηε &

Διαβάστε περισσότερα

Απόςεηο ησλ ζπνπδαζηώλ ηνπ ΤΔΙ ΑΜΘ γηα ηε ρξήζε ηνπ ειεθηξνληθνύ εκπνξίνπ Θεόδσξνο Κνύηξαο (Α.Δ.Μ.: 4350) Σππξηδνύια Σθέληνπ (Α.Δ.Μ.

Απόςεηο ησλ ζπνπδαζηώλ ηνπ ΤΔΙ ΑΜΘ γηα ηε ρξήζε ηνπ ειεθηξνληθνύ εκπνξίνπ Θεόδσξνο Κνύηξαο (Α.Δ.Μ.: 4350) Σππξηδνύια Σθέληνπ (Α.Δ.Μ. Σ.Δ.Η. Α.Μ.Θ ΥΟΛΖ ΓΗΟΗΚΖΖ ΚΑΗ ΟΗΚΟΝΟΜΗΑ ΣΜΖΜΑ ΓΗΟΗΚΖΖ ΔΠΗΥΔΗΡΖΔΩΝ Απόςεηο ησλ ζπνπδαζηώλ ηνπ ΤΔΙ ΑΜΘ γηα ηε ρξήζε ηνπ ειεθηξνληθνύ εκπνξίνπ Θεόδσξνο Κνύηξαο (Α.Δ.Μ.: 4350) Σππξηδνύια Σθέληνπ (Α.Δ.Μ.: 5096)

Διαβάστε περισσότερα

ΒΑΗ ΓΔΓΟΜΔΝΩΝ ΓΙΑΥΔΙΡΙΗ ΑΠΟΘΗΚΗ, ΠΔΛΑΣΟΛΟΓΙΟΤ, ΠΡΟΩΠΙΚΟΤ & ΡΑΝΣΔΒΟΤ ΓΙΑ ΚΟΜΜΩΣΗΡΙΑ

ΒΑΗ ΓΔΓΟΜΔΝΩΝ ΓΙΑΥΔΙΡΙΗ ΑΠΟΘΗΚΗ, ΠΔΛΑΣΟΛΟΓΙΟΤ, ΠΡΟΩΠΙΚΟΤ & ΡΑΝΣΔΒΟΤ ΓΙΑ ΚΟΜΜΩΣΗΡΙΑ HairDresser's ΒΑΗ ΓΔΓΟΜΔΝΩΝ ΓΙΑΥΔΙΡΙΗ ΑΠΟΘΗΚΗ, ΠΔΛΑΣΟΛΟΓΙΟΤ, ΠΡΟΩΠΙΚΟΤ & ΡΑΝΣΔΒΟΤ ΓΙΑ ΚΟΜΜΩΣΗΡΙΑ Σν HairDresser s (πιήξεο έθδνζε) είλαη κηα βάζε δεδνκέλσλ γηα ηε δηαρείξηζε ηεο απνζήθεο, ηνπ πειαηνινγίνπ,

Διαβάστε περισσότερα

Εμεηδηθεπκέλεο Εθαξκνγέο. Εληνπηζκνύ Ορεκάηωλ

Εμεηδηθεπκέλεο Εθαξκνγέο. Εληνπηζκνύ Ορεκάηωλ visit us on www.navigateltd.gr / e-mail: info@navigateltd.gr /Tel:2104921786 Let us navigate you to success Εμεηδηθεπκέλεο Εθαξκνγέο Εληνπηζκνύ Ορεκάηωλ Τειεκαηηθή δηαρείξηζε νρεκάηωλ: ην κεγαιύηεξν όπιν

Διαβάστε περισσότερα