diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000000..5e0e4a830b2 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "doc/presentations"] + path = doc/presentations + url = git@github.com:yandex/clickhouse-presentations.git diff --git a/doc/presentations b/doc/presentations new file mode 160000 index 00000000000..b0b67a13a5a --- /dev/null +++ b/doc/presentations @@ -0,0 +1 @@ +Subproject commit b0b67a13a5ab20eac11496393acbe1e6c4f9c925 diff --git a/doc/presentations/evolution/LICENSE.md b/doc/presentations/evolution/LICENSE.md deleted file mode 100644 index bd3449d3576..00000000000 --- a/doc/presentations/evolution/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License - -Copyright © 2010–2015 Vadim Makeev, http://pepelsbey.net/ - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -# Лицензия MIT - -Copyright © 2010–2015 Вадим Макеев, http://pepelsbey.net/ - -Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: - -Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. - -ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. diff --git a/doc/presentations/evolution/index_en.html b/doc/presentations/evolution/index_en.html deleted file mode 100644 index dab4fd4e883..00000000000 --- a/doc/presentations/evolution/index_en.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - Evolution of data structures in Yandex.Metrica - - - - - - -
-

Evolution of data structures in Yandex.Metrica

-
- -
-

Evolution of data structures
in Yandex.Metrica

-
- -
-

Introduction

-
- -
-

About me

-

Alexey, developer of ClickHouse.

-

I work on data processing engine of Yandex.Metrica since 2008.

-
- -
-

About Yandex

-

Yandex is one of the largest internet companies in Europe
operating Russia’s most popular search engine.

-
- -
-

About Yandex.Metrica

-

