7 : - - PowerPoint PPT Presentation

7
SMART_READER_LITE
LIVE PREVIEW

7 : - - PowerPoint PPT Presentation

7 :


slide-1
SLIDE 1

Οργανωτική Επιτροπή ΣΦΗΜΜΥ 7

Ομάδα ΙΤ:

Σπαφαρίδης Ξενοφών Γεωργιτζίκης Επιμηθέας Καραγεώργος Κωνσταντίνος Παππάς Ανδριανός

slide-2
SLIDE 2

Ποιοι Είμαστε

slide-3
SLIDE 3

Οι στόχοι μας

✔ Υλοποίηση Ιστοσελίδας

Όραμά μας

✔ Εισαγωγή σύγχρονης τεχνολογίας στο συνέδριο ✔ Δημιουργία ολοκληρωμένου λογισμικού για την

κάλυψη των αναγκών του συνεδρίου

✔ Παρακαταθήκη για τα επόμενα ΣΦΗΜΜΥ

slide-4
SLIDE 4

Custom CMS

  • Ομαδοποίηση λειτουργιών
  • Ενσωμάτωση πολλών λειτουργιών στο sfhmmy.gr
  • Αναγνώσιμος κώδικας
  • Modularity
  • Προσθήκη νέων λειτουργιών χωρίς την ανάγκη

τροποποιήσεων Προϋπόθεση: Ύπαρξη Web-Developers

slide-5
SLIDE 5

www.sfhmmy

live.sfhmmy administrator.sfhmmy review.sfhmmy desk.sfhmmy

slide-6
SLIDE 6

Βασική Διεπαφή

slide-7
SLIDE 7

Dashboard

slide-8
SLIDE 8

Administration

slide-9
SLIDE 9

Administration Functionalities /1

slide-10
SLIDE 10

Administration Functionalities /2

slide-11
SLIDE 11

Chief Reviewer Panel

slide-12
SLIDE 12

Review State

slide-13
SLIDE 13

Desk & Live

slide-14
SLIDE 14
slide-15
SLIDE 15

User Requirements

slide-16
SLIDE 16

Διαδικασία Καθορισμού Απαιτήσεων

  • 1. Συναντήσεις της Οργανωτικής Επιτροπής
  • 2. Συναντήσεις με κ. Χατζηλεοντιάδη
  • 3. Επικοινωνία μέσω googlegroups
  • 4. Ιδέες από ήδη υλοποιημένο λογισμικό
  • http://www.insticc.org/Primoris/
  • http://mc.manuscriptcentral.com/acm

Λάθη:

✗ Μη σαφής καθορισμός από την αρχή ✗ Νέες απαιτήσεις στην πορεία ✗ Έλλειψη εμπειρίας διοργάνωσης συνεδρίου

Hristopanagies per second (hpps)

slide-17
SLIDE 17

Our Professional Documents

slide-18
SLIDE 18

Frontend - design :

  • Responsive design

Λειτουργίες : ( στο επίπεδο του διαχειριστή )

  • usergroups : για επίπεδα πρόσβασης πχ

{ επιτροπή, moderators, διαχειριστές, super διαχειριστές }

  • όλα τα αντίστοιχα του user
  • εγγραφές χρηστών με πρόσβαση πχ

καθηγητών, μελών κτλπ

Αρχικές απαιτήσεις

Λειτουργίες : ( στο επίπεδο του χρήστη )

  • News-announcements
  • Registrations : στο συνέδριο
  • Personal dashboard + request status
  • Forms
  • Calendar
  • Events ( για τα activities πχ )
  • Support / Contact
  • Sponsors
  • Live Streaming
  • Οργανωτική Επιτροπή
  • Επιστημονική Επιτροπή
  • Πρόσβαση / Διαμονή
  • translations : όλα τα περιεχόμενα του site

στατικά κ δυναμικά θα είναι μεταφρασμένα σε 2, γενικά n γλώσσες

  • user friendly urls, seo friendly urls

index.php?controller=announcement&method= view&permalink=avbab /announcement/view/acbab

slide-19
SLIDE 19

login

SelectFromMenu Dashboard submitPaper

<include> <extends>

register

<include>

announcements create/modify events support modifyUserRights userCheckIn reviewPaper finalSelection

<extends>

assignPaper

<extends> <extends>

activitiesRegistration

Χρήστες και Δυνατότητες

slide-20
SLIDE 20

Η Βάση Δεδομένων

slide-21
SLIDE 21

Τεχνολογίες που χρησιμοποιήθηκαν

slide-22
SLIDE 22

LAMP stack

  • Linux Apache MariaDB PHP
  • MariaDB vs MySQL

– Truly Open Source – Speed Improvements

slide-23
SLIDE 23

Site Architecture

  • MVC
  • REST

Front-end Framework

  • Bootstrap (by Twitter)
slide-24
SLIDE 24

PHP

  • Based on CMS-X

Translations

  • Home-brew tool
slide-25
SLIDE 25

