Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

czech manifesto-glossary #67

Merged
merged 2 commits into from
Jun 11, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions app/controllers/Application.scala
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ class Application(components: ControllerComponents, implicit private val assetsF
private val ko = FullLang(Lang("ko"), "ko_KR", "ltr")
private val fa = FullLang(Lang("fa"), "fa_FA", "rtl")
private val sw = FullLang(Lang("sw"), "sw_SW", "ltr")
private val cz = FullLang(Lang("cz"), "cz_CZ", "ltr")

private val all = Seq(de, en, es, fr, it, ja, pt, ptBR, tr, id, zhCN, ko, fa, sw)
private val all = Seq(de, en, es, fr, it, ja, pt, ptBR, tr, id, zhCN, ko, fa, sw, cz)

private val dateFormat: DateTimeFormatter =
DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss 'GMT'")
Expand Down Expand Up @@ -114,7 +115,8 @@ class Application(components: ControllerComponents, implicit private val assetsF
render(zhCN, views.html.zhCN.manifesto()),
render(ko, views.html.ko.manifesto()),
render(fa, views.html.fa.manifesto()),
render(sw, views.html.sw.manifesto())
render(sw, views.html.sw.manifesto()),
render(cz, views.html.cz.manifesto())
)
}

Expand Down Expand Up @@ -181,7 +183,8 @@ class Application(components: ControllerComponents, implicit private val assetsF
render(it, views.html.it.glossary()),
render(de, views.html.de.glossary()),
render(zhCN, views.html.zhCN.glossary()),
render(ko, views.html.ko.glossary())
render(ko, views.html.ko.glossary()),
render(cz, views.html.cz.glossary())
)
}
}
93 changes: 93 additions & 0 deletions app/views/cz/glossary.scala.html

Large diffs are not rendered by default.

50 changes: 50 additions & 0 deletions app/views/cz/manifesto.scala.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
@*
* Main manifesto.
*@


<section id="the-reactive-manifesto">

<p>Organizace pracující napříč různými odvětvími vývoje software objevují nezávisle stále stejné vzory v návrhu a implementaci softwarových systémů. Takové systémy jsou pak robustnější, odolnější, pružnější a nabízejí řešení více odpovídající moderním požadavkům. </p>
<p>V poslední době dochází k těmto proměnám na základě rapidních změn požadavků na softwarová řešení. Před pouhými pár lety měla rozsáhlá aplikace jen deset serverů, odezvu v sekundách, hodiny offline provozu kvůli údržbě a gigabyty dat. Dnešní aplikace běží na všem od mobilních telefonů po cloudové clustery s tisíci multi-core procesory. Uživatelé očekávají odezvu v rámci milisekund a 100% dostupnost; data měříme v petabytech. Dnešní požadavky nelze zkrátka uspokojit včerejšími strukturami.</p>
<p>Věříme, že je třeba uceleného přístupu k návrhu systémů, a že všechny nezbytné aspekty byly již rozpoznány: systém musí být responzivní, odolný, pružný a řízený zprávami. Takový systém potom nazýváme reaktivní.</p>
<p>Systémy navržené jako reaktivní jsou pružnější, volně provázané a <a href="/cz/glossary#Scalability">škálovatelné</a>. Díky tomu je jejich vývoj snazší a změny jednodušší. Takové systémy jsou tolerantnější k <a href="/cz/glossary#Failure">výpadkům</a>, které řeší elegantnějším způsobem, než kolapsem celého systému; mají vysokou odezvu a nabízejí <a href="/cz/glossary#User">uživateli</a> interaktivní zpětnou vazbu.
</p>

<h3>Reaktivní systém je:</h3>

</section>

<section id="responsive" class="trait">

