Czech Sun Training Day 2008 - Java Enterprise SystemMartin Cerveny
Presentation from training day for Sun Solaris customers to explain features of Sun Java Enterprise System.
Presentation covers following themes:
- architecture
- Directory server
- Web server
- Access manager
- Portal server
Technologie ASP.NET MVC je rozšiřitelnější než se na první pohled může zdát!
Pokročilejší přednáška pro ty, kteří už ASP.NET MVC někdy viděli, ukazuje, jak jednoduše upravit vestavěné routování, volání akčních metod, vyhledávání views, model binding, filtry...
Na praktických příkladech bude ukázáno, jak využitím této rozšiřitelnosti dosáhnout elegantnějšího a čistšího kódu.
Dema a videozáznam: http://wug.cz/praha/akce/595-Rozsiritelnost-ASP-NET-MVC
Technologie užívané při vývoji velkých e-shopůPeckaDesign.cz
Aby e-shop dokázal obsloužit stovky nebo tisíce požadavků za minutu, musí jeho programátoři vědět, co dělají. Nevystačí si jen se základními znalostmi PHP a MySQL, ale je potřeba využít širší portfolio technologií a technik, které mu zaručí jak dostatečný výkon, tak efektivitu řešení. Představím vám náš technologický stack, díky kterému jsme na špici." - Milan Pála
Presentation from training day for Sun Solaris customers to explain features of Solaris DTrace.
Presentation covers following themes:
- architecture and syntax
- tools DTraceToolkit, chime, DTraceTazTool, DLight
- system DTrace (system providers like syscall, sched, vminfo ...)
- application DTrace (providers pid* and plockstat*, User-Level Statically Defined Tracing (USDT)), Dtrace for MySQL, Apache webserver, PHP module, Java and Firefox Javascript
Data Restart 2023: Václav Ráš - 10 tipů, jak pracovat s BigQueryTaste
Přednáška (kinda workshop) nabídne 10 užitečných tipů pro efektivní využití BigQuery. Dozvíte se, jak optimalizovat dotazy a snížit náklady na provoz, využít uživatelsky definované funkce, identifikovat, kdo může za vysoké náklady na provoz BigQuery, automaticky detekovat anomálie nebo predikovat budoucnost. Vše představím na konkrétních příkladech včetně ukázek kódů.
Technologie ASP.NET MVC je rozšiřitelnější než se na první pohled může zdát! Pokročilejší přednáška pro ty, kteří už ASP.NET MVC někdy viděli, ukazuje, jak jednoduše upravit vestavěné routování, volání akčních metod, vyhledávání views, model binding, filtry... Na praktických příkladech bude ukázáno, jak využitím této rozšiřitelnosti dosáhnout elegantnějšího a čistšího kódu.
Czech Sun Training Day 2008 - Java Enterprise SystemMartin Cerveny
Presentation from training day for Sun Solaris customers to explain features of Sun Java Enterprise System.
Presentation covers following themes:
- architecture
- Directory server
- Web server
- Access manager
- Portal server
Technologie ASP.NET MVC je rozšiřitelnější než se na první pohled může zdát!
Pokročilejší přednáška pro ty, kteří už ASP.NET MVC někdy viděli, ukazuje, jak jednoduše upravit vestavěné routování, volání akčních metod, vyhledávání views, model binding, filtry...
Na praktických příkladech bude ukázáno, jak využitím této rozšiřitelnosti dosáhnout elegantnějšího a čistšího kódu.
Dema a videozáznam: http://wug.cz/praha/akce/595-Rozsiritelnost-ASP-NET-MVC
Technologie užívané při vývoji velkých e-shopůPeckaDesign.cz
Aby e-shop dokázal obsloužit stovky nebo tisíce požadavků za minutu, musí jeho programátoři vědět, co dělají. Nevystačí si jen se základními znalostmi PHP a MySQL, ale je potřeba využít širší portfolio technologií a technik, které mu zaručí jak dostatečný výkon, tak efektivitu řešení. Představím vám náš technologický stack, díky kterému jsme na špici." - Milan Pála
Presentation from training day for Sun Solaris customers to explain features of Solaris DTrace.
Presentation covers following themes:
- architecture and syntax
- tools DTraceToolkit, chime, DTraceTazTool, DLight
- system DTrace (system providers like syscall, sched, vminfo ...)
- application DTrace (providers pid* and plockstat*, User-Level Statically Defined Tracing (USDT)), Dtrace for MySQL, Apache webserver, PHP module, Java and Firefox Javascript
Data Restart 2023: Václav Ráš - 10 tipů, jak pracovat s BigQueryTaste
Přednáška (kinda workshop) nabídne 10 užitečných tipů pro efektivní využití BigQuery. Dozvíte se, jak optimalizovat dotazy a snížit náklady na provoz, využít uživatelsky definované funkce, identifikovat, kdo může za vysoké náklady na provoz BigQuery, automaticky detekovat anomálie nebo predikovat budoucnost. Vše představím na konkrétních příkladech včetně ukázek kódů.
Technologie ASP.NET MVC je rozšiřitelnější než se na první pohled může zdát! Pokročilejší přednáška pro ty, kteří už ASP.NET MVC někdy viděli, ukazuje, jak jednoduše upravit vestavěné routování, volání akčních metod, vyhledávání views, model binding, filtry... Na praktických příkladech bude ukázáno, jak využitím této rozšiřitelnosti dosáhnout elegantnějšího a čistšího kódu.
The document provides an introduction to Google Web Toolkit (GWT), covering several key points:
- GWT is a JavaScript framework that allows developing web applications in Java and compiling them to JavaScript.
- It provides strong IDE features like refactoring and code completion when developing in Java.
- Applications can be unit tested and GWT supports test-driven development (TDD).
- GWT integrates with various backend frameworks like Spring, Hibernate, and JSF.
CZNIC: Správa internetu, routing a IPv6Tomáš Holas
Přednáška Ondřeje Filipa a Pavla Tůmy na o internetové infrastruktuře z hlediska registrátora národní domény. Přednáška pojednává o správě internetu na celosvětové a národní úrovni, informuje o způsobech propojování sítí různých provederů pomocí protokolu BGP, a seznamuje se základy protokolu IPv6 a současným stavem jeho zavádění v České republice.
Google App Engine - exploiting limitationsTomáš Holas
Google App Engine is a PaaS that allows developers to build and host web applications on Google's infrastructure. It provides automatic scaling and simulates a production environment through its SDK. However, applications must comply with App Engine's rules, including a read-only filesystem, 30 second response times, and no socket connections or processes. Data is stored in Google's distributed Datastore, which uses entities instead of tables and does not support joins, aggregation, or transactions across entity groups. To work within these limitations, developers must change their approach to focus on the Datastore's strengths like simplicity and denormalize their data models.
This document discusses Erlang and distributed programming in Erlang. It provides an overview of Erlang's functional programming principles and syntax, including processes instead of threads, message passing instead of shared memory, and built-in support for distributed programming. It then demonstrates a distributed parallel map (DPMAP) algorithm for parallel computation across multiple nodes, showing how 80 lines of Erlang code can distribute tasks to worker processes on different nodes and gather the results.
2. Filosofie
● Loose coupling
● Quick Development
● Don't Repet Yourself (DRY)
● Batteries included :)
3. Součásti
● URL resolver
● ORM
● Forms
● Templates
● Test framework
● Contrib aplikace
– auth, admin, sessions, formtools
● Reusable aplikace, Pinax
4. Terminologie
● Model – objekt v DB (User, Article)
● View – kód obstarávající logiku (list_users(),
add_article())
● Template – šablona presentace (user_list.html)
● Projekt – skupina aplikací, definuje DB a spol.
(portal, blog), reprezentuje jeden web
● Aplikace – skupina modelů a přidružených
objektů, může žít mimo projekt ( comments,
galleries,articles)
5. Core
Základ systému se stará o:
● Interakci s web serverem
– mod_python, FastCGI, WSGI
● Zabalení HTTP požadavku/odpovědi
● Háčky pro uchycení vlastního kódu
– signals – události, na které se dá navázat
– middleware – umožňuje vsunout kód do
různých částí cyklu
6. Views
● Libovolná funkce přijímající HttpRequest a
vracející HttpResponse
def hello_world( request ):
return HttpResponse( "Hello world!" )
def working( request, id )
return HttpResponse(
str(get_object_or_404(Author, pk=id))
)
7. URL Resolver (1)
● Překládá URL do volání view
● Mapování pomocí regulárních výrazů
– skupiny v reg. výrazech obsahují parametry
funkce
urlpatterns = patterns('user_app',
url(r'^$', 'list', ),
url(r'^user/(d+)/$','detail',
{'t':'u.html'}),
url(r'^groups/',include('user_app.urls')),
)
8. URL Resolver (2)
● Parametry v URL umožňují pěkné adresy
– /mail/vokurka/inbox/page3/
● Parametry v urlpatterns pomáhají u obecných
funkcí
●
include() pomáhá s modularizací
● Lze mapovat i zpětně (view -> URL)
9. ORM (1)
● PostgreSQL, MySQL, SQLite, Oracle ...
● Umožňuje deklarativní definici modelů
● Podporuje dědičnost (čistě)
● Django samo vytvoří DB schéma
● Lazy evaluace dotazů
10. ORM (2) - model
class User( models.Model ):
name = models.CharField(maxlength=100,
unique=True)
email = models.EmailField(blank=True)
photo = models.ImageField(
upload_to='img', blank=True)
created = models.DateTimeField(
default=datetime.now)
group = models.ForeignKey(Group,
blank=True, null=True)
class Meta:
ordering = ['name', '-email']
verbose_name = 'User of our system'
13. Templates (1)
Jednoduchý značkovací jazyk:
{% extends "base.html" %}
{% block main %}
{% if user %}
{{ user.name }}, today is {% now "l" %}.
{% else %}
Stranger, this month is {% now "F" %}
{% endif %}
{% for obj in object_list %}
{{ object|escape|urlize }}<br />
{% endfor%}
{% endblock %}
14. Templates (2)
● Založený na dědičnosti (include lze také)
● Využívá proměnné ({{ ... }}) a tagy ({% … %})
– {{ prom.x }} vyzkouší prom.x, prom.x() a
prom[x]
● Proměnné lze přeložit pomocí filtrů
{{ user.created|date:"F Y" }}
● Soubory se hledají dle konfigurace, například:
v adresáři templates/ v projektu a aplikacích
v databázi
přes HTTP z jiného serveru
15. Forms (1)
● Deklarativní popis formuláře
● Postará se o validaci a „vyčištění“ dat
● Možnost vygenerovat formulář pro Model
class MyForm( forms.Form ):
email = forms.EmailField( required=False )
choice = forms.ChoiceField(
choices=[(1,'one'), (2,'two')] )
16. Forms (2)
Template (easy verze)
<form action="." method="POST">
<table>{{ form.as_table }}</table>
<input type="submit" />
</form>
View
def my_view( request ):
if request.method == 'POST':
form = MyForm( request.POST )
else: form = MyForm()
if form.is_valid():
form.cleaned_data['email']
return HttpResponseRedirect('/')
return render_to_response('template.html',
{'form' : form})
18. Generic Views (1)
Některé jednoduché věci se dělají stále dokola:
● Přidání/úprava/odstranění objektu
● Výpis seznamu/podrobností
● Archiv
Django pro ně nabízí hotové view, kterým stačí
nastavit parametry
20. Sessions
● Přídavná aplikace starající se o zprávu session
proměnných
● Ve view viditelné jako request.session
● Implementováno několik backendů ( cache,
db, ...), do request se dostane přes middleware
● Umožňuje ukládání libovolného obsahu
(autoatická serializace)
21. Auth
● Stará se o autentifikaci a autorizaci uživatelů
● Možno použít libovolný backend
● Automaticky vytvoří ADD/UPDATE a DELETE práva
k modelům
● Součástí je middleware, který udržuje user v
request.user (používá ↑sessions)
>>> user.is_authenticated()
True
>>> user.has_perm('some_perm')
True
>>> user.password
u'sha1$9bb2c$154ecb89654d90a50869c9f115...'
22. Admin (1)
● Používá auth pro správu uživatelů a práv
– Uživatel musí mít is_staff
– Modely, na které nemá právo ani nevidí
● Umožňuje jednoduché manipulace s objekty
CREATE/UPDATE/DELETE
● Poskytuje i základní dokumentaci k projektu
29. App hosting
● Uživatel vůbec nevidí HW
● Nahraje jen aplikaci a používá služby
● Aplikace v Pythonu nebo Javě (JVM)
● Platí se za spotřebované prostředky:
– Bandwidth
– CPU time
– Storage
– API calls
30. Služby
● Static files ● URL Fetch
● Data Store ● Google accounts
● memcached ● Cron jobs
● Mail ● Tasks
● XMPP ● Blobstore
● Images
31. Data store
● NOSQL databáze (GQL)
● Definice modelů, entit, podobně jako v
Djangu
● Omezené možnosti dotazů
32. Models
from google.appengine.ext import db
from google.appengine.api import users
class Employee(db.Model):
name = db.StringProperty(required=True)
role = db.StringProperty(required=True,
choices=set(["executive", "manager",]))
hire_date = db.DateProperty()
account = db.UserProperty()
e = Employee(
name="",
role="manager",
account=users.get_current_user())
e.put()
33. GQL
from google.appengine.api import users
training_registration_list = [
users.User("Alfred.Smith@example.com"),
users.User("jharrison@example.com"),
users.User("budnelson@example.com")]
employees = db.GqlQuery("""
SELECT *
FROM Employee
WHERE account IN :1
""",
training_registration_list)
for e in employees: ...
34. Queries
q = Person.all()
q.filter("last_name =", "Smith")
q.filter("height <", 72)
q.order("-height")
q = db.GqlQuery("""
SELECT * FROM Person
WHERE
last_name = :1 AND height < :2
ORDER BY height DESC
""",
"Smith", 72)
35. Django on GAE
● GAE má built-in django 0.96, 1.0 a 1.1
– Čisté django, tedy bez modelu, auth a admin
● djangoappengine (django-nonrel)
– Funkční admin
● Django NOSQL GSOC