Yandex.Metrica (https://metrica.yandex.com/) is a service for web analytics.

-

Largest in Russia, second largest in the world (just after Google Analytics).

-

-

We are processing about ~25 billions of events (page views, conversions, etc).

-

We must generate and show reports in realtime.

-
- -
- -
- -
-

History

-
- -
-

How to store data?

-

Big data processing is not a problem.

-

The challenge is how to store data in that way to allow both:

-

- efficient ingestion of click stream in realtime;

-

- efficient generation of reports;

-

 

-

Let review our historical solutions first...

-
- -
-

MySQL (MyISAM) 2008-2011

-

We have had about 50 predefined report types.

-

We create a table for each of them.

-

Each table has primary key in form of:

-

    site_id, date, key -> aggregated statistics.

-

The data was inserted in mini-batches of aggregated deltas,
using ON DUPLICATE KEY UPDATE.

-

 

-

... but this just don't work.

-
- -
-

Data locality on disk (artistic view)

-

The main concern is data locality.

- -
- -
-

MySQL (MyISAM) 2008-2011

-

We use HDD (rotational drives).
We cannot afford petabytes of SSDs.

-

Each seek is ~12 ms of latency,
usually no more than 1000 random reads/second in RAID array.

- -

Time to read data from disk array is dependent on:
- number of seeks;
- total amount of data;

- -

Example: read 100 000 rows, randomly scattered on disk:
- at least 100 seconds in worst case.
User won't wait hundred seconds for the report.

- -

The only way to read data from disk array in appropriate amount of time is to minimize number of seek by maintaining data locality.

-
- -
-

MySQL (MyISAM) 2008-2011

-

Fundamental problem:

- -

Data is inserted almost in time order: -
- each second we have new portion data for this second; -
- but data for different web sites are comes in random order in a stream;

- -

Data is selected by ranges for specified web site and date period: -
- in ranges of completely different order;

-
- -
-

MySQL (MyISAM) 2008-2011

-

MyISAM stores data in MYD and MYI files.
MYD contains data almost in order of insertion.
MYI contains B-tree index that maps a key to offset in MYD file.

-

Insertion of data is almost fine.
But selecting of data by range of primary key was non-practical.

-

Nevertheless, we made it work by:

-

- - tricky partitioning;
- - organizing data in few generations with different partitioning scheme;
- - moving data between tables by scheduled scripts;
- - report generation becomes ugly UNION ALL queries.

-
- -
-

MySQL (MyISAM) 2008-2011

-

As of 2011 we was storing about 580 billion rows in MyISAM tables.

-

We were not satisfied by performance and maintenance cost:
- Example: page title report loading time, 90% quantile was more than 10 seconds.

-

... After all, everything was converted and deleted.

-
- -
-

Metrage, 2010-2015

-

(Specialized data structure, developed specially for aggregation of data and report generation).

-

To maintain data locality, we need
to constantly reordering data by primary key.

-

We cannot maintain desired order at INSERT time, nor on SELECT time;
we must do it in background.

-

Obviously: we need an LSM-tree!

-
- -
-

Metrage, 2010-2015

-

Metrage: Metrica + Aggregated statistics.

-

We have created custom data structure for that purpose.

-

In 2010, there was no LevelDB.
We just got some insights from article about TokuDB.

-

Metrage is designed for the purpose of realtime data aggregation:
- - row in Metrage table is custom C++ struct with update and merge methods.

-

Example: a row in Metrage table could contain a HyperLogLog.

-

Data in Metrage is aggregated:
- on insertion, in batches;
- during background compaction;
- on the fly, during report generation.

-
- -
-

Metrage, 2010-2015

-

Everything was working fine.
The problem of data locality was solved.
Reports was loading quickly.

-

As of 2015 we stored 3.37 trillion rows in Metrage
and used 39 * 2 servers for this.

-

But we have had just ~50 pre-defined reports.

-

No customization and drill down was possible.

-

The user wants to slice and dice every report by every dimension!

-

 

-

... and we have developed just another custom data structure.

-
- -
-

The report builder, 2010

-

We had quickly made a prototype of so-called "report builder".

-

This was 2010 year. It was just simple specialized column-oriented data structure.

-

It worked fine and we got understanding, what the right direction to go.

-

We need good column-oriented DBMS.

-
- -
-

Why column-oriented?

-

This is how "traditional" row-oriented databases work:

-

-
- -
-

Why column-oriented?

-

And this is how column-oriented databases work:

-

-
- -
-

Why column-oriented?

-

Hypothesis:

-

If we have good enough column-oriented DBMS,
we could store all our data in non-aggregated form
(raw pageviews and sessions) and generate all the reports on the fly,
to allow infinite customization.

-

To check this hypothesis, we started to evaluate existing solutions.

-

MonetDB, InfiniDB, Infobright and so on...

-

No appropriate solutions were exist in 2010.

-
- -
-

ClickHouse

-

As an experimental project, we started to develop
our own column-oriented DBMS: ClickHouse.

-

In 2012 it was in production state.

-

In 2014 we re-lauched Yandex.Metrica as Metrica 2.

-

All data is stored in ClickHouse and in non-aggregated form
and every report is generated on the fly.

-

In Metrika 2 the user could create it's own report with
- - custom dimensions, metrics, filters, user-centric segmentation...
- - and to dig through data to the detail of individual visitors.

-
- -
-

ClickHouse

-

The main target for ClickHouse is query execution speed.

-

In Yandex.Metrika, users could analyze data for their web sites of any volume.

-

Biggest classifieds and e-commerce sites with hundreds millions PV/day are using Yandex.Metrika (e.g. ru.aliexpress.com).

-

In contrast to GA*, in Yandex.Metrika, you could get data reports for large web sites without sampling.

-

As data is processed on the fly, ClickHouse must be able to crunch all that pageviews in sub second time.

-

* in Google Analytics you could get reports without sampling only in "premium" version.

-
- -
-

The main cluster of Yandex.Metrica

- -

* If you want to try ClickHouse, one server or VM is enough.

-
- -
-

ClickHouse

- -
- -
-

Open-source (since June 2016)

-

We think ClickHouse is too good to be used solely by Yandex.

-

We made it open-source. License: Apache 2.0.

-

https://github.com/yandex/ClickHouse/

-
- -
-

Open-source

-

More than 100 companies is already using ClickHouse.

-

Examples: Mail.ru, Cloudflare, Kaspersky...

-
- -
-

When to use ClickHouse

-

For well structured, clean, immutable events.

-

 

-

Click stream. Web analytics. Adv. networks. RTB. E-commerce.

-

Analytics for online games. Sensor and monitoring data. Telecom data.

-
- -
-

When not to use ClickHouse

-

OLTP
ClickHouse doesn't have UPDATE statement and full-featured transactions.

-

Key-Value
If you want high load of small single-row queries, please use another system.

-

Blob-store, document oriented
ClickHouse is intended for vast amount of fine-grained data.

-

Over-normalized data
Better to make up single wide fact table with pre-joined dimensions.

-
- -
-

ClickHouse vs. Spark

-

https://www.percona.com/blog/2017/02/13/clickhouse-new-opensource-columnar-database/

- -
- -
-

ClickHouse vs. PrestoDB

-

Ömer Osman Koçak:

- «When we evaluated ClickHouse the results were great compared to Prestodb. Even though the columnar storage optimizations for ORC and Clickhouse is quite similar, Clickhouse uses CPU and Memory resources more efficiently (Presto also uses vectorized execution but cannot take advantage of hardware level optimizations such as SIMD instruction sets because it's written in Java so that's fair) so we also wanted to add support for Clickhouse for our open-source analytics platform Rakam (https://github.com/rakam-io/rakam)»

-
- -
-

ClickHouse vs. InfiniDB

-

«结论:clickhouse速度更快!»

-

«In conclusion, ClickHouse is faster!»

-

http://verynull.com/2016/08/22/infinidb与clickhouse对比/

-

-
- -
-

Why ClickHouse is so fast?

-

 

-

— we just cannot make it slower.

-

Yandex.Metrica must work.

-
- -
-

Why ClickHouse is so fast?

-

Algorithmic optimizations.

-

MergeTree, locality of data on disk
— fast range queries.

-

Example: uniqCombined function is a combination of three different data structures, used for different ranges of cardinalities.

-

Low-level optimizations.

-

Example: vectorized query execution.

-

Specialization and attention to detail.

-

Example: we have 17 different algorithms for GROUP BY. Best one is selected for your query.

-
- -
-

How to connect to ClickHouse

-

HTTP REST

-

clickhouse-client

-

JDBC

-

 

-

Python, PHP, Go, Perl, Ruby, Node.JS, R, .NET

-

 

-

Web UI: https://github.com/smi2/clickhouse-frontend

-

Redash, Zeppelin, Superset, Grafana, PowerBI - somewhat works

-
- -
-

Community

-

Web site: https://clickhouse.yandex/

-

Google groups: https://groups.google.com/forum/#!forum/clickhouse

-

Maillist: clickhouse-feedback@yandex-team.com

-

Telegram chat: https://telegram.me/clickhouse_en and https://telegram.me/clickhouse_ru (now with 403 members)

-

GitHub: https://github.com/yandex/ClickHouse/

-

 

-

+ meetups. Moscow, Saint-Petersburg... International meetups will be announced this year.

-
- -
-

 

-

Thank you. Questions.

-
- -
-

Bonus

- -
- -
-

ClickHouse vs. typical row-oriented DBMS

-

Itai Shirav:

«I haven't made a rigorous comparison, but I did convert a time-series table with 9 million rows from Postgres to ClickHouse.

-

Under ClickHouse queries run about 100 times faster, and the table takes 20 times less disk space. Which is pretty amazing if you ask me».

-
- -
-

ClickHouse for sensor data

-

-
- -
-

ClickHouse vs. Greenplum

-

-
- -
- - - diff --git a/doc/presentations/evolution/pictures/column_oriented.gif b/doc/presentations/evolution/pictures/column_oriented.gif deleted file mode 100644 index 15f4b12e697..00000000000 Binary files a/doc/presentations/evolution/pictures/column_oriented.gif and /dev/null differ diff --git a/doc/presentations/evolution/pictures/data_locality.png b/doc/presentations/evolution/pictures/data_locality.png deleted file mode 100644 index 7719eb504b6..00000000000 Binary files a/doc/presentations/evolution/pictures/data_locality.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/example_french.png b/doc/presentations/evolution/pictures/example_french.png deleted file mode 100644 index f941291164c..00000000000 Binary files a/doc/presentations/evolution/pictures/example_french.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/greenplum.png b/doc/presentations/evolution/pictures/greenplum.png deleted file mode 100644 index e919a45dadc..00000000000 Binary files a/doc/presentations/evolution/pictures/greenplum.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/infinidb_cn.png b/doc/presentations/evolution/pictures/infinidb_cn.png deleted file mode 100644 index 957c392a448..00000000000 Binary files a/doc/presentations/evolution/pictures/infinidb_cn.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/kaspersky.png b/doc/presentations/evolution/pictures/kaspersky.png deleted file mode 100644 index f8aae1da9ee..00000000000 Binary files a/doc/presentations/evolution/pictures/kaspersky.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/metrika2.png b/doc/presentations/evolution/pictures/metrika2.png deleted file mode 100644 index f53e308e55b..00000000000 Binary files a/doc/presentations/evolution/pictures/metrika2.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/metrika_market_share.png b/doc/presentations/evolution/pictures/metrika_market_share.png deleted file mode 100644 index 9817998acc7..00000000000 Binary files a/doc/presentations/evolution/pictures/metrika_market_share.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/row_oriented.gif b/doc/presentations/evolution/pictures/row_oriented.gif deleted file mode 100644 index 53daa20f322..00000000000 Binary files a/doc/presentations/evolution/pictures/row_oriented.gif and /dev/null differ diff --git a/doc/presentations/evolution/pictures/spark.png b/doc/presentations/evolution/pictures/spark.png deleted file mode 100644 index 3ae61297631..00000000000 Binary files a/doc/presentations/evolution/pictures/spark.png and /dev/null differ diff --git a/doc/presentations/evolution/pictures/yandex_office.jpg b/doc/presentations/evolution/pictures/yandex_office.jpg deleted file mode 100644 index 1a0d20050ce..00000000000 Binary files a/doc/presentations/evolution/pictures/yandex_office.jpg and /dev/null differ diff --git a/doc/presentations/evolution/shower/shower.min.js b/doc/presentations/evolution/shower/shower.min.js deleted file mode 100644 index 449843ac45d..00000000000 --- a/doc/presentations/evolution/shower/shower.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Core for Shower HTML presentation engine - * shower-core v2.0.7, https://github.com/shower/core - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -!function(a){var b,c={NOT_RESOLVED:"NOT_RESOLVED",IN_RESOLVING:"IN_RESOLVING",RESOLVED:"RESOLVED"},d=function(){var l={trackCircularDependencies:!0,allowMultipleDeclarations:!0},m={},n=!1,o=[],p=function(a,d,e){e||(e=d,d=[]);var f=m[a];f||(f=m[a]={name:a,decl:b}),f.decl={name:a,prev:f.decl,fn:e,state:c.NOT_RESOLVED,deps:d,dependents:[],exports:b}},q=function(b,c,d){"string"==typeof b&&(b=[b]),n||(n=!0,k(v)),o.push({deps:b,cb:function(b,f){f?(d||e)(f):c.apply(a,b)}})},r=function(a){var b=m[a];return b?c[b.decl.state]:"NOT_DEFINED"},s=function(a){return!!m[a]},t=function(a){for(var b in a)a.hasOwnProperty(b)&&(l[b]=a[b])},u=function(){var a,b={};for(var c in m)m.hasOwnProperty(c)&&(a=m[c],(b[a.decl.state]||(b[a.decl.state]=[])).push(c));return b},v=function(){n=!1,w()},w=function(){var a,b=o,c=0;for(o=[];a=b[c++];)x(null,a.deps,[],a.cb)},x=function(a,b,c,d){var e=b.length;e||d([]);for(var g,h,i=[],j=function(a,b){if(b)return void d(null,b);if(!--e){for(var c,f=[],g=0;c=i[g++];)f.push(c.exports);d(f)}},k=0,l=e;k ")+'"')},h=function(a){return Error('Declaration of module "'+a.name+'" has already been provided')},i=function(a){return Error('Multiple declarations of module "'+a.name+'" have been detected')},j=function(a,b){for(var c,d=0;c=b[d++];)if(a===c)return!0;return!1},k=function(){var b=[],c=function(a){return 1===b.push(a)},d=function(){var a=b,c=0,d=b.length;for(b=[];c=0&&!b.defaultPrevented();){var d=a[c];d&&(d.context?d.callback.call(d.context,b):d.callback(b)),c--}}}),a(e)}),shower.modules.define("Plugins",["Emitter","util.extend"],function(a,b,c){function d(a){this.events=new b({context:this}),this._showerGlobal=a,this._showerInstances=a.getInited(),this._plugins={},this._instances=[],a.events.on("init",this._onShowerInit,this)}c(d.prototype,{destroy:function(){this._showerGlobal.events.off("init",this._onShowerInit,this),this._plugins=null},add:function(a,b){if(this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" already exist.");return this._requireAndAdd({name:a,options:b}),this},remove:function(a){if(!this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" not found.");return delete this._plugins[a],this.events.emit("remove",{name:a}),this},get:function(a,b){var c,d=this._plugins[a];if(d&&b)for(var e=0,f=this._instances.length;e=0;e--)if(d[e].getId()===a){b=d[e],c=e;break}return{slide:b,index:c}},_onSlideActivate:function(a){window.location.hash=a.get("slide").getId(),this._setTitle()},_onContainerSlideModeChange:function(){this._setTitle(),this.save()},_isSlideMode:function(){return this._shower.container.isSlideMode()},_onPopstate:function(){var a,b=this._shower,c=window.location.hash.substr(1),d=b.player.getCurrentSlide(),e=b.player.getCurrentSlideIndex();this._isSlideMode()&&e===-1?b.player.go(0):e===-1&&""!==window.location.hash&&b.player.go(0),d&&c!==d.getId()&&(a=this._getSlideById(c),b.player.go(a.index))},_setTitle:function(){var a=document.title,b=this._isSlideMode(),c=this._shower.player.getCurrentSlide();if(b&&c){var d=c.getTitle();document.title=d?d+" — "+this._documentTitle:this._documentTitle}else this._documentTitle!==a&&(document.title=this._documentTitle)}}),a(e)}),shower.modules.define("shower.Player",["Emitter","util.bound","util.extend"],function(a,b,c,d){function e(a){this.events=new b({context:this,parent:a.events}),this._shower=a,this._showerListeners=null,this._playerListeners=null,this._currentSlideNumber=-1,this._currentSlide=null,this.init()}d(e.prototype,{init:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this).on("slidemodeenter",this._onSlideModeEnter,this),this._playerListeners=this.events.group().on("prev",this._onPrev,this).on("next",this._onNext,this),document.addEventListener("keydown",c(this,"_onKeyDown"))},destroy:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),document.removeEventListener("keydown",c(this,"_onKeyDown")),this._currentSlide=null,this._currentSlideNumber=null,this._shower=null},next:function(){return this.events.emit("next"),this},prev:function(){return this.events.emit("prev"),this},first:function(){return this.go(0),this},last:function(){return this.go(this._shower.getSlidesCount()-1),this},go:function(a){"number"!=typeof a&&(a=this._shower.getSlideIndex(a));var b=this._shower.getSlidesCount(),c=this._currentSlide;return a!=this._currentSlideNumber&&a=0&&(c&&c.isActive()&&c.deactivate(),c=this._shower.get(a),this._currentSlide=c,this._currentSlideNumber=a,c.isActive()||c.activate(),this.events.emit("activate",{index:a,slide:c})),this},getCurrentSlide:function(){return this._currentSlide},getCurrentSlideIndex:function(){return this._currentSlideNumber},_onPrev:function(){this._changeSlide(this._currentSlideNumber-1)},_onNext:function(){this._changeSlide(this._currentSlideNumber+1)},_changeSlide:function(a){this.go(a)},_onSlideAdd:function(a){var b=a.get("slide");b.events.on("activate",this._onSlideActivate,this)},_onSlideRemove:function(a){var b=a.get("slide");b.events.off("activate",this._onSlideActivate,this)},_onSlideActivate:function(a){var b=a.get("slide"),c=this._shower.getSlideIndex(b);this.go(c)},_onKeyDown:function(a){if(this._shower.isHotkeysEnabled()&&!/^(?:button|input|select|textarea)$/i.test(a.target.tagName))switch(this.events.emit("keydown",{event:a}),a.which){case 33:case 38:case 37:case 72:case 75:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.prev();break;case 34:case 40:case 39:case 76:case 74:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.next();break;case 36:a.preventDefault(),this.first();break;case 35:a.preventDefault(),this.last();break;case 32:this._shower.container.isSlideMode()&&(a.shiftKey?this.prev():this.next())}},_onSlideModeEnter:function(){this._currentSlide||this.go(0)}}),a(e)}),shower.modules.define("shower.slidesParser",["Slide"],function(a,b){function c(a,c){var d=a.querySelectorAll(c);return d=Array.prototype.slice.call(d),d.map(function(a,c){var d=new b(a);return a.id||(a.id=c+1),d})}a(c)}),shower.modules.define("Slide",["shower.defaultOptions","Emitter","Options","slide.Layout","slide.layoutFactory","util.Store","util.extend"],function(a,b,c,d,e,f,g,h){function i(a,b,e){this.events=new c,this.options=new d(b),this.layout=null,this.state=new g({visited:0,index:null},e),this._content=a,this._isVisited=this.state.get("visited")>0,this._isActive=!1,this.init()}h(i.prototype,{init:function(){this.layout="string"==typeof this._content?new f.createLayout({content:this._content}):new e(this._content,this.options),this.layout.setParent(this),this._setupListeners()},destroy:function(){this._clearListeners(),this._isActive=null,this.options=null,this.layout.destroy()},activate:function(){this._isActive=!0;var a=this.state.get("visited");return this.state.set("visited",++a),this.events.emit("activate",{slide:this}),this},deactivate:function(){return this._isActive=!1,this.events.emit("deactivate",{slide:this}),this},isActive:function(){return this._isActive},isVisited:function(){return this.state.get("visited")>0},getTitle:function(){return this.layout.getTitle()},setTitle:function(a){return this.layout.setTitle(a),this},getId:function(){return this.layout.getElement().id},getContent:function(){return this.layout.getContent()},_setupListeners:function(){this.layoutListeners=this.layout.events.group().on("click",this._onSlideClick,this)},_clearListeners:function(){this.layoutListeners.offAll()},_onSlideClick:function(){this.activate(),this.events.emit("click",{slide:this})}}),a(i)}),shower.modules.define("slide.Layout",["Options","shower.defaultOptions","Emitter","util.bound","util.extend"],function(a,b,c,d,e,f){function g(a,e){this.options=new b({title_element_selector:c.slide_title_element_selector,active_classname:c.slide_active_classname,visited_classname:c.slide_visited_classname},e),this.events=new d,this._element=a,this._parent=null,this._parentElement=null,this.init()}f(g.prototype,{init:function(){var a=this._element.parentNode;a?this._parentElement=a:this.setParentElement(a)},destroy:function(){this.setParent(null)},setParent:function(a){this._parent!=a&&(this._clearListeners(),this._parent=a,this._parent&&this._setupListeners(),this.events.emit("parentchange",{parent:a}))},getParent:function(){return this._parent},setParentElement:function(a){a!=this._parentElement&&(this._parentElement=a,a.appendChild(this._element),this.events.emit("parentelementchange",{parentElement:a}))},getParentElement:function(){return this._parentElement},getElement:function(){return this._element},setTitle:function(a){var b=this.options.get("title_element_selector"),c=this._element.querySelector(b);c?c.innerHTML=a:(c=document.createElement(b),c.innerHTML=a,this._element.insertBefore(c,this._element.firstChild))},getTitle:function(){var a=this.options.get("title_element_selector"),b=this._element.querySelector(a);return b?b.textContent:null},getData:function(a){var b=this._element;return b.dataset?b.dataset[a]:b.getAttribute("data-"+a)},getContent:function(){return this._element.innerHTML},_setupListeners:function(){this._slideListeners=this._parent.events.group().on("activate",this._onSlideActivate,this).on("deactivate",this._onSlideDeactivate,this),this._element.addEventListener("click",e(this,"_onSlideClick"),!1)},_clearListeners:function(){this._slideListeners&&this._slideListeners.offAll(),this._element.removeEventListener("click",e(this,"_onSlideClick"))},_onSlideActivate:function(){this._element.classList.add(this.options.get("active_classname"))},_onSlideDeactivate:function(){var a=this._element.classList;a.remove(this.options.get("active_classname")),a.add(this.options.get("visited_classname"))},_onSlideClick:function(){this.events.emit("click")}}),a(g)}),shower.modules.define("slide.layoutFactory",["slide.Layout","util.extend"],function(a,b,c){var d={};c(d,{createLayout:function(a){a=a||{};var e=d._createElement(c({content:"",contentType:"slide"},a));return new b(e)},_createElement:function(a){var b=document.createElement("section");return b.innerHTML=a.content,b.classList.add(a.contentType),b}}),a(d)}),shower.modules.define("util.bound",function(a){function b(a,b){return a["__bound_"+b]||(a["__bound_"+b]=a[b].bind(a))}a(b)}),shower.modules.define("util.extend",function(a){function b(a){if(!a)throw new Error("util.extend: Target not found");return"undefined"==typeof Object.assign?c.apply(null,arguments):Object.assign.apply(null,arguments)}function c(a){for(var b=1,c=arguments.length;b0&&(a.preventDefault(),this.prev())},_go:function(){for(var a=0,b=this._elements.length;awindow.innerWidth/2?c.player.next():c.player.prev()),d||f.activate())},_onTouchMove:function(a){this._shower.container.isSlideMode()&&a.preventDefault()},_getSlideByElement:function(a){for(var b=this._shower.getSlides(),c=null,d=0,e=b.length;d` of your presentation. - -## PDF - -Ribbon could be exported to PDF by printing it from the list mode in Chrome or Opera browsers. See [printing documentation](https://github.com/shower/shower/blob/master/docs/printing-en.md) for more options. - -## Development - -If you want to adjust theme for your needs: - -1. Fork this repository and clone it to your local machine. -2. Install dependencies: `npm install`. -3. Start a local server with watcher: `npm run dev` or just `gulp` if you have it installed globally. -4. Edit your files and see changes in the opened browser. - -To take part in Ribbon development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request. - ---- -Licensed under [MIT License](LICENSE.md). diff --git a/doc/presentations/evolution/shower/themes/ribbon/index.html b/doc/presentations/evolution/shower/themes/ribbon/index.html deleted file mode 100644 index 98850917e05..00000000000 --- a/doc/presentations/evolution/shower/themes/ribbon/index.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - Ribbon theme for Shower - - - - - - -
-

Presentation Title

-

Yours Truly, Famous Inc.

-
-
-

Slide Header

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch letterpress.

-

Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.

-

Echo Park 8-bit sustainable umami deep v Kickstarter.

-
-
-

Inline Elements

-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-
-
-

Quotes

-
-

Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.

-
-
-
-

Post-ironic fashion axe flexitarian, Tonx narwhal messenger bag Tumblr. Portland gentrify deep v kale chips literally.

-
-
Yours Truly
-
-
-
-

Nested Lists

-
    -
  1. Literally viral vegan, ugh drinking vinegar photo booth
  2. -
  3. Wes Anderson chillwave Marfa pour-over Etsy banh mi
  4. -
  5. Ethnic polaroid lo-fi iPhone ennui -
      -
    • Yr wayfarers before they sold out Kickstarter asymmetrical
    • -
    • Irony flexitarian readymade quinoa, kogi bespoke meggings narwhal
    • -
    • Skateboard Etsy twee artisan Echo Park
    • -
    -
  6. -
  7. Tonx kitsch fingerstache readymade, retro single-origin coffee
  8. -
-
-
-

Block Lists

-
    -
  • Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack.
  • -
  • Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.
  • -
  • Leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical paleo you probably haven’t heard of.
  • -
-
-
-

Latin and Cyrillic List Bullets

-
    -
  • Occupy locavore blog, mustache you probably haven't heard of them
  • -
  • Skateboard pork belly aesthetic hoodie selfies brunch
  • -
  • Food truck gluten-free disrupt Portland
  • -
-
    -
  • Helvetica narwhal drinking vinegar chillwave, post-ironic ennui
  • -
  • Cray pug paleo retro, Echo Park narwhal Wes Anderson
  • -
  • Disrupt Williamsburg fixie, shabby chic bicycle rights hashtag kogi
  • -
-
-
-

Two Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Three Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Simple Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Striped Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Plain Code Listing

-
<html lang="en">
-<head> <!--Comment-->
-    <title>Shower</title>
-    <meta charset="UTF-8">
-    <link rel="stylesheet" href="screen.css">
-    <script src="script.js"></script>
-</head>
-
-
-

Numbered Code Listing

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Lines

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Hidden Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Grid Slide

-
-
-

White Slide

-
-
-

Black Slide

-
-
-

Shout

-
-
-

Multiline
Shout

-
-
-

Linked Shout

-
-
-

Growing Shout

-
-
-

Shrinking Shout

-
-
-
- -
Copyright © 2016 Yours Truly, Famous Inc.
-
-
-
- -
-
- -
-
- - - - - - - - - -
-
-

Timer

-
-
-

List Navigation

-
    -
  1. Ennui keffiyeh thundercats
  2. - - - - -
-

Before they sold out master

-
-
- - - - - diff --git a/doc/presentations/evolution/shower/themes/ribbon/pictures/canvas.png b/doc/presentations/evolution/shower/themes/ribbon/pictures/canvas.png deleted file mode 100644 index 6ddd30154f2..00000000000 Binary files a/doc/presentations/evolution/shower/themes/ribbon/pictures/canvas.png and /dev/null differ diff --git a/doc/presentations/evolution/shower/themes/ribbon/pictures/exact.png b/doc/presentations/evolution/shower/themes/ribbon/pictures/exact.png deleted file mode 100644 index b27251c57cb..00000000000 Binary files a/doc/presentations/evolution/shower/themes/ribbon/pictures/exact.png and /dev/null differ diff --git a/doc/presentations/evolution/shower/themes/ribbon/pictures/square.png b/doc/presentations/evolution/shower/themes/ribbon/pictures/square.png deleted file mode 100644 index 62cb2384a5f..00000000000 Binary files a/doc/presentations/evolution/shower/themes/ribbon/pictures/square.png and /dev/null differ diff --git a/doc/presentations/evolution/shower/themes/ribbon/pictures/tall.png b/doc/presentations/evolution/shower/themes/ribbon/pictures/tall.png deleted file mode 100644 index fbc9f09a2ab..00000000000 Binary files a/doc/presentations/evolution/shower/themes/ribbon/pictures/tall.png and /dev/null differ diff --git a/doc/presentations/evolution/shower/themes/ribbon/pictures/wide.png b/doc/presentations/evolution/shower/themes/ribbon/pictures/wide.png deleted file mode 100644 index 1e83b0ac7ad..00000000000 Binary files a/doc/presentations/evolution/shower/themes/ribbon/pictures/wide.png and /dev/null differ diff --git a/doc/presentations/evolution/shower/themes/ribbon/styles/presentation_links.html b/doc/presentations/evolution/shower/themes/ribbon/styles/presentation_links.html deleted file mode 100644 index 74981d8eac5..00000000000 --- a/doc/presentations/evolution/shower/themes/ribbon/styles/presentation_links.html +++ /dev/null @@ -1,2 +0,0 @@ -http://www.slideshare.net/AlexeyMilovidov1/clickhouse-69616890/AlexeyMilovidov1/clickhouse-69616890 -file:///home/milovidov/work/Presentation/shower/index.html#cover diff --git a/doc/presentations/evolution/shower/themes/ribbon/styles/screen-16x10.css b/doc/presentations/evolution/shower/themes/ribbon/styles/screen-16x10.css deleted file mode 100644 index 5ea77cc9961..00000000000 --- a/doc/presentations/evolution/shower/themes/ribbon/styles/screen-16x10.css +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8"; - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot); - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/pUcnOdRwl83MvPPzrNomhyletnA.woff) format('woff'), - url(https://yastatic.net/adv-www/_/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg#YandexSansTextWeb-Bold) format('svg'); - font-weight: 700; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot); - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff) format('woff'), - url(https://yastatic.net/adv-www/_/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/gwyBTpxSwkFCF1looxqs6JokKls.svg#YandexSansTextWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot); - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff) format('woff'), - url(https://yastatic.net/adv-www/_/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/EKLr1STNokPqxLAQa_RyN82pL98.svg#YandexSansTextWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot); - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff) format('woff'), - url(https://yastatic.net/adv-www/_/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg#YandexSansDisplayWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot); - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/40vXwNl4eYYMgteIVgLP49dwmfc.woff) format('woff'), - url(https://yastatic.net/adv-www/_/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg#YandexSansDisplayWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - -*,::after,::before{box-sizing:border-box} -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline} -article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block} -.caption p,body{line-height:1} -p {line-height: 1} -ol,ul{list-style:none} -blockquote,q{quotes:none} -blockquote::after,blockquote::before,q::after,q::before{content:none} -table{border-collapse:collapse;border-spacing:0} -a{text-decoration:none} -@page{margin:0;size:1024px 640px} -.shower{color:#000;counter-reset:slide;font:25px/2 Yandex Sans Display Web,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none} -@media print{.shower{text-rendering:geometricPrecision} -} -.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90} -@media (min-width:1174px){.caption{font-size:50px} -} -@media (min-width:2348px){.caption{font-size:100px} -} -.caption h1{padding-bottom:.15em;font:1em/2 Yandex Sans Display Web,sans-serif} -.caption p{font-size:.6em} -.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60} -.slide{position:relative;z-index:1;overflow:hidden;padding:20px 100px 0;width:1024px;height:640px;background:#fff;font-size:25px} - -/*.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}*/ - -.slide h1{vertical-align:middle; color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide h2{margin-bottom:34px;color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide p{margin-bottom:1em} -.slide p.note{color:#979a9e} -.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2} -.slide b,.slide strong{font-weight:700} -.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic} -.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em} -.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace} -.slide mark{background:#fafaa2} -.slide sub,.slide sup{position:relative;line-height:0;font-size:75%} -.slide sub{bottom:-.25em} -.slide sup{top:-.5em} -.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'} -.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700} -.slide ol,.slide ul{margin-bottom:0em;counter-reset:list} -.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em} -.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right} -.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em} -.slide ul>li::before{padding-right:.5em;content:'•'} -.slide ul>li:lang(ru)::before{content:'—'} -.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."} -.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)} -.slide table td:first-child,.slide table th:first-child{padding-left:96px} -.slide table td:last-child,.slide table th:last-child{padding-right:96px} -.slide table th{text-align:left;font-weight:700} -.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x} -.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)} -.slide table.striped tr>*{background-image:none} -.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal} -.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4} -.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)} -.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."} -.slide pre mark{position:relative;z-index:-1;margin:0 -.3em} -.slide pre mark.important{background:#c00;color:#fff} -.slide pre .comment{color:#999} -.slide footer{position:absolute;right:0;bottom:-640px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s} -.slide footer mark{background:rgba(255,255,255,.8)} -.slide:hover>footer{bottom:0} -.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated} -@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto} -} -.slide.black{background-color:#000} -.slide.black::after,.slide.white::after{visibility:hidden} -.slide.white{background-color:#fff} -.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} -.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2} -.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3} -.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} -.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x} -.slide .cover{z-index:-1;max-width:100%;max-height:100%} -.slide .cover.w,.slide .cover.width{width:100%;max-height:none} -.slide .cover.h,.slide .cover.height{height:100%;max-width:none} -.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)} -.slide .cover+figcaption.white{color:#fff} -.slide .cover+figcaption a{color:currentcolor} -.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} -.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none} -.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} -.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)} -.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0} -.slide .place.r,.slide .place.right{right:0;left:auto} -.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0} -.slide .place.l,.slide .place.left{left:0} -.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)} -.progress[style*='100%']{padding-left:10px} -.badge,.badge a,.progress{position:absolute} -.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden} -@media (min-width:1174px){.badge{font-size:20px} -} -@media (min-width:2348px){.badge{font-size:40px} -} -.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)} -.region{display:none} -@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)} -} -@media screen and (min-width:1174px){.shower.list{padding-top:50px} -} -@media screen and (min-width:2348px){.shower.list{padding-top:100px} -} -@media screen{.shower.list .caption{display:block} -.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -455px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)} -} -@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -270px 50px;-webkit-transform:scale(.5);transform:scale(.5)} -} -@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)} -} -@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide *{pointer-events:none} -.shower.list .badge,.shower.list .slide footer{display:block} -.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-320px 0 0 -512px;width:1024px;height:640px;background:#000} -.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden} -.shower.full .slide:target{margin:0;visibility:visible} -.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0} -.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)} -.shower.full .slide .next{visibility:hidden} -.shower.full .slide .next.active{visibility:visible} -.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform} -.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)} -.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)} -.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)} -.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)} -.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block} -} diff --git a/doc/presentations/evolution/shower/themes/ribbon/styles/screen-4x3.css b/doc/presentations/evolution/shower/themes/ribbon/styles/screen-4x3.css deleted file mode 100644 index 6648b972c30..00000000000 --- a/doc/presentations/evolution/shower/themes/ribbon/styles/screen-4x3.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8";@font-face{font-family:PT Sans;src:url(../fonts/pt-sans-regular.woff) format("woff")}@font-face{font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold.woff) format("woff")}@font-face{font-style:italic;font-family:PT Sans;src:url(../fonts/pt-sans-italic.woff) format("woff")}@font-face{font-style:italic;font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold-italic.woff) format("woff")}@font-face{font-family:PT Sans Narrow;font-weight:700;src:url(../fonts/pt-sans-narrow-bold.woff) format("woff")}@font-face{font-family:PT Mono;src:url(../fonts/pt-mono-regular.woff) format("woff")}*,::after,::before{box-sizing:border-box}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}.caption p,body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::after,blockquote::before,q::after,q::before{content:none}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}@page{margin:0;size:1024px 768px}.shower{color:#000;counter-reset:slide;font:25px/2 PT Sans,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none}@media print{.shower{text-rendering:geometricPrecision}}.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90}@media (min-width:1174px){.caption{font-size:50px}}@media (min-width:2348px){.caption{font-size:100px}}.caption h1{padding-bottom:.15em;font:700 1em/1 PT Sans Narrow,sans-serif}.caption p{font-size:.6em}.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60}.slide{position:relative;z-index:1;overflow:hidden;padding:106px 100px 0;width:1024px;height:768px;background:#fff;font-size:25px}.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}.slide h2{margin-bottom:34px;color:#585a5e;font:700 50px/1 PT Sans Narrow,sans-serif}.slide p{margin-bottom:1em}.slide p.note{color:#979a9e}.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2}.slide b,.slide strong{font-weight:700}.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic}.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em}.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace}.slide mark{background:#fafaa2}.slide sub,.slide sup{position:relative;line-height:0;font-size:75%}.slide sub{bottom:-.25em}.slide sup{top:-.5em}.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'}.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700}.slide ol,.slide ul{margin-bottom:1em;counter-reset:list}.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em}.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right}.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em}.slide ul>li::before{padding-right:.5em;content:'•'}.slide ul>li:lang(ru)::before{content:'—'}.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."}.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)}.slide table td:first-child,.slide table th:first-child{padding-left:96px}.slide table td:last-child,.slide table th:last-child{padding-right:96px}.slide table th{text-align:left;font-weight:700}.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x}.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)}.slide table.striped tr>*{background-image:none}.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal}.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)}.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."}.slide pre mark{position:relative;z-index:-1;margin:0 -.3em}.slide pre mark.important{background:#c00;color:#fff}.slide pre .comment{color:#999}.slide footer{position:absolute;right:0;bottom:-768px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s}.slide footer mark{background:rgba(255,255,255,.8)}.slide:hover>footer{bottom:0}.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto}}.slide.black{background-color:#000}.slide.black::after,.slide.white::after{visibility:hidden}.slide.white{background-color:#fff}.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2}.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3}.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x}.slide .cover{z-index:-1;max-width:100%;max-height:100%}.slide .cover.w,.slide .cover.width{width:100%;max-height:none}.slide .cover.h,.slide .cover.height{height:100%;max-width:none}.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)}.slide .cover+figcaption.white{color:#fff}.slide .cover+figcaption a{color:currentcolor}.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none}.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0}.slide .place.r,.slide .place.right{right:0;left:auto}.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0}.slide .place.l,.slide .place.left{left:0}.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)}.progress[style*='100%']{padding-left:10px}.badge,.badge a,.progress{position:absolute}.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden}@media (min-width:1174px){.badge{font-size:20px}}@media (min-width:2348px){.badge{font-size:40px}}.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.region{display:none}@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)}}@media screen and (min-width:1174px){.shower.list{padding-top:50px}}@media screen and (min-width:2348px){.shower.list{padding-top:100px}}@media screen{.shower.list .caption{display:block}.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -551px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)}}@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -334px 50px;-webkit-transform:scale(.5);transform:scale(.5)}}@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)}}@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)}.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)}.shower.list .slide *{pointer-events:none}.shower.list .badge,.shower.list .slide footer{display:block}.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-384px 0 0 -512px;width:1024px;height:768px;background:#000}.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden}.shower.full .slide:target{margin:0;visibility:visible}.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0}.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)}.shower.full .slide .next{visibility:hidden}.shower.full .slide .next.active{visibility:visible}.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)}.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)}.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)}.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)}.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block}} \ No newline at end of file diff --git a/doc/presentations/group_by/LICENSE.md b/doc/presentations/group_by/LICENSE.md deleted file mode 100644 index bd3449d3576..00000000000 --- a/doc/presentations/group_by/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License - -Copyright © 2010–2015 Vadim Makeev, http://pepelsbey.net/ - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -# Лицензия MIT - -Copyright © 2010–2015 Вадим Макеев, http://pepelsbey.net/ - -Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: - -Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. - -ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. diff --git a/doc/presentations/group_by/README.md b/doc/presentations/group_by/README.md deleted file mode 100644 index 4c555351be1..00000000000 --- a/doc/presentations/group_by/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# Shower Presentation Template [![Build Status](https://travis-ci.org/shower/shower.svg?branch=master)](https://travis-ci.org/shower/shower) - -Shower logo - -> Shower ['ʃəuə] noun. A person or thing that shows. - -1. Built on HTML, CSS and vanilla JavaScript -2. Works in all modern browsers -3. Themes are separated from engine -4. Modular and extensible -5. Fully keyboard accessible -6. Printable to PDF - -[See it in action](http://shwr.me/). Includes [Ribbon](https://github.com/shower/ribbon/) and [Material](https://github.com/shower/material/) themes, and [core](https://github.com/shower/core/) with plugins. - -Follow [@shower_me](https://twitter.com/shower_me) for support and updates, [file an issue](https://github.com/shower/shower/issues/new) if you have any. - -## Quick Start - -1. Download and unzip [template archive](http://shwr.me/shower.zip) -2. Open `index.html` and start creating your presentation - -## Advanced - -1. [Fork](https://github.com/shower/shower/fork) this repository -2. Go to fork setting and rename it: `shower` → `my-slides` -2. Clone it to your computer: `git clone git@github.com:username/my-slides.git` -3. Go to `my-slides` folder and install dependencies: `npm install` -4. Start creating your presentation - -Once you’re done you can build a clean copy of your slides: - - npm run prepare - -And you’ll find your presentation in `prepared` folder with only needed files in it. You can also run `npm run archive` to get the same files in `archive.zip`. But there’s more! You can easily publish your presentation online by running: - - npm run publish - -And you’ll have your slides published on `http://username.github.io/my-slides/`. - -## Usage Examples - -- [Installable Web Apps](http://pepelsbey.net/pres/web-apps/) -- [Clear and Sharp](http://pepelsbey.net/pres/clear-and-sharp/) -- [CSS Management](http://pepelsbey.net/pres/knife-train/) -- [Push it!](http://pepelsbey.net/pres/push-it/) -- [Pre-fixes](http://pepelsbey.net/pres/pre-fixes/) -- [Web In Curves](http://pepelsbey.net/pres/web-in-curves/) -- [Sense Coding](http://pepelsbey.net/pres/sense-coding/) - -## Browser Support - -Latest stable versions of Chrome, Internet Explorer, Firefox, Opera and Safari are supported. - -## Contributing - -You’re always welcome to contribute. Fork project, make changes and send it as pull request. But it’s better to file an [issue](https://github.com/shower/shower/issues) with your idea first. Read [contributing rules](CONTRIBUTING.md) for more details. - -Main contributors in historical order: [pepelsbey](https://github.com/pepelsbey), [jahson](https://github.com/jahson), [miripiruni](https://github.com/miripiruni), [kizu](https://github.com/kizu), [artpolikarpov](https://github.com/artpolikarpov), [tonyganch](https://github.com/tonyganch), [zloylos](https://github.com/zloylos). - ---- -Licensed under [MIT License](LICENSE.md). diff --git a/doc/presentations/group_by/index.html b/doc/presentations/group_by/index.html deleted file mode 100644 index 2298b2ac38a..00000000000 --- a/doc/presentations/group_by/index.html +++ /dev/null @@ -1,559 +0,0 @@ - - - - Параллельный и распределённый GROUP BY - - - - - - -
-

Параллельный и распределённый GROUP BY

-
- -
-

Параллельный и распределённый GROUP BY

-
- -
-

Обо мне

-

Алексей, разработчик ClickHouse.

-

С 2008 занимался движком обработки данных в Яндекс.Метрике.

-
- -
-

 

-

ClickHouse — это аналитическая СУБД.

-

Один запрос — много данных на входе, мало на выходе.

-

Данные нужно агрегировать налету.

-
- -
-

Метрика 2.0

- -
- -
-

Пример запроса

-

SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u
- FROM hits
- WHERE MobilePhoneModel != ''
- GROUP BY MobilePhoneModel
- ORDER BY u DESC

-
- -
-

 

-

Чтобы быстро обрабатывать запросы, данные необходимо:

-
    -
  • быстро читать;
  • -
  • быстро считать.
  • -
-

 

-

Конвейер выполнения запроса:

-

— фильтрация, JOIN, агрегация, сортировка...

-
- -
-

Как тестировать производительность?

-

Бенчмарки должны быть:

-
    -
  • на реальных данных;
  • -
  • на разных наборах данных, покрывающих разные кейсы;
  • -
  • воспроизводимые;
  • -
  • автоматизированные.
  • -
-
- -
-

Пример бенчмарка (не лучшего)

-
/** Выполнять так:
-for file in MobilePhoneModel PageCharset Params URLDomain UTMSource Referer URL Title; do
- for size in 30000 100000 300000 1000000 5000000; do
-  echo
-  BEST_METHOD=0
-  BEST_RESULT=0
-  for method in {1..10}; do
-   echo -ne $file $size $method '';
-   TOTAL_ELEMS=0
-   for i in {0..1000}; do
-    TOTAL_ELEMS=$(( $TOTAL_ELEMS + $size ))
-    if [[ $TOTAL_ELEMS -gt 25000000 ]]; then break; fi
-    ./hash_map_string_3 $size $method < ${file}.bin 2>&1 |
-     grep HashMap | grep -oE '[0-9\.]+ elem';
-   done | awk -W interactive '{ if ($1 > x) { x = $1 }; printf(".") } END { print x }' |
-    tee /tmp/hash_map_string_3_res;
-   CUR_RESULT=$(cat /tmp/hash_map_string_3_res | tr -d '.')
-   if [[ $CUR_RESULT -gt $BEST_RESULT ]]; then
-    BEST_METHOD=$method
-    BEST_RESULT=$CUR_RESULT
-   fi;
-  done;
-  echo Best: $BEST_METHOD - $BEST_RESULT
- done;
-done
-*/
-
- -
-

Агрегация

-
- -
-

Одна машина, одно ядро

-
- -
-

Плохой способ

-

Читаем данные в массив; сортируем по ключу; -идём по группам ключей и считаем агрегатные функции.

-

Достоинства:

-

+ простота интерфейса агрегатных функций; -+ возможность более эффективной реализации агрегатных функций; -+ можно запускать произвольные скрипты для reduce в режиме streaming.

-

Недостатки:

-

− пусть N — общее число данных, а M — количество ключей; -Отвратительно работает при N > M — в типичном случае. -Тратится O(N) оперативки на промежуточные данные вместо O(M).

-
- -
-

Хороший способ

-

Читаем данные, кладём в ассоциативный массив

-

key tuple -> states of aggregate functions

-

обновляем состояния агрегатных функций.

-
- -
-

Какой ассоциативный массив?

-

Lookup-таблица. Хэш-таблица.

-

Бинарное дерево. Skip-лист. B-дерево.

-

Трай. Трай+хэш-таблица...

-
- -
-

Бинарное дерево

-

− слишком большой оверхед на элемент;

-

− отвратительная кэш-локальность;

-

− вообще тормозит.

-
- -
-

Skip-лист. Трай. B-дерево...

-

− вообще для другой задачи;

-
- -
-

Lookup-таблица

-

+ прекрасно для агрегации по числовым ключам не более ~16 бит;

-

− не подходит для чуть более сложных случаев.

-
- -
-

Хэш-таблица

-

+ моя любимая структура данных;

-

− много деталей.

-
- -
-

Трай+хэш-таблица

-

+ иногда кое что в этом есть, см. далее;

-
- -
-

Одна машина, много ядер

-
- -
-

1. Тривиальный способ

- -

Разные потоки читают разные данные по мере возможности. -Агрегируют независимо в свои локальные хэш-таблицы. -Когда все данные прочитаны, мержим все хэш-таблицы в одну. -Например, идём по всем локальным хэш-таблицам кроме первой - и перекладываем всё в первую. - -Фаза чтения данных и предварительной агрегации распараллеливается. -Фаза мержа выполняется последовательно. - -Пусть N — общее число данных, а M — количество ключей. -O(M) работы выполняется последовательно - и при большом M (кардинальность GROUP BY) - работа плохо распараллеливается. - -Достоинства: тривиально. - -Недостатки: не масштабируется при большой кардинальности.

-
- - -
-

2. Partitioning способ

- -

Для каждого блока данных, выполняем агрегацию в две стадии: - -Стадия 1. -Разные потоки будут обрабатывать разные куски блока, какие успеют. -В каждом потоке, с помощью отдельной хэш-функции, - хэшируем ключ в номер потока и запоминаем его. - - hash: key -> bucket_num - -Стадия 2. -Каждый поток идёт по всему блоку данных - и берёт для агрегации только строки с нуждым номером корзины. - -Модификация: можно всё в одну стадию — тогда каждый поток -будет вычислять хэш-функцию от всех строк заново: - подходит, если это дёшево. -

- -
-

-Достоинства: -+ хорошо масштабируется при большой кардинальности - и равномерном распределении ключей; -+ идейная простота. - -Недостатки: -− если объём данных распределён неравномерно по ключам, - то стадия 2 плохо масштабируется. -Это типичный случай. -Почти всегда объём данных по ключам распределён по power law. - -Ещё недостатки: -− если размер блока маленький, то получается слишком - мелко-гранулированная многопоточность: - большой оверхед на синхронизацию; -− если размер блока большой, то плохая кэш-локальность; -− на второй стадии, часть memory bandwidth умножается на число потоков; -− нужно вычислять ещё одну хэш-функцию, - она должна быть независима от той, что в хэш-таблице;

-
- - -
-

3. Параллельный мерж хэш-таблиц

- -

Отресайзим полученные в разных потоках хэш-таблицы к одному размеру. -Разобъём их неявно на разные подмножества ключей. -В разных потоках будем мержить соответствующие - подмножества ключей хэш-таблиц. - -Рисунок на доске. - -Недостаток: -− очень сложный код.

-
- - -
-

4. Ordered мерж хэш-таблиц

- -

Для open addressing linear probing хэш-таблиц, или для chaining хэш-таблиц, -данные в хэш-таблице расположены почти упорядоченно -по остатку от деления хэш-функции на размер хэш-таблицы -— с точностью до цепочек разрешения коллизий. - -Отресайзим полученные в разных потоках хэш-таблицы к одному размеру. -Сделаем ordered iterator, который будет - перебирать данные в хэш-таблице в фиксированном порядке. - -Объём работы на итерирование: - количество цепочек разрешения коллизий * средний квадрат длин цепочек. - -Сделаем merging iterator, который с помощью heap (priority queue) - будет перебирать все хэш-таблицы разом. -

- -
-

Достоинства: - -+ не нужно никуда перекладывать элементы: мерж делается inplace. - -+ бонус: подходит для внешней памяти. - - -Недостатки: - -− отвратительно сложный код; - -− для open addressing linear probing хэш-таблиц, - средний квадрат длин цепочек разрешения коллизий слишком большой; - -− priority queue тормозит; - -− стадия мержа не распараллеливается* - - -* — можно совместить с предыдущим способом.

-
- - -
-

5. Robin Hood ordered мерж хэш-таблиц

- -

Если использовать Robin Hood хэш-таблицу, то данные -(за исключением O(1) граничных цепочек разрешения коллизий) -будут полностью упорядочены -по остатку от деления хэш-функции на размер хэш-таблицы. - -Достоинства: -+ вроде бы красивый алгоритм. -+ бонус: подходит для внешней памяти. - -Недостатки: -− вынуждает использовать robin-hood probing; -− priority queue тормозит; -− стадия мержа не распараллеливается*

-
- - -
-

6. Shared хэш-таблица под mutex-ом

- -

Достоинства: очень просто. - -Недостатки: отрицательная масштабируемость.

-
- - -
-

7. Много мелких хэш-таблиц под разными mutex-ами

- -

В какую класть — выбирается с помощью отдельной хэш-функции. - -Недостатки: - -− в типичном случае данные распределены сильно неравномерно, - и потоки будут конкурировать на одной горячей корзине. - -− в случае маленькой хэш-таблицы, слишком тормозит. - -Достоинства: если данные почему-то распределены равномерно, - то кое-как масштабируется.

-
- - -
-

8. Shared хэш-таблица и в каждой ячейке spin-lock

- -

Недостатки: - -− spin-lock — это очень опасно; - очень сложно тестировать производительность; - вы обязательно сделаете отстой. - -− в типичном случае данные распределены сильно неравномерно, - и потоки будут конкурировать на одной горячей ячейке.

-
- - -
-

9. Lock free shared хэш-таблица

- -

Недостатки: - -− lock free хэш-таблицы либо нельзя ресайзить, либо они очень сложные; - -− в типичном случае данные распределены сильно неравномерно, - и потоки будут конкурировать на одной горячей ячейке: - false sharing, тормоза. - -− сложный код, много инструкций, всё тормозит; - -− я вообще недолюбливаю lock-free алгоритмы.

-
- - -
-

10. Shared хэш-таблица + thread local хэш-таблицы

- -

Пытаемся положить в shared хэш-таблицу путём блокирования ячейки; -если ячейка уже заблокирована — кладём к локальную хэш-таблицу. - -Тогда горячие ключи попадут в локальные хэш-таблицы. -Локальные хэш-таблицы будут маленькими. -В конце мержим все локальные хэш-таблицы в глобальную. - -Дополнения: можно сначала смотреть - на наличие ключа в локальной хэш-таблице. - -Достоинства: -+ отлично масштабируется; -+ сравнительно простая реализация. - -Недостатки: -− много лукапов, много инструкций — в целом довольно медленно. - -Даже не смотря на то, что thread local хэш-таблица - зачастую ещё и cache local.

-
- - -
-

11. Two-level хэш-таблица

- -

На первой стадии, в каждом потоке независимо -кладём данные в свои num_buckets = 256 хэш-таблиц, -хранящих разные ключи. - -В какую из них класть (номер корзины) -определяется другой хэш-функцией, -либо отдельным байтом хэш-функции. - -Имеем num_threads * num_buckets хэш-таблиц. - -На второй стадии мержим состояния -num_threads * num_buckets хэш-таблиц -в одни num_buckets хэш-таблиц, -распараллеливая мерж по bucket-ам. -

- -
-

-Достоинства: - -+ отлично масштабируется; -+ простота реализации; - -+ бонус: ресайзы хэш-таблиц амортизируются; - -+ бонус: нахаляву получаем в результате partitioning, - который полезен для других стадий конвейера. - -+ бонус: подходит для внешней памяти. - -Недостатки: - -− при большой кардинальности, во время мержа - делается до такого же объёма работ как на первой стадии; - -− при маленькой кардинальности, - слишком много отдельных хэш-таблиц; - -− при маленькой кардинальности, - работает несколько медленнее тривиального способа;

-
- - -
-

12. Тривиальный + two-level хэш-таблица

- -

Используем тривиальный способ. - -Когда разных ключей много, конвертируем в two-level.

-

-Именно такой способ используется в ClickHouse :) -

-
- - -
-

Много машин, много ядер

- -

На разных машинах расположены части данных, -которые надо обработать. - -Отличия от shared memory: - -— почти отсутствует возможность work stealing; -— нужно явно передавать данные по сети.

-
- - -
-

1. Тривиальный способ

- -

Передаём промежуточные результаты на сервер-инициатор запроса. -Последовательно кладём всё в одну хэш-таблицу. - -Достоинства: - -+ тривиально; -+ хорошо масштабируется при маленькой кардинальности. - -Недостатки: - -− при большой кардинальности не масштабируется; -− требуется оперативка на весь результат.

-
- - -
-

2. Ordered merge

- -

Передаём промежуточные результаты на сервер-инициатор запроса -в заданном порядке. Мержим. - -Достоинства: -+ тратится O(1) оперативки; - -Недостатки: -− при большой кардинальности не масштабируется; -− мерж сортированных потоков (heap) — это медленная операция; -− требуется либо сортировать результаты на удалённых серверах, - либо использовать один из тех fancy алгоритмов выше.

-
- - -
-

3. Partitioned merge

- -

Передаём промежуточные результаты на сервер-инициатор запроса, -разбитыми на отдельные согласованные корзины-партиции, -в заданном порядке корзин. - -Мержим по одной или по несколько корзин одновременно. - -Достоинства: -+ тратится до в num_buckets раз меньше оперативки, чем размер результата; -+ можно легко распараллелить, мержа сразу несколько корзин - — отлично масштабируется по ядрам. - -Недостатки: -− мерж делается на одном сервере — инициаторе запроса - — эта стадия не масштабируется по серверам.

- -

-Именно такой способ используется в ClickHouse :) -