<p><strong>Responzivní</strong>: <a href="/cz/glossary#System">Systém</a> odpoví v požadovaném čase, pokud je nějaká odpověď vůbec možná. Rychlá odezva je nejen předpoklad funkčnosti a použitelnosti, ale umožňuje také rychlou a efektivní detekci problémů. Responzivní systémy poskytují rapidní konzistentní časovou odezvu zajišťující spolehlivost služby. Tato konzistence usnadňuje zpracování chyb a zvyšuje důvěru v kvalitu služby, což podporuje nové iterace vývoje.</p>

</section>

<section id="resilient" class="trait">

<p><strong>Odolný</strong>: Systém zůstává responzivní i v případě <a href="/cz/glossary#Failure">výpadku</a>. Toto neplatí pouze pro kritické systémy s garantovanou vysokou dostupností - každý neodolný systém je po výpadku nedostupný. Odolnost je dosažena <a href="/cz/glossary#Replication">replikací</a>, zamezením šíření výpadku, <a href="/cz/glossary#Isolation">izolací</a> a <a href="/cz/glossary#Delegation">delegací</a> zpracování chyb. K výpadku může dojít u každé z <a href="/cz/glossary#Component">komponent</a> systému; izolací komponent lze dosáhnout stavu, kdy dojde v různých částech systému k výpadku, aniž by došlo k výpadku systému jako celku. Zotavení každé z komponent je delegováno na jinou (externí) komponentu a dostupnost je zajištěna replikací tam, kde je to nezbytné. Uživatel dané komponenty tak není zatížen nutností zpracovat její případné poruchy přímo.</p>

</section>

<section id="elastic" class="trait">

<p><strong>Pružný</strong>: Systém zůstává responzivní i při proměnlivé zátěži. Reaktivní systém umí reagovat na změny zátěže v podobě proměnlivé frekvence požadavků pomocí zvyšování či snižování <a href="/cz/glossary#Resource">zdrojů</a> přidělených dané službě. Pružný systém nemá žádné úzké hrdlo a umožňuje distribuci požadavků mezi komponentami pomocí sdílení nebo replikace. Reaktivní systémy podporují prediktivní škálovací algoritmy zohledňující míru zátěže v reálném čase. <a href="/cz/glossary#Elasticity">Pružnost</a> je takto dosažitelná i na běžných nenákladných zařízeních a platformách.</p>

</section>

<section id="message-driven" class="trait">

<p><strong>Zprávami-řízený</strong>: Jasné oddělení komponent v reaktivním systému je založeno na <a href="/cz/glossary#Asynchronous">asynchronním</a> <a href="/cz/glossary#Message-Driven">zasílání zpráv</a>, což zajišťuje volnou provázanost, izolaci a <a href="/cz/glossary#Location-Transparency">transparentnost polohy</a>. Toto oddělení také umožňuje reprezentaci a delegaci zpracovaní <a href="/cz/glossary#Failure">výpadků</a> ve formě zpráv. Řízení zprávami dále umožňuje i správu zátěže, pružnost a řízení toku dat pomocí správy a monitorování front zpráv a aplikací <a href="/cz/glossary#Back-Pressure">back-pressure</a> tam, kde třeba. Transparentnost polohy zpráv umožňuje komunikaci s komponentami pro kontrolu či správu výpadků bez nutnosti změny kódu nebo sémantiky programu nezávisle na tom, zda se komponenta nachází ve vzdáleném clusteru nebo na stejném stroji. <a href="/cz/glossary#Non-Blocking">Neblokující</a> komunikace umožňuje efektnívní využití <a href="/cz/glossary#Resource">zdroje</a>, protože komponenta zůstává aktivní i v době mezi příjmem zpráv, což vede k nižším režijním nákladům.</p>

@image("reactive-traits-cz.svg")

</section>

<section id="conclusion">

<p>Rozsáhlé systémy se skládají z menších a závisí tedy na reaktivních vlastnostech svých komponent. To znamená, že reaktivní principy musí být aplikovány na všech úrovních abstrakce. Ty nejrozsáhlejší systémy na světě obsluhující miliardy uživatelů denně jsou na těchto principech postaveny. Je na čase aplikovat je vědomě hned od začátku vývoje namísto jejich objevování znovu a znovu.</p>