Mail Server

  • Google Mail Server
  • Google Mail Limitations

– 500 emails/day

Libraries

  • Captcha
  • Smarty
  • Feedcreator – RSS
  • jQuery
slide-26
SLIDE 26

Optimization

  • Memcached
  • Some other things
slide-27
SLIDE 27

Bootstrap

  • CSS + some javascript
  • Open Source
  • Responsive by default, regardless of platform
  • Grid System
  • Ready-to-use components
  • Great Design solution
  • Easily customizable – heavy customization
slide-28
SLIDE 28

Translations

  • Bilinguality requirement
  • Tool by Nohponex
  • N-language
  • Easy translation platform – no code required
  • Automatic key detection
  • Revisioning
slide-29
SLIDE 29
slide-30
SLIDE 30

Controller Model Viewer Database index

Server *.sfhmmy.gr

Browser

Client

HTTP Request HTTP Response Viewers :

  • Site
  • Administrator
  • Reviewer
  • Desk
  • Maintenance
  • Live
  • raw
  • json
  • pdf

Request data Viewer parameters

1) Get mode 2) Get controller 3) Get method 4) Include controller 5) Execute method

MVC – Architectural pattern

slide-31
SLIDE 31
  • Client–server
  • Stateless
  • Cacheable
  • Layered system
  • Uniform interface

– Identification of resources – Manipulation of resources through these representations – Self-descriptive messages – Hypermedia as the engine of application state

http://en.wikipedia.org/wiki/Representational_state_transfer

REST (representational state transfer)

slide-32
SLIDE 32

service URI Method HTTP GET HTTP POST create View create new item form Create new item view View item update View update item form Update item listing List collection delete Delete item

  • Example :

http://www.sfhmmy.gr/announcement/view/10

mode controller method

API Interface

slide-33
SLIDE 33

‾ index.php ‾ config.php ‾ controllers/ ‾ administrator/ ‾ site/ ‾ home.php ‾ user.php ‾ models/ ‾ session.php ‾ database.php ‾ util.php ‾ site/ ‾ user.php ‾ administrator/ ‾ user.php ‾ viewers/ ‾ site/ ‾ site.php ‾ assets/ ‾ templates/ ‾ common/

Directory Tree

slide-34
SLIDE 34

HTTP GET http://www.sfhmmy.gr/home/view mode : site controller : home method : view

HTTP Request

index

Request Example

slide-35
SLIDE 35

<?php class homeController{ public static function view( $params ){ include( 'models/site/page.php' ); $page = page::view( 'home', $language ); View( array( 'title' => $page[ 'title' ], 'page' => $page ), 'home' ); } } ?> <?php class siteViewer { public static function view( $params = array(), $page ) { include ('templates/common/header.php'); include ('templates/' . $page. '.php'); include ('templates/common/footer.php'); } } ?>

Controller Viewer

Controller.php <div class="col-sm-2"> <h3> <?php ___( 'title' ); ?> : <?php echo $params[ 'page' ][ 'title' ]; ?> </h3> </div> <div class="col-sm-10"> <?php echo $params[ 'page'][ 'content' ]; ?> </div> home.php siteViewer.php

HTTP Response

slide-36
SLIDE 36

Συνεργασία

  • Λογισμικό μεγαλύτερο από οποιαδήποτε

εργασία στα πλαίσια της σχολής

  • Συνεχής ανάπτυξη, από διαφορετικές

τοποθεσίες Ανάγκη για συντονισμό

slide-37
SLIDE 37

Subversion (SVN)

  • Κεντρικός έλεγχος εκδόσεων

(software versioning, revision control)

  • Είχαμε ήδη στημένο server
slide-38
SLIDE 38
slide-39
SLIDE 39

Class Reference (ή κάτι τέτοιο)

Εύληπτο!! Φιλικό στον χρήστη!!

  • Αναφορά στο τι πρέπει να

κάνει κάθε οντότητα και πως επικοινωνεί με τις υπόλοιπες

  • Κάπως σπαρτιατική

υλοποίηση, χωρίς σχόλια και κείμενο

  • Απολύτως απαραίτητο όταν

βασίζεσαι σε κώδικα που έχει γράψει άλλος

slide-40
SLIDE 40

Αποσφαλμάτωση

  • Έγινε απόπειρα χρήσης bug tool (Mantis) και

collaboration suite (Asana, Freedcamp κλπ)

  • Τα αμελήσαμε – υποτιμήσαμε
  • Το πληρώσαμε στο τέλος...
slide-41
SLIDE 41
  • Όλα αυτά απαιτούσαν χρόνο εξοικείωσης
  • Βασικές λειτουργίες -> 20/12/2013
  • Rapid Development Process
  • Παράλληλη διαμόρφωση της εμφάνισης
  • Πρώτη δημόσια εμφάνιση -> 29/1/2014!!
slide-42
SLIDE 42

Αξιοπιστία

  • Εικονικό μηχάνημα στο cloud του grnet