-
- - -
-

4. Reshuffle + partitioned merge

- -

На удалённых серверах получаем промежуточные результаты, -разбитые на согласованные партиции. - -Затем передаём партиции между серверами так, -чтобы на разных серверах были разные партиции, -а данные одной партиции оказались на одном сервере. - -Мержим на всех серверах параллельно, да ещё и используя многие ядра. - -Достоинства: -+ прекрасно масштабируется; -+ при INSERT SELECT, результат можно - вовсе не передавать на сервер-инициатор, - а сразу сохранить в распределённую таблицу на кластере. - -Недостатки: -− сложная координация серверов;

-
- - -
-

Всё

- -

Можно задавать вопросы.

-
- - - -
- - - diff --git a/doc/presentations/group_by/pictures/metrika2.png b/doc/presentations/group_by/pictures/metrika2.png deleted file mode 100644 index 3ee37e98fc6..00000000000 Binary files a/doc/presentations/group_by/pictures/metrika2.png and /dev/null differ diff --git a/doc/presentations/group_by/shower/shower.min.js b/doc/presentations/group_by/shower/shower.min.js deleted file mode 100644 index 449843ac45d..00000000000 --- a/doc/presentations/group_by/shower/shower.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Core for Shower HTML presentation engine - * shower-core v2.0.7, https://github.com/shower/core - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -!function(a){var b,c={NOT_RESOLVED:"NOT_RESOLVED",IN_RESOLVING:"IN_RESOLVING",RESOLVED:"RESOLVED"},d=function(){var l={trackCircularDependencies:!0,allowMultipleDeclarations:!0},m={},n=!1,o=[],p=function(a,d,e){e||(e=d,d=[]);var f=m[a];f||(f=m[a]={name:a,decl:b}),f.decl={name:a,prev:f.decl,fn:e,state:c.NOT_RESOLVED,deps:d,dependents:[],exports:b}},q=function(b,c,d){"string"==typeof b&&(b=[b]),n||(n=!0,k(v)),o.push({deps:b,cb:function(b,f){f?(d||e)(f):c.apply(a,b)}})},r=function(a){var b=m[a];return b?c[b.decl.state]:"NOT_DEFINED"},s=function(a){return!!m[a]},t=function(a){for(var b in a)a.hasOwnProperty(b)&&(l[b]=a[b])},u=function(){var a,b={};for(var c in m)m.hasOwnProperty(c)&&(a=m[c],(b[a.decl.state]||(b[a.decl.state]=[])).push(c));return b},v=function(){n=!1,w()},w=function(){var a,b=o,c=0;for(o=[];a=b[c++];)x(null,a.deps,[],a.cb)},x=function(a,b,c,d){var e=b.length;e||d([]);for(var g,h,i=[],j=function(a,b){if(b)return void d(null,b);if(!--e){for(var c,f=[],g=0;c=i[g++];)f.push(c.exports);d(f)}},k=0,l=e;k ")+'"')},h=function(a){return Error('Declaration of module "'+a.name+'" has already been provided')},i=function(a){return Error('Multiple declarations of module "'+a.name+'" have been detected')},j=function(a,b){for(var c,d=0;c=b[d++];)if(a===c)return!0;return!1},k=function(){var b=[],c=function(a){return 1===b.push(a)},d=function(){var a=b,c=0,d=b.length;for(b=[];c=0&&!b.defaultPrevented();){var d=a[c];d&&(d.context?d.callback.call(d.context,b):d.callback(b)),c--}}}),a(e)}),shower.modules.define("Plugins",["Emitter","util.extend"],function(a,b,c){function d(a){this.events=new b({context:this}),this._showerGlobal=a,this._showerInstances=a.getInited(),this._plugins={},this._instances=[],a.events.on("init",this._onShowerInit,this)}c(d.prototype,{destroy:function(){this._showerGlobal.events.off("init",this._onShowerInit,this),this._plugins=null},add:function(a,b){if(this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" already exist.");return this._requireAndAdd({name:a,options:b}),this},remove:function(a){if(!this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" not found.");return delete this._plugins[a],this.events.emit("remove",{name:a}),this},get:function(a,b){var c,d=this._plugins[a];if(d&&b)for(var e=0,f=this._instances.length;e=0;e--)if(d[e].getId()===a){b=d[e],c=e;break}return{slide:b,index:c}},_onSlideActivate:function(a){window.location.hash=a.get("slide").getId(),this._setTitle()},_onContainerSlideModeChange:function(){this._setTitle(),this.save()},_isSlideMode:function(){return this._shower.container.isSlideMode()},_onPopstate:function(){var a,b=this._shower,c=window.location.hash.substr(1),d=b.player.getCurrentSlide(),e=b.player.getCurrentSlideIndex();this._isSlideMode()&&e===-1?b.player.go(0):e===-1&&""!==window.location.hash&&b.player.go(0),d&&c!==d.getId()&&(a=this._getSlideById(c),b.player.go(a.index))},_setTitle:function(){var a=document.title,b=this._isSlideMode(),c=this._shower.player.getCurrentSlide();if(b&&c){var d=c.getTitle();document.title=d?d+" — "+this._documentTitle:this._documentTitle}else this._documentTitle!==a&&(document.title=this._documentTitle)}}),a(e)}),shower.modules.define("shower.Player",["Emitter","util.bound","util.extend"],function(a,b,c,d){function e(a){this.events=new b({context:this,parent:a.events}),this._shower=a,this._showerListeners=null,this._playerListeners=null,this._currentSlideNumber=-1,this._currentSlide=null,this.init()}d(e.prototype,{init:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this).on("slidemodeenter",this._onSlideModeEnter,this),this._playerListeners=this.events.group().on("prev",this._onPrev,this).on("next",this._onNext,this),document.addEventListener("keydown",c(this,"_onKeyDown"))},destroy:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),document.removeEventListener("keydown",c(this,"_onKeyDown")),this._currentSlide=null,this._currentSlideNumber=null,this._shower=null},next:function(){return this.events.emit("next"),this},prev:function(){return this.events.emit("prev"),this},first:function(){return this.go(0),this},last:function(){return this.go(this._shower.getSlidesCount()-1),this},go:function(a){"number"!=typeof a&&(a=this._shower.getSlideIndex(a));var b=this._shower.getSlidesCount(),c=this._currentSlide;return a!=this._currentSlideNumber&&a=0&&(c&&c.isActive()&&c.deactivate(),c=this._shower.get(a),this._currentSlide=c,this._currentSlideNumber=a,c.isActive()||c.activate(),this.events.emit("activate",{index:a,slide:c})),this},getCurrentSlide:function(){return this._currentSlide},getCurrentSlideIndex:function(){return this._currentSlideNumber},_onPrev:function(){this._changeSlide(this._currentSlideNumber-1)},_onNext:function(){this._changeSlide(this._currentSlideNumber+1)},_changeSlide:function(a){this.go(a)},_onSlideAdd:function(a){var b=a.get("slide");b.events.on("activate",this._onSlideActivate,this)},_onSlideRemove:function(a){var b=a.get("slide");b.events.off("activate",this._onSlideActivate,this)},_onSlideActivate:function(a){var b=a.get("slide"),c=this._shower.getSlideIndex(b);this.go(c)},_onKeyDown:function(a){if(this._shower.isHotkeysEnabled()&&!/^(?:button|input|select|textarea)$/i.test(a.target.tagName))switch(this.events.emit("keydown",{event:a}),a.which){case 33:case 38:case 37:case 72:case 75:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.prev();break;case 34:case 40:case 39:case 76:case 74:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.next();break;case 36:a.preventDefault(),this.first();break;case 35:a.preventDefault(),this.last();break;case 32:this._shower.container.isSlideMode()&&(a.shiftKey?this.prev():this.next())}},_onSlideModeEnter:function(){this._currentSlide||this.go(0)}}),a(e)}),shower.modules.define("shower.slidesParser",["Slide"],function(a,b){function c(a,c){var d=a.querySelectorAll(c);return d=Array.prototype.slice.call(d),d.map(function(a,c){var d=new b(a);return a.id||(a.id=c+1),d})}a(c)}),shower.modules.define("Slide",["shower.defaultOptions","Emitter","Options","slide.Layout","slide.layoutFactory","util.Store","util.extend"],function(a,b,c,d,e,f,g,h){function i(a,b,e){this.events=new c,this.options=new d(b),this.layout=null,this.state=new g({visited:0,index:null},e),this._content=a,this._isVisited=this.state.get("visited")>0,this._isActive=!1,this.init()}h(i.prototype,{init:function(){this.layout="string"==typeof this._content?new f.createLayout({content:this._content}):new e(this._content,this.options),this.layout.setParent(this),this._setupListeners()},destroy:function(){this._clearListeners(),this._isActive=null,this.options=null,this.layout.destroy()},activate:function(){this._isActive=!0;var a=this.state.get("visited");return this.state.set("visited",++a),this.events.emit("activate",{slide:this}),this},deactivate:function(){return this._isActive=!1,this.events.emit("deactivate",{slide:this}),this},isActive:function(){return this._isActive},isVisited:function(){return this.state.get("visited")>0},getTitle:function(){return this.layout.getTitle()},setTitle:function(a){return this.layout.setTitle(a),this},getId:function(){return this.layout.getElement().id},getContent:function(){return this.layout.getContent()},_setupListeners:function(){this.layoutListeners=this.layout.events.group().on("click",this._onSlideClick,this)},_clearListeners:function(){this.layoutListeners.offAll()},_onSlideClick:function(){this.activate(),this.events.emit("click",{slide:this})}}),a(i)}),shower.modules.define("slide.Layout",["Options","shower.defaultOptions","Emitter","util.bound","util.extend"],function(a,b,c,d,e,f){function g(a,e){this.options=new b({title_element_selector:c.slide_title_element_selector,active_classname:c.slide_active_classname,visited_classname:c.slide_visited_classname},e),this.events=new d,this._element=a,this._parent=null,this._parentElement=null,this.init()}f(g.prototype,{init:function(){var a=this._element.parentNode;a?this._parentElement=a:this.setParentElement(a)},destroy:function(){this.setParent(null)},setParent:function(a){this._parent!=a&&(this._clearListeners(),this._parent=a,this._parent&&this._setupListeners(),this.events.emit("parentchange",{parent:a}))},getParent:function(){return this._parent},setParentElement:function(a){a!=this._parentElement&&(this._parentElement=a,a.appendChild(this._element),this.events.emit("parentelementchange",{parentElement:a}))},getParentElement:function(){return this._parentElement},getElement:function(){return this._element},setTitle:function(a){var b=this.options.get("title_element_selector"),c=this._element.querySelector(b);c?c.innerHTML=a:(c=document.createElement(b),c.innerHTML=a,this._element.insertBefore(c,this._element.firstChild))},getTitle:function(){var a=this.options.get("title_element_selector"),b=this._element.querySelector(a);return b?b.textContent:null},getData:function(a){var b=this._element;return b.dataset?b.dataset[a]:b.getAttribute("data-"+a)},getContent:function(){return this._element.innerHTML},_setupListeners:function(){this._slideListeners=this._parent.events.group().on("activate",this._onSlideActivate,this).on("deactivate",this._onSlideDeactivate,this),this._element.addEventListener("click",e(this,"_onSlideClick"),!1)},_clearListeners:function(){this._slideListeners&&this._slideListeners.offAll(),this._element.removeEventListener("click",e(this,"_onSlideClick"))},_onSlideActivate:function(){this._element.classList.add(this.options.get("active_classname"))},_onSlideDeactivate:function(){var a=this._element.classList;a.remove(this.options.get("active_classname")),a.add(this.options.get("visited_classname"))},_onSlideClick:function(){this.events.emit("click")}}),a(g)}),shower.modules.define("slide.layoutFactory",["slide.Layout","util.extend"],function(a,b,c){var d={};c(d,{createLayout:function(a){a=a||{};var e=d._createElement(c({content:"",contentType:"slide"},a));return new b(e)},_createElement:function(a){var b=document.createElement("section");return b.innerHTML=a.content,b.classList.add(a.contentType),b}}),a(d)}),shower.modules.define("util.bound",function(a){function b(a,b){return a["__bound_"+b]||(a["__bound_"+b]=a[b].bind(a))}a(b)}),shower.modules.define("util.extend",function(a){function b(a){if(!a)throw new Error("util.extend: Target not found");return"undefined"==typeof Object.assign?c.apply(null,arguments):Object.assign.apply(null,arguments)}function c(a){for(var b=1,c=arguments.length;b0&&(a.preventDefault(),this.prev())},_go:function(){for(var a=0,b=this._elements.length;awindow.innerWidth/2?c.player.next():c.player.prev()),d||f.activate())},_onTouchMove:function(a){this._shower.container.isSlideMode()&&a.preventDefault()},_getSlideByElement:function(a){for(var b=this._shower.getSlides(),c=null,d=0,e=b.length;d` of your presentation. - -## PDF - -Ribbon could be exported to PDF by printing it from the list mode in Chrome or Opera browsers. See [printing documentation](https://github.com/shower/shower/blob/master/docs/printing-en.md) for more options. - -## Development - -If you want to adjust theme for your needs: - -1. Fork this repository and clone it to your local machine. -2. Install dependencies: `npm install`. -3. Start a local server with watcher: `npm run dev` or just `gulp` if you have it installed globally. -4. Edit your files and see changes in the opened browser. - -To take part in Ribbon development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request. - ---- -Licensed under [MIT License](LICENSE.md). diff --git a/doc/presentations/group_by/shower/themes/ribbon/index.html b/doc/presentations/group_by/shower/themes/ribbon/index.html deleted file mode 100644 index 98850917e05..00000000000 --- a/doc/presentations/group_by/shower/themes/ribbon/index.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - Ribbon theme for Shower - - - - - - -
-

Presentation Title

-

Yours Truly, Famous Inc.

-
-
-

Slide Header

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch letterpress.

-

Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.

-

Echo Park 8-bit sustainable umami deep v Kickstarter.

-
-
-

Inline Elements

-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-
-
-

Quotes

-
-

Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.

-
-
-
-

Post-ironic fashion axe flexitarian, Tonx narwhal messenger bag Tumblr. Portland gentrify deep v kale chips literally.

-
-
Yours Truly
-
-
-
-

Nested Lists

-
    -
  1. Literally viral vegan, ugh drinking vinegar photo booth
  2. -
  3. Wes Anderson chillwave Marfa pour-over Etsy banh mi
  4. -
  5. Ethnic polaroid lo-fi iPhone ennui -
      -
    • Yr wayfarers before they sold out Kickstarter asymmetrical
    • -
    • Irony flexitarian readymade quinoa, kogi bespoke meggings narwhal
    • -
    • Skateboard Etsy twee artisan Echo Park
    • -
    -
  6. -
  7. Tonx kitsch fingerstache readymade, retro single-origin coffee
  8. -
-
-
-

Block Lists

-
    -
  • Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack.
  • -
  • Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.
  • -
  • Leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical paleo you probably haven’t heard of.
  • -
-
-
-

Latin and Cyrillic List Bullets

-
    -
  • Occupy locavore blog, mustache you probably haven't heard of them
  • -
  • Skateboard pork belly aesthetic hoodie selfies brunch
  • -
  • Food truck gluten-free disrupt Portland
  • -
-
    -
  • Helvetica narwhal drinking vinegar chillwave, post-ironic ennui
  • -
  • Cray pug paleo retro, Echo Park narwhal Wes Anderson
  • -
  • Disrupt Williamsburg fixie, shabby chic bicycle rights hashtag kogi
  • -
-
-
-

Two Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Three Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Simple Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Striped Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Plain Code Listing

-
<html lang="en">
-<head> <!--Comment-->
-    <title>Shower</title>
-    <meta charset="UTF-8">
-    <link rel="stylesheet" href="screen.css">
-    <script src="script.js"></script>
-</head>
-
-
-

Numbered Code Listing

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Lines

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Hidden Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Grid Slide

-
-
-

White Slide

-
-
-

Black Slide

-
-
-

Shout

-
-
-

Multiline
Shout

-
-
-

Linked Shout

-
-
-

Growing Shout

-
-
-

Shrinking Shout

-
-
-
- -
Copyright © 2016 Yours Truly, Famous Inc.
-
-
-
- -
-
- -
-
- - - - - - - - - -
-
-

Timer

-
-
-

List Navigation

-
    -
  1. Ennui keffiyeh thundercats
  2. - - - - -
-

Before they sold out master