</section>


1 change: 1 addition & 0 deletions app/views/footer.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<a href="@routes.Application.index("ko")" >@messages("title")(Lang("ko"))</a> (@messages("footer.korean")) <br/>
<a href="@routes.Application.index("fa")" >@messages("title")(Lang("fa"))</a> (@messages("footer.farsi")) <br/>
<a href="@routes.Application.index("sw")" >@messages("title")(Lang("sw"))</a> (@messages("footer.swahili")) <br/>
<a href="@routes.Application.index("cz")" >@messages("title")(Lang("cz"))</a> (@messages("footer.czech")) <br/>
<br>
<p>@Html(messages("footer.ribbonSupport", "<a href='" + routes.Application.ribbons(lang.code) + "'>", "</a>"))</p>
<p class="copyright">&copy; @messages("footer.copyright")</p>
Expand Down
2 changes: 1 addition & 1 deletion conf/application.conf
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
play.http.secret.key="DEV-ONLY"
play.http.secret.key=${?APPLICATION_SECRET}

play.i18n.langs=[de, en, es, fr, it, ja, pt, pt-BR, tr, id, zh-CN, ko, fa, sw]
play.i18n.langs=[de, en, es, fr, it, ja, pt, pt-BR, tr, id, zh-CN, ko, fa, sw, cz]

play.application.loader = "services.ReactiveManifestoApplicationLoader"

Expand Down
3 changes: 2 additions & 1 deletion conf/messages
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,5 @@ footer.indonesia = Indonesian
footer.simpleChinese = Simplified Chinese
footer.korean = Korean
footer.farsi = Farsi
footer.swahili = Swahili
footer.swahili = Swahili
footer.czech = Czech
62 changes: 62 additions & 0 deletions conf/messages.cz
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Title
title = Reaktivní Manifest
title.formatted = {0}Reaktivní{1} Manifest

# Signing
sign.hello = Hello
sign.addYourSignature = Add your signature
sign.thankYouAndSpreadTheWord = Thank you! And spread the word!
sign.removeYourSignature = Remove your signature
sign.hiThere = Hi there,{0} You need to be logged to sign the manifesto
sign.signInWith = Sign In with {0}
sign.signTheManifesto = Podepsat manifest
sign.logout = Logout

# Manifesto
manifesto.publishVersion = Published on September 16 2014. (v2.0)
manifesto.downloadAsPDF = Download as PDF
manifesto.suggestImprovements = Suggest improvements

# List
list.title = Signatures
list.loading = Loading...
list.peopleAlreadySigned = {0} people already signed
list.fullList = Full list
list.search = Search
list.fetchMore = Fetch more...
list.goBackToTheManifesto = Go back to the manifesto

# Glossary
glossary.title = Glossary
glossary.backToTop = Back To Top

# Ribbons
ribbons.title = Ribbons
ribbons.showYourSupport = Show your support!
ribbons.instructions = Choose a ribbon that you like, right or left, and copy/paste the code underneath in your html page right before the <code>&lt;/body&gt;</code> tag.

# Privacy
privacy.title = Privacy Policy

# Cookie
cookie.title = Cookie Policy


# Footer
footer.ribbonSupport = Show your support {0}with a ribbon{1}.
footer.copyright = 2014, the above authors, this declaration may be freely copied in any form, but only in its entirety through this notice.
footer.english = English
footer.german = German
footer.french = French
footer.italian = Italian
footer.spanish = Spanish
footer.japanese = Japanese
footer.portuguese = Portuguese
footer.portugueseBrazilian = Portuguese Brazilian
footer.turkish = Turkish
footer.indonesia = Indonesian
footer.simpleChinese = Simplified Chinese
footer.korean = Korean
footer.farsi = Farsi
footer.swahili = Swahili
footer.czech = Czech
82 changes: 82 additions & 0 deletions public/images/reactive-traits-cz.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/pdf/the-reactive-manifesto-2.0-cz.pdf
Binary file not shown.