Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Male tajne velikih portala (24sata.hr, vecernji...

Avatar for ntuckovic ntuckovic
October 16, 2017

Male tajne velikih portala (24sata.hr, vecernji.hr...)

Priča o odjelu digitalnog razvoja Styria medijskih servisa, projektima, alatima i metodologijama kojima razvijaju najveće hrvatske portale i zahtjevne internacionalne projekte

Avatar for ntuckovic

ntuckovic

October 16, 2017

Other Decks in Programming

Transcript

  1. 4 portala u top 10 24 sata - 1.550.000+ jedinstvenih

    korisnika 24 sata - reach 55.22% BRANDOVI - DIGITAL
  2. STYRIA MEDIJSKI SERVISI DIGITALNI RAZVOJ Hrvatska: 24sata.hr, Vecernji.hr, Poslovni.hr, Express.hr...

    Slovenija: Siol.net, Zurnal24.si Crna gora: Vijesti.me Švicarska: Energychallenge.ch Austrija: Joomboos.tv, Willhaben.at
  3. DIGITALNI RAZVOJ - TIM 40+ zaposlenika + studenti Backend Frontend

    UX/UI Data Science Project Management Traffic Mobile
  4. lagan, skalabilan i brz CMS Backend: Django framework, Postgresql, Redis,

    Memcache, Sphinx Editor: SPA, Backbone + Marionette Trenutna verzija je 3.0
  5. Jednostavna i razumljiva sintaksa Nema mnoštvo strogih pravila Nema kompajliranja

    (ručno) Nema potrebe za deklariranjem varijabla Moguće ugraditi u druge aplikacije (embeddable) "A TOY LANGUAGE"
  6. Korisnik ne mari za 0.001 sec vs 0.01 sec Zamjena

    developerskog vremena sa radom/količinom servera Uključivanje drugih jezika kad je potrebno (NumPy) Korištenje cachiranja i asinkronosti "WHY PYTHON IS SO SLOW?"
  7. Može biti korišten za izradu jednostavnih skripta 60+ aktivno održavanih

    web frameworka Popularni Data Science alati (Numpy, Pandas, Scikit-learn, Matplotlib..) OpenGL programiranje (PyOpenGL, Panda3D, Py3D...) "PYTHON IS SCRIPTING LANGUAGE"
  8. Beautiful is better than ugly. Simple is better than complex.

    Complex is better than complicated. Now is better than never. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. https://www.python.org/dev/peps https://www.python.org/dev/peps/pep- 0008/ PEP 20 -- THE ZEN OF PYTHON (PYTHON ENHANCEMENT PROPOSALS) class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance friends = ['john', 'pat', 'gary', 'michael'] for i, name in enumerate(friends): print "iteration {iteration} is {name}".format(iteration=i, name=name)
  9. Instagram (500M users) Pinterest (150M users) sada više Flask Disqus

    (50M users) Mozilla NASA Bitbucket The Onion Washington Post Pitchfork
  10. Open-source Inicijalni release 2005. Počeci u medijskom svijetu 7.4 MB-a

    Dovoljno brz Siguran Full stack + "Batteries included..." Svestrana upotreba Dobra dokumentacija hrpa (kvalitetnih) vanjskih paketa za custom potrebe Odličan i veliki community "The web framework for perfectionists with deadlines." DJANGO WEB FRAMEWORK
  11. BRZINA Brzina izvršavanja koda dovoljna za krajnjeg korisnika Template caching,

    Object caching... Brzina razvoja mnogo važniji čimbenik
  12. Inicijalno projekt već siguran Out-of-the-box account management (password reset itd.)

    Cross site sctipting (XSS) zaštita Cross site request forgery (CSRF) zaštita SQL injection zaštita Clickjacking (X-frame) zaštita SIGURNOST MIDDLEWARE_CLASSES = [ ‘django.middleware.security.SecurityMiddleware’, ‘django.contrib.sessions.middleware.SessionMiddleware’, ‘django.middleware.common.CommonMiddleware’, ‘django.middleware.csrf.CsrfViewMiddleware’, ‘django.contrib.auth.middleware.AuthenticationMiddleware’, ‘django.contrib.auth.middleware.SessionAuthenticationMiddleware’, ‘django.contrib.messages.middleware.MessageMiddleware’, ‘django.middleware.clickjacking.XFrameOptionsMiddleware’ ]
  13. FULL STACK + "BATTERIES INCLUDED..." Model Modeli Django Object relational

    mapping (ORM) Migracije Admin Sučelje View ("Controller") Logika za renderiranje templatea Funkcija kao view (low level) Klasa kao view, dosta gotove logike Template Jednostavan template language Ugrađeni template tagovi i filter + custom Reusanje templatea (extend, include) Forme, Internacionalizacija, Multisite, Middleware, Testiranje...
  14. MODEL # mojapp/models.py from django.db import models class Question(models.Model): text

    = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') # konzola python manage.py migrate mojapp # mojapp/views.py from .models import Question ... all_questions = Question.objects.all() ... # mojapp/admin.py from django.contrib import admin from .models import Question admin.site.register(Question)
  15. Funkcija Klasa VIEW # mojapp/views.py from django.shortcuts import render from

    mojapp.models import Question def question_list(request, question_id): list = Question.objects.all() return render(request, 'mojapp/question_list.html', {'list': list}) # mojapp/views.py from django.views.generic.list import ListView from mojapp.models import Question class QuestionListView(ListView): template_name = 'mojapp/question_list_custom.html' model = Question
  16. TEMPLATE # mojapp/templates/mojapp/question_list.html {% extends 'mojprojekt/master.html' %} {% block title

    %} <h1>Questions</h1> {% endblock title %} {% block content %} <ul> {% for question in object_list %} <li>{{ question.pub_date|date:"d.m.Y" }} - {{ question.text }}</li> {% empty %} <li>No questions yet.</li> {% endfor %} </ul> {% include "ad.html" %} {% endblock content %}
  17. API: Django Rest Framework CMS: Django CMS, Wagtail Account management:

    Django Allauth E-commerce: Oscar WebSockets i HTTP2: Django Channels Gamifikacija: Django Gamification, Django Bagify Više: https://djangopackages.org VANJSKI PAKETI
  18. Konferecije DjangoCon EU/US Django Under The Hood Europython Organizacije Django

    So ware Foundation Django Girls Literatura Hello Web App: Learn How to Build a Web App Two Scoops of Django Lightweight Django COMMUNITY
  19. LINKOVI Styria Digital Services https://www.publitzer.hr https://www.facebook.com/styriadigital https://github.com/Styria-Digital Python https://www.python.org https://www.python.org/dev/peps

    https://www.python.org/dev/peps/pep-0008/ Django https://www.djangoproject.com https://djangopackages.org https://djangogirls.org Nikola Tucković https://github.com/ntuckovic https://www.facebook.com/ntuckovic