-
-
- - - - - diff --git a/doc/presentations/group_by/shower/themes/ribbon/pictures/canvas.png b/doc/presentations/group_by/shower/themes/ribbon/pictures/canvas.png deleted file mode 100644 index 6ddd30154f2..00000000000 Binary files a/doc/presentations/group_by/shower/themes/ribbon/pictures/canvas.png and /dev/null differ diff --git a/doc/presentations/group_by/shower/themes/ribbon/pictures/exact.png b/doc/presentations/group_by/shower/themes/ribbon/pictures/exact.png deleted file mode 100644 index b27251c57cb..00000000000 Binary files a/doc/presentations/group_by/shower/themes/ribbon/pictures/exact.png and /dev/null differ diff --git a/doc/presentations/group_by/shower/themes/ribbon/pictures/square.png b/doc/presentations/group_by/shower/themes/ribbon/pictures/square.png deleted file mode 100644 index 62cb2384a5f..00000000000 Binary files a/doc/presentations/group_by/shower/themes/ribbon/pictures/square.png and /dev/null differ diff --git a/doc/presentations/group_by/shower/themes/ribbon/pictures/tall.png b/doc/presentations/group_by/shower/themes/ribbon/pictures/tall.png deleted file mode 100644 index fbc9f09a2ab..00000000000 Binary files a/doc/presentations/group_by/shower/themes/ribbon/pictures/tall.png and /dev/null differ diff --git a/doc/presentations/group_by/shower/themes/ribbon/pictures/wide.png b/doc/presentations/group_by/shower/themes/ribbon/pictures/wide.png deleted file mode 100644 index 1e83b0ac7ad..00000000000 Binary files a/doc/presentations/group_by/shower/themes/ribbon/pictures/wide.png and /dev/null differ diff --git a/doc/presentations/group_by/shower/themes/ribbon/styles/presentation_links.html b/doc/presentations/group_by/shower/themes/ribbon/styles/presentation_links.html deleted file mode 100644 index 74981d8eac5..00000000000 --- a/doc/presentations/group_by/shower/themes/ribbon/styles/presentation_links.html +++ /dev/null @@ -1,2 +0,0 @@ -http://www.slideshare.net/AlexeyMilovidov1/clickhouse-69616890/AlexeyMilovidov1/clickhouse-69616890 -file:///home/milovidov/work/Presentation/shower/index.html#cover diff --git a/doc/presentations/group_by/shower/themes/ribbon/styles/screen-16x10.css b/doc/presentations/group_by/shower/themes/ribbon/styles/screen-16x10.css deleted file mode 100644 index 5bd31e4f4c4..00000000000 --- a/doc/presentations/group_by/shower/themes/ribbon/styles/screen-16x10.css +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8"; - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot); - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/pUcnOdRwl83MvPPzrNomhyletnA.woff) format('woff'), - url(https://yastatic.net/adv-www/_/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg#YandexSansTextWeb-Bold) format('svg'); - font-weight: 700; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot); - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff) format('woff'), - url(https://yastatic.net/adv-www/_/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/gwyBTpxSwkFCF1looxqs6JokKls.svg#YandexSansTextWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot); - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff) format('woff'), - url(https://yastatic.net/adv-www/_/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/EKLr1STNokPqxLAQa_RyN82pL98.svg#YandexSansTextWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot); - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff) format('woff'), - url(https://yastatic.net/adv-www/_/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg#YandexSansDisplayWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot); - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/40vXwNl4eYYMgteIVgLP49dwmfc.woff) format('woff'), - url(https://yastatic.net/adv-www/_/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg#YandexSansDisplayWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - -*,::after,::before{box-sizing:border-box} -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline} -article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block} -.caption p,body{line-height:1} -p {line-height: 1; white-space: pre;} -ol,ul{list-style:none} -blockquote,q{quotes:none} -blockquote::after,blockquote::before,q::after,q::before{content:none} -table{border-collapse:collapse;border-spacing:0} -a{text-decoration:none} -@page{margin:0;size:1024px 640px} -.shower{color:#000;counter-reset:slide;font:25px/2 Yandex Sans Display Web,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none} -@media print{.shower{text-rendering:geometricPrecision} -} -.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90} -@media (min-width:1174px){.caption{font-size:50px} -} -@media (min-width:2348px){.caption{font-size:100px} -} -.caption h1{padding-bottom:.15em;font:1em/2 Yandex Sans Display Web,sans-serif} -.caption p{font-size:.6em} -.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60} -.slide{position:relative;z-index:1;overflow:hidden;padding:20px 100px 0;width:1024px;height:640px;background:#fff;font-size:25px} - -/*.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}*/ - -.slide h1{vertical-align:middle; color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide h2{margin-bottom:34px;color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide p{margin-bottom:1em} -.slide p.note{color:#979a9e} -.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2} -.slide b,.slide strong{font-weight:700} -.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic} -.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em} -.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace} -.slide mark{background:#fafaa2} -.slide sub,.slide sup{position:relative;line-height:0;font-size:75%} -.slide sub{bottom:-.25em} -.slide sup{top:-.5em} -.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'} -.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700} -.slide ol,.slide ul{margin-bottom:0em;counter-reset:list} -.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em} -.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right} -.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em} -.slide ul>li::before{padding-right:.5em;content:'•'} -.slide ul>li:lang(ru)::before{content:'—'} -.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."} -.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)} -.slide table td:first-child,.slide table th:first-child{padding-left:96px} -.slide table td:last-child,.slide table th:last-child{padding-right:96px} -.slide table th{text-align:left;font-weight:700} -.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x} -.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)} -.slide table.striped tr>*{background-image:none} -.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal} -.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4} -.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)} -.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."} -.slide pre mark{position:relative;z-index:-1;margin:0 -.3em} -.slide pre mark.important{background:#c00;color:#fff} -.slide pre .comment{color:#999} -.slide footer{position:absolute;right:0;bottom:-640px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s} -.slide footer mark{background:rgba(255,255,255,.8)} -.slide:hover>footer{bottom:0} -.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated} -@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto} -} -.slide.black{background-color:#000} -.slide.black::after,.slide.white::after{visibility:hidden} -.slide.white{background-color:#fff} -.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} -.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2} -.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3} -.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} -.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x} -.slide .cover{z-index:-1;max-width:100%;max-height:100%} -.slide .cover.w,.slide .cover.width{width:100%;max-height:none} -.slide .cover.h,.slide .cover.height{height:100%;max-width:none} -.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)} -.slide .cover+figcaption.white{color:#fff} -.slide .cover+figcaption a{color:currentcolor} -.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} -.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none} -.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} -.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)} -.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0} -.slide .place.r,.slide .place.right{right:0;left:auto} -.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0} -.slide .place.l,.slide .place.left{left:0} -.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)} -.progress[style*='100%']{padding-left:10px} -.badge,.badge a,.progress{position:absolute} -.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden} -@media (min-width:1174px){.badge{font-size:20px} -} -@media (min-width:2348px){.badge{font-size:40px} -} -.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)} -.region{display:none} -@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)} -} -@media screen and (min-width:1174px){.shower.list{padding-top:50px} -} -@media screen and (min-width:2348px){.shower.list{padding-top:100px} -} -@media screen{.shower.list .caption{display:block} -.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -455px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)} -} -@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -270px 50px;-webkit-transform:scale(.5);transform:scale(.5)} -} -@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)} -} -@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide *{pointer-events:none} -.shower.list .badge,.shower.list .slide footer{display:block} -.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-320px 0 0 -512px;width:1024px;height:640px;background:#000} -.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden} -.shower.full .slide:target{margin:0;visibility:visible} -.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0} -.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)} -.shower.full .slide .next{visibility:hidden} -.shower.full .slide .next.active{visibility:visible} -.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform} -.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)} -.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)} -.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)} -.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)} -.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block} -} diff --git a/doc/presentations/group_by/shower/themes/ribbon/styles/screen-4x3.css b/doc/presentations/group_by/shower/themes/ribbon/styles/screen-4x3.css deleted file mode 100644 index 6648b972c30..00000000000 --- a/doc/presentations/group_by/shower/themes/ribbon/styles/screen-4x3.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8";@font-face{font-family:PT Sans;src:url(../fonts/pt-sans-regular.woff) format("woff")}@font-face{font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold.woff) format("woff")}@font-face{font-style:italic;font-family:PT Sans;src:url(../fonts/pt-sans-italic.woff) format("woff")}@font-face{font-style:italic;font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold-italic.woff) format("woff")}@font-face{font-family:PT Sans Narrow;font-weight:700;src:url(../fonts/pt-sans-narrow-bold.woff) format("woff")}@font-face{font-family:PT Mono;src:url(../fonts/pt-mono-regular.woff) format("woff")}*,::after,::before{box-sizing:border-box}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}.caption p,body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::after,blockquote::before,q::after,q::before{content:none}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}@page{margin:0;size:1024px 768px}.shower{color:#000;counter-reset:slide;font:25px/2 PT Sans,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none}@media print{.shower{text-rendering:geometricPrecision}}.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90}@media (min-width:1174px){.caption{font-size:50px}}@media (min-width:2348px){.caption{font-size:100px}}.caption h1{padding-bottom:.15em;font:700 1em/1 PT Sans Narrow,sans-serif}.caption p{font-size:.6em}.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60}.slide{position:relative;z-index:1;overflow:hidden;padding:106px 100px 0;width:1024px;height:768px;background:#fff;font-size:25px}.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}.slide h2{margin-bottom:34px;color:#585a5e;font:700 50px/1 PT Sans Narrow,sans-serif}.slide p{margin-bottom:1em}.slide p.note{color:#979a9e}.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2}.slide b,.slide strong{font-weight:700}.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic}.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em}.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace}.slide mark{background:#fafaa2}.slide sub,.slide sup{position:relative;line-height:0;font-size:75%}.slide sub{bottom:-.25em}.slide sup{top:-.5em}.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'}.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700}.slide ol,.slide ul{margin-bottom:1em;counter-reset:list}.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em}.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right}.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em}.slide ul>li::before{padding-right:.5em;content:'•'}.slide ul>li:lang(ru)::before{content:'—'}.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."}.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)}.slide table td:first-child,.slide table th:first-child{padding-left:96px}.slide table td:last-child,.slide table th:last-child{padding-right:96px}.slide table th{text-align:left;font-weight:700}.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x}.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)}.slide table.striped tr>*{background-image:none}.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal}.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)}.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."}.slide pre mark{position:relative;z-index:-1;margin:0 -.3em}.slide pre mark.important{background:#c00;color:#fff}.slide pre .comment{color:#999}.slide footer{position:absolute;right:0;bottom:-768px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s}.slide footer mark{background:rgba(255,255,255,.8)}.slide:hover>footer{bottom:0}.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto}}.slide.black{background-color:#000}.slide.black::after,.slide.white::after{visibility:hidden}.slide.white{background-color:#fff}.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2}.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3}.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x}.slide .cover{z-index:-1;max-width:100%;max-height:100%}.slide .cover.w,.slide .cover.width{width:100%;max-height:none}.slide .cover.h,.slide .cover.height{height:100%;max-width:none}.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)}.slide .cover+figcaption.white{color:#fff}.slide .cover+figcaption a{color:currentcolor}.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none}.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0}.slide .place.r,.slide .place.right{right:0;left:auto}.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0}.slide .place.l,.slide .place.left{left:0}.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)}.progress[style*='100%']{padding-left:10px}.badge,.badge a,.progress{position:absolute}.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden}@media (min-width:1174px){.badge{font-size:20px}}@media (min-width:2348px){.badge{font-size:40px}}.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.region{display:none}@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)}}@media screen and (min-width:1174px){.shower.list{padding-top:50px}}@media screen and (min-width:2348px){.shower.list{padding-top:100px}}@media screen{.shower.list .caption{display:block}.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -551px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)}}@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -334px 50px;-webkit-transform:scale(.5);transform:scale(.5)}}@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)}}@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)}.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)}.shower.list .slide *{pointer-events:none}.shower.list .badge,.shower.list .slide footer{display:block}.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-384px 0 0 -512px;width:1024px;height:768px;background:#000}.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden}.shower.full .slide:target{margin:0;visibility:visible}.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0}.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)}.shower.full .slide .next{visibility:hidden}.shower.full .slide .next.active{visibility:visible}.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)}.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)}.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)}.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)}.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block}} \ No newline at end of file diff --git a/doc/presentations/meetup3/LICENSE.md b/doc/presentations/meetup3/LICENSE.md deleted file mode 100644 index bd3449d3576..00000000000 --- a/doc/presentations/meetup3/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License - -Copyright © 2010–2015 Vadim Makeev, http://pepelsbey.net/ - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -# Лицензия MIT - -Copyright © 2010–2015 Вадим Макеев, http://pepelsbey.net/ - -Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: - -Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. - -ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. diff --git a/doc/presentations/meetup3/clickhouse_for_analysts.pdf b/doc/presentations/meetup3/clickhouse_for_analysts.pdf deleted file mode 100644 index 6008d3dfc27..00000000000 Binary files a/doc/presentations/meetup3/clickhouse_for_analysts.pdf and /dev/null differ diff --git a/doc/presentations/meetup3/index.html b/doc/presentations/meetup3/index.html deleted file mode 100644 index 7b0bb2c38ec..00000000000 --- a/doc/presentations/meetup3/index.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - ClickHouse meetup в Санкт-Петербурге - - - - - - -
-

ClickHouse meetup в Санкт-Петербурге

-
- -
-

ClickHouse meetup
в Санкт-Петербурге

-
- -
-

ClickHouse: настоящее и будущее

-
- -
-

Команда

-

Теперь 5 разработчиков.

-

- - - - - -

-
- -
- -

В предыдущих сериях

- -

— HTTP и executable источники;

-

— оптимизация мержей, вертикальный мерж;

-

— трассировка распределённых запросов;

-

— clickhouse-local;

-

— операторы BETWEEN, ||;

-

— функции UUID - text;

- -
-
- -

Новое в языке запросов

- -

— KILL QUERY;

-

— LIMIT BY;

-

— SELECT INTO OUTFILE;

- -
-
- -

Интерфейсы

- -

— возможность получить прогресс выполнения в HTTP заголовках;

-

— возможность пропуска ошибок в текстовых форматах;

-

— правильные коды ответа в HTTP интерфейсе;

- -
-
- -

Сборка

- -

— «правильная» сборка и пакеты;

-

— Таблица system.build_options;

- -
-
- -

Словари

- -

— производительность кэшируемых внешних словарей;

-

— инструментирование кэшируемых внешних словарей;

-

— HTTPS словари;

- -
-
- -

Инструментирование

- -

— информация об использовании памяти под индекс;

-

— информация о размере столбцов в несжатом виде;

-

— метрики по потреблению оперативки кэшами;

-

— метрики про мержи;

- -
-
- -

Оптимизации

- -

— оптимизация DISTINCT;

-

— производительность gzip в HTTP интерфейсе;

-

— оптимизация mark cache;

- -
-
- -

Функции

- -

— правильная логика сравнений, least, greatest;

-

— groupUniqArray для всех типов данных;

-

— decodeURLComponent;

- -
-
- -

Что-то ещё

- -

— защита от случайного DROP TABLE;

-

— use_client_time_zone; timezone в конфиге;

-

— fsync_metadata;

- -
-
- -

Сообщество

- -

— интеграция с Grafana, Redash, Apache Zeppelin, Superset;

-

— правильные пакеты для CentOS, RHEL, GosLinux;

-

— драйвер native протокола для Go и C++;

-

— возможность передавать заголовки X-ClickHouse-*;

-

— бенчмарки NYC Taxi, Percona (Spark);

-

— бенчмарк Greenplum;

-

— англоязычный Telegram чат;

-

— встречи и доклады (Брюссель, Париж);

- -
- -
-

ClickHouse vs. Spark

-

https://www.percona.com/blog/2017/02/13/clickhouse-new-opensource-columnar-database/

- -
- -
-

ClickHouse vs. Greenplum

-

-
- -
- -

TODO (март-апрель 2017)

- -

— распределённые DDL запросы;

-

— конфиги в ZooKeeper;

-

— полная поддержка NULL;

- -
-
- -

TODO (весна-лето 2017)

- -

— работоспособность ODBC драйвера под Windows;

-

— переделать анализ запроса: правильная поддержка JOIN;

- -
- -
- -

Дополнительно

- -

job-clickhouse@yandex-team.ru

- -
- -
- - - diff --git a/doc/presentations/meetup3/pictures/greenplum.png b/doc/presentations/meetup3/pictures/greenplum.png deleted file mode 100644 index e919a45dadc..00000000000 Binary files a/doc/presentations/meetup3/pictures/greenplum.png and /dev/null differ diff --git a/doc/presentations/meetup3/pictures/milovidov.jpg b/doc/presentations/meetup3/pictures/milovidov.jpg deleted file mode 100644 index eb0317f8608..00000000000 Binary files a/doc/presentations/meetup3/pictures/milovidov.jpg and /dev/null differ diff --git a/doc/presentations/meetup3/pictures/proller.jpg b/doc/presentations/meetup3/pictures/proller.jpg deleted file mode 100644 index 02b1daa1d6c..00000000000 Binary files a/doc/presentations/meetup3/pictures/proller.jpg and /dev/null differ diff --git a/doc/presentations/meetup3/pictures/spark.png b/doc/presentations/meetup3/pictures/spark.png deleted file mode 100644 index 3ae61297631..00000000000 Binary files a/doc/presentations/meetup3/pictures/spark.png and /dev/null differ diff --git a/doc/presentations/meetup3/pictures/stanly.jpg b/doc/presentations/meetup3/pictures/stanly.jpg deleted file mode 100644 index fb406f156ba..00000000000 Binary files a/doc/presentations/meetup3/pictures/stanly.jpg and /dev/null differ diff --git a/doc/presentations/meetup3/pictures/vludv.jpg b/doc/presentations/meetup3/pictures/vludv.jpg deleted file mode 100644 index ebe6db87126..00000000000 Binary files a/doc/presentations/meetup3/pictures/vludv.jpg and /dev/null differ diff --git a/doc/presentations/meetup3/pictures/ztlpn.jpg b/doc/presentations/meetup3/pictures/ztlpn.jpg deleted file mode 100644 index a2931b91585..00000000000 Binary files a/doc/presentations/meetup3/pictures/ztlpn.jpg and /dev/null differ diff --git a/doc/presentations/meetup3/shower/shower.min.js b/doc/presentations/meetup3/shower/shower.min.js deleted file mode 100644 index 449843ac45d..00000000000 --- a/doc/presentations/meetup3/shower/shower.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Core for Shower HTML presentation engine - * shower-core v2.0.7, https://github.com/shower/core - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -!function(a){var b,c={NOT_RESOLVED:"NOT_RESOLVED",IN_RESOLVING:"IN_RESOLVING",RESOLVED:"RESOLVED"},d=function(){var l={trackCircularDependencies:!0,allowMultipleDeclarations:!0},m={},n=!1,o=[],p=function(a,d,e){e||(e=d,d=[]);var f=m[a];f||(f=m[a]={name:a,decl:b}),f.decl={name:a,prev:f.decl,fn:e,state:c.NOT_RESOLVED,deps:d,dependents:[],exports:b}},q=function(b,c,d){"string"==typeof b&&(b=[b]),n||(n=!0,k(v)),o.push({deps:b,cb:function(b,f){f?(d||e)(f):c.apply(a,b)}})},r=function(a){var b=m[a];return b?c[b.decl.state]:"NOT_DEFINED"},s=function(a){return!!m[a]},t=function(a){for(var b in a)a.hasOwnProperty(b)&&(l[b]=a[b])},u=function(){var a,b={};for(var c in m)m.hasOwnProperty(c)&&(a=m[c],(b[a.decl.state]||(b[a.decl.state]=[])).push(c));return b},v=function(){n=!1,w()},w=function(){var a,b=o,c=0;for(o=[];a=b[c++];)x(null,a.deps,[],a.cb)},x=function(a,b,c,d){var e=b.length;e||d([]);for(var g,h,i=[],j=function(a,b){if(b)return void d(null,b);if(!--e){for(var c,f=[],g=0;c=i[g++];)f.push(c.exports);d(f)}},k=0,l=e;k ")+'"')},h=function(a){return Error('Declaration of module "'+a.name+'" has already been provided')},i=function(a){return Error('Multiple declarations of module "'+a.name+'" have been detected')},j=function(a,b){for(var c,d=0;c=b[d++];)if(a===c)return!0;return!1},k=function(){var b=[],c=function(a){return 1===b.push(a)},d=function(){var a=b,c=0,d=b.length;for(b=[];c=0&&!b.defaultPrevented();){var d=a[c];d&&(d.context?d.callback.call(d.context,b):d.callback(b)),c--}}}),a(e)}),shower.modules.define("Plugins",["Emitter","util.extend"],function(a,b,c){function d(a){this.events=new b({context:this}),this._showerGlobal=a,this._showerInstances=a.getInited(),this._plugins={},this._instances=[],a.events.on("init",this._onShowerInit,this)}c(d.prototype,{destroy:function(){this._showerGlobal.events.off("init",this._onShowerInit,this),this._plugins=null},add:function(a,b){if(this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" already exist.");return this._requireAndAdd({name:a,options:b}),this},remove:function(a){if(!this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" not found.");return delete this._plugins[a],this.events.emit("remove",{name:a}),this},get:function(a,b){var c,d=this._plugins[a];if(d&&b)for(var e=0,f=this._instances.length;e=0;e--)if(d[e].getId()===a){b=d[e],c=e;break}return{slide:b,index:c}},_onSlideActivate:function(a){window.location.hash=a.get("slide").getId(),this._setTitle()},_onContainerSlideModeChange:function(){this._setTitle(),this.save()},_isSlideMode:function(){return this._shower.container.isSlideMode()},_onPopstate:function(){var a,b=this._shower,c=window.location.hash.substr(1),d=b.player.getCurrentSlide(),e=b.player.getCurrentSlideIndex();this._isSlideMode()&&e===-1?b.player.go(0):e===-1&&""!==window.location.hash&&b.player.go(0),d&&c!==d.getId()&&(a=this._getSlideById(c),b.player.go(a.index))},_setTitle:function(){var a=document.title,b=this._isSlideMode(),c=this._shower.player.getCurrentSlide();if(b&&c){var d=c.getTitle();document.title=d?d+" — "+this._documentTitle:this._documentTitle}else this._documentTitle!==a&&(document.title=this._documentTitle)}}),a(e)}),shower.modules.define("shower.Player",["Emitter","util.bound","util.extend"],function(a,b,c,d){function e(a){this.events=new b({context:this,parent:a.events}),this._shower=a,this._showerListeners=null,this._playerListeners=null,this._currentSlideNumber=-1,this._currentSlide=null,this.init()}d(e.prototype,{init:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this).on("slidemodeenter",this._onSlideModeEnter,this),this._playerListeners=this.events.group().on("prev",this._onPrev,this).on("next",this._onNext,this),document.addEventListener("keydown",c(this,"_onKeyDown"))},destroy:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),document.removeEventListener("keydown",c(this,"_onKeyDown")),this._currentSlide=null,this._currentSlideNumber=null,this._shower=null},next:function(){return this.events.emit("next"),this},prev:function(){return this.events.emit("prev"),this},first:function(){return this.go(0),this},last:function(){return this.go(this._shower.getSlidesCount()-1),this},go:function(a){"number"!=typeof a&&(a=this._shower.getSlideIndex(a));var b=this._shower.getSlidesCount(),c=this._currentSlide;return a!=this._currentSlideNumber&&a=0&&(c&&c.isActive()&&c.deactivate(),c=this._shower.get(a),this._currentSlide=c,this._currentSlideNumber=a,c.isActive()||c.activate(),this.events.emit("activate",{index:a,slide:c})),this},getCurrentSlide:function(){return this._currentSlide},getCurrentSlideIndex:function(){return this._currentSlideNumber},_onPrev:function(){this._changeSlide(this._currentSlideNumber-1)},_onNext:function(){this._changeSlide(this._currentSlideNumber+1)},_changeSlide:function(a){this.go(a)},_onSlideAdd:function(a){var b=a.get("slide");b.events.on("activate",this._onSlideActivate,this)},_onSlideRemove:function(a){var b=a.get("slide");b.events.off("activate",this._onSlideActivate,this)},_onSlideActivate:function(a){var b=a.get("slide"),c=this._shower.getSlideIndex(b);this.go(c)},_onKeyDown:function(a){if(this._shower.isHotkeysEnabled()&&!/^(?:button|input|select|textarea)$/i.test(a.target.tagName))switch(this.events.emit("keydown",{event:a}),a.which){case 33:case 38:case 37:case 72:case 75:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.prev();break;case 34:case 40:case 39:case 76:case 74:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.next();break;case 36:a.preventDefault(),this.first();break;case 35:a.preventDefault(),this.last();break;case 32:this._shower.container.isSlideMode()&&(a.shiftKey?this.prev():this.next())}},_onSlideModeEnter:function(){this._currentSlide||this.go(0)}}),a(e)}),shower.modules.define("shower.slidesParser",["Slide"],function(a,b){function c(a,c){var d=a.querySelectorAll(c);return d=Array.prototype.slice.call(d),d.map(function(a,c){var d=new b(a);return a.id||(a.id=c+1),d})}a(c)}),shower.modules.define("Slide",["shower.defaultOptions","Emitter","Options","slide.Layout","slide.layoutFactory","util.Store","util.extend"],function(a,b,c,d,e,f,g,h){function i(a,b,e){this.events=new c,this.options=new d(b),this.layout=null,this.state=new g({visited:0,index:null},e),this._content=a,this._isVisited=this.state.get("visited")>0,this._isActive=!1,this.init()}h(i.prototype,{init:function(){this.layout="string"==typeof this._content?new f.createLayout({content:this._content}):new e(this._content,this.options),this.layout.setParent(this),this._setupListeners()},destroy:function(){this._clearListeners(),this._isActive=null,this.options=null,this.layout.destroy()},activate:function(){this._isActive=!0;var a=this.state.get("visited");return this.state.set("visited",++a),this.events.emit("activate",{slide:this}),this},deactivate:function(){return this._isActive=!1,this.events.emit("deactivate",{slide:this}),this},isActive:function(){return this._isActive},isVisited:function(){return this.state.get("visited")>0},getTitle:function(){return this.layout.getTitle()},setTitle:function(a){return this.layout.setTitle(a),this},getId:function(){return this.layout.getElement().id},getContent:function(){return this.layout.getContent()},_setupListeners:function(){this.layoutListeners=this.layout.events.group().on("click",this._onSlideClick,this)},_clearListeners:function(){this.layoutListeners.offAll()},_onSlideClick:function(){this.activate(),this.events.emit("click",{slide:this})}}),a(i)}),shower.modules.define("slide.Layout",["Options","shower.defaultOptions","Emitter","util.bound","util.extend"],function(a,b,c,d,e,f){function g(a,e){this.options=new b({title_element_selector:c.slide_title_element_selector,active_classname:c.slide_active_classname,visited_classname:c.slide_visited_classname},e),this.events=new d,this._element=a,this._parent=null,this._parentElement=null,this.init()}f(g.prototype,{init:function(){var a=this._element.parentNode;a?this._parentElement=a:this.setParentElement(a)},destroy:function(){this.setParent(null)},setParent:function(a){this._parent!=a&&(this._clearListeners(),this._parent=a,this._parent&&this._setupListeners(),this.events.emit("parentchange",{parent:a}))},getParent:function(){return this._parent},setParentElement:function(a){a!=this._parentElement&&(this._parentElement=a,a.appendChild(this._element),this.events.emit("parentelementchange",{parentElement:a}))},getParentElement:function(){return this._parentElement},getElement:function(){return this._element},setTitle:function(a){var b=this.options.get("title_element_selector"),c=this._element.querySelector(b);c?c.innerHTML=a:(c=document.createElement(b),c.innerHTML=a,this._element.insertBefore(c,this._element.firstChild))},getTitle:function(){var a=this.options.get("title_element_selector"),b=this._element.querySelector(a);return b?b.textContent:null},getData:function(a){var b=this._element;return b.dataset?b.dataset[a]:b.getAttribute("data-"+a)},getContent:function(){return this._element.innerHTML},_setupListeners:function(){this._slideListeners=this._parent.events.group().on("activate",this._onSlideActivate,this).on("deactivate",this._onSlideDeactivate,this),this._element.addEventListener("click",e(this,"_onSlideClick"),!1)},_clearListeners:function(){this._slideListeners&&this._slideListeners.offAll(),this._element.removeEventListener("click",e(this,"_onSlideClick"))},_onSlideActivate:function(){this._element.classList.add(this.options.get("active_classname"))},_onSlideDeactivate:function(){var a=this._element.classList;a.remove(this.options.get("active_classname")),a.add(this.options.get("visited_classname"))},_onSlideClick:function(){this.events.emit("click")}}),a(g)}),shower.modules.define("slide.layoutFactory",["slide.Layout","util.extend"],function(a,b,c){var d={};c(d,{createLayout:function(a){a=a||{};var e=d._createElement(c({content:"",contentType:"slide"},a));return new b(e)},_createElement:function(a){var b=document.createElement("section");return b.innerHTML=a.content,b.classList.add(a.contentType),b}}),a(d)}),shower.modules.define("util.bound",function(a){function b(a,b){return a["__bound_"+b]||(a["__bound_"+b]=a[b].bind(a))}a(b)}),shower.modules.define("util.extend",function(a){function b(a){if(!a)throw new Error("util.extend: Target not found");return"undefined"==typeof Object.assign?c.apply(null,arguments):Object.assign.apply(null,arguments)}function c(a){for(var b=1,c=arguments.length;b0&&(a.preventDefault(),this.prev())},_go:function(){for(var a=0,b=this._elements.length;awindow.innerWidth/2?c.player.next():c.player.prev()),d||f.activate())},_onTouchMove:function(a){this._shower.container.isSlideMode()&&a.preventDefault()},_getSlideByElement:function(a){for(var b=this._shower.getSlides(),c=null,d=0,e=b.length;d` of your presentation. - -## PDF - -Ribbon could be exported to PDF by printing it from the list mode in Chrome or Opera browsers. See [printing documentation](https://github.com/shower/shower/blob/master/docs/printing-en.md) for more options. - -## Development - -If you want to adjust theme for your needs: - -1. Fork this repository and clone it to your local machine. -2. Install dependencies: `npm install`. -3. Start a local server with watcher: `npm run dev` or just `gulp` if you have it installed globally. -4. Edit your files and see changes in the opened browser. - -To take part in Ribbon development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request. - ---- -Licensed under [MIT License](LICENSE.md). diff --git a/doc/presentations/meetup3/shower/themes/ribbon/index.html b/doc/presentations/meetup3/shower/themes/ribbon/index.html deleted file mode 100644 index 98850917e05..00000000000 --- a/doc/presentations/meetup3/shower/themes/ribbon/index.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - Ribbon theme for Shower - - - - - - -
-