(Okeanos)

  • Debian linux
  • Χρόνος αδιάλειπτης λειτουργίας -> 173 μέρες,

13 ώρες, 41 λεπτά

slide-43
SLIDE 43

Ασφάλεια, τι κάναμε

  • Usergroups και ταυτοποίηση χρηστών στα http requests
  • Έλεγχος και καθαρισμός των δεδομένων χρηστών
  • Χρονικά και ποσοτικά όρια σε login attemps και reset

requests

  • Καταγραφή αλλαγών σφαλμάτω, αλλαγών και

δραστηριότητας του server (επιτήρηση για πιθανές επιθέσεις)

  • Hashing + Salting των κωδικών στη βάση
slide-44
SLIDE 44

Ασφάλεια, πιθανά προβλήματα

  • SSL μόνο στο admin κομμάτι => οι κωδικοί περνάν

από το δίκτυο σε μορφή κειμένου

  • Ύπαρξη πολλών διαχειριστών
  • Υλοιποίηση αυστηρά για apache
slide-45
SLIDE 45

$model_listing = array( 'id' => array( 'fixed', 'view' => array( 'method' => 'update' ) ), 'published' => array( 'fixed', 'toogle'=> array( '1'=> 'Publish', '0' => 'Unpublish', 'method' => 'update' ) ), 'permalink' => array( 'view' => array( 'method' => 'update', 'index' => 'id' ) ), 'start_time' => array(), 'end_time' => array(), 'title' => array( 'view' => array( 'method' => 'update', 'index' => 'id' ) ), ); $model = array( 'table' => 'event', 'index' => 'id', 'translation_table' => 'event_translation', 'translation_index' => 'event_id', 'fields' => array( 'id' => array( 'type' => 'readonly' ), 'published' => array( 'title' => 'Published', 'type' => 'boolean', 'label' => 'Publish this item' ), 'permalink' => array( 'title' => 'Permalink', 'unique', 'required', 'type' => 'permalink', 'length' => 30 ), 'start_time' => array( 'required', 'type'=> 'datetime' ), 'end_time' => array( 'required', 'type'=> 'datetime' ), 'rateable' => array( 'type' => 'boolean' ) ), 'fields_translated' => array( 'title' => array( 'title'=> 'Title', 'type' => 'text', 'length' => 256 ), 'description' => array( 'title'=> 'Description', 'editor', 'type' => 'textarea', 'raw' ) ) );

Entity description models :

Administrator Design

slide-46
SLIDE 46

event/listing event/update

Administrator Design /2

slide-47
SLIDE 47

user

announcement

user page email activity event message module form console paper review checkin

rateable item

photo certificate

rss

Components

slide-48
SLIDE 48

Component : Form

slide-49
SLIDE 49

Component : Query Report

slide-50
SLIDE 50

Optimization

  • Heavy site
  • Memcached

– queries saved on RAM, and not from DB – 1.1s → 0.01s

  • File Minimizations

– CSS, js + apache caching – File combine – Unnecessary file removal (fonts) – Mobile elements

  • Cdn.sfhmmy.gr
slide-51
SLIDE 51

Bugs & Last minute errors

  • Το λογισμικό έχει πάντα λάθη
  • Ακόμα και κατά τη διάρκεια του συνεδρίου

βρέθηκαν bugs Testing

✗ Έλλειψη αυστηρής μεθοδολογίας

αποσφαλμάτωσης

slide-52
SLIDE 52

Statistics and Numbers

slide-53
SLIDE 53

Lines of Code

  • Total Files: 880
  • Total Lines of Code: 569208
  • Developers: 4
slide-54
SLIDE 54

Developer Statistics

Author Changes Lines of Code Lines per Change nohponex 2958 (87.9%) 579887 (99.2%) 196.0 adrian 183 (5.4%) 1928 (0.3%) 10.5 themis 149 (4.4%) 1919 (0.3%) 12.8 kostas 77 (2.3%) 897 (0.2%) 11.6 Total 3367 (100.0%) 584631 (100.0%) 173.6

slide-55
SLIDE 55

Usage Statistics

SQL Stats

  • MySQL Server Running: 173 days,

13 hours, 41 minutes and 35 seconds

  • Total Queries: 2176022

528.38 per Hour

Analytics

  • Προβολές σελίδας: 150.826
  • Χρήστες συνολικά: 13.386
  • Εγγεγραμμένοι Χρηστες: 2000
  • Mails between us: 1111
slide-56
SLIDE 56

Εκτίμηση Κόστους - Ωρών

➔ Γραμμές κώδικα (χωρίς κενά και libraries): 16000 ➔ Διάστημα Ανάπτυξης: 15/11/2013 – 15/4/2014

6 μήνες

Κόστος Έργου: 0 $

Number Total LoC Loc/Class Controllers 99 7500 76 Models 65 4000 61 Viewers 86 5754 67

slide-57
SLIDE 57

Ευχαριστούμε !!!

Και πύραυλο μπορούμε να κάνουμε