Presentation Title

-

Yours Truly, Famous Inc.

-
-
-

Slide Header

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch letterpress.

-

Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.

-

Echo Park 8-bit sustainable umami deep v Kickstarter.

-
-
-

Inline Elements

-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-
-
-

Quotes

-
-

Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.

-
-
-
-

Post-ironic fashion axe flexitarian, Tonx narwhal messenger bag Tumblr. Portland gentrify deep v kale chips literally.

-
-
Yours Truly
-
-
-
-

Nested Lists

-
    -
  1. Literally viral vegan, ugh drinking vinegar photo booth
  2. -
  3. Wes Anderson chillwave Marfa pour-over Etsy banh mi
  4. -
  5. Ethnic polaroid lo-fi iPhone ennui -
      -
    • Yr wayfarers before they sold out Kickstarter asymmetrical
    • -
    • Irony flexitarian readymade quinoa, kogi bespoke meggings narwhal
    • -
    • Skateboard Etsy twee artisan Echo Park
    • -
    -
  6. -
  7. Tonx kitsch fingerstache readymade, retro single-origin coffee
  8. -
-
-
-

Block Lists

-
    -
  • Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack.
  • -
  • Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.
  • -
  • Leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical paleo you probably haven’t heard of.
  • -
-
-
-

Latin and Cyrillic List Bullets

-
    -
  • Occupy locavore blog, mustache you probably haven't heard of them
  • -
  • Skateboard pork belly aesthetic hoodie selfies brunch
  • -
  • Food truck gluten-free disrupt Portland
  • -
-
    -
  • Helvetica narwhal drinking vinegar chillwave, post-ironic ennui
  • -
  • Cray pug paleo retro, Echo Park narwhal Wes Anderson
  • -
  • Disrupt Williamsburg fixie, shabby chic bicycle rights hashtag kogi
  • -
-
-
-

Two Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Three Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Simple Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Striped Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Plain Code Listing

-
<html lang="en">
-<head> <!--Comment-->
-    <title>Shower</title>
-    <meta charset="UTF-8">
-    <link rel="stylesheet" href="screen.css">
-    <script src="script.js"></script>
-</head>
-
-
-

Numbered Code Listing

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Lines

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Hidden Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Grid Slide

-
-
-

White Slide

-
-
-

Black Slide

-
-
-

Shout

-
-
-

Multiline
Shout

-
-
-

Linked Shout

-
-
-

Growing Shout

-
-
-

Shrinking Shout

-
-
-
- -
Copyright © 2016 Yours Truly, Famous Inc.
-
-
-
- -
-
- -
-
- - - - - - - - - -
-
-

Timer

-
-
-

List Navigation

-
    -
  1. Ennui keffiyeh thundercats
  2. - - - - -
-

Before they sold out master

-
-
- - - - - diff --git a/doc/presentations/meetup3/shower/themes/ribbon/pictures/canvas.png b/doc/presentations/meetup3/shower/themes/ribbon/pictures/canvas.png deleted file mode 100644 index 6ddd30154f2..00000000000 Binary files a/doc/presentations/meetup3/shower/themes/ribbon/pictures/canvas.png and /dev/null differ diff --git a/doc/presentations/meetup3/shower/themes/ribbon/pictures/exact.png b/doc/presentations/meetup3/shower/themes/ribbon/pictures/exact.png deleted file mode 100644 index b27251c57cb..00000000000 Binary files a/doc/presentations/meetup3/shower/themes/ribbon/pictures/exact.png and /dev/null differ diff --git a/doc/presentations/meetup3/shower/themes/ribbon/pictures/square.png b/doc/presentations/meetup3/shower/themes/ribbon/pictures/square.png deleted file mode 100644 index 62cb2384a5f..00000000000 Binary files a/doc/presentations/meetup3/shower/themes/ribbon/pictures/square.png and /dev/null differ diff --git a/doc/presentations/meetup3/shower/themes/ribbon/pictures/tall.png b/doc/presentations/meetup3/shower/themes/ribbon/pictures/tall.png deleted file mode 100644 index fbc9f09a2ab..00000000000 Binary files a/doc/presentations/meetup3/shower/themes/ribbon/pictures/tall.png and /dev/null differ diff --git a/doc/presentations/meetup3/shower/themes/ribbon/pictures/wide.png b/doc/presentations/meetup3/shower/themes/ribbon/pictures/wide.png deleted file mode 100644 index 1e83b0ac7ad..00000000000 Binary files a/doc/presentations/meetup3/shower/themes/ribbon/pictures/wide.png and /dev/null differ diff --git a/doc/presentations/meetup3/shower/themes/ribbon/styles/presentation_links.html b/doc/presentations/meetup3/shower/themes/ribbon/styles/presentation_links.html deleted file mode 100644 index 74981d8eac5..00000000000 --- a/doc/presentations/meetup3/shower/themes/ribbon/styles/presentation_links.html +++ /dev/null @@ -1,2 +0,0 @@ -http://www.slideshare.net/AlexeyMilovidov1/clickhouse-69616890/AlexeyMilovidov1/clickhouse-69616890 -file:///home/milovidov/work/Presentation/shower/index.html#cover diff --git a/doc/presentations/meetup3/shower/themes/ribbon/styles/screen-16x10.css b/doc/presentations/meetup3/shower/themes/ribbon/styles/screen-16x10.css deleted file mode 100644 index d21f190feea..00000000000 --- a/doc/presentations/meetup3/shower/themes/ribbon/styles/screen-16x10.css +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8"; - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot); - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/pUcnOdRwl83MvPPzrNomhyletnA.woff) format('woff'), - url(https://yastatic.net/adv-www/_/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg#YandexSansTextWeb-Bold) format('svg'); - font-weight: 700; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot); - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff) format('woff'), - url(https://yastatic.net/adv-www/_/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/gwyBTpxSwkFCF1looxqs6JokKls.svg#YandexSansTextWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot); - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff) format('woff'), - url(https://yastatic.net/adv-www/_/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/EKLr1STNokPqxLAQa_RyN82pL98.svg#YandexSansTextWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot); - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff) format('woff'), - url(https://yastatic.net/adv-www/_/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg#YandexSansDisplayWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot); - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/40vXwNl4eYYMgteIVgLP49dwmfc.woff) format('woff'), - url(https://yastatic.net/adv-www/_/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg#YandexSansDisplayWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - -*,::after,::before{box-sizing:border-box} -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline} -article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block} -.caption p,body{line-height:1} -p {line-height: 1} -ol,ul{list-style:none} -blockquote,q{quotes:none} -blockquote::after,blockquote::before,q::after,q::before{content:none} -table{border-collapse:collapse;border-spacing:0} -a{text-decoration:none} -@page{margin:0;size:1280px 720px} -.shower{color:#000;counter-reset:slide;font:25px/2 Yandex Sans Display Web,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none} -@media print{.shower{text-rendering:geometricPrecision} -} -.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90} -@media (min-width:1174px){.caption{font-size:50px} -} -@media (min-width:2348px){.caption{font-size:100px} -} -.caption h1{padding-bottom:.15em;font:1em/2 Yandex Sans Display Web,sans-serif} -.caption p{font-size:.6em} -.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60} -.slide{position:relative;z-index:1;overflow:hidden;padding:20px 100px 0;width:1024px;height:640px;background:#fff;font-size:25px} - -/*.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}*/ - -.slide h1{vertical-align:middle; color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide h2{margin-bottom:34px;color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide p{margin-bottom:1em} -.slide p.note{color:#979a9e} -.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2} -.slide b,.slide strong{font-weight:700} -.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic} -.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em} -.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace} -.slide mark{background:#fafaa2} -.slide sub,.slide sup{position:relative;line-height:0;font-size:75%} -.slide sub{bottom:-.25em} -.slide sup{top:-.5em} -.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'} -.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700} -.slide ol,.slide ul{margin-bottom:0em;counter-reset:list} -.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em} -.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right} -.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em} -.slide ul>li::before{padding-right:.5em;content:'•'} -.slide ul>li:lang(ru)::before{content:'—'} -.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."} -.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)} -.slide table td:first-child,.slide table th:first-child{padding-left:96px} -.slide table td:last-child,.slide table th:last-child{padding-right:96px} -.slide table th{text-align:left;font-weight:700} -.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x} -.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)} -.slide table.striped tr>*{background-image:none} -.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal} -.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4} -.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)} -.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."} -.slide pre mark{position:relative;z-index:-1;margin:0 -.3em} -.slide pre mark.important{background:#c00;color:#fff} -.slide pre .comment{color:#999} -.slide footer{position:absolute;right:0;bottom:-640px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s} -.slide footer mark{background:rgba(255,255,255,.8)} -.slide:hover>footer{bottom:0} -.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated} -@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto} -} -.slide.black{background-color:#000} -.slide.black::after,.slide.white::after{visibility:hidden} -.slide.white{background-color:#fff} -.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} -.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2} -.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3} -.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} -.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x} -.slide .cover{z-index:-1;max-width:100%;max-height:100%} -.slide .cover.w,.slide .cover.width{width:100%;max-height:none} -.slide .cover.h,.slide .cover.height{height:100%;max-width:none} -.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)} -.slide .cover+figcaption.white{color:#fff} -.slide .cover+figcaption a{color:currentcolor} -.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} -.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none} -.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} -.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)} -.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0} -.slide .place.r,.slide .place.right{right:0;left:auto} -.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0} -.slide .place.l,.slide .place.left{left:0} -.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)} -.progress[style*='100%']{padding-left:10px} -.badge,.badge a,.progress{position:absolute} -.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden} -@media (min-width:1174px){.badge{font-size:20px} -} -@media (min-width:2348px){.badge{font-size:40px} -} -.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)} -.region{display:none} -@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)} -} -@media screen and (min-width:1174px){.shower.list{padding-top:50px} -} -@media screen and (min-width:2348px){.shower.list{padding-top:100px} -} -@media screen{.shower.list .caption{display:block} -.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -455px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)} -} -@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -270px 50px;-webkit-transform:scale(.5);transform:scale(.5)} -} -@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)} -} -@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide *{pointer-events:none} -.shower.list .badge,.shower.list .slide footer{display:block} -.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-320px 0 0 -512px;width:1024px;height:640px;background:#000} -.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden} -.shower.full .slide:target{margin:0;visibility:visible} -.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0} -.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)} -.shower.full .slide .next{visibility:hidden} -.shower.full .slide .next.active{visibility:visible} -.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform} -.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)} -.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)} -.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)} -.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)} -.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block} -} diff --git a/doc/presentations/meetup3/shower/themes/ribbon/styles/screen-4x3.css b/doc/presentations/meetup3/shower/themes/ribbon/styles/screen-4x3.css deleted file mode 100644 index 6648b972c30..00000000000 --- a/doc/presentations/meetup3/shower/themes/ribbon/styles/screen-4x3.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8";@font-face{font-family:PT Sans;src:url(../fonts/pt-sans-regular.woff) format("woff")}@font-face{font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold.woff) format("woff")}@font-face{font-style:italic;font-family:PT Sans;src:url(../fonts/pt-sans-italic.woff) format("woff")}@font-face{font-style:italic;font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold-italic.woff) format("woff")}@font-face{font-family:PT Sans Narrow;font-weight:700;src:url(../fonts/pt-sans-narrow-bold.woff) format("woff")}@font-face{font-family:PT Mono;src:url(../fonts/pt-mono-regular.woff) format("woff")}*,::after,::before{box-sizing:border-box}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}.caption p,body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::after,blockquote::before,q::after,q::before{content:none}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}@page{margin:0;size:1024px 768px}.shower{color:#000;counter-reset:slide;font:25px/2 PT Sans,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none}@media print{.shower{text-rendering:geometricPrecision}}.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90}@media (min-width:1174px){.caption{font-size:50px}}@media (min-width:2348px){.caption{font-size:100px}}.caption h1{padding-bottom:.15em;font:700 1em/1 PT Sans Narrow,sans-serif}.caption p{font-size:.6em}.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60}.slide{position:relative;z-index:1;overflow:hidden;padding:106px 100px 0;width:1024px;height:768px;background:#fff;font-size:25px}.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}.slide h2{margin-bottom:34px;color:#585a5e;font:700 50px/1 PT Sans Narrow,sans-serif}.slide p{margin-bottom:1em}.slide p.note{color:#979a9e}.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2}.slide b,.slide strong{font-weight:700}.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic}.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em}.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace}.slide mark{background:#fafaa2}.slide sub,.slide sup{position:relative;line-height:0;font-size:75%}.slide sub{bottom:-.25em}.slide sup{top:-.5em}.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'}.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700}.slide ol,.slide ul{margin-bottom:1em;counter-reset:list}.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em}.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right}.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em}.slide ul>li::before{padding-right:.5em;content:'•'}.slide ul>li:lang(ru)::before{content:'—'}.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."}.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)}.slide table td:first-child,.slide table th:first-child{padding-left:96px}.slide table td:last-child,.slide table th:last-child{padding-right:96px}.slide table th{text-align:left;font-weight:700}.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x}.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)}.slide table.striped tr>*{background-image:none}.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal}.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)}.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."}.slide pre mark{position:relative;z-index:-1;margin:0 -.3em}.slide pre mark.important{background:#c00;color:#fff}.slide pre .comment{color:#999}.slide footer{position:absolute;right:0;bottom:-768px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s}.slide footer mark{background:rgba(255,255,255,.8)}.slide:hover>footer{bottom:0}.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto}}.slide.black{background-color:#000}.slide.black::after,.slide.white::after{visibility:hidden}.slide.white{background-color:#fff}.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2}.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3}.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x}.slide .cover{z-index:-1;max-width:100%;max-height:100%}.slide .cover.w,.slide .cover.width{width:100%;max-height:none}.slide .cover.h,.slide .cover.height{height:100%;max-width:none}.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)}.slide .cover+figcaption.white{color:#fff}.slide .cover+figcaption a{color:currentcolor}.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none}.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0}.slide .place.r,.slide .place.right{right:0;left:auto}.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0}.slide .place.l,.slide .place.left{left:0}.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)}.progress[style*='100%']{padding-left:10px}.badge,.badge a,.progress{position:absolute}.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden}@media (min-width:1174px){.badge{font-size:20px}}@media (min-width:2348px){.badge{font-size:40px}}.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.region{display:none}@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)}}@media screen and (min-width:1174px){.shower.list{padding-top:50px}}@media screen and (min-width:2348px){.shower.list{padding-top:100px}}@media screen{.shower.list .caption{display:block}.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -551px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)}}@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -334px 50px;-webkit-transform:scale(.5);transform:scale(.5)}}@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)}}@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)}.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)}.shower.list .slide *{pointer-events:none}.shower.list .badge,.shower.list .slide footer{display:block}.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-384px 0 0 -512px;width:1024px;height:768px;background:#000}.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden}.shower.full .slide:target{margin:0;visibility:visible}.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0}.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)}.shower.full .slide .next{visibility:hidden}.shower.full .slide .next.active{visibility:visible}.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)}.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)}.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)}.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)}.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block}} \ No newline at end of file diff --git a/doc/presentations/meetup4/LICENSE.md b/doc/presentations/meetup4/LICENSE.md deleted file mode 100644 index bd3449d3576..00000000000 --- a/doc/presentations/meetup4/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License - -Copyright © 2010–2015 Vadim Makeev, http://pepelsbey.net/ - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -# Лицензия MIT - -Copyright © 2010–2015 Вадим Макеев, http://pepelsbey.net/ - -Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: - -Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. - -ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. diff --git a/doc/presentations/meetup4/clickhouse_for_analysts.pdf b/doc/presentations/meetup4/clickhouse_for_analysts.pdf deleted file mode 100644 index 6008d3dfc27..00000000000 Binary files a/doc/presentations/meetup4/clickhouse_for_analysts.pdf and /dev/null differ diff --git a/doc/presentations/meetup4/index.html b/doc/presentations/meetup4/index.html deleted file mode 100644 index 59f71b1ca7e..00000000000 --- a/doc/presentations/meetup4/index.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - ClickHouse meetup в Новосибирске - - - - - - -
-

ClickHouse meetup в Новосибирске

-
- -
-

ClickHouse meetup
в Новосибирске

-
- -
-

ClickHouse: настоящее и будущее

-
- -
-

Что такое ClickHouse?

-

ClickHouse - distributed analytical column-oriented DBMS

-
- -
-

Почему column-oriented?

-

Так работают row-oriented системы:

-

-
-
-

Почему column-oriented?

-

Так работают column-oriented системы:

-

-
-
-

Почему ClickHouse?

-

Ничего готового не подошло.

-

Тогда мы сделали ClickHouse.

-

«Эволюция структур данных в Яндекс.Метрике»

-

https://habrahabr.ru/company/yandex/blog/273305/

-
-
-

Метрика 2.0

- -
-
-

Коротко

-
    -
  • column-oriented
  • -
  • линейная масштабируемость
  • -
  • отказоустойчивость
  • -
  • загрузка данных в реальном времени
  • -
  • онлайн (sub-second) запросы
  • -
  • поддержка диалекта SQL + расширения
    (массивы, вложенные структуры данных, domain-specific функции, сэмплирование)
  • -
-
-
-

Основной кластер Метрики

-
    -
  • >20 триллионов строк
  • -
  • 460 серверов
  • -
  • скорость обработки данных до двух терабайт в секунду
  • -
-

* Если вы хотите попробовать ClickHouse, достаточно и одного сервера.

-
-
-

ClickHouse в Яндексе

-

Нам удалось сделать систему сравнительно удобной.

-

С самого начала мы имели подробную документацию.

-

В течение пары лет ClickHouse распространился по другим отделам Яндекса.

-

Почта, Маркет, Директ, Вебмастер, AdFox, Инфраструктура, Бизнес аналитика...

-

Есть случаи, когда аналитики самостоятельно устанавливали ClickHouse на виртуальные машины и успешно использовали без каких-либо вопросов.

-
-
-

Open-source

-

Потом мы решили — ClickHouse слишком хорошая система, чтобы нам одним на нём сидеть.

-

Чтобы было веселее, надо подсадить на ClickHouse людей снаружи, пусть радуются. Решили сделать open-source.

-
-
-

Open-source

-

Лицензия Apache 2.0 — минимум ограничений.

-

Цель — максимальное распространение продукта.

-

Мы хотим, чтобы продуктом Яндекса пользовались по всему миру.

-

См. “Яндекс открывает ClickHouse”

-

https://habrahabr.ru/company/yandex/blog/303282/

-
-
-

Когда надо использовать ClickHouse

-

Хорошо структурированные, очищенные, неизменяемые события.

-

 

-

Click stream. Веб-аналитика. Рекламные сети. RTB. E-commerce.

-

Аналитика онлайн игр. Данные сенсоров и мониторингов. Телеком данные.

-

Финансовые транзакции. Биржевая аналитика.

-
-
-

Когда не надо использовать ClickHouse

-

OLTP
В ClickHouse нет UPDATE и полноценных транзакций.

-

Key-Value
Если нужны частые запросы на обновление по ключу, используйте другое решение.

-

Blob-store, document oriented
ClickHouse предназначен для большого количества мелко-гранулированных данных.

-

Излишне нормализованные данные
Лучше сделать широкую таблицу фактов.

-
-
-

Почему ClickHouse такой быстрый?

-

 

-

— от безысходности.

-

Яндекс.Метрика должна работать.

-
-
-

Почему ClickHouse такой быстрый?

-

Алгоритмическая оптимизация.

-

MergeTree, локальность расположения данных на диске
— быстрые диапазонные запросы.

-

Пример: функция uniqCombined состоит из комбинации трёх различных структур данных, подходящих под разные диапазоны кардинальностей.

-

Низкоуровневая оптимизация.

-

Пример: vectorized query execution.

-

Специализация и внимание к деталям.

-

Пример: у нас есть 17 разных алгоритмов выполнения GROUP BY. Для вашего запроса выбирается лучший.

-
- - -
-

Что нового в ClickHouse

-
- -
-

Команда

-

Теперь 5 разработчиков.

-

- - - - - -

-
- -
- -

В предыдущих сериях

- -

— HTTP и executable источники;

-

— оптимизация мержей, вертикальный мерж;

-

— трассировка распределённых запросов;

-

— clickhouse-local;

-

— операторы BETWEEN, ||;

-

— функции UUID - text;

- -
-
- -

Новое в языке запросов

- -

— KILL QUERY;

-

— LIMIT BY;

-

— SELECT INTO OUTFILE;

- -
-
- -

Сборка

- -

— «правильная» сборка и пакеты;

-

— Таблица system.build_options;

- -
-
- -

Интерфейсы

- -

— возможность получить прогресс выполнения в HTTP заголовках;

-

— возможность пропуска ошибок в текстовых форматах;

-

— правильные коды ответа в HTTP интерфейсе;

- -
-
- -

Словари

- -

— производительность кэшируемых внешних словарей;

-

— инструментирование кэшируемых внешних словарей;

-

— HTTPS словари;

- -
-
- -

Инструментирование

- -

— информация об использовании памяти под индекс;

-

— информация о размере столбцов в несжатом виде;

-

— метрики по потреблению оперативки кэшами;

-

— метрики про мержи;

- -
-
- -

Оптимизации

- -

— оптимизация DISTINCT;

-

— производительность gzip в HTTP интерфейсе;

-

— оптимизация mark cache;

- -
-
- -

Функции

- -

— правильная логика сравнений, least, greatest;

-

— groupUniqArray для всех типов данных;

-

— decodeURLComponent;

- -
-
- -

Что-то ещё

- -

— защита от случайного DROP TABLE;

-

— use_client_time_zone; timezone в конфиге;

-

— fsync_metadata;

- -
-
- -

Сообщество

- -

— интеграция с Grafana, Redash, Apache Zeppelin, Superset;

-

— правильные пакеты для CentOS, RHEL, GosLinux;

-

— драйвер native протокола для Go и C++;

-

— возможность передавать заголовки X-ClickHouse-*;

-

— бенчмарки NYC Taxi, Percona (Spark);

-

— бенчмарк Greenplum;

-

— англоязычный Telegram чат;

-

— встречи и доклады (Париж - февраль, Сан-Франциско - апрель);

- -
- -
-

ClickHouse vs. Spark

-

https://www.percona.com/blog/2017/02/13/clickhouse-new-opensource-columnar-database/

- -
- -
-

ClickHouse vs. Greenplum

-

-
- -
- -

TODO (март-апрель 2017)

- -

— распределённые DDL запросы;

-

конфиги в ZooKeeper;

-

— полная поддержка NULL;

- -
-
- -

TODO (весна-лето 2017)

- -

— работоспособность ODBC драйвера под Windows;

-

— переделать анализ запроса: правильная поддержка JOIN;

- -
- -
-

Сообщество

-

Сайт: https://clickhouse.yandex/

-

Google groups: https://groups.google.com/forum/#!forum/clickhouse

-

Рассылка: clickhouse-feedback@yandex-team.com

-

Telegram чат: https://telegram.me/clickhouse_en and https://telegram.me/clickhouse_ru (уже 500 участников)

-

GitHub: https://github.com/yandex/ClickHouse/

-

 

-

+ встречи. Москва, Санкт-Петербург, Новосибирск... Далее: Екатеринбург, Киев, Минск, Сан-Франциско...

-
- -
-

Бонус

-
- - -
-

Подключение к ClickHouse

-

HTTP REST

-

clickhouse-client

-

JDBC

-

 

-

Python, PHP, Go, Perl, Ruby, Node.JS, R, .NET

-

 

-

Web UI: https://github.com/smi2/clickhouse-frontend

-
- -
-

ClickHouse vs. typical row-oriented DBMS

-

Itai Shirav:

«I haven't made a rigorous comparison, but I did convert a time-series table with 9 million rows from Postgres to ClickHouse.

-

Under ClickHouse queries run about 100 times faster, and the table takes 20 times less disk space. Which is pretty amazing if you ask me».

-
-
-

 

-

Bao Dang:

«Obviously, ClickHouse outperformed PostgreSQL at any metric».

-

https://github.com/AnalyticsGo/AnalyticsGo/issues/1

-
-
-

ClickHouse vs. Vertica

-

Timur Shenkao:

«ClickHouse is extremely fast at simple SELECTs without joins, much faster than Vertica».

-
-
-

ClickHouse vs. PrestoDB

-

Ömer Osman Koçak:

- «When we evaluated ClickHouse the results were great compared to Prestodb. Even though the columnar storage optimizations for ORC and Clickhouse is quite similar, Clickhouse uses CPU and Memory resources more efficiently (Presto also uses vectorized execution but cannot take advantage of hardware level optimizations such as SIMD instruction sets because it's written in Java so that's fair) so we also wanted to add support for Clickhouse for our open-source analytics platform Rakam (https://github.com/rakam-io/rakam)»

-
-
-

ClickHouse vs. Spark

-

«Я потестировал Clickhouse, по скорости просто отлично = намного быстрее spark на одной машине (у меня получилось порядка 3x, но еще буду сравнивать). Кроме того compression получается лучше».

-
-
-

ClickHouse vs. Google BigQuery

-

«ClickHouse показывает сравнимую скорость на таком запросе за 30 дней и в 8 раз быстрее (!) на таком запросе. В планах есть протестировать и другие запросы, еще не добрались.

Скорость выполнения запросов стабильна. В Google BigQuery в период пиковых нагрузок, например в 4:00 p.m. PDT или в начале месяца, время выполнения запросов может заметно увеличиваться».

-
-
-

ClickHouse vs. Druid

-

«В этом году мы развернули сборку на основе Druid — Imply Analytics Platform, а также Tranquility, и уже приготовились запускать в продакшн… Но после выхода ClickHouse сразу отказались от Druid, хотя потратили два месяца на его изучение и внедрение».

-

https://habrahabr.ru/company/smi2/blog/314558/

-
-
-

ClickHouse vs. InfiniDB

-

«结论:clickhouse速度更快!»

-

«In conclusion, ClickHouse is faster!»

-

http://verynull.com/2016/08/22/infinidb与clickhouse对比/

-

-
-
-

ClickHouse for sensor data

-

-
- -
- - - diff --git a/doc/presentations/meetup4/pictures/column_oriented.gif b/doc/presentations/meetup4/pictures/column_oriented.gif deleted file mode 100644 index 15f4b12e697..00000000000 Binary files a/doc/presentations/meetup4/pictures/column_oriented.gif and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/greenplum.png b/doc/presentations/meetup4/pictures/greenplum.png deleted file mode 100644 index e919a45dadc..00000000000 Binary files a/doc/presentations/meetup4/pictures/greenplum.png and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/infinidb_cn.png b/doc/presentations/meetup4/pictures/infinidb_cn.png deleted file mode 100644 index 957c392a448..00000000000 Binary files a/doc/presentations/meetup4/pictures/infinidb_cn.png and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/kaspersky.png b/doc/presentations/meetup4/pictures/kaspersky.png deleted file mode 100644 index f8aae1da9ee..00000000000 Binary files a/doc/presentations/meetup4/pictures/kaspersky.png and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/metrika2.png b/doc/presentations/meetup4/pictures/metrika2.png deleted file mode 100644 index 3ee37e98fc6..00000000000 Binary files a/doc/presentations/meetup4/pictures/metrika2.png and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/milovidov.jpg b/doc/presentations/meetup4/pictures/milovidov.jpg deleted file mode 100644 index eb0317f8608..00000000000 Binary files a/doc/presentations/meetup4/pictures/milovidov.jpg and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/proller.jpg b/doc/presentations/meetup4/pictures/proller.jpg deleted file mode 100644 index 02b1daa1d6c..00000000000 Binary files a/doc/presentations/meetup4/pictures/proller.jpg and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/row_oriented.gif b/doc/presentations/meetup4/pictures/row_oriented.gif deleted file mode 100644 index 53daa20f322..00000000000 Binary files a/doc/presentations/meetup4/pictures/row_oriented.gif and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/spark.png b/doc/presentations/meetup4/pictures/spark.png deleted file mode 100644 index 3ae61297631..00000000000 Binary files a/doc/presentations/meetup4/pictures/spark.png and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/stanly.jpg b/doc/presentations/meetup4/pictures/stanly.jpg deleted file mode 100644 index fb406f156ba..00000000000 Binary files a/doc/presentations/meetup4/pictures/stanly.jpg and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/vludv.jpg b/doc/presentations/meetup4/pictures/vludv.jpg deleted file mode 100644 index ebe6db87126..00000000000 Binary files a/doc/presentations/meetup4/pictures/vludv.jpg and /dev/null differ diff --git a/doc/presentations/meetup4/pictures/ztlpn.jpg b/doc/presentations/meetup4/pictures/ztlpn.jpg deleted file mode 100644 index a2931b91585..00000000000 Binary files a/doc/presentations/meetup4/pictures/ztlpn.jpg and /dev/null differ diff --git a/doc/presentations/meetup4/shower/shower.min.js b/doc/presentations/meetup4/shower/shower.min.js deleted file mode 100644 index 449843ac45d..00000000000 --- a/doc/presentations/meetup4/shower/shower.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Core for Shower HTML presentation engine - * shower-core v2.0.7, https://github.com/shower/core - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -!function(a){var b,c={NOT_RESOLVED:"NOT_RESOLVED",IN_RESOLVING:"IN_RESOLVING",RESOLVED:"RESOLVED"},d=function(){var l={trackCircularDependencies:!0,allowMultipleDeclarations:!0},m={},n=!1,o=[],p=function(a,d,e){e||(e=d,d=[]);var f=m[a];f||(f=m[a]={name:a,decl:b}),f.decl={name:a,prev:f.decl,fn:e,state:c.NOT_RESOLVED,deps:d,dependents:[],exports:b}},q=function(b,c,d){"string"==typeof b&&(b=[b]),n||(n=!0,k(v)),o.push({deps:b,cb:function(b,f){f?(d||e)(f):c.apply(a,b)}})},r=function(a){var b=m[a];return b?c[b.decl.state]:"NOT_DEFINED"},s=function(a){return!!m[a]},t=function(a){for(var b in a)a.hasOwnProperty(b)&&(l[b]=a[b])},u=function(){var a,b={};for(var c in m)m.hasOwnProperty(c)&&(a=m[c],(b[a.decl.state]||(b[a.decl.state]=[])).push(c));return b},v=function(){n=!1,w()},w=function(){var a,b=o,c=0;for(o=[];a=b[c++];)x(null,a.deps,[],a.cb)},x=function(a,b,c,d){var e=b.length;e||d([]);for(var g,h,i=[],j=function(a,b){if(b)return void d(null,b);if(!--e){for(var c,f=[],g=0;c=i[g++];)f.push(c.exports);d(f)}},k=0,l=e;k ")+'"')},h=function(a){return Error('Declaration of module "'+a.name+'" has already been provided')},i=function(a){return Error('Multiple declarations of module "'+a.name+'" have been detected')},j=function(a,b){for(var c,d=0;c=b[d++];)if(a===c)return!0;return!1},k=function(){var b=[],c=function(a){return 1===b.push(a)},d=function(){var a=b,c=0,d=b.length;for(b=[];c=0&&!b.defaultPrevented();){var d=a[c];d&&(d.context?d.callback.call(d.context,b):d.callback(b)),c--}}}),a(e)}),shower.modules.define("Plugins",["Emitter","util.extend"],function(a,b,c){function d(a){this.events=new b({context:this}),this._showerGlobal=a,this._showerInstances=a.getInited(),this._plugins={},this._instances=[],a.events.on("init",this._onShowerInit,this)}c(d.prototype,{destroy:function(){this._showerGlobal.events.off("init",this._onShowerInit,this),this._plugins=null},add:function(a,b){if(this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" already exist.");return this._requireAndAdd({name:a,options:b}),this},remove:function(a){if(!this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" not found.");return delete this._plugins[a],this.events.emit("remove",{name:a}),this},get:function(a,b){var c,d=this._plugins[a];if(d&&b)for(var e=0,f=this._instances.length;e=0;e--)if(d[e].getId()===a){b=d[e],c=e;break}return{slide:b,index:c}},_onSlideActivate:function(a){window.location.hash=a.get("slide").getId(),this._setTitle()},_onContainerSlideModeChange:function(){this._setTitle(),this.save()},_isSlideMode:function(){return this._shower.container.isSlideMode()},_onPopstate:function(){var a,b=this._shower,c=window.location.hash.substr(1),d=b.player.getCurrentSlide(),e=b.player.getCurrentSlideIndex();this._isSlideMode()&&e===-1?b.player.go(0):e===-1&&""!==window.location.hash&&b.player.go(0),d&&c!==d.getId()&&(a=this._getSlideById(c),b.player.go(a.index))},_setTitle:function(){var a=document.title,b=this._isSlideMode(),c=this._shower.player.getCurrentSlide();if(b&&c){var d=c.getTitle();document.title=d?d+" — "+this._documentTitle:this._documentTitle}else this._documentTitle!==a&&(document.title=this._documentTitle)}}),a(e)}),shower.modules.define("shower.Player",["Emitter","util.bound","util.extend"],function(a,b,c,d){function e(a){this.events=new b({context:this,parent:a.events}),this._shower=a,this._showerListeners=null,this._playerListeners=null,this._currentSlideNumber=-1,this._currentSlide=null,this.init()}d(e.prototype,{init:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this).on("slidemodeenter",this._onSlideModeEnter,this),this._playerListeners=this.events.group().on("prev",this._onPrev,this).on("next",this._onNext,this),document.addEventListener("keydown",c(this,"_onKeyDown"))},destroy:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),document.removeEventListener("keydown",c(this,"_onKeyDown")),this._currentSlide=null,this._currentSlideNumber=null,this._shower=null},next:function(){return this.events.emit("next"),this},prev:function(){return this.events.emit("prev"),this},first:function(){return this.go(0),this},last:function(){return this.go(this._shower.getSlidesCount()-1),this},go:function(a){"number"!=typeof a&&(a=this._shower.getSlideIndex(a));var b=this._shower.getSlidesCount(),c=this._currentSlide;return a!=this._currentSlideNumber&&a=0&&(c&&c.isActive()&&c.deactivate(),c=this._shower.get(a),this._currentSlide=c,this._currentSlideNumber=a,c.isActive()||c.activate(),this.events.emit("activate",{index:a,slide:c})),this},getCurrentSlide:function(){return this._currentSlide},getCurrentSlideIndex:function(){return this._currentSlideNumber},_onPrev:function(){this._changeSlide(this._currentSlideNumber-1)},_onNext:function(){this._changeSlide(this._currentSlideNumber+1)},_changeSlide:function(a){this.go(a)},_onSlideAdd:function(a){var b=a.get("slide");b.events.on("activate",this._onSlideActivate,this)},_onSlideRemove:function(a){var b=a.get("slide");b.events.off("activate",this._onSlideActivate,this)},_onSlideActivate:function(a){var b=a.get("slide"),c=this._shower.getSlideIndex(b);this.go(c)},_onKeyDown:function(a){if(this._shower.isHotkeysEnabled()&&!/^(?:button|input|select|textarea)$/i.test(a.target.tagName))switch(this.events.emit("keydown",{event:a}),a.which){case 33:case 38:case 37:case 72:case 75:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.prev();break;case 34:case 40:case 39:case 76:case 74:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.next();break;case 36:a.preventDefault(),this.first();break;case 35:a.preventDefault(),this.last();break;case 32:this._shower.container.isSlideMode()&&(a.shiftKey?this.prev():this.next())}},_onSlideModeEnter:function(){this._currentSlide||this.go(0)}}),a(e)}),shower.modules.define("shower.slidesParser",["Slide"],function(a,b){function c(a,c){var d=a.querySelectorAll(c);return d=Array.prototype.slice.call(d),d.map(function(a,c){var d=new b(a);return a.id||(a.id=c+1),d})}a(c)}),shower.modules.define("Slide",["shower.defaultOptions","Emitter","Options","slide.Layout","slide.layoutFactory","util.Store","util.extend"],function(a,b,c,d,e,f,g,h){function i(a,b,e){this.events=new c,this.options=new d(b),this.layout=null,this.state=new g({visited:0,index:null},e),this._content=a,this._isVisited=this.state.get("visited")>0,this._isActive=!1,this.init()}h(i.prototype,{init:function(){this.layout="string"==typeof this._content?new f.createLayout({content:this._content}):new e(this._content,this.options),this.layout.setParent(this),this._setupListeners()},destroy:function(){this._clearListeners(),this._isActive=null,this.options=null,this.layout.destroy()},activate:function(){this._isActive=!0;var a=this.state.get("visited");return this.state.set("visited",++a),this.events.emit("activate",{slide:this}),this},deactivate:function(){return this._isActive=!1,this.events.emit("deactivate",{slide:this}),this},isActive:function(){return this._isActive},isVisited:function(){return this.state.get("visited")>0},getTitle:function(){return this.layout.getTitle()},setTitle:function(a){return this.layout.setTitle(a),this},getId:function(){return this.layout.getElement().id},getContent:function(){return this.layout.getContent()},_setupListeners:function(){this.layoutListeners=this.layout.events.group().on("click",this._onSlideClick,this)},_clearListeners:function(){this.layoutListeners.offAll()},_onSlideClick:function(){this.activate(),this.events.emit("click",{slide:this})}}),a(i)}),shower.modules.define("slide.Layout",["Options","shower.defaultOptions","Emitter","util.bound","util.extend"],function(a,b,c,d,e,f){function g(a,e){this.options=new b({title_element_selector:c.slide_title_element_selector,active_classname:c.slide_active_classname,visited_classname:c.slide_visited_classname},e),this.events=new d,this._element=a,this._parent=null,this._parentElement=null,this.init()}f(g.prototype,{init:function(){var a=this._element.parentNode;a?this._parentElement=a:this.setParentElement(a)},destroy:function(){this.setParent(null)},setParent:function(a){this._parent!=a&&(this._clearListeners(),this._parent=a,this._parent&&this._setupListeners(),this.events.emit("parentchange",{parent:a}))},getParent:function(){return this._parent},setParentElement:function(a){a!=this._parentElement&&(this._parentElement=a,a.appendChild(this._element),this.events.emit("parentelementchange",{parentElement:a}))},getParentElement:function(){return this._parentElement},getElement:function(){return this._element},setTitle:function(a){var b=this.options.get("title_element_selector"),c=this._element.querySelector(b);c?c.innerHTML=a:(c=document.createElement(b),c.innerHTML=a,this._element.insertBefore(c,this._element.firstChild))},getTitle:function(){var a=this.options.get("title_element_selector"),b=this._element.querySelector(a);return b?b.textContent:null},getData:function(a){var b=this._element;return b.dataset?b.dataset[a]:b.getAttribute("data-"+a)},getContent:function(){return this._element.innerHTML},_setupListeners:function(){this._slideListeners=this._parent.events.group().on("activate",this._onSlideActivate,this).on("deactivate",this._onSlideDeactivate,this),this._element.addEventListener("click",e(this,"_onSlideClick"),!1)},_clearListeners:function(){this._slideListeners&&this._slideListeners.offAll(),this._element.removeEventListener("click",e(this,"_onSlideClick"))},_onSlideActivate:function(){this._element.classList.add(this.options.get("active_classname"))},_onSlideDeactivate:function(){var a=this._element.classList;a.remove(this.options.get("active_classname")),a.add(this.options.get("visited_classname"))},_onSlideClick:function(){this.events.emit("click")}}),a(g)}),shower.modules.define("slide.layoutFactory",["slide.Layout","util.extend"],function(a,b,c){var d={};c(d,{createLayout:function(a){a=a||{};var e=d._createElement(c({content:"",contentType:"slide"},a));return new b(e)},_createElement:function(a){var b=document.createElement("section");return b.innerHTML=a.content,b.classList.add(a.contentType),b}}),a(d)}),shower.modules.define("util.bound",function(a){function b(a,b){return a["__bound_"+b]||(a["__bound_"+b]=a[b].bind(a))}a(b)}),shower.modules.define("util.extend",function(a){function b(a){if(!a)throw new Error("util.extend: Target not found");return"undefined"==typeof Object.assign?c.apply(null,arguments):Object.assign.apply(null,arguments)}function c(a){for(var b=1,c=arguments.length;b0&&(a.preventDefault(),this.prev())},_go:function(){for(var a=0,b=this._elements.length;awindow.innerWidth/2?c.player.next():c.player.prev()),d||f.activate())},_onTouchMove:function(a){this._shower.container.isSlideMode()&&a.preventDefault()},_getSlideByElement:function(a){for(var b=this._shower.getSlides(),c=null,d=0,e=b.length;d` of your presentation. - -## PDF - -Ribbon could be exported to PDF by printing it from the list mode in Chrome or Opera browsers. See [printing documentation](https://github.com/shower/shower/blob/master/docs/printing-en.md) for more options. - -## Development - -If you want to adjust theme for your needs: - -1. Fork this repository and clone it to your local machine. -2. Install dependencies: `npm install`. -3. Start a local server with watcher: `npm run dev` or just `gulp` if you have it installed globally. -4. Edit your files and see changes in the opened browser. - -To take part in Ribbon development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request. - ---- -Licensed under [MIT License](LICENSE.md). diff --git a/doc/presentations/meetup4/shower/themes/ribbon/index.html b/doc/presentations/meetup4/shower/themes/ribbon/index.html deleted file mode 100644 index 98850917e05..00000000000 --- a/doc/presentations/meetup4/shower/themes/ribbon/index.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - Ribbon theme for Shower - - - - - - -
-

Presentation Title

-

Yours Truly, Famous Inc.

-
-
-

Slide Header

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch letterpress.

-

Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.

-

Echo Park 8-bit sustainable umami deep v Kickstarter.

-
-
-

Inline Elements

-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-
-
-

Quotes

-
-

Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.

-
-
-
-

Post-ironic fashion axe flexitarian, Tonx narwhal messenger bag Tumblr. Portland gentrify deep v kale chips literally.

-
-
Yours Truly
-
-
-
-

Nested Lists

-
    -
  1. Literally viral vegan, ugh drinking vinegar photo booth
  2. -
  3. Wes Anderson chillwave Marfa pour-over Etsy banh mi
  4. -
  5. Ethnic polaroid lo-fi iPhone ennui -
      -
    • Yr wayfarers before they sold out Kickstarter asymmetrical
    • -
    • Irony flexitarian readymade quinoa, kogi bespoke meggings narwhal
    • -
    • Skateboard Etsy twee artisan Echo Park
    • -
    -
  6. -
  7. Tonx kitsch fingerstache readymade, retro single-origin coffee
  8. -
-
-
-

Block Lists

-
    -
  • Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack.
  • -
  • Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.
  • -
  • Leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical paleo you probably haven’t heard of.
  • -
-
-
-

Latin and Cyrillic List Bullets

-
    -
  • Occupy locavore blog, mustache you probably haven't heard of them
  • -
  • Skateboard pork belly aesthetic hoodie selfies brunch
  • -
  • Food truck gluten-free disrupt Portland
  • -
-
    -
  • Helvetica narwhal drinking vinegar chillwave, post-ironic ennui
  • -
  • Cray pug paleo retro, Echo Park narwhal Wes Anderson
  • -
  • Disrupt Williamsburg fixie, shabby chic bicycle rights hashtag kogi
  • -
-
-
-

Two Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Three Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Simple Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Striped Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Plain Code Listing

-
<html lang="en">
-<head> <!--Comment-->
-    <title>Shower</title>
-    <meta charset="UTF-8">
-    <link rel="stylesheet" href="screen.css">
-    <script src="script.js"></script>
-</head>
-
-
-

Numbered Code Listing

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Lines

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Hidden Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Grid Slide

-
-
-

White Slide

-
-
-

Black Slide

-
-
-

Shout

-
-
-

Multiline
Shout

-
-
-

Linked Shout

-
-
-

Growing Shout

-
-
-

Shrinking Shout

-
-
-
- -
Copyright © 2016 Yours Truly, Famous Inc.
-
-
-
- -
-
- -
-
- - - - - - - - - -
-
-

Timer

-
-
-

List Navigation

-
    -
  1. Ennui keffiyeh thundercats
  2. - - - - -
-

Before they sold out master

-
-
- - - - - diff --git a/doc/presentations/meetup4/shower/themes/ribbon/pictures/canvas.png b/doc/presentations/meetup4/shower/themes/ribbon/pictures/canvas.png deleted file mode 100644 index 6ddd30154f2..00000000000 Binary files a/doc/presentations/meetup4/shower/themes/ribbon/pictures/canvas.png and /dev/null differ diff --git a/doc/presentations/meetup4/shower/themes/ribbon/pictures/exact.png b/doc/presentations/meetup4/shower/themes/ribbon/pictures/exact.png deleted file mode 100644 index b27251c57cb..00000000000 Binary files a/doc/presentations/meetup4/shower/themes/ribbon/pictures/exact.png and /dev/null differ diff --git a/doc/presentations/meetup4/shower/themes/ribbon/pictures/square.png b/doc/presentations/meetup4/shower/themes/ribbon/pictures/square.png deleted file mode 100644 index 62cb2384a5f..00000000000 Binary files a/doc/presentations/meetup4/shower/themes/ribbon/pictures/square.png and /dev/null differ diff --git a/doc/presentations/meetup4/shower/themes/ribbon/pictures/tall.png b/doc/presentations/meetup4/shower/themes/ribbon/pictures/tall.png deleted file mode 100644 index fbc9f09a2ab..00000000000 Binary files a/doc/presentations/meetup4/shower/themes/ribbon/pictures/tall.png and /dev/null differ diff --git a/doc/presentations/meetup4/shower/themes/ribbon/pictures/wide.png b/doc/presentations/meetup4/shower/themes/ribbon/pictures/wide.png deleted file mode 100644 index 1e83b0ac7ad..00000000000 Binary files a/doc/presentations/meetup4/shower/themes/ribbon/pictures/wide.png and /dev/null differ diff --git a/doc/presentations/meetup4/shower/themes/ribbon/styles/presentation_links.html b/doc/presentations/meetup4/shower/themes/ribbon/styles/presentation_links.html deleted file mode 100644 index 74981d8eac5..00000000000 --- a/doc/presentations/meetup4/shower/themes/ribbon/styles/presentation_links.html +++ /dev/null @@ -1,2 +0,0 @@ -http://www.slideshare.net/AlexeyMilovidov1/clickhouse-69616890/AlexeyMilovidov1/clickhouse-69616890 -file:///home/milovidov/work/Presentation/shower/index.html#cover diff --git a/doc/presentations/meetup4/shower/themes/ribbon/styles/screen-16x10.css b/doc/presentations/meetup4/shower/themes/ribbon/styles/screen-16x10.css deleted file mode 100644 index d21f190feea..00000000000 --- a/doc/presentations/meetup4/shower/themes/ribbon/styles/screen-16x10.css +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8"; - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot); - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/pUcnOdRwl83MvPPzrNomhyletnA.woff) format('woff'), - url(https://yastatic.net/adv-www/_/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg#YandexSansTextWeb-Bold) format('svg'); - font-weight: 700; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot); - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff) format('woff'), - url(https://yastatic.net/adv-www/_/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/gwyBTpxSwkFCF1looxqs6JokKls.svg#YandexSansTextWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot); - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff) format('woff'), - url(https://yastatic.net/adv-www/_/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/EKLr1STNokPqxLAQa_RyN82pL98.svg#YandexSansTextWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot); - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff) format('woff'), - url(https://yastatic.net/adv-www/_/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg#YandexSansDisplayWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot); - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/40vXwNl4eYYMgteIVgLP49dwmfc.woff) format('woff'), - url(https://yastatic.net/adv-www/_/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg#YandexSansDisplayWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - -*,::after,::before{box-sizing:border-box} -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline} -article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block} -.caption p,body{line-height:1} -p {line-height: 1} -ol,ul{list-style:none} -blockquote,q{quotes:none} -blockquote::after,blockquote::before,q::after,q::before{content:none} -table{border-collapse:collapse;border-spacing:0} -a{text-decoration:none} -@page{margin:0;size:1280px 720px} -.shower{color:#000;counter-reset:slide;font:25px/2 Yandex Sans Display Web,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none} -@media print{.shower{text-rendering:geometricPrecision} -} -.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90} -@media (min-width:1174px){.caption{font-size:50px} -} -@media (min-width:2348px){.caption{font-size:100px} -} -.caption h1{padding-bottom:.15em;font:1em/2 Yandex Sans Display Web,sans-serif} -.caption p{font-size:.6em} -.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60} -.slide{position:relative;z-index:1;overflow:hidden;padding:20px 100px 0;width:1024px;height:640px;background:#fff;font-size:25px} - -/*.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}*/ - -.slide h1{vertical-align:middle; color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide h2{margin-bottom:34px;color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide p{margin-bottom:1em} -.slide p.note{color:#979a9e} -.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2} -.slide b,.slide strong{font-weight:700} -.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic} -.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em} -.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace} -.slide mark{background:#fafaa2} -.slide sub,.slide sup{position:relative;line-height:0;font-size:75%} -.slide sub{bottom:-.25em} -.slide sup{top:-.5em} -.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'} -.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700} -.slide ol,.slide ul{margin-bottom:0em;counter-reset:list} -.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em} -.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right} -.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em} -.slide ul>li::before{padding-right:.5em;content:'•'} -.slide ul>li:lang(ru)::before{content:'—'} -.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."} -.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)} -.slide table td:first-child,.slide table th:first-child{padding-left:96px} -.slide table td:last-child,.slide table th:last-child{padding-right:96px} -.slide table th{text-align:left;font-weight:700} -.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x} -.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)} -.slide table.striped tr>*{background-image:none} -.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal} -.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4} -.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)} -.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."} -.slide pre mark{position:relative;z-index:-1;margin:0 -.3em} -.slide pre mark.important{background:#c00;color:#fff} -.slide pre .comment{color:#999} -.slide footer{position:absolute;right:0;bottom:-640px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s} -.slide footer mark{background:rgba(255,255,255,.8)} -.slide:hover>footer{bottom:0} -.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated} -@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto} -} -.slide.black{background-color:#000} -.slide.black::after,.slide.white::after{visibility:hidden} -.slide.white{background-color:#fff} -.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} -.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2} -.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3} -.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} -.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x} -.slide .cover{z-index:-1;max-width:100%;max-height:100%} -.slide .cover.w,.slide .cover.width{width:100%;max-height:none} -.slide .cover.h,.slide .cover.height{height:100%;max-width:none} -.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)} -.slide .cover+figcaption.white{color:#fff} -.slide .cover+figcaption a{color:currentcolor} -.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} -.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none} -.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} -.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)} -.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0} -.slide .place.r,.slide .place.right{right:0;left:auto} -.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0} -.slide .place.l,.slide .place.left{left:0} -.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)} -.progress[style*='100%']{padding-left:10px} -.badge,.badge a,.progress{position:absolute} -.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden} -@media (min-width:1174px){.badge{font-size:20px} -} -@media (min-width:2348px){.badge{font-size:40px} -} -.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)} -.region{display:none} -@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)} -} -@media screen and (min-width:1174px){.shower.list{padding-top:50px} -} -@media screen and (min-width:2348px){.shower.list{padding-top:100px} -} -@media screen{.shower.list .caption{display:block} -.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -455px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)} -} -@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -270px 50px;-webkit-transform:scale(.5);transform:scale(.5)} -} -@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)} -} -@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide *{pointer-events:none} -.shower.list .badge,.shower.list .slide footer{display:block} -.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-320px 0 0 -512px;width:1024px;height:640px;background:#000} -.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden} -.shower.full .slide:target{margin:0;visibility:visible} -.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0} -.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)} -.shower.full .slide .next{visibility:hidden} -.shower.full .slide .next.active{visibility:visible} -.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform} -.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)} -.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)} -.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)} -.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)} -.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block} -} diff --git a/doc/presentations/meetup4/shower/themes/ribbon/styles/screen-4x3.css b/doc/presentations/meetup4/shower/themes/ribbon/styles/screen-4x3.css deleted file mode 100644 index 6648b972c30..00000000000 --- a/doc/presentations/meetup4/shower/themes/ribbon/styles/screen-4x3.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8";@font-face{font-family:PT Sans;src:url(../fonts/pt-sans-regular.woff) format("woff")}@font-face{font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold.woff) format("woff")}@font-face{font-style:italic;font-family:PT Sans;src:url(../fonts/pt-sans-italic.woff) format("woff")}@font-face{font-style:italic;font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold-italic.woff) format("woff")}@font-face{font-family:PT Sans Narrow;font-weight:700;src:url(../fonts/pt-sans-narrow-bold.woff) format("woff")}@font-face{font-family:PT Mono;src:url(../fonts/pt-mono-regular.woff) format("woff")}*,::after,::before{box-sizing:border-box}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}.caption p,body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::after,blockquote::before,q::after,q::before{content:none}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}@page{margin:0;size:1024px 768px}.shower{color:#000;counter-reset:slide;font:25px/2 PT Sans,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none}@media print{.shower{text-rendering:geometricPrecision}}.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90}@media (min-width:1174px){.caption{font-size:50px}}@media (min-width:2348px){.caption{font-size:100px}}.caption h1{padding-bottom:.15em;font:700 1em/1 PT Sans Narrow,sans-serif}.caption p{font-size:.6em}.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60}.slide{position:relative;z-index:1;overflow:hidden;padding:106px 100px 0;width:1024px;height:768px;background:#fff;font-size:25px}.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}.slide h2{margin-bottom:34px;color:#585a5e;font:700 50px/1 PT Sans Narrow,sans-serif}.slide p{margin-bottom:1em}.slide p.note{color:#979a9e}.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2}.slide b,.slide strong{font-weight:700}.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic}.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em}.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace}.slide mark{background:#fafaa2}.slide sub,.slide sup{position:relative;line-height:0;font-size:75%}.slide sub{bottom:-.25em}.slide sup{top:-.5em}.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'}.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700}.slide ol,.slide ul{margin-bottom:1em;counter-reset:list}.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em}.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right}.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em}.slide ul>li::before{padding-right:.5em;content:'•'}.slide ul>li:lang(ru)::before{content:'—'}.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."}.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)}.slide table td:first-child,.slide table th:first-child{padding-left:96px}.slide table td:last-child,.slide table th:last-child{padding-right:96px}.slide table th{text-align:left;font-weight:700}.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x}.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)}.slide table.striped tr>*{background-image:none}.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal}.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)}.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."}.slide pre mark{position:relative;z-index:-1;margin:0 -.3em}.slide pre mark.important{background:#c00;color:#fff}.slide pre .comment{color:#999}.slide footer{position:absolute;right:0;bottom:-768px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s}.slide footer mark{background:rgba(255,255,255,.8)}.slide:hover>footer{bottom:0}.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto}}.slide.black{background-color:#000}.slide.black::after,.slide.white::after{visibility:hidden}.slide.white{background-color:#fff}.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2}.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3}.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x}.slide .cover{z-index:-1;max-width:100%;max-height:100%}.slide .cover.w,.slide .cover.width{width:100%;max-height:none}.slide .cover.h,.slide .cover.height{height:100%;max-width:none}.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)}.slide .cover+figcaption.white{color:#fff}.slide .cover+figcaption a{color:currentcolor}.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none}.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0}.slide .place.r,.slide .place.right{right:0;left:auto}.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0}.slide .place.l,.slide .place.left{left:0}.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)}.progress[style*='100%']{padding-left:10px}.badge,.badge a,.progress{position:absolute}.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden}@media (min-width:1174px){.badge{font-size:20px}}@media (min-width:2348px){.badge{font-size:40px}}.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.region{display:none}@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)}}@media screen and (min-width:1174px){.shower.list{padding-top:50px}}@media screen and (min-width:2348px){.shower.list{padding-top:100px}}@media screen{.shower.list .caption{display:block}.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -551px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)}}@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -334px 50px;-webkit-transform:scale(.5);transform:scale(.5)}}@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)}}@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)}.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)}.shower.list .slide *{pointer-events:none}.shower.list .badge,.shower.list .slide footer{display:block}.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-384px 0 0 -512px;width:1024px;height:768px;background:#000}.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden}.shower.full .slide:target{margin:0;visibility:visible}.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0}.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)}.shower.full .slide .next{visibility:hidden}.shower.full .slide .next.active{visibility:visible}.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)}.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)}.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)}.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)}.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block}} \ No newline at end of file diff --git a/doc/presentations/tbd/LICENSE.md b/doc/presentations/tbd/LICENSE.md deleted file mode 100644 index bd3449d3576..00000000000 --- a/doc/presentations/tbd/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License - -Copyright © 2010–2015 Vadim Makeev, http://pepelsbey.net/ - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -# Лицензия MIT - -Copyright © 2010–2015 Вадим Макеев, http://pepelsbey.net/ - -Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: - -Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. - -ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. diff --git a/doc/presentations/tbd/index.html b/doc/presentations/tbd/index.html deleted file mode 100644 index 0aaa3d7f18f..00000000000 --- a/doc/presentations/tbd/index.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - Немного про ClickHouse - - - - - - -
-

Немного про ClickHouse

-
-
-

Немного про ClickHouse

-
-
-

Обо мне

-

Алексей, разработчик ClickHouse.

-

С 2008 занимался движком обработки данных в Яндекс.Метрике.

-
-
-

История

-

Яндекс.Метрика — сервис веб-аналитики.

-

В России первый, в мире — второй.

-

-

Ежедневно приходит ~25 млрд. событий.

-

Надо показывать отчёты в реальном времени.

-
-
-

Старая Метрика (2008–2014)

-

Всё отлично работало. Пользователь мог получить примерно 50 разных отчётов.

-

Но есть проблема. Нам хочется большего. Чтобы каждый отчёт был сколь угодно кастомизируемым.

-
-
-

Конструктор отчётов

-

Быстро сделали прототип и на его основе реализовали "Конструктор отчётов".

-

Это 2010 год.

-

Стало понятно, куда двигаться дальше.

-

Нам нужна хорошая column-oriented DBMS.

-
-
-

Почему column-oriented?

-

Так работают row-oriented системы:

-

-
-
-

Почему column-oriented?

-

Так работают column-oriented системы:

-

-
-
-

Почему ClickHouse?

-

Ничего готового не подошло.

-

Тогда мы сделали ClickHouse.

-

«Эволюция структур данных в Яндекс.Метрике»

-

https://habrahabr.ru/company/yandex/blog/273305/

-
-
-

Метрика 2.0

- -
-
-

Коротко

-
    -
  • column-oriented
  • -
  • линейная масштабируемость
  • -
  • отказоустойчивость
  • -
  • загрузка данных в реальном времени
  • -
  • онлайн (sub-second) запросы
  • -
  • поддержка диалекта SQL + расширения
    (массивы, вложенные структуры данных, domain-specific функции, сэмплирование)
  • -
-
-
-

Основной кластер Метрики

-
    -
  • 18.3 триллионов строк
  • -
  • 426 серверов
  • -
  • скорость обработки данных до двух терабайт в секунду
  • -
-

* Если вы хотите попробовать ClickHouse, достаточно и одного сервера.

-
-
-

ClickHouse в Яндексе

-

Нам удалось сделать систему сравнительно удобной.

-

С самого начала мы имели подробную документацию.

-

В течение пары лет ClickHouse распространился по другим отделам Яндекса.

-

Почта, Маркет, Директ, Вебмастер, AdFox, Инфраструктура, Бизнес аналитика...

-

Есть случаи, когда аналитики самостоятельно устанавливали ClickHouse на виртуальные машины и успешно использовали без каких-либо вопросов.

-
-
-

Open-source

-

Потом мы решили — ClickHouse слишком хорошая система, чтобы нам одним на нём сидеть.

-

Чтобы было веселее, надо подсадить на ClickHouse людей снаружи, пусть радуются. Решили сделать open-source.

-
-
-

Open-source

-

Лицензия Apache 2.0 — минимум ограничений.

-

Цель — максимальное распространение продукта.

-

Мы хотим, чтобы продуктом Яндекса пользовались по всему миру.

-

См. “Яндекс открывает ClickHouse”

-

https://habrahabr.ru/company/yandex/blog/303282/

-
-
-

Когда надо использовать ClickHouse

-

Хорошо структурированные, очищенные, неизменяемые события.

-

 

-

Click stream. Веб-аналитика. Рекламные сети. RTB. E-commerce.

-

Аналитика онлайн игр. Данные сенсоров и мониторингов. Телеком данные.

-

Финансовые транзакции. Биржевая аналитика.

-
-
-

Когда не надо использовать ClickHouse

-

OLTP
В ClickHouse нет UPDATE и полноценных транзакций.

-

Key-Value
Если нужны частые запросы на обновление по ключу, используйте другое решение.

-

Blob-store, document oriented
ClickHouse предназначен для большого количества мелко-гранулированных данных.

-

Излишне нормализованные данные
Лучше сделать широкую таблицу фактов.

-
-
-

Почему ClickHouse такой быстрый?

-

 

-

— от безысходности.

-

Яндекс.Метрика должна работать.

-
-
-

Почему ClickHouse такой быстрый?

-

Алгоритмическая оптимизация.

-

MergeTree, локальность расположения данных на диске
— быстрые диапазонные запросы.

-

Пример: функция uniqCombined состоит из комбинации трёх различных структур данных, подходящих под разные диапазоны кардинальностей.

-

Низкоуровневая оптимизация.

-

Пример: vectorized query execution.

-

Специализация и внимание к деталям.

-

Пример: у нас есть 17 разных алгоритмов выполнения GROUP BY. Для вашего запроса выбирается лучший.

-
- -
-

ClickHouse vs. typical row-oriented DBMS

-

Itai Shirav:

«I haven't made a rigorous comparison, but I did convert a time-series table with 9 million rows from Postgres to ClickHouse.

-

Under ClickHouse queries run about 100 times faster, and the table takes 20 times less disk space. Which is pretty amazing if you ask me».

-
-
-

 

-

Bao Dang:

«Obviously, ClickHouse outperformed PostgreSQL at any metric».

-

https://github.com/AnalyticsGo/AnalyticsGo/issues/1

-
-
-

ClickHouse vs. Vertica

-

Timur Shenkao:

«ClickHouse is extremely fast at simple SELECTs without joins, much faster than Vertica».

-
-
-

ClickHouse vs. PrestoDB

-

Ömer Osman Koçak:

- «When we evaluated ClickHouse the results were great compared to Prestodb. Even though the columnar storage optimizations for ORC and Clickhouse is quite similar, Clickhouse uses CPU and Memory resources more efficiently (Presto also uses vectorized execution but cannot take advantage of hardware level optimizations such as SIMD instruction sets because it's written in Java so that's fair) so we also wanted to add support for Clickhouse for our open-source analytics platform Rakam (https://github.com/rakam-io/rakam)»

-
-
-

ClickHouse vs. Spark

-

«Я потестировал Clickhouse, по скорости просто отлично = намного быстрее spark на одной машине (у меня получилось порядка 3x, но еще буду сравнивать). Кроме того compression получается лучше».

-
-
-

ClickHouse vs. Google BigQuery

-

«ClickHouse показывает сравнимую скорость на таком запросе за 30 дней и в 8 раз быстрее (!) на таком запросе. В планах есть протестировать и другие запросы, еще не добрались.

Скорость выполнения запросов стабильна. В Google BigQuery в период пиковых нагрузок, например в 4:00 p.m. PDT или в начале месяца, время выполнения запросов может заметно увеличиваться».

-
-
-

ClickHouse vs. Druid

-

«В этом году мы развернули сборку на основе Druid — Imply Analytics Platform, а также Tranquility, и уже приготовились запускать в продакшн… Но после выхода ClickHouse сразу отказались от Druid, хотя потратили два месяца на его изучение и внедрение».

-

https://habrahabr.ru/company/smi2/blog/314558/

-
-
-

ClickHouse vs. InfiniDB

-

«结论:clickhouse速度更快!»

-

«In conclusion, ClickHouse is faster!»

-

http://verynull.com/2016/08/22/infinidb与clickhouse对比/

-

-
-
-

ClickHouse for sensor data

-

-
-
-

ClickHouse vs. Greenplum

-

-

На самом деле всё сложнее.

-
- -
-

Подключение к ClickHouse

-

HTTP REST

-

clickhouse-client

-

JDBC

-

 

-

Python, PHP, Go, Perl, Ruby, Node.JS, R, .NET

-

 

-

Web UI: https://github.com/smi2/clickhouse-frontend

-
-
-

Сообщество

-

Официальный сайт: https://clickhouse.yandex/

-

Google группа: https://groups.google.com/forum/#!forum/clickhouse

-

Рассылка: clickhouse-feedback@yandex-team.com

-

Чат в Telegram: https://telegram.me/clickhouse_ru

-

GitHub: https://github.com/yandex/ClickHouse/

-

 

-

+ митапы. Следите за анонсами.

-
-
-

 

-

Как запустить ClickHouse своими силами
и выиграть джекпот:

-

https://habrahabr.ru/company/smi2/blog/314558/

-
- -
-

 

-

Начните использовать ClickHouse сегодня!

-

Спасибо. Задавайте вопросы.

-
- -
- - - diff --git a/doc/presentations/tbd/index_en.html b/doc/presentations/tbd/index_en.html deleted file mode 100644 index 4e86af5a5ae..00000000000 --- a/doc/presentations/tbd/index_en.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - Briefly about ClickHouse - - - - - - -
-

Briefly about ClickHouse

-
-
-

Briefly about ClickHouse

-
-
-

About me

-

Alexey, developer of ClickHouse.

-

I work on data processing engine of Yandex.Metrica since 2008.

-
-
-

The history

-

Yandex.Metrica (https://metrica.yandex.com/) is a service for web analytics.

-

Largest in Russia, second largest in the world (just after Google Analytics).

-

-

We are processing about ~25 billions of events (page views, conversions, etc).

-

We must generate and show reports in realtime.

-
-
-

The old Metrica (RIP 2008–2014)

-

Everything was working fine. User could show about 50 different reports.

-

But there was a problem. We want more than just 50 pre-defined reports. We need to make every report infinitely customizable. The user must be able to slice and dice, and drill down every report from summary up to show single visitors.

-
-
-

The report builder

-

We had quickly made a prototype of so-called "report builder".

-

This was 2010 year. It was just simple specialized column-oriented data structure.

-

It worked fine and we got understanding, what the right direction to go.

-

We need good column-oriented DBMS.

-
-
-

Why column-oriented?

-

This is how "traditional" row-oriented databases work:

-

-
-
-

Why column-oriented?

-

And this is how column-oriented databases work:

-

-
-
-

Why ClickHouse?

-

In 2011 there was nothing suitable in the marked. In fact there is nothing comparable even now.

-

Then we developed ClickHouse.

-

See nice article «Evolution of data structures in Yandex.Metrica»

-

https://habrahabr.ru/company/yandex/blog/273305/

-

The article is in russian. Use machine translation. Also there is third-party translation to chinese, baidu for it.

-
-
-

The Metrica 2.0

- -
-
-

Briefly

-
    -
  • column-oriented
  • -
  • linearly scalable
  • -
  • fault-tolerant
  • -
  • data ingestion in realtime
  • -
  • realtime (sub-second) queries
  • -
  • support of SQL dialect + extensions
    (arrays, nested data types, domain-specific functions, approximate query execution)
  • -
-
-
-

The main cluster of Yandex.Metrica

-
    -
  • 18.3 trillions of rows (as of Nov 2016)
  • -
  • 426 servers
  • -
  • total throughput of query processing is up to two terabytes per second
  • -
-

* If you want to try ClickHouse, one server or VM is enough.

-
-
-

ClickHouse in Yandex

-

Surprisingly, ClickHouse appears to be rather convenient and handy for usage.

-

We have descriptive documentation from the beginning.

-

In about two years, many other departments in Yandex had started to use ClickHouse in production.

-

Yandex.Mail, Comparison shopping, Ads, Webmaster tools, Infrastructure monitoring, Business analytics, etc...

-

There was even cases, when single analysts install ClickHouse on their VMs and started to use it without any questions.

-
-
-

Open-source

-

Then we decided — ClickHouse is just too good to be used solely by Yandex.

-

To just have more fun, we need to make more companies and people around the world using ClickHouse, to let them be happy. We decided to be open-source.

-
-
-

Open-source

-

Apache 2.0 licence — very unrestrictive.

-

The goal — maximum widespread of ClickHouse.

-

We want for product by Yandex to be used everywhere.

-

See “Yandex open-sourced ClickHouse”

-

https://habrahabr.ru/company/yandex/blog/303282/

-

Article is also in russian, but you may just check corresponding Hacker's news thread

-
-
-

When to use ClickHouse

-

For well structured, clean, immutable events.

-

 

-

Click stream. Web analytics. Adv. networks. RTB. E-commerce.

-

Analytics for online games. Sensor and monitoring data. Telecom data.

-

Stock exchanges. Financial transactions.

-
-
-

When not to use ClickHouse

-

OLTP
ClickHouse doesn't have UPDATE statement and full-featured transactions.

-

Key-Value
If you want high load of small single-row queries, please use another system.

-

Blob-store, document oriented
ClickHouse is intended for vast amount of fine-grained data.

-

Over-normalized data
Better to make up single wide fact table with pre-joined dimensions.

-
-
-

Why ClickHouse is so fast?

-

 

-

— we just cannot make it slower.

-

Yandex.Metrica must work.

-
-
-

Why ClickHouse is so fast?

-

Algorithmic optimizations.

-

MergeTree, locality of data on disk
— fast range queries.

-

Example: uniqCombined function is a combination of three different data structures, used for different ranges of cardinalities.

-

Low-level optimizations.

-

Example: vectorized query execution.

-

Specialization and attention to detail.

-

Example: we have 17 different algorithms for GROUP BY. Best one is selected for your query.

-
- -
-

ClickHouse vs. typical row-oriented DBMS

-

Itai Shirav:

«I haven't made a rigorous comparison, but I did convert a time-series table with 9 million rows from Postgres to ClickHouse.

-

Under ClickHouse queries run about 100 times faster, and the table takes 20 times less disk space. Which is pretty amazing if you ask me».

-
-
-

 

-

Bao Dang:

«Obviously, ClickHouse outperformed PostgreSQL at any metric».

-

https://github.com/AnalyticsGo/AnalyticsGo/issues/1

-
-
-

ClickHouse vs. Vertica

-

Timur Shenkao:

«ClickHouse is extremely fast at simple SELECTs without joins, much faster than Vertica».

-
-
-

ClickHouse vs. PrestoDB

-

Ömer Osman Koçak:

- «When we evaluated ClickHouse the results were great compared to Prestodb. Even though the columnar storage optimizations for ORC and Clickhouse is quite similar, Clickhouse uses CPU and Memory resources more efficiently (Presto also uses vectorized execution but cannot take advantage of hardware level optimizations such as SIMD instruction sets because it's written in Java so that's fair) so we also wanted to add support for Clickhouse for our open-source analytics platform Rakam (https://github.com/rakam-io/rakam)»

-
-
-

ClickHouse vs. Spark

-

«Я потестировал Clickhouse, по скорости просто отлично = намного быстрее spark на одной машине (у меня получилось порядка 3x, но еще буду сравнивать). Кроме того compression получается лучше».

-
-
-

ClickHouse vs. Google BigQuery

-

«ClickHouse показывает сравнимую скорость на таком запросе за 30 дней и в 8 раз быстрее (!) на таком запросе. В планах есть протестировать и другие запросы, еще не добрались.

Скорость выполнения запросов стабильна. В Google BigQuery в период пиковых нагрузок, например в 4:00 p.m. PDT или в начале месяца, время выполнения запросов может заметно увеличиваться».

-
-
-

ClickHouse vs. Druid

-

«В этом году мы развернули сборку на основе Druid — Imply Analytics Platform, а также Tranquility, и уже приготовились запускать в продакшн… Но после выхода ClickHouse сразу отказались от Druid, хотя потратили два месяца на его изучение и внедрение».

-

https://habrahabr.ru/company/smi2/blog/314558/

-
-
-

ClickHouse vs. InfiniDB

-

«结论:clickhouse速度更快!»

-

«In conclusion, ClickHouse is faster!»

-

http://verynull.com/2016/08/22/infinidb与clickhouse对比/

-

-
-
-

ClickHouse for sensor data

-

-
-
-

ClickHouse vs. Greenplum

-

-

In fact, things are not so simple, there are many details.

-
- -
-

How to connect to ClickHouse

-

HTTP REST

-

clickhouse-client

-

JDBC

-

 

-

Python, PHP, Go, Perl, Ruby, Node.JS, R, .NET

-

 

-

Web UI: https://github.com/smi2/clickhouse-frontend

-

Redash, Zeppelin, Grafana, PowerBI - somewhat works

-
-
-

Community

-

Web site: https://clickhouse.yandex/

-

Google groups: https://groups.google.com/forum/#!forum/clickhouse

-

Maillist: clickhouse-feedback@yandex-team.com

-

Telegram chat: https://telegram.me/clickhouse_en and https://telegram.me/clickhouse_ru (now 308 members)

-

GitHub: https://github.com/yandex/ClickHouse/

-

 

-

+ meetups. Moscow, Saint-Petersburg... International meetups (Berlin, Paris) will be announced this year.

-
-
-

 

-

How to start using ClickHouse and win jackpot:

-

https://habrahabr.ru/company/smi2/blog/314558/

-
- -
-

 

-

More than 100 companies are already using ClickHouse in production. What about you? Start to use ClickHouse today!

-

Thank you. Questions.

-
- -
- - - diff --git a/doc/presentations/tbd/pictures/column_oriented.gif b/doc/presentations/tbd/pictures/column_oriented.gif deleted file mode 100644 index 15f4b12e697..00000000000 Binary files a/doc/presentations/tbd/pictures/column_oriented.gif and /dev/null differ diff --git a/doc/presentations/tbd/pictures/greenplum.png b/doc/presentations/tbd/pictures/greenplum.png deleted file mode 100644 index e919a45dadc..00000000000 Binary files a/doc/presentations/tbd/pictures/greenplum.png and /dev/null differ diff --git a/doc/presentations/tbd/pictures/infinidb_cn.png b/doc/presentations/tbd/pictures/infinidb_cn.png deleted file mode 100644 index 957c392a448..00000000000 Binary files a/doc/presentations/tbd/pictures/infinidb_cn.png and /dev/null differ diff --git a/doc/presentations/tbd/pictures/kaspersky.png b/doc/presentations/tbd/pictures/kaspersky.png deleted file mode 100644 index f8aae1da9ee..00000000000 Binary files a/doc/presentations/tbd/pictures/kaspersky.png and /dev/null differ diff --git a/doc/presentations/tbd/pictures/metrika2.png b/doc/presentations/tbd/pictures/metrika2.png deleted file mode 100644 index 3ee37e98fc6..00000000000 Binary files a/doc/presentations/tbd/pictures/metrika2.png and /dev/null differ diff --git a/doc/presentations/tbd/pictures/metrika_market_share.png b/doc/presentations/tbd/pictures/metrika_market_share.png deleted file mode 100644 index 9817998acc7..00000000000 Binary files a/doc/presentations/tbd/pictures/metrika_market_share.png and /dev/null differ diff --git a/doc/presentations/tbd/pictures/row_oriented.gif b/doc/presentations/tbd/pictures/row_oriented.gif deleted file mode 100644 index 53daa20f322..00000000000 Binary files a/doc/presentations/tbd/pictures/row_oriented.gif and /dev/null differ diff --git a/doc/presentations/tbd/shower/shower.min.js b/doc/presentations/tbd/shower/shower.min.js deleted file mode 100644 index 449843ac45d..00000000000 --- a/doc/presentations/tbd/shower/shower.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Core for Shower HTML presentation engine - * shower-core v2.0.7, https://github.com/shower/core - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -!function(a){var b,c={NOT_RESOLVED:"NOT_RESOLVED",IN_RESOLVING:"IN_RESOLVING",RESOLVED:"RESOLVED"},d=function(){var l={trackCircularDependencies:!0,allowMultipleDeclarations:!0},m={},n=!1,o=[],p=function(a,d,e){e||(e=d,d=[]);var f=m[a];f||(f=m[a]={name:a,decl:b}),f.decl={name:a,prev:f.decl,fn:e,state:c.NOT_RESOLVED,deps:d,dependents:[],exports:b}},q=function(b,c,d){"string"==typeof b&&(b=[b]),n||(n=!0,k(v)),o.push({deps:b,cb:function(b,f){f?(d||e)(f):c.apply(a,b)}})},r=function(a){var b=m[a];return b?c[b.decl.state]:"NOT_DEFINED"},s=function(a){return!!m[a]},t=function(a){for(var b in a)a.hasOwnProperty(b)&&(l[b]=a[b])},u=function(){var a,b={};for(var c in m)m.hasOwnProperty(c)&&(a=m[c],(b[a.decl.state]||(b[a.decl.state]=[])).push(c));return b},v=function(){n=!1,w()},w=function(){var a,b=o,c=0;for(o=[];a=b[c++];)x(null,a.deps,[],a.cb)},x=function(a,b,c,d){var e=b.length;e||d([]);for(var g,h,i=[],j=function(a,b){if(b)return void d(null,b);if(!--e){for(var c,f=[],g=0;c=i[g++];)f.push(c.exports);d(f)}},k=0,l=e;k ")+'"')},h=function(a){return Error('Declaration of module "'+a.name+'" has already been provided')},i=function(a){return Error('Multiple declarations of module "'+a.name+'" have been detected')},j=function(a,b){for(var c,d=0;c=b[d++];)if(a===c)return!0;return!1},k=function(){var b=[],c=function(a){return 1===b.push(a)},d=function(){var a=b,c=0,d=b.length;for(b=[];c=0&&!b.defaultPrevented();){var d=a[c];d&&(d.context?d.callback.call(d.context,b):d.callback(b)),c--}}}),a(e)}),shower.modules.define("Plugins",["Emitter","util.extend"],function(a,b,c){function d(a){this.events=new b({context:this}),this._showerGlobal=a,this._showerInstances=a.getInited(),this._plugins={},this._instances=[],a.events.on("init",this._onShowerInit,this)}c(d.prototype,{destroy:function(){this._showerGlobal.events.off("init",this._onShowerInit,this),this._plugins=null},add:function(a,b){if(this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" already exist.");return this._requireAndAdd({name:a,options:b}),this},remove:function(a){if(!this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" not found.");return delete this._plugins[a],this.events.emit("remove",{name:a}),this},get:function(a,b){var c,d=this._plugins[a];if(d&&b)for(var e=0,f=this._instances.length;e=0;e--)if(d[e].getId()===a){b=d[e],c=e;break}return{slide:b,index:c}},_onSlideActivate:function(a){window.location.hash=a.get("slide").getId(),this._setTitle()},_onContainerSlideModeChange:function(){this._setTitle(),this.save()},_isSlideMode:function(){return this._shower.container.isSlideMode()},_onPopstate:function(){var a,b=this._shower,c=window.location.hash.substr(1),d=b.player.getCurrentSlide(),e=b.player.getCurrentSlideIndex();this._isSlideMode()&&e===-1?b.player.go(0):e===-1&&""!==window.location.hash&&b.player.go(0),d&&c!==d.getId()&&(a=this._getSlideById(c),b.player.go(a.index))},_setTitle:function(){var a=document.title,b=this._isSlideMode(),c=this._shower.player.getCurrentSlide();if(b&&c){var d=c.getTitle();document.title=d?d+" — "+this._documentTitle:this._documentTitle}else this._documentTitle!==a&&(document.title=this._documentTitle)}}),a(e)}),shower.modules.define("shower.Player",["Emitter","util.bound","util.extend"],function(a,b,c,d){function e(a){this.events=new b({context:this,parent:a.events}),this._shower=a,this._showerListeners=null,this._playerListeners=null,this._currentSlideNumber=-1,this._currentSlide=null,this.init()}d(e.prototype,{init:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this).on("slidemodeenter",this._onSlideModeEnter,this),this._playerListeners=this.events.group().on("prev",this._onPrev,this).on("next",this._onNext,this),document.addEventListener("keydown",c(this,"_onKeyDown"))},destroy:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),document.removeEventListener("keydown",c(this,"_onKeyDown")),this._currentSlide=null,this._currentSlideNumber=null,this._shower=null},next:function(){return this.events.emit("next"),this},prev:function(){return this.events.emit("prev"),this},first:function(){return this.go(0),this},last:function(){return this.go(this._shower.getSlidesCount()-1),this},go:function(a){"number"!=typeof a&&(a=this._shower.getSlideIndex(a));var b=this._shower.getSlidesCount(),c=this._currentSlide;return a!=this._currentSlideNumber&&a=0&&(c&&c.isActive()&&c.deactivate(),c=this._shower.get(a),this._currentSlide=c,this._currentSlideNumber=a,c.isActive()||c.activate(),this.events.emit("activate",{index:a,slide:c})),this},getCurrentSlide:function(){return this._currentSlide},getCurrentSlideIndex:function(){return this._currentSlideNumber},_onPrev:function(){this._changeSlide(this._currentSlideNumber-1)},_onNext:function(){this._changeSlide(this._currentSlideNumber+1)},_changeSlide:function(a){this.go(a)},_onSlideAdd:function(a){var b=a.get("slide");b.events.on("activate",this._onSlideActivate,this)},_onSlideRemove:function(a){var b=a.get("slide");b.events.off("activate",this._onSlideActivate,this)},_onSlideActivate:function(a){var b=a.get("slide"),c=this._shower.getSlideIndex(b);this.go(c)},_onKeyDown:function(a){if(this._shower.isHotkeysEnabled()&&!/^(?:button|input|select|textarea)$/i.test(a.target.tagName))switch(this.events.emit("keydown",{event:a}),a.which){case 33:case 38:case 37:case 72:case 75:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.prev();break;case 34:case 40:case 39:case 76:case 74:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.next();break;case 36:a.preventDefault(),this.first();break;case 35:a.preventDefault(),this.last();break;case 32:this._shower.container.isSlideMode()&&(a.shiftKey?this.prev():this.next())}},_onSlideModeEnter:function(){this._currentSlide||this.go(0)}}),a(e)}),shower.modules.define("shower.slidesParser",["Slide"],function(a,b){function c(a,c){var d=a.querySelectorAll(c);return d=Array.prototype.slice.call(d),d.map(function(a,c){var d=new b(a);return a.id||(a.id=c+1),d})}a(c)}),shower.modules.define("Slide",["shower.defaultOptions","Emitter","Options","slide.Layout","slide.layoutFactory","util.Store","util.extend"],function(a,b,c,d,e,f,g,h){function i(a,b,e){this.events=new c,this.options=new d(b),this.layout=null,this.state=new g({visited:0,index:null},e),this._content=a,this._isVisited=this.state.get("visited")>0,this._isActive=!1,this.init()}h(i.prototype,{init:function(){this.layout="string"==typeof this._content?new f.createLayout({content:this._content}):new e(this._content,this.options),this.layout.setParent(this),this._setupListeners()},destroy:function(){this._clearListeners(),this._isActive=null,this.options=null,this.layout.destroy()},activate:function(){this._isActive=!0;var a=this.state.get("visited");return this.state.set("visited",++a),this.events.emit("activate",{slide:this}),this},deactivate:function(){return this._isActive=!1,this.events.emit("deactivate",{slide:this}),this},isActive:function(){return this._isActive},isVisited:function(){return this.state.get("visited")>0},getTitle:function(){return this.layout.getTitle()},setTitle:function(a){return this.layout.setTitle(a),this},getId:function(){return this.layout.getElement().id},getContent:function(){return this.layout.getContent()},_setupListeners:function(){this.layoutListeners=this.layout.events.group().on("click",this._onSlideClick,this)},_clearListeners:function(){this.layoutListeners.offAll()},_onSlideClick:function(){this.activate(),this.events.emit("click",{slide:this})}}),a(i)}),shower.modules.define("slide.Layout",["Options","shower.defaultOptions","Emitter","util.bound","util.extend"],function(a,b,c,d,e,f){function g(a,e){this.options=new b({title_element_selector:c.slide_title_element_selector,active_classname:c.slide_active_classname,visited_classname:c.slide_visited_classname},e),this.events=new d,this._element=a,this._parent=null,this._parentElement=null,this.init()}f(g.prototype,{init:function(){var a=this._element.parentNode;a?this._parentElement=a:this.setParentElement(a)},destroy:function(){this.setParent(null)},setParent:function(a){this._parent!=a&&(this._clearListeners(),this._parent=a,this._parent&&this._setupListeners(),this.events.emit("parentchange",{parent:a}))},getParent:function(){return this._parent},setParentElement:function(a){a!=this._parentElement&&(this._parentElement=a,a.appendChild(this._element),this.events.emit("parentelementchange",{parentElement:a}))},getParentElement:function(){return this._parentElement},getElement:function(){return this._element},setTitle:function(a){var b=this.options.get("title_element_selector"),c=this._element.querySelector(b);c?c.innerHTML=a:(c=document.createElement(b),c.innerHTML=a,this._element.insertBefore(c,this._element.firstChild))},getTitle:function(){var a=this.options.get("title_element_selector"),b=this._element.querySelector(a);return b?b.textContent:null},getData:function(a){var b=this._element;return b.dataset?b.dataset[a]:b.getAttribute("data-"+a)},getContent:function(){return this._element.innerHTML},_setupListeners:function(){this._slideListeners=this._parent.events.group().on("activate",this._onSlideActivate,this).on("deactivate",this._onSlideDeactivate,this),this._element.addEventListener("click",e(this,"_onSlideClick"),!1)},_clearListeners:function(){this._slideListeners&&this._slideListeners.offAll(),this._element.removeEventListener("click",e(this,"_onSlideClick"))},_onSlideActivate:function(){this._element.classList.add(this.options.get("active_classname"))},_onSlideDeactivate:function(){var a=this._element.classList;a.remove(this.options.get("active_classname")),a.add(this.options.get("visited_classname"))},_onSlideClick:function(){this.events.emit("click")}}),a(g)}),shower.modules.define("slide.layoutFactory",["slide.Layout","util.extend"],function(a,b,c){var d={};c(d,{createLayout:function(a){a=a||{};var e=d._createElement(c({content:"",contentType:"slide"},a));return new b(e)},_createElement:function(a){var b=document.createElement("section");return b.innerHTML=a.content,b.classList.add(a.contentType),b}}),a(d)}),shower.modules.define("util.bound",function(a){function b(a,b){return a["__bound_"+b]||(a["__bound_"+b]=a[b].bind(a))}a(b)}),shower.modules.define("util.extend",function(a){function b(a){if(!a)throw new Error("util.extend: Target not found");return"undefined"==typeof Object.assign?c.apply(null,arguments):Object.assign.apply(null,arguments)}function c(a){for(var b=1,c=arguments.length;b0&&(a.preventDefault(),this.prev())},_go:function(){for(var a=0,b=this._elements.length;awindow.innerWidth/2?c.player.next():c.player.prev()),d||f.activate())},_onTouchMove:function(a){this._shower.container.isSlideMode()&&a.preventDefault()},_getSlideByElement:function(a){for(var b=this._shower.getSlides(),c=null,d=0,e=b.length;d` of your presentation. - -## PDF - -Ribbon could be exported to PDF by printing it from the list mode in Chrome or Opera browsers. See [printing documentation](https://github.com/shower/shower/blob/master/docs/printing-en.md) for more options. - -## Development - -If you want to adjust theme for your needs: - -1. Fork this repository and clone it to your local machine. -2. Install dependencies: `npm install`. -3. Start a local server with watcher: `npm run dev` or just `gulp` if you have it installed globally. -4. Edit your files and see changes in the opened browser. - -To take part in Ribbon development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request. - ---- -Licensed under [MIT License](LICENSE.md). diff --git a/doc/presentations/tbd/shower/themes/ribbon/index.html b/doc/presentations/tbd/shower/themes/ribbon/index.html deleted file mode 100644 index 98850917e05..00000000000 --- a/doc/presentations/tbd/shower/themes/ribbon/index.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - Ribbon theme for Shower - - - - - - -
-

Presentation Title

-

Yours Truly, Famous Inc.

-
-
-

Slide Header

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch letterpress.

-

Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.

-

Echo Park 8-bit sustainable umami deep v Kickstarter.

-
-
-

Inline Elements

-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-

Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag, leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical <paleo> you probably haven’t heard of.

-
-
-
-

Quotes

-
-

Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.

-
-
-
-

Post-ironic fashion axe flexitarian, Tonx narwhal messenger bag Tumblr. Portland gentrify deep v kale chips literally.

-
-
Yours Truly
-
-
-
-

Nested Lists

-
    -
  1. Literally viral vegan, ugh drinking vinegar photo booth
  2. -
  3. Wes Anderson chillwave Marfa pour-over Etsy banh mi
  4. -
  5. Ethnic polaroid lo-fi iPhone ennui -
      -
    • Yr wayfarers before they sold out Kickstarter asymmetrical
    • -
    • Irony flexitarian readymade quinoa, kogi bespoke meggings narwhal
    • -
    • Skateboard Etsy twee artisan Echo Park
    • -
    -
  6. -
  7. Tonx kitsch fingerstache readymade, retro single-origin coffee
  8. -
-
-
-

Block Lists

-
    -
  • Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack.
  • -
  • Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.
  • -
  • Leggings skateboard literally1 bicycle rights H20 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical. Asymmetrical paleo you probably haven’t heard of.
  • -
-
-
-

Latin and Cyrillic List Bullets

-
    -
  • Occupy locavore blog, mustache you probably haven't heard of them
  • -
  • Skateboard pork belly aesthetic hoodie selfies brunch
  • -
  • Food truck gluten-free disrupt Portland
  • -
-
    -
  • Helvetica narwhal drinking vinegar chillwave, post-ironic ennui
  • -
  • Cray pug paleo retro, Echo Park narwhal Wes Anderson
  • -
  • Disrupt Williamsburg fixie, shabby chic bicycle rights hashtag kogi
  • -
-
-
-

Two Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Three Columns

-

Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch American Apparel letterpress. Whatever authentic disrupt, you probably haven't heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa. Echo Park 8-bit sustainable.

-
-
-

Simple Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Striped Table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GentrifyTweeArtisanBanksy
MessengerMixtapeSmall batchBicycle rights
MeggingsFreeganRetro biodieselSlow-carb
VeganOccupyNormcorePut a bird on it
Next levelSelfiesSustainableOrganic
UmamiAsymmetricalKeytarCraft beer
BiodieselHaven’t heardSkateboardFarm-to-table
-
-
-

Plain Code Listing

-
<html lang="en">
-<head> <!--Comment-->
-    <title>Shower</title>
-    <meta charset="UTF-8">
-    <link rel="stylesheet" href="screen.css">
-    <script src="script.js"></script>
-</head>
-
-
-

Numbered Code Listing

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Lines

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Hidden Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Highlighted Code Steps

-
-            <html lang="en">
-            <head> <!--Comment-->
-                <title>Shower</title>
-                <meta charset="UTF-8">
-                <link rel="stylesheet" href="screen.css">
-                <script src="script.js"></script>
-            </head>
-        
-
-
-

Grid Slide

-
-
-

White Slide

-
-
-

Black Slide

-
-
-

Shout

-
-
-

Multiline
Shout

-
-
-

Linked Shout

-
-
-

Growing Shout

-
-
-

Shrinking Shout

-
-
-
- -
Copyright © 2016 Yours Truly, Famous Inc.
-
-
-
- -
-
- -
-
- - - - - - - - - -
-
-

Timer

-
-
-

List Navigation

-
    -
  1. Ennui keffiyeh thundercats
  2. - - - - -
-

Before they sold out master

-
-
- - - - - diff --git a/doc/presentations/tbd/shower/themes/ribbon/pictures/canvas.png b/doc/presentations/tbd/shower/themes/ribbon/pictures/canvas.png deleted file mode 100644 index 6ddd30154f2..00000000000 Binary files a/doc/presentations/tbd/shower/themes/ribbon/pictures/canvas.png and /dev/null differ diff --git a/doc/presentations/tbd/shower/themes/ribbon/pictures/exact.png b/doc/presentations/tbd/shower/themes/ribbon/pictures/exact.png deleted file mode 100644 index b27251c57cb..00000000000 Binary files a/doc/presentations/tbd/shower/themes/ribbon/pictures/exact.png and /dev/null differ diff --git a/doc/presentations/tbd/shower/themes/ribbon/pictures/square.png b/doc/presentations/tbd/shower/themes/ribbon/pictures/square.png deleted file mode 100644 index 62cb2384a5f..00000000000 Binary files a/doc/presentations/tbd/shower/themes/ribbon/pictures/square.png and /dev/null differ diff --git a/doc/presentations/tbd/shower/themes/ribbon/pictures/tall.png b/doc/presentations/tbd/shower/themes/ribbon/pictures/tall.png deleted file mode 100644 index fbc9f09a2ab..00000000000 Binary files a/doc/presentations/tbd/shower/themes/ribbon/pictures/tall.png and /dev/null differ diff --git a/doc/presentations/tbd/shower/themes/ribbon/pictures/wide.png b/doc/presentations/tbd/shower/themes/ribbon/pictures/wide.png deleted file mode 100644 index 1e83b0ac7ad..00000000000 Binary files a/doc/presentations/tbd/shower/themes/ribbon/pictures/wide.png and /dev/null differ diff --git a/doc/presentations/tbd/shower/themes/ribbon/styles/presentation_links.html b/doc/presentations/tbd/shower/themes/ribbon/styles/presentation_links.html deleted file mode 100644 index 74981d8eac5..00000000000 --- a/doc/presentations/tbd/shower/themes/ribbon/styles/presentation_links.html +++ /dev/null @@ -1,2 +0,0 @@ -http://www.slideshare.net/AlexeyMilovidov1/clickhouse-69616890/AlexeyMilovidov1/clickhouse-69616890 -file:///home/milovidov/work/Presentation/shower/index.html#cover diff --git a/doc/presentations/tbd/shower/themes/ribbon/styles/screen-16x10.css b/doc/presentations/tbd/shower/themes/ribbon/styles/screen-16x10.css deleted file mode 100644 index 5ea77cc9961..00000000000 --- a/doc/presentations/tbd/shower/themes/ribbon/styles/screen-16x10.css +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8"; - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot); - src: url(https://yastatic.net/adv-www/_/yy5JveR58JFkc97waf-xp0i6_jM.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/pUcnOdRwl83MvPPzrNomhyletnA.woff) format('woff'), - url(https://yastatic.net/adv-www/_/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg#YandexSansTextWeb-Bold) format('svg'); - font-weight: 700; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot); - src: url(https://yastatic.net/adv-www/_/LI6l3L2RqcgxBe2pXmuUha37czQ.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff) format('woff'), - url(https://yastatic.net/adv-www/_/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/gwyBTpxSwkFCF1looxqs6JokKls.svg#YandexSansTextWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Text Web'; - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot); - src: url(https://yastatic.net/adv-www/_/ayAFYoY8swgBLhq_I56tKj2JftU.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff) format('woff'), - url(https://yastatic.net/adv-www/_/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/EKLr1STNokPqxLAQa_RyN82pL98.svg#YandexSansTextWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot); - src: url(https://yastatic.net/adv-www/_/H63jN0veW07XQUIA2317lr9UIm8.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff) format('woff'), - url(https://yastatic.net/adv-www/_/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg#YandexSansDisplayWeb-Regular) format('svg'); - font-weight: 400; - font-style: normal; - font-stretch: normal - } - - @font-face { - font-family: 'Yandex Sans Display Web'; - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot); - src: url(https://yastatic.net/adv-www/_/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot?#iefix) format('embedded-opentype'), - url(https://yastatic.net/adv-www/_/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2) format('woff2'), - url(https://yastatic.net/adv-www/_/40vXwNl4eYYMgteIVgLP49dwmfc.woff) format('woff'), - url(https://yastatic.net/adv-www/_/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf) format('truetype'), - url(https://yastatic.net/adv-www/_/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg#YandexSansDisplayWeb-Light) format('svg'); - font-weight: 300; - font-style: normal; - font-stretch: normal - } - -*,::after,::before{box-sizing:border-box} -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline} -article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block} -.caption p,body{line-height:1} -p {line-height: 1} -ol,ul{list-style:none} -blockquote,q{quotes:none} -blockquote::after,blockquote::before,q::after,q::before{content:none} -table{border-collapse:collapse;border-spacing:0} -a{text-decoration:none} -@page{margin:0;size:1024px 640px} -.shower{color:#000;counter-reset:slide;font:25px/2 Yandex Sans Display Web,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none} -@media print{.shower{text-rendering:geometricPrecision} -} -.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90} -@media (min-width:1174px){.caption{font-size:50px} -} -@media (min-width:2348px){.caption{font-size:100px} -} -.caption h1{padding-bottom:.15em;font:1em/2 Yandex Sans Display Web,sans-serif} -.caption p{font-size:.6em} -.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60} -.slide{position:relative;z-index:1;overflow:hidden;padding:20px 100px 0;width:1024px;height:640px;background:#fff;font-size:25px} - -/*.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}*/ - -.slide h1{vertical-align:middle; color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide h2{margin-bottom:34px;color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} -.slide p{margin-bottom:1em} -.slide p.note{color:#979a9e} -.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2} -.slide b,.slide strong{font-weight:700} -.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic} -.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em} -.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace} -.slide mark{background:#fafaa2} -.slide sub,.slide sup{position:relative;line-height:0;font-size:75%} -.slide sub{bottom:-.25em} -.slide sup{top:-.5em} -.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'} -.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700} -.slide ol,.slide ul{margin-bottom:0em;counter-reset:list} -.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em} -.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right} -.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em} -.slide ul>li::before{padding-right:.5em;content:'•'} -.slide ul>li:lang(ru)::before{content:'—'} -.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."} -.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)} -.slide table td:first-child,.slide table th:first-child{padding-left:96px} -.slide table td:last-child,.slide table th:last-child{padding-right:96px} -.slide table th{text-align:left;font-weight:700} -.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x} -.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)} -.slide table.striped tr>*{background-image:none} -.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal} -.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4} -.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)} -.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."} -.slide pre mark{position:relative;z-index:-1;margin:0 -.3em} -.slide pre mark.important{background:#c00;color:#fff} -.slide pre .comment{color:#999} -.slide footer{position:absolute;right:0;bottom:-640px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s} -.slide footer mark{background:rgba(255,255,255,.8)} -.slide:hover>footer{bottom:0} -.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated} -@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto} -} -.slide.black{background-color:#000} -.slide.black::after,.slide.white::after{visibility:hidden} -.slide.white{background-color:#fff} -.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} -.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2} -.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3} -.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} -.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x} -.slide .cover{z-index:-1;max-width:100%;max-height:100%} -.slide .cover.w,.slide .cover.width{width:100%;max-height:none} -.slide .cover.h,.slide .cover.height{height:100%;max-width:none} -.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)} -.slide .cover+figcaption.white{color:#fff} -.slide .cover+figcaption a{color:currentcolor} -.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} -.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none} -.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} -.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)} -.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0} -.slide .place.r,.slide .place.right{right:0;left:auto} -.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0} -.slide .place.l,.slide .place.left{left:0} -.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)} -.progress[style*='100%']{padding-left:10px} -.badge,.badge a,.progress{position:absolute} -.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden} -@media (min-width:1174px){.badge{font-size:20px} -} -@media (min-width:2348px){.badge{font-size:40px} -} -.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)} -.region{display:none} -@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)} -} -@media screen and (min-width:1174px){.shower.list{padding-top:50px} -} -@media screen and (min-width:2348px){.shower.list{padding-top:100px} -} -@media screen{.shower.list .caption{display:block} -.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -455px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)} -} -@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -270px 50px;-webkit-transform:scale(.5);transform:scale(.5)} -} -@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)} -} -@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)} -.shower.list .slide *{pointer-events:none} -.shower.list .badge,.shower.list .slide footer{display:block} -.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-320px 0 0 -512px;width:1024px;height:640px;background:#000} -.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden} -.shower.full .slide:target{margin:0;visibility:visible} -.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0} -.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)} -.shower.full .slide .next{visibility:hidden} -.shower.full .slide .next.active{visibility:visible} -.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform} -.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)} -.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)} -.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)} -.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)} -.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block} -} diff --git a/doc/presentations/tbd/shower/themes/ribbon/styles/screen-4x3.css b/doc/presentations/tbd/shower/themes/ribbon/styles/screen-4x3.css deleted file mode 100644 index 6648b972c30..00000000000 --- a/doc/presentations/tbd/shower/themes/ribbon/styles/screen-4x3.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Ribbon theme for Shower HTML presentation engine - * shower-ribbon v2.0.8, https://github.com/shower/ribbon - * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ - * @license MIT - */ -@charset "UTF-8";@font-face{font-family:PT Sans;src:url(../fonts/pt-sans-regular.woff) format("woff")}@font-face{font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold.woff) format("woff")}@font-face{font-style:italic;font-family:PT Sans;src:url(../fonts/pt-sans-italic.woff) format("woff")}@font-face{font-style:italic;font-weight:700;font-family:PT Sans;src:url(../fonts/pt-sans-bold-italic.woff) format("woff")}@font-face{font-family:PT Sans Narrow;font-weight:700;src:url(../fonts/pt-sans-narrow-bold.woff) format("woff")}@font-face{font-family:PT Mono;src:url(../fonts/pt-mono-regular.woff) format("woff")}*,::after,::before{box-sizing:border-box}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}.caption p,body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::after,blockquote::before,q::after,q::before{content:none}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}@page{margin:0;size:1024px 768px}.shower{color:#000;counter-reset:slide;font:25px/2 PT Sans,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none}@media print{.shower{text-rendering:geometricPrecision}}.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90}@media (min-width:1174px){.caption{font-size:50px}}@media (min-width:2348px){.caption{font-size:100px}}.caption h1{padding-bottom:.15em;font:700 1em/1 PT Sans Narrow,sans-serif}.caption p{font-size:.6em}.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60}.slide{position:relative;z-index:1;overflow:hidden;padding:106px 100px 0;width:1024px;height:768px;background:#fff;font-size:25px}.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}.slide h2{margin-bottom:34px;color:#585a5e;font:700 50px/1 PT Sans Narrow,sans-serif}.slide p{margin-bottom:1em}.slide p.note{color:#979a9e}.slide a{background:-webkit-linear-gradient(bottom,currentColor .09em,transparent .09em) repeat-x;background:linear-gradient(to top,currentColor .09em,transparent .09em) repeat-x;color:#4b86c2}.slide b,.slide strong{font-weight:700}.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic}.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em}.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace}.slide mark{background:#fafaa2}.slide sub,.slide sup{position:relative;line-height:0;font-size:75%}.slide sub{bottom:-.25em}.slide sup{top:-.5em}.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'}.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700}.slide ol,.slide ul{margin-bottom:1em;counter-reset:list}.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em}.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right}.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em}.slide ul>li::before{padding-right:.5em;content:'•'}.slide ul>li:lang(ru)::before{content:'—'}.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."}.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)}.slide table td:first-child,.slide table th:first-child{padding-left:96px}.slide table td:last-child,.slide table th:last-child{padding-right:96px}.slide table th{text-align:left;font-weight:700}.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x}.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)}.slide table.striped tr>*{background-image:none}.slide pre{margin-bottom:1em;counter-reset:code;white-space:normal}.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)}.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."}.slide pre mark{position:relative;z-index:-1;margin:0 -.3em}.slide pre mark.important{background:#c00;color:#fff}.slide pre .comment{color:#999}.slide footer{position:absolute;right:0;bottom:-768px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s}.slide footer mark{background:rgba(255,255,255,.8)}.slide:hover>footer{bottom:0}.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto}}.slide.black{background-color:#000}.slide.black::after,.slide.white::after{visibility:hidden}.slide.white{background-color:#fff}.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2}.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3}.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x}.slide .cover{z-index:-1;max-width:100%;max-height:100%}.slide .cover.w,.slide .cover.width{width:100%;max-height:none}.slide .cover.h,.slide .cover.height{height:100%;max-width:none}.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)}.slide .cover+figcaption.white{color:#fff}.slide .cover+figcaption a{color:currentcolor}.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none}.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0}.slide .place.r,.slide .place.right{right:0;left:auto}.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0}.slide .place.l,.slide .place.left{left:0}.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)}.progress[style*='100%']{padding-left:10px}.badge,.badge a,.progress{position:absolute}.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden}@media (min-width:1174px){.badge{font-size:20px}}@media (min-width:2348px){.badge{font-size:40px}}.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.region{display:none}@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)}}@media screen and (min-width:1174px){.shower.list{padding-top:50px}}@media screen and (min-width:2348px){.shower.list{padding-top:100px}}@media screen{.shower.list .caption{display:block}.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -768px -551px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)}}@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -334px 50px;-webkit-transform:scale(.5);transform:scale(.5)}}@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)}}@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)}.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)}.shower.list .slide *{pointer-events:none}.shower.list .badge,.shower.list .slide footer{display:block}.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-384px 0 0 -512px;width:1024px;height:768px;background:#000}.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden}.shower.full .slide:target{margin:0;visibility:visible}.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0}.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)}.shower.full .slide .next{visibility:hidden}.shower.full .slide .next.active{visibility:visible}.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)}.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)}.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)}.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)}.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block}} \ No newline at end of file