10 | You can either search our site for what you are looking for or go back to our homepage.
11 | ... or look at this random animated kitten gif for a while ...
12 |
58 | {% endblock %}
59 |
60 | {% block scripts %}
61 |
64 | {% endblock %}
65 |
--------------------------------------------------------------------------------
/pages/docs/clients/erlang.html:
--------------------------------------------------------------------------------
1 | title: Connecting to Crate with Erlang
2 | author: Chris Ward
3 |
4 | The Crate Erlang client is built using [rebar3](https://github.com/rebar/rebar3) and we recommend you use it in your project for compiling and testing.
5 |
6 | ## Add Crate to your Project
7 | To add Crate as a dependency, add the following to your *rebar.config* file.
8 |
9 | ```erlang
10 | {deps,[
11 | {craterl,"0.2.3"}
12 | ]}.
13 | ```
14 |
15 | And run:
16 |
17 | ```bash
18 | rebar update
19 | ```
20 |
21 | ## Connect to Crate
22 | To connect to a cluster, create a client instance in your application:
23 |
24 | ```erlang
25 | ClientSpec = {local, process_name}.
26 | Servers = [{<<"SERVER_IP">>, 4200}, "SERVER_IP:4201"].
27 | Options = [{poolsize, 1000}, {timeout, 5000}].
28 | ClientRef = craterl:new(ClientSpec, Servers, Options).
29 | ```
30 |
31 | In the `Servers` tuple you can specify just one IP address in the Crate cluster, but including more than one will provide fallbacks if nodes become unavailable.
32 |
33 | It's possible to create multiple clients on one erlang node, these are registered using a client spec tuple, such as `{local, process_name}`. The process name must be unique on each node.
34 |
35 | ## Want to Know More?
36 | - More detailed documentation on the Crate Erlang client is available [here](https://github.com/crate/craterl/tree/master/doc).
37 | - The **Crate Sample App** demonstrates features of Crate and [how to use them in an Erlang based application](https://github.com/crate/crate-sample-apps/tree/master/erlang) with an explanation of how the library is used [here](https://github.com/crate/crate-sample-apps/blob/master/erlang/README.md).
38 |
39 | ## Next Steps
40 |
41 | - [Scale a Cluster](/docs/scale)
42 |
--------------------------------------------------------------------------------
/pages/docs/clients/index.html:
--------------------------------------------------------------------------------
1 | title: Client Libraries
2 | author: Chris Ward
3 |
4 | Crate is happy at the heart of any application stack, integrating with a multitude of languages and applications to connect and query your data.
5 |
6 | ## Official Client Libraries
7 |
8 | - [Java]({% url '/docs/clients/java.html' %})
9 | - [JDBC]({% url '/docs/clients/jdbc.html' %})
10 | - [Python]({% url '/docs/clients/python.html' %})
11 | - [PHP PDO and DBAL]({% url '/docs/clients/php.html' %})
12 | - [Erlang]({% url '/docs/clients/erlang.html' %})
13 | - [ODBC]({% url '/docs/clients/odbc.html' %})
14 | - [REST API]({% url '/docs/clients/rest.html' %})
15 |
16 | ## Community Maintained Clients
17 | ### Ruby
18 | [Christoph Klocker](https://twitter.com/corck) created a [Ruby driver](http://rubygems.org/gems/crate_ruby) and [Activerecord Adapter](https://rubygems.org/gems/activerecord-crate-adapter).
19 |
20 | ### Scala
21 | [Alexander Jarvis](https://github.com/alexanderjarvis) created a [Scala driver](https://github.com/alexanderjarvis/crate-scala) and adapter for the [Play framework](https://github.com/alexanderjarvis/play-crate).
22 |
23 | ### Node.js
24 | We have several Node and JavaScript drivers. A simple [connector](https://www.npmjs.com/package/crate-connect) by herenow, [cratejs](https://www.npmjs.com/package/cratejs) by herenow which extends it and [node-crate](https://www.npmjs.com/package/node-crate) by [megastef](https://github.com/megastef) as an alternative.
25 |
26 |
27 | ### Loopback
28 | Lovely Systems created [a connector to Crate for Loopback](https://github.com/lovelysystems/loopback-connector-crateio), the Node.js framework for connecting backend datasources.
29 |
30 | ### Mono
31 | [crate-mono is a Mono/.NET client driver](https://github.com/mfussenegger/crate-mono) implementing the ADO.NET interface forwritten by [Mathias Fussenegger](https://twitter.com/mfussenegger).
32 |
33 | ### GoLang
34 | herenow wrote [a Golang driver for Crate](https://github.com/herenow/go-crate) that implements the Go sql interface package.
35 |
36 | ### Vim
37 | Thanks to the work of Mathias Fussenegger and [David Fishburn](https://github.com/dfishburn), Vim users can connect to Crate clusters from within the editor using the [dbext](https://github.com/vim-scripts/dbext.vim) plugin.
38 |
39 | ### Perl
40 | Mamod Mehyar created [DBD::Crate](https://github.com/mamod/DBD-Crate), a DBI/Perl driver for Crate.
41 |
42 | ### Utilities and Data Visualization Tools
43 |
44 | For a full list of tools, see [Tools Overview]({% url '/docs/tools/index.html' %}).
45 |
46 | ## Next Steps
47 |
48 | - [Scale a Cluster]({% url '/docs/scale/index.html' %})
49 |
--------------------------------------------------------------------------------
/pages/docs/clients/java.html:
--------------------------------------------------------------------------------
1 | title: Connecting to Crate with Java
2 | author: Chris Ward
3 |
4 | ## Java Client
5 | ### Deprecation Notice
6 | The Java client is deprecated in versions of Crate 0.57.0 and will be removed by
7 | 0.58.0 and later. Instead the recommended way to access Crate from Java is
8 | via our [JDBC driver](/docs/clients/jdbc/).
9 |
10 | ### Add Crate to you Project
11 | A simple way to configure your project to connect to a Crate cluster is to visit the Java client page on [Bintray](https://bintray.com/crate/crate/crate-client/view) and click the *Set Me Up* button. This will give you a Maven or Gradle configuration that can be pasted into your current project or downloaded for a new project.
12 |
13 | For manual configuration follow these steps depending on your build system of choice.
14 |
15 | #### Maven
16 | Add the following to your *pom.xml* file:
17 |
18 | ```xml
19 | ...
20 |
21 | ...
22 |
23 |
24 | false
25 |
26 | central
27 | bintray
28 | http://dl.bintray.com/crate/crate
29 |
30 |
31 | ...
32 |
33 | ...
34 |
35 | io.crate
36 | crate-client
37 | VERSION
38 |
39 |
40 | ...
41 | ```
42 |
43 | #### Gradle
44 | Add Crate as a dependency to your Gradle file:
45 |
46 | ```groovy
47 | repositories {
48 | ...
49 | jcenter()
50 | }
51 |
52 | dependencies {
53 | compile 'io.crate:crate-client:VERSION
54 | ...
55 | }
56 | ```
57 |
58 | ### Connect to Crate
59 | Import the Crate client and create a new client object:
60 |
61 | ```java
62 | import io.crate.client.CrateClient;
63 | ...
64 | CrateClient client = new CrateClient(
65 | "NODE1_IP:4300",
66 | "NODE2_IP:4300"
67 | ...
68 | );
69 | ```
70 |
71 | Whilst it's possible to just connect to one node in a cluster, we recommend specifying all nodes to allow for automatic routing to another node if one becomes available.
72 |
73 | ## Want to Know More?
74 | - More detailed documentation on the Crate Java client is available [here](/docs/reference/java).
75 |
76 | ## Next Steps
77 |
78 | - [Scale a Cluster](/docs/scale)
79 |
--------------------------------------------------------------------------------
/pages/docs/clients/jdbc.html:
--------------------------------------------------------------------------------
1 | title: Connecting to Crate with JDBC
2 | author: Chris Ward
3 |
4 |
5 | ## Compatibility
6 |
7 | To find out which drivers are compatible to your Crate version, please consult
8 | the [reference documentation](https://crate.io/docs/reference/jdbc/).
9 |
10 | ## Add Crate to your Project
11 | A simple way to configure your project to connect to a Crate cluster is to
12 | visit the JDBC driver page on [Bintray](https://bintray.com/crate/crate/crate-jdbc/view)
13 | and click the *Set Me Up* button. This will give you a Maven or Gradle
14 | configuration that can be pasted into your current project or downloaded for a
15 | new project.
16 |
17 | For manual configuration follow these steps depending on your build system
18 | of choice.
19 |
20 | ### Maven
21 | Add the following to your *pom.xml* file:
22 |
23 | ```xml
24 | ...
25 |
26 | ...
27 |
28 |
29 | false
30 |
31 | central
32 | bintray
33 | http://dl.bintray.com/crate/crate
34 |
35 |
36 | ...
37 |
38 | ...
39 |
40 | io.crate
41 | crate-jdbc
42 | VERSION
43 |
44 |
45 | ...
46 | ```
47 |
48 | ### Gradle
49 | Add Crate as a dependency to your Gradle file:
50 |
51 | ```groovy
52 | repositories {
53 | ...
54 | jcenter()
55 | }
56 |
57 | dependencies {
58 | compile 'io.crate:crate-jdbc:VERSION'
59 | ...
60 | }
61 | ```
62 |
63 | ## Connect to Crate
64 |
65 | Connect to Crate Cluster with the Java DriverManager:
66 |
67 | ```java
68 | Connection conn = DriverManager.getConnection("crate://SERVER_IP:5432/");
69 | ```
70 |
71 | ## Want to Know More?
72 | - More detailed documentation on the Crate JDBC client is available [here](/docs/reference/jdbc).
73 | - The **Crate Sample App** demonstrates features of Crate and
74 | [how to use them in a JDBC based application](https://github.com/crate/crate-sample-apps/tree/master/java)
75 | with an explanation of how the library is used
76 | [here](https://github.com/crate/crate-sample-apps/blob/master/java/documentation.md).
77 |
78 | ## Next Steps
79 |
80 | - [Scale a Cluster](/docs/scale)
81 |
--------------------------------------------------------------------------------
/pages/docs/clients/php.html:
--------------------------------------------------------------------------------
1 | title: Connecting to CrateDB with PHP
2 | author: Chris Ward
3 |
4 | CrateDB supports integration with the [PDO](http://php.net/manual/en/intro.pdo.php) and [DBAL](http://www.doctrine-project.org/projects/dbal.html) data abstraction layers.
5 |
6 | ## PDO
7 | ### Install Driver
8 | Install the driver by adding a dependency to your *composer.json* file:
9 |
10 | ```json
11 | {
12 | "require": {
13 | "crate/crate-pdo":"~0.6.0"
14 | }
15 | }
16 | ```
17 |
18 | And install with `composer intall`.
19 |
20 | ### Connect to CrateDB
21 | To connect to your cluster, Crate follows standard PDO syntax to form a data source name string ([dsn](https://en.wikipedia.org/wiki/Data_source_name)) and then connect to it.
22 |
23 | ```php
24 | require_once __DIR__.'/vendor/autoload.php';
25 | use Crate\PDO\PDO as PDO;
26 |
27 | $dsn = 'crate:SERVER_IP:4200';
28 | $connection = new PDO($dsn, null, null, null);
29 | ```
30 |
31 | As CrateDB doesn't support authentication, the other parameters can be left null.
32 |
33 | ## DBAL
34 | ### Install Driver
35 | Install the driver by adding a dependency to your *composer.json* file:
36 |
37 | ```json
38 | {
39 | "require": {
40 | "crate/crate-dbal":"~0.3.0"
41 | }
42 | }
43 | ```
44 |
45 | And install with `composer install`.
46 |
47 | ### Connect to Crate
48 | To connect to your cluster, Crate follows standard [DBAL syntax](http://doctrine-orm.readthedocs.org/projects/doctrine-dbal/en/latest/reference/configuration.html) to create an array of parameters and then create a connection.
49 |
50 | ```php
51 | $params = array(
52 | 'driverClass' => 'Crate\DBAL\Driver\PDOCrate\Driver',
53 | 'host' => 'SERVER_IP',
54 | 'port' => 4200
55 | );
56 |
57 | $connection = \Doctrine\DBAL\DriverManager::getConnection($params);
58 | $schemaManager = $connection->getSchemaManager();
59 | ```
60 |
61 | ### ORM
62 | If you are using Doctrine's ORM features, then an extra dependency is needed in your *composer.json* file.
63 |
64 | ```json
65 | {
66 | "require": {
67 | "crate/crate-dbal":"~0.3.0",
68 | "doctrine/orm": "*"
69 | }
70 | }
71 | ```
72 |
73 | And install with `composer intall`.
74 |
75 | To create a connection:
76 |
77 | ```php
78 | require_once "vendor/autoload.php";
79 |
80 | use Doctrine\ORM\Tools\Setup;
81 | use Doctrine\ORM\EntityManager;
82 |
83 | $paths = array("/path/to/entity-files");
84 | $isDevMode = false;
85 |
86 | // the connection configuration
87 | $params = array(
88 | 'driverClass' => 'Crate\DBAL\Driver\PDOCrate\Driver',
89 | 'host' => 'SERVER_IP',
90 | 'port' => 4200
91 | );
92 |
93 | $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
94 | $entityManager = EntityManager::create($params, $config);
95 | ```
96 |
97 | Setting up the Doctrine ORM requires some extra steps, and we suggest reading [the official Doctrine documentation](http://doctrine-orm.readthedocs.org/en/latest/index.html) to get started.
98 |
99 | ## Want to Know More?
100 | - More detailed documentation on the Crate PDO client is available [here](/docs/reference/pdo).
101 | - More detailed documentation on the Crate DBAL client is available [here](/docs/reference/dbal).
102 | - The **Crate Sample App** demonstrates features of Crate and [how to use them in a PHP based application](https://github.com/crate/crate-sample-apps/tree/master/php) with an explanation of how the library is used [here](https://github.com/crate/crate-sample-apps/blob/master/php/documentation.md).
103 |
104 | ## Next Steps
105 |
106 | - [Scale a Cluster](/docs/scale)
107 |
--------------------------------------------------------------------------------
/pages/docs/clients/python.html:
--------------------------------------------------------------------------------
1 | title: Connecting to Crate with Python
2 | author: Chris Ward
3 |
4 | ## Install
5 | Use [pip](https://pypi.python.org/pypi/pip) to install the Crate Python package:
6 |
7 | ```bash
8 | pip install crate
9 | ```
10 |
11 | Import the client module from the `crate` package:
12 |
13 | ```python
14 | from crate import client
15 | ```
16 |
17 | ## Connect to Crate
18 | Use the `client` module to create a connection:
19 |
20 | ```python
21 | connection = client.connect(SERVER_IP)
22 | ```
23 |
24 | Open a cursor to the database to enable queries.
25 |
26 | ```python
27 | cursor = connection.cursor()
28 | ```
29 |
30 | ## Want to Know More?
31 | - More detailed documentation on the Crate Python client is available [here](/docs/reference/python).
32 | - The **Crate Sample App** demonstrates features of Crate and [how to use them in a Python based application](https://github.com/crate/crate-sample-apps/tree/master/python) with an explanation of how the library is used [here](https://github.com/crate/crate-sample-apps/blob/master/python/documentation.md).
33 |
34 | ## Next Steps
35 |
36 | - [Scale a Cluster](/docs/scale)
37 |
--------------------------------------------------------------------------------
/pages/docs/clients/rest.html:
--------------------------------------------------------------------------------
1 | title: Connecting to Crate with REST
2 | author: Chris Ward
3 |
4 | You can connect to the Crate HTTP endpoint with any standard tool, such as [curl](http://curl.haxx.se/) or [httpie](https://github.com/jkbrzt/httpie), we will be using curl.
5 |
6 | ## Connect to Crate
7 | The endpoint expects a SQL statement sent as a value associated with the key `stmt`, i.e.
8 |
9 | ```bash
10 | curl -sSXPOST 'CLUSTER_IP:4200/_sql?pretty' -d '{"stmt":"select name from sys.cluster"}'
11 | ```
12 |
13 | Will connect to a cluster and return basic information about the cluster.
14 |
15 | ## Next Steps
16 |
17 | - [Scale a Cluster](/docs/scale)
18 |
--------------------------------------------------------------------------------
/pages/docs/connect/admin_ui.html:
--------------------------------------------------------------------------------
1 | title: Manage your Cluster with the Crate Admin UI
2 | author: Chris Ward
3 |
4 | Crate ships with an Admin UI that provides an overview of your cluster, nodes, tables and much more.
5 |
6 | ## Connect to Cluster
7 | To Connect to Crate Cluster, open the following url:
8 |
9 | *http://SERVER_IP:4200/admin*
10 |
11 | `SERVER_IP` is the publicly accessible IP address of any node in the Crate cluster.
12 |
13 |
14 |
15 | ## Admin UI Features
16 | ### Overview Bar and Tab
17 |
18 |
19 | At the top of the browser window is overview information about the cluster that shows, from left to right:
20 |
21 | - The name of the cluster, find out [how to change its value our configuration documentation](https://crate.io/docs/reference/configuration.html#cluster-name)
22 | - The version of Crate that the cluster is running.
23 | - The health of the data in the cluster. Green indicates that all data is replicated and available, yellow that there are unreplicated records and red that data is unavailable.
24 | - Potential configuration problems and recommendations for the cluster.
25 | - Average cluster load over the past 1, 5 and 15 minutes.
26 | - Settings menu that allows you to update the language settings and provides a link to the CrateDB documentation and the latest CrateDB news.
27 |
28 | The overview tab displays similar information to the bar but with more details on data availability, cluster load and problems.
29 | On the left side of the window there are five further tabs.
30 |
31 | ### Console Tab
32 | An interactive terminal to try querying data sets and view the results.
33 |
34 | ### Tables Tab
35 | Gives an overview of document and blob tables present in the Crate cluster. This includes schema, shards, partitions, size and the data availability across the table.
36 |
37 | ### Cluster Tab
38 | Provides an overview of nodes in the cluster including details such as load, CPU usage, shards on the node and hostname.
39 |
40 | ### Monitoring Tab
41 | Gives an overview of the average number and speed of CrateDB queries (`SELECT`, `INSERT`, `UPDATE` and `DELETE`). Please note that this feature is only available in the [Enterprise Edition](https://crate.io/pricing/) of CrateDB.
42 |
43 | ### Get Started Tab
44 | Provides an easy way to import the latest tweets from the Twitter public timeline for a data set to experiment with.
45 |
46 | ## Next Steps
47 |
48 | - [Import Data](/docs/import)
49 | - [Client Libraries](/docs/clients)
50 | - [Scale a Cluster](/docs/scale)
51 |
--------------------------------------------------------------------------------
/pages/docs/connect/crash.html:
--------------------------------------------------------------------------------
1 | title: Crash, Crate's CLI
2 | author: Chris Ward
3 |
4 | Crash is Crate's shell for interacting with clusters.
5 |
6 | The Crash shell can be used from within a node that is part of a cluster or on another machine to connect to a remote cluster.
7 |
8 | To launch Crash:
9 |
10 | ```bash
11 | ./bin/crash
12 | ```
13 |
14 | Your command prompt will then switch to a `cr>` prompt. Connect to a cluster using the URL and the Crate port (*4200*):
15 |
16 | ```bash
17 | cr> \connect 127.0.0.1:4200;
18 | ```
19 |
20 | You can then use Crash to issue SQL queries and other commands.
21 |
22 | ## Want to Know More?
23 |
24 | - More detailed documentation on Crash can be found [here](/docs/reference/crash/).
25 |
26 | ## Next Steps
27 |
28 | - [Import Data](/docs/import)
29 | - [Client Libraries](/docs/clients)
30 | - [Scale a Cluster](/docs/scale)
31 |
--------------------------------------------------------------------------------
/pages/docs/connect/index.html:
--------------------------------------------------------------------------------
1 | title: Connect to a Cluster
2 | author: Chris Ward
3 |
4 | To Connect to your Crate Cluster, you will need to know the IP or DNS address of one node in the cluster and Crate uses port *4200* for HTTP transport. You then have several options available, our [Admin UI](admin_ui/), our [CLI tool](crash/) (Crash) and a [REST API](/docs/getting-started/clients/rest/).
5 |
--------------------------------------------------------------------------------
/pages/docs/import/index.html:
--------------------------------------------------------------------------------
1 | title: Import Data
2 | author: Chris Ward
3 | console: true
4 | consolequery_1: SELECT * FROM tweets WHERE user['verified'] = true
5 | consolequery_2: SELECT count(*) AS quantity, user['verified'] FROM tweets GROUP BY user['verified'] ORDER BY quantity DESC
6 |
7 | It's hard to see what a database is capable of without a real world dataset. Fortunately Crate ships with an easy method of obtaining data to experiment with.
8 |
9 | Open *http://SERVER_IP:4200/admin* to access the Crate Admin UI. Click *Get Started* to import some sample Twitter data and use the *Console* tab to try out some queries.
10 |
11 | ## Familiar SQL
12 | Crate uses familiar SQL syntax for performing real-time distributed queries across a cluster. You gain the benefits of a NoSQL based, scalable data store without needing to rewrite your application queries.
13 |
14 | For example, we want to see tweets from verified users, returning all column values.
15 |
16 | {% include "includes/interactive_console.html" with query=consolequery_1 %}
17 |
18 | ```sql
19 | SELECT *
20 | FROM tweets
21 | WHERE user['verified'] = true;
22 | ```
23 |
24 | `user['verified']` indicates a column that is part of an object data type, in this case, `user`. This object contains other fields of any type, including other objects.
25 |
26 | ### Analyze Data in Real Time
27 | Crate's SQL support includes distributed [aggregation](https://crate.io/docs/stable/sql/aggregation.html), [scalar](https://crate.io/docs/stable/sql/scalar.html) functions and [geospatial support](https://crate.io/docs/stable/sql/data_types.html#geo-point) for more complex queries and data analysis.
28 |
29 | For example:
30 |
31 | {% include "includes/interactive_console.html" with query=consolequery_2 %}
32 |
33 | ```sql
34 | SELECT count(*) AS quantity,
35 | user['verified']
36 | FROM tweets
37 | GROUP BY user['verified']
38 | ORDER BY quantity DESC;
39 | ```
40 |
41 | This query counts the number of verified and non-verified twitter users and displays the quantity by each type. `count(*)` is an [aggregation](https://en.wikipedia.org/wiki/Aggregate_function) function that returns a count of all the rows that match the query. The `GROUP BY` clause groups each count result into the two possible values of `user['verified']` (true and false).
42 |
43 | ## Next Steps
44 |
45 | - [Client Libraries](/docs/clients)
46 | - [Scale a Cluster](/docs/scale)
47 |
--------------------------------------------------------------------------------
/pages/docs/install/cloud/aws.html:
--------------------------------------------------------------------------------
1 | title: Getting started with Crate on Amazon Web Services
2 | author: Chris Ward
3 |
4 | Amazon Web Services (AWS) is the worlds most popular cloud hosting provider with 1000s of options for platforms, applications and infrastructure.
5 |
6 | An AMI (Amazon Machine Image) is a pre-configured virtual appliance optimized for a particular use. With the Crate AMI, this includes dependencies, optimization and configuration to get Crate running as quickly and efficiently as possible. Using the AMI is our recommended method for running Crate clusters on AWS.
7 |
8 | ## With the AWS Command Line Interface
9 | You can find the Crate AMI via the command line interface, in the format `crate---`.
10 |
11 | For example, to find all Crate AMIs available:
12 |
13 | ```bash
14 | aws ec2 describe-images --filters "Name=name,Values=crate-*"
15 | ```
16 |
17 | 
18 |
19 | If you are looking for particular Crate version, you can be more precise:
20 |
21 | ```bash
22 | aws ec2 describe-images --filters "Name=name,Values=crate-0.51.1-1-amzn-*"
23 | ```
24 |
25 | To run instances based on your AMI of choice, run the following command with the `image-id` of the Crate version you wish to run, the name of a security group that allows the ports Crate requires (4200, 4300) and if you want to use the EC2 API for inter-node discovery, a link to a `user-data` script.
26 |
27 | ```bash
28 | aws ec2 run-instances --image-id ami-96702de1 --count x --instance-type m3.medium --user-data $(base64 user-data.sh) --key-name keyname --security-groups groupname
29 | ```
30 |
31 | ## With the AWS Web Interface
32 | To use the AWS website to launch an instance, click the blue 'Launch Instance' button and find the available Crate AMIs under the *Community AMIs* section.
33 |
34 | 
35 |
36 | Click the 'select' button on the AMI you wish to use and set the instance configuration. The most important options here are the number of instances you require and selecting a security group that opens ports 4200 and 4300.
37 |
38 | ## The User Data file
39 | Amongst other configuration options, the User Data file is primarily used for setting your AWS credentials to make use of the EC2 API for inter-node discovery.
40 |
41 | For example:
42 |
43 | ```bash
44 | #!/bin/bash
45 | echo "
46 | export AWS_ACCESS_KEY_ID=''
47 | export AWS_SECRET_ACCESS_KEY=''
48 | " >> /etc/sysconfig/crate
49 | ```
50 |
51 | ## More Details
52 | For more options and details on setting up a Crate cluster on AWS with our AMI, read [our best practice guide](/docs/en/latest/best_practice/crate_ami.html). For more details on running Crate with Docker on AWS, [read our blog post](/blog/running-crate-with-docker-aws/).
53 |
54 | ## Next Steps
55 |
56 | - [Connect to Crate Cluster](/docs/connect)
57 | - [Import Data](/docs/import)
58 | - [Client Libraries](/docs/clients)
59 | - [Scale a Cluster](/docs/scale)
60 |
--------------------------------------------------------------------------------
/pages/docs/install/cloud/index.html:
--------------------------------------------------------------------------------
1 | title: Running Crate on Cloud Hosting
2 | author: Chris Ward
3 |
4 | You can install and configure a Crate cluster on any hosting provider, but with the providers listed below we have simplified the process even more.
5 |
6 |
30 |
--------------------------------------------------------------------------------
/pages/docs/install/cloud/packet.html:
--------------------------------------------------------------------------------
1 | title: Getting started with Crate on Packet
2 | author: Claus Matzinger
3 |
4 | [Packet](https://www.packet.net) is a bare metal provider built for the next
5 | generation of production workloads. Their emphasis on API-centered cloud
6 | deployment, fast networking, and container-ready hardware make them a good
7 | choice for developers and production workloads - and perfect for Crate clusters!
8 |
9 | ## Create your Crate Project
10 |
11 | Packet organizes machines as projects which bundle together several types of deployments:
12 |
13 | - Servers
14 | - Storage
15 | - Network
16 |
17 | 
18 |
19 | To get started, create a new project called 'Crate' (or any name of your
20 | choosing) and deploy some machines. For production use, we recommend
21 | [Type-1](https://www.packet.net/bare-metal/) servers, which are powerful enough
22 | to handle medium to large workloads.
23 |
24 | 
25 |
26 | Start by choosing an operating system for your deployment. After the server
27 | is ready, Packet's IaaS machines behave just like any other machine. Make
28 | sure to deploy an SSH key to access the server and after the machines are ready,
29 | SSH access can be obtained by logging in with `ssh root@`. From there
30 | it's just as any other Linux machine and there are several ways to install
31 | Crate on the machine(s). Check out our guide
32 | [for installing Crate on Linux.](/docs/install/local/linux/).
33 |
34 | ## Next Steps
35 |
36 | - [Connect to Crate Cluster](/docs/connect)
37 | - [Import Data](/docs/import)
38 | - [Client Libraries](/docs/clients)
39 | - [Scale a Cluster](/docs/scale)
40 |
--------------------------------------------------------------------------------
/pages/docs/install/cloud/softlayer.html:
--------------------------------------------------------------------------------
1 | title: Getting Started with Crate on Softlayer
2 | author: Chris Ward
3 |
4 | [SoftLayer](http://softlayer.com/), IBM's cloud platform, has a slightly different take on "the cloud". They are focusing on high performance (physical) hardware embedded in the best possible infrastructure, because "computing doesn't come out of the sky". However, besides their strong physical hardware that you can choose from, SoftLayer also offers virtual machines with a wide range of configuration possibilities.
5 |
6 | This combination makes SoftLayer an ideal hosting provider for your own Crate cluster, no matter if you just need a small cluster to play around or run your production cluster even across data centres.
7 |
8 | We at Crate.IO have been using [bare metal servers](https://www.softlayer.com/bare-metal-servers) to perform benchmarks on Crate. When using bare metal you have the advantage that you can mix and match hardware. On the other hand the setup/provisioning is more conventional (like on-premise-hosting), since it is not possible to launch/terminate instances in real-time.
9 |
10 | A balanced instance configuration for a production Crate host could look similar like that:
11 |
12 | 8x 2.0GHz cores
13 | = 32 GB memory
14 | = 100 GB local SSD storage
15 | 1000 Mbps public/private network interface
16 |
17 | We used [SaltStack](http://www.saltstack.com/)'s [Salt Cloud](http://docs.saltstack.com/en/latest/topics/cloud/) to launch and provision instances for the test cluster. Salt Cloud provides an abstraction layer for multiple cloud hosting providers, also for [SoftLayer](http://docs.saltstack.com/en/latest/topics/cloud/softlayer.html).
18 |
19 | ## Server Provisioning With Salt Cloud
20 | Example of `/etc/salt/cloud.profiles`:
21 |
22 | ```yaml
23 | softlayer:
24 | provider: crate-softlayer-hw
25 | domain: crate.io
26 | image: CENTOS_LATEST #
27 | location: ams01 # Amsterdam
28 | cpu_number: 8
29 | ram: 65536 # 64GB
30 | disk_size: 100 # GB
31 | local_disk: True
32 | max_net_speed: 1000 # 1Gbps
33 | hourly_billing: False
34 | private_vlan:
35 | minion:
36 | grains:
37 | role:
38 | - crate_softlayer
39 | ```
40 |
41 | Example of `/etc/salt/cloud.map`:
42 |
43 | ```yaml
44 | softlayer:
45 | - sl1
46 | - sl2
47 | - sl3
48 | ```
49 |
50 | Launching the instances defined in the cloud.map file is as easy as this command:
51 |
52 | ```bash
53 | $ salt-cloud -m /etc/salt/cloud.map -P
54 | ```
55 |
56 | And once the instances are running you will be able to provision them by running the `highstate` on the crate_softlayer role that the instances are associated with.
57 |
58 | ```bash
59 | $ salt -G 'role:crate_softlayer' state.highstate
60 | ```
61 |
62 | The `highstate` is defined in the **sls** (Salt State File). Here's an example of our init.sls:
63 |
64 | ```yaml
65 | crate_repo:
66 | pkgrepo.managed:
67 | - name: crate
68 | - humanname: Crate
69 | - baseurl: https://cdn.crate.io/downloads/yum/testing/6/x86_64/
70 | - enabled: 0 # 1 = testing release.
71 | - gpgcheck: 1
72 | - gpgkey: https://cdn.crate.io/downloads/yum/RPM-GPG-KEY-crate
73 | - required_in:
74 | - packages
75 |
76 | packages:
77 | pkg.installed:
78 | - pkgs:
79 | - java-1.8.0-openjdk
80 | - wget
81 | - crate
82 |
83 | /etc/sysconfig/crate:
84 | file.managed:
85 | - user: crate
86 | - mode: 755
87 | - contents: |
88 | CRATE_MIN_MEM=16g
89 | CRATE_MAX_MEM=16g
90 |
91 | /etc/crate/crate.yml:
92 | file.managed:
93 | - source: salt://softlayer/crate.yml
94 | - user: root
95 | - mode: 644
96 | ```
97 | {% verbatim %}
98 | Example of `crate.yml`:
99 |
100 | ```yaml
101 | name: {{ grains['host'] }}
102 | cluster:
103 | name: crate-softlayer
104 | path:
105 | logs: /path/to/crate/logs
106 | data: /path/to/crate/data
107 | network:
108 | tcp:
109 | connect_timeout: 60s
110 | discovery.zen.minimum_master_nodes: 2
111 | discovery.zen.ping.unicast.hosts:
112 | {%- for server, addrs in salt['mine.get']('*', 'network.ip_addrs').items() %}
113 | {% if server.startswith("sl") %} - {{ addrs[0] }}:4300{% endif -%}{% endfor %}
114 | ```
115 | {% endverbatim %}
116 |
117 | ## Next Steps
118 |
119 | - [Connect to Crate Cluster](/docs/connect)
120 | - [Import Data](/docs/import)
121 | - [Client Libraries](/docs/clients)
122 | - [Scale a Cluster](/docs/scale)
123 |
--------------------------------------------------------------------------------
/pages/docs/install/containers/containership.html:
--------------------------------------------------------------------------------
1 | title: Getting started with Crate on ContainerShip
2 | author: Chris Ward
3 |
4 | [ContainerShip](http://containership.io/) allows you to configure a hosting stack by combining your own Docker images with their library of software and third party integrations. Effortlessly manage, deploy, and scale across any number of providers. Detach a cluster from our service at any time and use the open source core system on your own.
5 |
6 | ## Connect Hosting
7 | First, from the *Providers -> Hosting* menu, connect your hosting accounts. The current options are AWS, Digital Ocean, Joyent, Packet and Rackspace.
8 |
9 | 
10 |
11 | ## Create Cluster
12 | Next we need to create our cluster, the VMs that our Crate cluster will be added to. Click on the *Infrastructure -> Clusters* menu and then the 'Create Cluster' button in the top right of the dashboard screen. Select your hosting provider and the appropriate configuration options for region, authentication and memory/cpu.
13 |
14 | 
15 |
16 | 
17 |
18 | ContainerShip uses the concept of 'Leaders' and 'Followers', that handle management of containers and applications and the actual containers and applications respectively. Read more about these concepts in [ContainerShip's documentation](https://docs.containership.io/docs/terminology).
19 |
20 | ## Create Application
21 | After a few minutes waiting for the cluster to come online, we can create our Application, the Crate cluster. Open your cluster admin page and scroll down to the green 'New Application' button. As ContainerShip have made Crate available in their marketplace, click the 'From Marketplace' button and click 'Add to Cluster' underneath Crate from the following screen.
22 |
23 | Choose the cluster you wish to install Crate in and set its memory and CPU options. You should now see Crate listed underneath the 'Applications' section, it will be set up on the follower Hosts, so two nodes. Copy one of the Follower Host IP addresses, and open it in a browser with *:4200/admin* appended and you will see the Crate admin UI.
24 |
25 | 
26 |
27 | ## Scaling
28 | There are two methods for scaling your cluster with ContainerShip, the number of containers per VM, or the number of VMs.
29 |
30 | To increase the number of VMs, simply click the 'Scale' button in the 'Follower Hosts' section on the *Cluster* page and increase the number of hosts.
31 |
32 | To increase the number of containers per VM, open *Infrastructure -> Applications*, click on *Crate* and change the 'constraints.per*host' tag by removing and re-adding it. This will cause an automatic redistribution of VMs and containers.
33 |
34 | ## Conclusion
35 | This is a simple 'getting started' guide to getting Crate running on ContainerShip and we suggest you read their [documentation](https://docs.containership.io/) to get a further idea on what options are available such as using environment variables, a command line interface, tags available and much more.
36 |
37 | ## Next Steps
38 |
39 | - [Connect to Crate Cluster](/docs/connect)
40 | - [Import Data](/docs/import)
41 | - [Client Libraries](/docs/clients)
42 | - [Scale a Cluster](/docs/scale)
43 |
--------------------------------------------------------------------------------
/pages/docs/install/containers/coreos.html:
--------------------------------------------------------------------------------
1 | title: Getting started with Crate on CoreOS
2 | author: Mathias Fußenegger
3 |
4 | As a Linux distribution targetted at cloud and cluster based environments, CoreOS is a perfect fit for a Crate cluster.
5 |
6 | ## Pre-requisites
7 | We assume you have a CoreOS cluster running and can access the `fleetctl` tool installed on your local system or on a node in the CoreOS cluster.
8 |
9 | ## Create the Crate Service
10 | Create a service file called *crate@.service* with the following contents:
11 |
12 | ```bash
13 | [Unit]
14 | Description=crate
15 | After=docker.service
16 | Requires=docker.service
17 |
18 | [Service]
19 | TimeoutSec=180
20 | ExecStartPre=/usr/bin/mkdir -p /data/crate
21 | ExecStartPre=/usr/bin/docker pull crate/crate
22 |
23 | ExecStart=/usr/bin/docker run \
24 | --name %p-%i \
25 | --publish 4200:4200 \
26 | --publish 4300:4300 \
27 | --volume /data/crate:/data \
28 | crate/crate \
29 | /crate/bin/crate \
30 | -Cnode.name=%p%i \
31 |
32 | ExecStop=/usr/bin/docker stop %p-%i
33 | ExecStop=/usr/bin/docker rm %p-%i
34 |
35 | [X-Fleet]
36 | X-Conflicts=%p@*.service
37 | ```
38 |
39 | The `TimeoutSec` setting is important because pulling a docker image for the first time takes some time and might cause a time out.
40 |
41 | If you're familiar with systemd service files you'll notice that the crate service file looks similar to a regular systemd service file. The only difference is the `[X-Fleet]` section that ensures only one service named *crate@x.service* is assigned per node.
42 |
43 | Submit it to the cluster using fleet (assuming a 3 node cluster):
44 |
45 | ```bash
46 | fleetctl submit crate@{1,2,3}.service
47 | ```
48 |
49 | Start the service across the cluster (assuming a 3 node cluster):
50 |
51 | ```bash
52 | fleetctl start crate@{1,2,3}.service
53 | ```
54 |
55 | Once a crate service starts a folder named */data/crate* will be created on each CoreOS node. The crate docker image is pulled and once finished the container launches.
56 |
57 | Check Status:
58 |
59 | ```bash
60 | fleetctl list-units
61 | ```
62 |
63 | ## Next Steps
64 |
65 | - [Connect to Crate Cluster](/docs/connect)
66 | - [Import Data](/docs/import)
67 | - [Client Libraries](/docs/clients)
68 | - [Scale a Cluster](/docs/scale)
69 |
--------------------------------------------------------------------------------
/pages/docs/install/containers/docker-cloud.html:
--------------------------------------------------------------------------------
1 | title: Getting Started with Crate on Docker Cloud
2 | author: Chris Ward
3 |
4 | [Docker Cloud](https://cloud.docker.com) is Docker's official platform for building, managing and deploying Docker containers across a variety of cloud providers and a provides features ideal for Development workflows. One of the best and most relevant features for Crate users is [default support for overlay networking](https://docs.docker.com/engine/userguide/networking/get-started-overlay/).
5 |
6 | ## Connect Cloud Providers
7 | The first step is to connect the cloud hosting providers you would like to use with Docker Cloud. The current options are Amazon Web Services, Digital Ocean, Microsoft Azure, Softlayer and Packet.
8 |
9 | ## Create Nodes
10 | Visit the *Nodes* section of the [dashboard](https://cloud.docker.com/node/cluster/list/) and click the large green *Launch your first Node* button.
11 |
12 | Give the cluster a name, select the details of your cloud provider and give the cluster a tag that we use to group and target services.
13 |
14 | 
15 |
16 | After a couple of minutes, the cluster will be ready.
17 |
18 | 
19 |
20 | And here are the new instances on Digital Ocean (in my case).
21 |
22 | 
23 |
24 |
25 | ## Create Services
26 | Next we need to setup our services. Docker Cloud provide an amazing selection of configuration and management options through their UI, but by far the easiest and quickest method for getting a Crate cluster deployed is by using a 'Stack' file. This allows us to set some options that Crate needs to function correctly and then you can analyze the resulting services to see what Docker Cloud is capable of.
27 |
28 | Click on the *Stacks* tab, then the green *Create your first stack* button. Give the Stack a name and add the following code:
29 |
30 | ```yaml
31 | crate1:
32 | image: 'crate:latest'
33 | command: 'crate -Cnetwork.bind_host=_eth0:ipv4_ -Cnetwork.publish_host=_ethwe:ipv4_'
34 | ports:
35 | - '4200:4200'
36 | - '4300:4300'
37 | crate2:
38 | image: 'crate:latest'
39 | command: 'crate -Cnetwork.bind_host=_eth0:ipv4_ -Cnetwork.publish_host=_ethwe:ipv4_'
40 | crate3:
41 | image: 'crate:latest'
42 | command: 'crate -Cnetwork.bind_host=_eth0:ipv4_ -Cnetwork.publish_host=_ethwe:ipv4_'
43 | ```
44 |
45 | This creates three instances of Crate, all using the 'latest' tagged Docker image. One sets ports manually and the others use dynamic port allocation. Finally, we change the default [publish_host](/docs/stable/configuration.html#conf-hosts). We do this because Docker Cloud has default support for Weave, which allows for seamless cross machine communication through its overlay network. However, Weave requires Crate to publish on a different interface to its default and this is how we accomplish this.
46 |
47 | Click the green *Create stack* button and you will see a list of the resulting services not yet running.
48 |
49 | Click the green *Start* button and after a few moments you will see our 3 node Crate cluster spread across containers and nodes. We have used Docker Cloud's default approach to load balancing (Emptiest Node) but [there are many to choose from](https://docs.docker.com/docker-cloud/feature-reference/deployment-strategies/). As we are setting one set of ports manually, this will limit some of our potential deployment strategies.
50 |
51 | 
52 |
53 | Click the *Endpoints* tab to see the cluster URL and open the link ending in port 4200 under the *Service endpoints* section, adding */admin* to access the Crate admin interface. You should see a 3 node cluster, indicated by the '3' in the top right of the window.
54 |
55 | 
56 |
57 | To double check what is happening, click the *Nodes* tab, you should see the two VMs, one with 1 container and 1 with 2.
58 |
59 | 
60 |
61 | ## Conclusion
62 | The real potential in the Docker Cloud lies in its simple scalability through a user-friendly UI (and CLI) which pairs well with Crate, this has been a simple, 'getting started' example and we recommend you look further at [Docker Cloud's documentation](https://docs.docker.com/docker-cloud/) to explore its full potential.
63 |
64 | ## Next Steps
65 |
66 | - [Connect to Crate Cluster](/docs/connect)
67 | - [Import Data](/docs/import)
68 | - [Client Libraries](/docs/clients)
69 | - [CrateDB and Docker Best Practices](https://crate.io/docs/reference/best_practice/docker.html)
70 | - [Scale a Cluster](/docs/scale)
71 |
--------------------------------------------------------------------------------
/pages/docs/install/containers/index.html:
--------------------------------------------------------------------------------
1 | title: Running Crate in Containers
2 | author: Chris Ward
3 |
4 | Crate is ideal for containerized environments, creating and scaling a cluster takes minutes and your valuable data is always in sync and available.
5 |
6 |
30 |
--------------------------------------------------------------------------------
/pages/docs/install/index.html:
--------------------------------------------------------------------------------
1 | title: Install
2 | author: Chris Ward
3 |
4 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ad illum redeo. Te enim iudicem aequum puto, modo quae dicat ille bene noris. Non igitur de improbo, sed de callido improbo quaerimus, qualis Q. Mihi enim erit isdem istis fortasse iam utendum. Sed potestne rerum maior esse dissensio? Duo Reges: constructio interrete. Nec lapathi suavitatem acupenseri Galloni Laelius anteponebat, sed suavitatem ipsam neglegebat; Ut enim consuetudo loquitur, id solum dicitur honestum, quod est populari fama gloriosum.
5 |
--------------------------------------------------------------------------------
/pages/docs/install/local/download-thanks.html:
--------------------------------------------------------------------------------
1 | title: Thanks for Downloading Crate
2 | author: Michael Beer
3 |
4 |
5 |
6 | ## Your download should begin automatically.
7 |
8 | If your download did not start, click here to retry.
9 |
10 | Crate is also available for other platforms.
11 |
12 | # Next Steps
13 |
14 | - [Connect to Crate Cluster](/docs/connect)
15 | - [Import Data](/docs/import)
16 | - [Client Libraries](/docs/clients)
17 | - [Scale a Cluster](/docs/scale)
18 |
19 |
20 |
30 |
32 |
37 |
--------------------------------------------------------------------------------
/pages/docs/install/local/index.html:
--------------------------------------------------------------------------------
1 | title: Install Crate
2 | author: Chris Ward
3 |
4 | Crate provides packages and executables that will work on any operating systems capable of running Java.
5 |
6 |
30 |
--------------------------------------------------------------------------------
/pages/docs/install/local/mac.html:
--------------------------------------------------------------------------------
1 | title: Install Crate on Mac
2 | author: Chris Ward
3 |
4 | You can install and run Crate on a Mac with one simple command in your terminal application:
5 |
6 | ```bash
7 | bash -c "$(curl -L try.crate.io)"
8 | ```
9 |
10 | To create a cluster, run the command multiple times to create new instances that will discover each when running on the same machine.
11 |
12 | ## Next Steps
13 |
14 | - [Connect to Crate Cluster](/docs/connect)
15 | - [Import Data](/docs/import)
16 | - [Client Libraries](/docs/clients)
17 | - [Scale a Cluster](/docs/scale)
18 |
--------------------------------------------------------------------------------
/pages/docs/install/local/tarball.html:
--------------------------------------------------------------------------------
1 | title: Install Crate from a Tarball
2 | author: Chris Ward
3 |
4 | ## Latest Stable Release
5 |
6 | Version {{ CONFIG.stable_version }} Released on {{ CONFIG.stable_version_date }}
7 |
8 | Download latest stable release.
9 |
10 | Start Crate by extracting the downloaded archive, move into the _bin_ folder and run:
11 |
12 | ```bash
13 | ./crate
14 | ```
15 |
16 | To create a cluster of Crate instances, run the command multiple times.
17 |
18 |
19 | ## Testing Releases
20 | Test builds of Crate should only be used for testing upcoming new features not in production. Download latest testing release.
21 |
22 | Nightly builds of Crate are provided for testing purposes only. You can download the latest builds here.
23 |
24 |
25 |
26 | ## Next Steps
27 |
28 | - [Connect to Crate Cluster](/docs/connect)
29 | - [Import Data](/docs/import)
30 | - [Client Libraries](/docs/clients)
31 | - [Scale a Cluster](/docs/scale)
32 |
--------------------------------------------------------------------------------
/pages/docs/install/local/windows.html:
--------------------------------------------------------------------------------
1 | title: Install Crate on Windows
2 | author: Chris Ward
3 |
4 | ## Configure Windows
5 |
6 | To install Crate on Windows, you will need a [Java JDK installed](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html).
7 |
8 | Set the `JAVA_HOME` environment variable:
9 |
10 | 
11 |
12 | Allow the ports Crate uses through the Windows Firewall:
13 |
14 | 
15 |
16 | ## Install Crate
17 |
18 | [Download the Crate Tarball](/docs/install/local/tarball/), expand it and move to a convenient location.
19 |
20 | Start Crate by running `.\bin\crate`, to create a cluster, run the command multiple times.
21 |
22 | ## Next Steps
23 |
24 | - [Connect to Crate Cluster](/docs/connect)
25 | - [Import Data](/docs/import)
26 | - [Client Libraries](/docs/clients)
27 | - [Scale a Cluster](/docs/scale)
28 |
--------------------------------------------------------------------------------
/pages/docs/reference/overview.html:
--------------------------------------------------------------------------------
1 | title: Reference Documentation
2 | author: Chris Ward
3 |
4 | Want to know more in-depth details of Crate or our client libraries and utilities?
5 |
--------------------------------------------------------------------------------
/pages/docs/scale/index.html:
--------------------------------------------------------------------------------
1 | title: 0 to 50 nodes in No Time
2 | author: Chris Ward
3 |
4 | Crate is designed to be easy to scale and adding a new node to a cluster is as simple as starting your first Crate instance.
5 |
6 | If you have followed any of our installation guides you likely now have one Crate instance running with some test data, for the sake of this tutorial, we will assume it's the public Twitter data.
7 |
8 | Here is my one node Crate cluster, not a large amount of data, but it's running in a Docker container on my local machine, so enough for demonstration purposes.
9 |
10 | Open the Crate admin UI at *SERVER_IP:4200/admin* and you should see something like the following, note the *NODES: 1* indicator.
11 |
12 | 
13 |
14 | Let's add a second Crate node to the cluster, this will depend on how you installed Crate, to start a new Crate instance, run the same command as starting your first. For example:
15 |
16 | **Docker**
17 |
18 | ```bash
19 | docker run -P -d crate
20 | ```
21 |
22 | **Ubuntu**
23 |
24 | ```bash
25 | sudo service crate start
26 | ```
27 |
28 | [Find our how to start nodes with other installations](/docs/install/).
29 |
30 | Within a couple of seconds, the second node will have joined the cluster and the *NODES:* count should have increased to 2. Depending on the complexity and quantity of data and hardware setup you will also notice the cluster state changes to yellow momentarily as it rebalances and resynchronizes data across the cluster.
31 |
32 | 
33 |
34 | Add another node to the cluster using the same steps as above. You will notice the same happening as before, but this time quickly switch to the *TABLES* tab after adding the third node. Here you can see that Crate also provides information about how data is rebalancing at a table and shard level as well as at a cluster level.
35 |
36 | 
37 |
38 | Try removing a node from the cluster by killing a Crate process or stopping a docker container with `docker stop container_id`. You will notice that again the cluster will rebalance and re-sync across the remaining nodes.
39 |
40 | Try running a simple query on the cluster, such as:
41 |
42 | ```sql
43 | SELECT count(*) AS quantity, user['verified']
44 | FROM tweets
45 | GROUP BY user['verified']
46 | ORDER BY quantity DESC limit 100;
47 | ```
48 |
49 | Add and remove nodes to the cluster and try issuing the same query each time, you should notice no change in the result and very little difference in speed.
50 |
51 |
52 | Related
53 |
54 | Setting Heap Size
55 | Configuring Node Quorum
56 |
57 |
58 |
--------------------------------------------------------------------------------
/pages/docs/scale/multi_zone_setup.html:
--------------------------------------------------------------------------------
1 | title: Multi Zone Setup
2 | author: Chris Ward
3 |
4 | If possible, we recommend running all Crate nodes of a cluster inside the same physical space (e.g. data center) to minimize network latency and maximize speed between the nodes. These factors can have a significant impact on the performance of Crate clusters.
5 |
6 | This is because replicas are written *synchronously* and making a write task wait for the replicas to write somewhere in a data center hundreds of miles away can lead to noticeable latency and cause the cluster to slow down.
7 |
8 | In certain scenarios it may be necessary to run a cluster across multiple data centers or availability zones. We'll call these **zones** from now on.
9 |
10 | For a multi zone setup, Crate clusters need to fulfill the following 3 requirements:
11 |
12 | ## Requirements
13 | 1. When inserting data, it should be replicated in a way so that at least one full replica is present inside each zone.
14 | 2. If a zone becomes unavailable, all data still needs to be fully available.
15 | 3. When querying data, all data should only be collected from shards that are inside the same zone as the initial request.
16 |
17 | To achieve these requirements, make use of **shard allocation awareness**. If you are new to setting up a multi-node Crate cluster you should read our [multi node setup](/docs/scale/multi_node_setup) guide first.
18 |
19 | ## Assigning Tags
20 | First, assign a tag containing the zone to the cluster nodes. This enables shard allocation awareness.
21 |
22 | It's possible to assign arbitrary tags to nodes using the *crate.yaml* settings file or the `-C` option on startup. [Read our in-depth guide](/docs/reference/configuration.html) for more details on Crate configuration options.
23 |
24 | In *crate.yaml* a zone tag looks like:
25 |
26 | ```yaml
27 | node.zone: us-east-1
28 | ```
29 |
30 | The node is tagged with a `zone` of the value `us-east-1`, an availability zone of a cloud computing provider.
31 |
32 |
33 | Note
34 | These tags and settings can't be changed at runtime and need to be set on startup.
35 |
36 |
37 | ## Allocation Awareness
38 | Now tags can be set as attributes for the shard allocation awareness. We use the tag `zone` that we just assigned to the node as an attribute:
39 |
40 | ```yaml
41 | cluster.routing.allocation.awareness.attributes: zone
42 | ```
43 |
44 | This means that Crate will try to allocate shards and their replicas according to the `zone` tags, so that a shard and its replica are not on a node with the same `zone` value.
45 |
46 | Let's add a second and a third node in a different zone (`us-west-1`) and tag them accordingly.
47 |
48 | ```yaml
49 | node.zone: us-west-1
50 | cluster.routing.allocation.awareness.attributes: zone
51 | ```
52 |
53 | When the cluster is started, we will create a table with 6 shards and 1 replica. The 6 shards will be distributed evenly across the nodes (2 shards on each node) and the replicas allocated on nodes with a different `zone` value to its primary shard.
54 |
55 | If that isn't possible (e.g. `num replicas > num zones - 1`) Crate will still allocate the replicas on nodes with the same `zone` value to avoid unassigned shards.
56 |
57 |
58 | Note
59 | Allocation awareness only means that Crate tries to conform to the awareness attributes, to avoid such allocations, force the awareness.
60 |
61 |
62 | ## Force Awareness
63 | To fulfill the 3rd requirement you need to ensure that when running a query on a node with a certain `zone` value it only executes the request on shards allocated on nodes with the same `zone` value.
64 |
65 | This means you need to know the different `zone` attribute values to force awareness on nodes.
66 |
67 | You can force awareness on certain attributes, for example, the `zone`:
68 |
69 | ```yaml
70 | cluster.routing.allocation.awareness.force.zone.values: us-east-1,us-west-1
71 | ```
72 |
73 | When set, no more replicas than needed are allocated on a specific group of nodes.
74 |
75 |
76 | Example
77 | You have 2 nodes with `zone` set to `us-east-1` and create a table with 8 shards and 1 replica. 8 primary shards will be allocated and the 8 replica shards left unassigned. Only when you add a new node with `zone` set to `us-west-1` will the replica shards be allocated.
78 |
79 |
80 |
81 | By using these settings and their mechanisms correctly, you should be able to setup a cluster that spans across multiple zones and fulfills the 3 requirements above, but be aware of the drawbacks such a setup can have.
82 |
--------------------------------------------------------------------------------
/pages/docs/search/index.html:
--------------------------------------------------------------------------------
1 | title: Search
2 | author: Chris Ward
3 | console: true
4 | consolequery: SELECT date_format('%Y-%m', date_trunc('month', created_at)) AS date, count(*) AS cnt_pos FROM github WHERE match(record_ft, 'hallelujah hurray bingo amused cheerful excited glad proud') AND TYPE = 'PushEvent' AND (created_at >= '2012-01-01' AND created_at <= '2015-09-01') GROUP BY date ORDER BY date ASC
5 |
6 | ## Find the Answers you Need, Instantly
7 | Crate offers a comprehensive selection of tools to suit the needs of many business requirements. From analyzing large data sets and text records in real-time to find the details you need, to storing and retrieving media files, Crate has what you're looking for.
8 |
9 | Whilst other solutions make your developers learn new and single-purpose skills to use them, with Crate they can use familiar and established knowledge to gain new potential.
10 |
11 | ## Crate is the only solution you need
12 | If you've ever developed an application that used a traditional database for storing data you'll know the complexities of adding search features beyond SQL `like` queries. Typically this has involved integrating additional components to your application stack such as Lucene, Solr or Elastic Search. This search index then needs to synchronized with data changes and maintained.
13 |
14 | Crate includes comprehensive built-in full text search features alongside SQL and BLOB storage, available in queries with other fields in the same tables.
15 |
16 | ## Full Text Search
17 | With Crate, full text search and analysis of column values is comprehensive and fast. Let's look at an example.
18 |
19 | {% include "includes/interactive_console.html" with query=consolequery %}
20 |
21 | ```sql
22 | SELECT date_format('%Y-%m', date_trunc('month', created_at)) AS date,
23 | count(*) AS cnt_pos
24 | FROM github
25 | WHERE match(record_ft, 'hallelujah hurray bingo amused cheerful excited glad proud')
26 | AND TYPE = 'PushEvent' AND (created_at >= '2012-01-01' AND created_at <= '2015-09-01')
27 | GROUP BY date ORDER BY date ASC;
28 | ```
29 |
30 | This query searches our GitHub archive data set for commit messages pushed to repositories that contained positive words between the beginning of 2012 and September 2015 and splits them per month. Of course searching for these words doesn't necessarily mean the commit messages were positive, but for example purposes it's perfect.
31 |
32 | The `match()` statement is where the magic happens and allows for a [wide variety of analysis](https://crate.io/docs/stable/sql/analyzer.html) options.
33 |
34 | ## Try Crate now
35 | We have a 3-instance cluster setup for you to try out, head over to [play.crate.io](https://play.crate.io/_plugin/crate-admin/#/) and go crazy!
36 |
37 | ## Getting Started / Install
38 | Keen to get started with your own cluster? [Our 5 step process](getting-started) will result in a Crate cluster populated with data and connected to an application in no time.
39 |
--------------------------------------------------------------------------------
/pages/docs/support/index.html:
--------------------------------------------------------------------------------
1 | title: Support
2 | author: Chris Ward
3 | description: Crate is an open source project with a strong community. Join the Crate community on Google Groups, IRC, meetups, or contribute on GitHub
4 |
5 |
At Crate we firmly believe that your success is our success, and we’ll do our best to offer you support when you need help using Crate.
6 |
To be able to support the requirements of enterprise customers Crate offers a range of enterprise services to guarantee speedy resolution of issues.
7 |
8 |
Discuss Crate
9 |
Join the Crate discussion, ask for advice and suggest improvements through our community supported forums on StackOverflow or Slack.
10 |
11 |
12 |
Connect with Crate
13 |
You can report issues or request features by opening a request on GitHub.
14 |
15 |
16 |
Learn Crate
17 |
Access the Crate documentation for common troubleshooting issues.
18 |
--------------------------------------------------------------------------------
/pages/docs/tools/index.html:
--------------------------------------------------------------------------------
1 | title: Tools Overview
2 | description: Management tools, utilities and data visualization for Crate
3 | author: Christian Haudum
4 |
5 | There are several tools that play well with Crate, from development utilities to data visualization tools. We even use some of them ourselves!
6 |
7 | This page gives an overview of the tools available and tested with the latest version of Crate. If you know of any other tools that work well with Crate, please [get in touch](mailto:office@crate.io).
8 |
9 | ## Management Utilities
10 |
11 | ### SQuirreL SQL
12 |
13 | SQirreL is an open-source, cross-platform, graphical Java SQL Client (requires Java >= 6.x) that allows you to view the structure of any JDBC compliant database.
14 |
15 | Here is a setup guide about [how to connect to Crate with SQirreL]({% url '/docs/tools/squirrel.html' %}).
16 |
17 | - [Download](http://squirrel-sql.sourceforge.net)
18 | - [Official documentation](http://squirrel-sql.sourceforge.net/paper/SQuirreL_us.pdf)
19 |
20 | ### conZole
21 |
22 | conZole is a web-based SQL console written in Node.js that lets you inspect data in a Crate cluster. It uses the [node-crate](https://github.com/megastef/node-crate) driver and [Zebra UI](http://www.zebkit.com/) as the HTML5 front end.
23 |
24 | - [Github](https://github.com/megastef/crate-conZole)
25 |
26 | ### Crash
27 |
28 | The Crate Shell (aka `crash`) is an officially maintained, open-source command line interface (SQL shell) for Crate. It's written in Python (requires Python >= 2.7) and supports multiple output formats such as tabular output, CSV or JSON.
29 |
30 | - How to connect to Crate with crash [here](https://crate.io/docs/connect/crash/)
31 | - Full reference [documentation](https://crate.io/docs/reference/crash/)
32 | - [Github](https://github.com/crate/crash)
33 | - [PyPi](https://pypi.python.org/pypi/crash)
34 |
35 | ### cr8 Utilities
36 |
37 | `cr8` is a collection of command line tools for Crate written in Python and developed by one of our core developers. It reduces repetitive tasks such as filling tables with sample data, a real 'Swiss army knife' for Crate users.
38 |
39 | - [Blog post](https://crate.io/a/cr8-utility-scripts/).
40 | - [Github](https://github.com/mfussenegger/cr8)
41 | - [PyPi](https://pypi.python.org/pypi/cr8)
42 |
43 | ### ctop
44 |
45 | `ctop` is a simple stat/top tool for Crate written in Python and based on [urwid](http://urwid.org/). It can display metrics such as CPU, memory, heap usage, network traffic and disk i/o in a console user interface.
46 |
47 | - [Blog post](https://crate.io/a/ctop-top-for-crate-cluster/)
48 | - [Github](https://github.com/chaudum/crate-top)
49 |
50 | ## Data Visualization
51 |
52 | ### Tableau Desktop
53 |
54 | Tableau is a business analytics and data visualization software that lets you see and understand data in minutes.
55 |
56 | **Connecting Tableau to a Crate cluster requires our ODBC driver, find more details [here](/enterprise/odbc).**
57 |
58 | - [Official website](http://www.tableau.com/)
59 | - [How to use Tableau](http://www.tableau.com/learn)
60 |
61 |
62 | ### SQLPad
63 |
64 | SQLPad is a beautiful, web-based SQL editor written in Node.js that can run in your own private cloud and supports multiple databases such as Postgres, MySQL, SQL Server, Vertica and since version `1.12.0`, also Crate.
65 |
66 | - [Website](http://rickbergfalk.github.io/sqlpad/)
67 | - [Github](https://github.com/rickbergfalk/sqlpad)
68 |
69 | ### Pentaho
70 |
71 | Pentaho prepares and blends data, delivering business analytics from any source. You can connect to Crate clusters by using the standalone version of [our JDBC driver](https://crate.io/docs/reference/jdbc/).
72 |
73 | - [Website](http://community.pentaho.com)
74 | - [Github](https://github.com/pentaho/pentaho-kettle)
75 |
76 | ### StreamSets Data Collector
77 |
78 | StreamSets Data Collector is a lightweight, powerful engine that streams data in real time. Use Data Collector to route and process data in your data streams. [Here is our manual]({% url '/docs/tools/streamsets.html' %}) on how to use Crate as an origin and destination in a StreamSets pipeline.
79 |
80 | - [Download](https://streamsets.com/opensource/)
81 | - [Official documentation](https://streamsets.com/documentation/datacollector/latest/help/)
82 |
83 | ### Zoomdata
84 |
85 | Zoomdata is a SaaS solution for deep analysis of big data sets in a visual interface. Crate is available as a data source connection.
86 |
87 | ### Grafana
88 |
89 | Grafana is a very versatile tool for visualizing all kinds of time series data, and it has a Crate plugin.
90 |
91 | - [Website](https://grafana.net/)
92 | - [Crate Datasource Plugin](https://grafana.net/plugins/crate-datasource)
93 |
94 | ### Metabase
95 |
96 | Metabase is an open source, easy-to-use visualization that answers questions about your data. It's written in Clojure and comes with a Crate driver out of the box!
97 |
98 | - [Read our blogpost about Metabase](https://crate.io/a/visualize-crate-data-with-metabase/)
99 | - [Website](http://www.metabase.com/)
100 |
--------------------------------------------------------------------------------
/pages/docs/tools/squirrel.html:
--------------------------------------------------------------------------------
1 | title: Using Crate with SQuirreL SQL
2 | author: Christian Haudum
3 |
4 |
5 | **[SQuirreL](http://www.squirrelsql.org/)** is a graphical SQL client application that can be used to browse and query a JDBC compliant database.
6 |
7 | As Crate supports JDBC with its Crate JDBC driver, it can easily be used with SQUirreL.
8 |
9 | ## Setup
10 | [SQuirreL](http://www.squirrelsql.org/) does not provide a Crate driver with its distribution, so an extra setup step is required to run Crate with [SQuirreL](http://www.squirrelsql.org/):
11 |
12 | 1. Copy the [Crate JDBC standalone](https://bintray.com/crate/crate/crate-jdbc/view/files/io/crate/crate-jdbc-standalone) jar to the SQuirreL lib folder. On OS X, when installing SQuirreL with the MaxOS X installer, this is `/Applications/SQuirreLSQL.app/Contents/Resources/Java/lib/`
13 |
14 | 2. Start [SQuirreL](http://www.squirrelsql.org/).
15 |
16 | 3. Choose the `Drivers` tab and add a new driver, adding the following information into the form and confirm by pressing ok.
17 | 
18 |
19 | 4. Choose the `Aliases` tab and add a new Alias, Choose your new driver (called crate in our example) and enter your database URL. Username and password are not supported, so leave them blank.
20 | 
21 |
22 | 5. Connect your alias to your crate instance.
23 |
24 | ## Usage
25 |
26 | You can browse Crate using the Object Tree Worksheet, that is the usual view you use for browsing your tables and get information about their schema.
27 |
28 | 
29 |
30 | When browsing a table’s content using Content, it is possible to edit the table contents by right-clicking and choosing Make Editable.
31 |
32 | 
33 |
34 | Using the SQuirreL SQL Editor it is possible to execute arbitrary SQL commands and scripts.
35 |
36 | 
37 |
--------------------------------------------------------------------------------
/pages/feed/menu.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": [
3 | {"url": "https://crate.io/demo?utm_source=adminui&utm_medium=browser&utm_term=&utm_content=demolink&utm_campaign=newsfeed&ajs_event=clicked_demo_link",
4 | "title": "Schedule a 1-ON-1 demo with a Crate engineer"},
5 | {"url": "https://crate.io/blog?utm_source=adminui&utm_medium=browser&utm_term=&utm_content=morelink&utm_campaign=newsfeed&ajs_event=clicked_more_link",
6 | "title": "More"}
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/pages/sitemap-cactus.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% for page in CACTUS.pages %}{% if page.path != 'error.html' %}
4 |
5 | {{ CONFIG.site }}{{ page.absolute_final_url }}
6 | weekly
7 | 0.8
8 |
9 | {% endif %}{% endfor %}
10 |
11 |
--------------------------------------------------------------------------------
/plugins/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/plugins/__init__.py
--------------------------------------------------------------------------------
/plugins/coffeescript.disabled.py:
--------------------------------------------------------------------------------
1 | import os
2 | import pipes
3 | import subprocess
4 | import logging
5 |
6 | def run(command):
7 |
8 | logger = logging.getLogger(__name__)
9 |
10 | logger.debug(command)
11 |
12 | os.environ['PATH'] = '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/share/npm/bin:'
13 |
14 | process = subprocess.Popen([command],
15 | shell=True,
16 | stdin=subprocess.PIPE,
17 | stdout=subprocess.PIPE,
18 | stderr=subprocess.PIPE)
19 |
20 | stdout = process.stdout.readline()
21 | stderr = process.stderr.readline()
22 |
23 | if stdout: logger.info(stdout)
24 | if stderr: logger.warning(stderr)
25 |
26 |
27 | def preBuild(site):
28 | run('coffee -c %s/js/*.coffee' % pipes.quote(site.static_path))
29 |
--------------------------------------------------------------------------------
/plugins/haml.disabled.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8; -*-
2 | #
3 | # Licensed to Crate (https://crate.io) under one or more contributor
4 | # license agreements. See the NOTICE file distributed with this work for
5 | # additional information regarding copyright ownership. Crate licenses
6 | # this file to you under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License. You may
8 | # obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | # License for the specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # However, if you have executed another commercial license agreement
19 | # with Crate these terms will supersede the license and you may use the
20 | # software solely pursuant to the terms of the relevant commercial agreement.
21 |
22 | import sys
23 | import os
24 | import codecs
25 |
26 | # How to:
27 | # * Install hamlpy (https://github.com/jessemiller/HamlPy)
28 | # * .haml files will compiled to .html files
29 |
30 |
31 | from hamlpy.hamlpy import Compiler
32 | from cactus.utils.filesystem import fileList
33 |
34 | CLEANUP = []
35 |
36 | def preBuild(site):
37 | for path in fileList(site.paths['pages']):
38 |
39 | #only file ends with haml
40 | if not path.endswith('.haml'):
41 | continue
42 |
43 | #read the lines
44 | haml_lines = codecs.open(path, 'r', encoding='utf-8').read().splitlines()
45 |
46 | #compile haml to html
47 | compiler = Compiler()
48 | output = compiler.process_lines(haml_lines)
49 |
50 | #replace path
51 | outPath = path.replace('.haml', '.html')
52 |
53 | #write the html file
54 | with open(outPath,'w') as f:
55 | f.write(output)
56 |
57 | CLEANUP.append(outPath)
58 |
59 |
60 | def postBuild(site):
61 | global CLEANUP
62 | for path in CLEANUP:
63 | print path
64 | os.remove(path)
65 | CLEANUP = []
66 |
--------------------------------------------------------------------------------
/plugins/page_context.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8; -*-
2 | #
3 | # Licensed to Crate (https://crate.io) under one or more contributor
4 | # license agreements. See the NOTICE file distributed with this work for
5 | # additional information regarding copyright ownership. Crate licenses
6 | # this file to you under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License. You may
8 | # obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | # License for the specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # However, if you have executed another commercial license agreement
19 | # with Crate these terms will supersede the license and you may use the
20 | # software solely pursuant to the terms of the relevant commercial agreement.
21 |
22 | def preBuildPage(page, context, data):
23 | """
24 | Updates the context of the page to include: the page itself as {{ CURRENT_PAGE }}
25 | """
26 |
27 | # This will run for each page that Cactus renders.
28 | # Any changes you make to context will be passed to the template renderer for this page.
29 |
30 | config = context['__CACTUS_SITE__'].config
31 | extra = {
32 | "CURRENT_PAGE": page,
33 | # Add your own dynamic context elements here!
34 | "CONFIG": config.get('settings', {}),
35 | }
36 |
37 | context.update(extra)
38 | return context, data
39 |
--------------------------------------------------------------------------------
/plugins/sass.disabled.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8; -*-
2 | #
3 | # Licensed to Crate (https://crate.io) under one or more contributor
4 | # license agreements. See the NOTICE file distributed with this work for
5 | # additional information regarding copyright ownership. Crate licenses
6 | # this file to you under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License. You may
8 | # obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | # License for the specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # However, if you have executed another commercial license agreement
19 | # with Crate these terms will supersede the license and you may use the
20 | # software solely pursuant to the terms of the relevant commercial agreement.
21 |
22 | import os
23 | import pipes
24 |
25 | def postBuild(site):
26 | os.system(
27 | 'sass -t compressed --update %s/static/css/*.sass' %
28 | pipes.quote(site.paths['build']
29 | ))
30 |
--------------------------------------------------------------------------------
/plugins/scss.disabled..py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8; -*-
2 | #
3 | # Licensed to Crate (https://crate.io) under one or more contributor
4 | # license agreements. See the NOTICE file distributed with this work for
5 | # additional information regarding copyright ownership. Crate licenses
6 | # this file to you under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License. You may
8 | # obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | # License for the specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # However, if you have executed another commercial license agreement
19 | # with Crate these terms will supersede the license and you may use the
20 | # software solely pursuant to the terms of the relevant commercial agreement.
21 |
22 | import os
23 | import sys
24 | import pipes
25 | import shutil
26 | import subprocess
27 |
28 | from cactus.utils.filesystem import fileList
29 |
30 | """
31 | This plugin uses pyScss to translate sass files to css
32 |
33 | Install:
34 |
35 | sudo easy_install pyScss
36 |
37 | """
38 |
39 | try:
40 | from scss import Scss
41 | except:
42 | sys.exit("Could not find pyScss, please install: sudo easy_install pyScss")
43 |
44 |
45 | CSS_PATH = 'static/css'
46 |
47 | for path in fileList(CSS_PATH):
48 |
49 | if not path.endswith('.scss'):
50 | continue
51 |
52 | with open(path, 'r') as f:
53 | data = f.read()
54 |
55 | css = Scss().compile(data)
56 |
57 | with open(path.replace('.scss', '.css'), 'w') as f:
58 | f.write(css)
59 |
--------------------------------------------------------------------------------
/plugins/sprites.disabled.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8; -*-
2 | #
3 | # Licensed to Crate (https://crate.io) under one or more contributor
4 | # license agreements. See the NOTICE file distributed with this work for
5 | # additional information regarding copyright ownership. Crate licenses
6 | # this file to you under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License. You may
8 | # obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | # License for the specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # However, if you have executed another commercial license agreement
19 | # with Crate these terms will supersede the license and you may use the
20 | # software solely pursuant to the terms of the relevant commercial agreement.
21 |
22 | import os
23 | import sys
24 | import pipes
25 | import shutil
26 | import subprocess
27 |
28 | """
29 | This plugin uses glue to sprite images:
30 | http://glue.readthedocs.org/en/latest/quickstart.html
31 |
32 | Install:
33 |
34 | (Only if you want to sprite jpg too)
35 | brew install libjpeg
36 |
37 | (Only if you want to optimize pngs with optipng)
38 | brew install optipng
39 |
40 | sudo easy_install pip
41 | sudo pip uninstall pil
42 | sudo pip install pil
43 | sudo pip install glue
44 | """
45 |
46 | try:
47 | import glue
48 | except Exception, e:
49 | sys.exit('Could not use glue: %s\nMaybe install: sudo easy_install glue' % e)
50 |
51 |
52 | IMG_PATH = 'static/img/sprites'
53 | CSS_PATH = 'static/css/sprites'
54 |
55 | KEY = '_PREV_CHECKSUM'
56 |
57 | def checksum(path):
58 | command = 'md5 `find %s -type f`' % pipes.quote(IMG_PATH)
59 | return subprocess.check_output(command, shell=True)
60 |
61 | def preBuild(site):
62 |
63 | currChecksum = checksum(IMG_PATH)
64 | prevChecksum = getattr(site, KEY, None)
65 |
66 | # Don't run if none of the images has changed
67 | if currChecksum == prevChecksum:
68 | return
69 |
70 | if os.path.isdir(CSS_PATH):
71 | shutil.rmtree(CSS_PATH)
72 |
73 | os.mkdir(CSS_PATH)
74 | os.system('glue --cachebuster --crop --optipng "%s" "%s" --project' % (IMG_PATH, CSS_PATH))
75 |
76 | setattr(site, KEY, currChecksum)
77 |
--------------------------------------------------------------------------------
/plugins/static_optimizers.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8; -*-
2 | #
3 | # Licensed to Crate (https://crate.io) under one or more contributor
4 | # license agreements. See the NOTICE file distributed with this work for
5 | # additional information regarding copyright ownership. Crate licenses
6 | # this file to you under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License. You may
8 | # obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | # License for the specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # However, if you have executed another commercial license agreement
19 | # with Crate these terms will supersede the license and you may use the
20 | # software solely pursuant to the terms of the relevant commercial agreement.
21 |
22 | from cactus.contrib.external.closure import ClosureJSOptimizer
23 | from cactus.contrib.external.yui import YUICSSOptimizer
24 |
25 |
26 | def preBuild(site):
27 | """
28 | Registers optimizers as requested by the configuration.
29 | Be sure to read the plugin to understand and use it.
30 | """
31 |
32 | # Inspect the site configuration, and retrieve an `optimize` list.
33 | # This lets you configure optimization selectively.
34 | # You may want to use one configuration for staging with no optimizations, and one
35 | # configuration for production, with all optimizations.
36 | optimize = site.config.get("optimize", [])
37 |
38 | if "js" in optimize:
39 | # If `js` was found in the `optimize` key, then register our JS optimizer.
40 | # This uses closure, but you could use cactus.contrib.external.yui.YUIJSOptimizer!
41 | site.external_manager.register_optimizer(ClosureJSOptimizer)
42 |
43 | if "css" in optimize:
44 | # Same thing for CSS.
45 | site.external_manager.register_optimizer(YUICSSOptimizer)
46 |
47 | # Add your own types here!
48 |
--------------------------------------------------------------------------------
/plugins/template_tags.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8; -*-
2 | #
3 | # Licensed to Crate (https://crate.io) under one or more contributor
4 | # license agreements. See the NOTICE file distributed with this work for
5 | # additional information regarding copyright ownership. Crate licenses
6 | # this file to you under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License. You may
8 | # obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | # License for the specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # However, if you have executed another commercial license agreement
19 | # with Crate these terms will supersede the license and you may use the
20 | # software solely pursuant to the terms of the relevant commercial agreement.
21 |
22 | __docformat__ = "reStructuredText"
23 |
24 | from django.template.loader import add_to_builtins
25 |
26 | # register filters
27 | add_to_builtins('web.filters')
28 | # register tags
29 | add_to_builtins('web.tags')
30 |
--------------------------------------------------------------------------------
/post_templates/article.html:
--------------------------------------------------------------------------------
1 | title: Article Title
2 | author: name
3 | description: a short description
4 | created: 2015-01-01 00:00:00
5 | post_name: crate-article
6 | tags: comma, separated, tags
7 | category: crate-category
8 | topics: coma, separated, post, names
9 | meta_title: Article Title
10 | meta_description: meta description
11 | open_graph_title: Article Title
12 | open_graph_description: open graph description
13 |
14 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
15 |
16 | Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.
17 |
18 | In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.
19 |
20 | Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum.
21 |
22 | Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus
23 |
--------------------------------------------------------------------------------
/post_templates/blog.html:
--------------------------------------------------------------------------------
1 | title: Blog Title
2 | author: name
3 | description: a short description
4 | created: 2015-01-01 00:00:00
5 | post_name: crate-blog
6 | tags: comma, separated, tags
7 | category: crate-category
8 | meta_title: Blog Title
9 | meta_description: meta description
10 | open_graph_title: Blog Title
11 | open_graph_description: open graph description
12 |
13 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
14 |
15 | Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.
16 |
17 | In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.
18 |
19 | Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum.
20 |
21 | Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus
22 |
--------------------------------------------------------------------------------
/static/apple-touch-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/apple-touch-icon-precomposed.png
--------------------------------------------------------------------------------
/static/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/apple-touch-icon.png
--------------------------------------------------------------------------------
/static/css/crateio-rtd.css:
--------------------------------------------------------------------------------
1 | .wrapper-content-right .section {
2 | margin-top: 32px;
3 | }
4 |
5 | .wrapper-content-right > .section {
6 | margin-top: 0px;
7 | }
8 |
9 | .toctree {
10 | padding-left: 0;
11 | list-style: none;
12 | }
13 |
14 | .toctree li {
15 | list-style: none;
16 | }
17 |
18 | a.current, a.current-active {
19 | font-weight: bold;
20 | }
21 |
22 | .highlight {
23 | font-size: 14px;
24 | }
25 |
26 | .highlight pre {
27 | padding: 2px 10px;
28 | }
29 |
30 | blockquote {
31 | font-size: 20px;
32 | border-left: 0px;
33 | padding: 0px 0px;
34 | }
35 |
36 | /** NOTES, etc **/
37 |
38 | .todo .admonition-title,
39 | .seealso .admonition-title,
40 | .note .admonition-title,
41 | .warning .admonition-title {
42 | padding: 10px 20px;
43 | font-weight: bold;
44 | color: #000000;
45 | }
46 |
47 | .warning {
48 | background-color: #ffcdc9;
49 | border-left: 5px solid #ff5b4d;
50 | }
51 |
52 | .note {
53 | background-color: #ccf2fc;
54 | border-left: 5px solid #55d4f5;
55 | display: block;
56 | }
57 |
58 | .admonition {
59 | display: block;
60 |
61 | margin-top: 10px;
62 | margin-bottom: 10px;
63 | padding: 7px;
64 | }
65 |
66 | .seealso,
67 | .todo {
68 | background-color: #e7e7e7;
69 | border-left: 5px solid #888888;
70 | padding: 16px;
71 | }
72 |
73 | .note .admonition-title {
74 | padding-bottom: 0;
75 | background-color: #ccf2fc;
76 | display: block;
77 | }
78 |
79 | .warning .admonition-title {
80 | padding-bottom: 0;
81 | background-color: #ffcdc9;
82 | display: block;
83 | }
84 |
85 | .seealso .admonition-title,
86 | .todo .admonition-title {
87 | padding-bottom: 0;
88 | background-color: #e7e7e7;
89 | display: block;
90 | }
91 | .todo span, .seealso span, .note span, .warning span {
92 | padding: 10px 20px;
93 | margin: 0;
94 | display: block;
95 | }
96 |
97 | .seealso a {
98 | display: block;
99 | }
100 |
101 |
102 | /** MENU **/
103 |
104 | .bs-docs-sidenav .toctree li {
105 | padding: 3px 0px;
106 | line-height: 16px;
107 | }
108 |
109 | .bs-docs-sidenav .toctree li.border-top {
110 | padding-top: 16px;
111 | }
112 |
113 | .bs-docs-sidenav .toctree li a {
114 | text-decoration: none;
115 | font-size: 14px;
116 | line-height: 16px;
117 | color: black;
118 | }
119 |
120 | .bs-docs-sidenav .toctree li.current > a,
121 | .bs-docs-sidenav .toctree li.active > a {
122 | font-weight: bold;
123 | }
124 | .bs-docs-sidenav ul {
125 | margin-bottom: 0px;
126 | }
127 |
128 | .bs-docs-sidenav .toctree ul li.active ul {
129 | display: block;
130 | }
131 |
132 | .bs-docs-sidenav .toctree li.current > ul,
133 | .bs-docs-sidenav .toctree ul li.active > ul {
134 | display: block !important;
135 | }
136 | .bs-docs-sidenav {
137 | padding-left: 0px;
138 | }
139 | .bs-docs-sidebar {
140 | padding: 8px 16px;
141 | }
142 |
143 | .affix {
144 | position: fixed !important;
145 | top: 20px;
146 | }
147 | .wrapper-navleft {
148 | padding: 0px;
149 | border: 0px;
150 | }
151 | .wrapper-navleft .bs-docs-sidebar {
152 | border: 1px solid #e7e7e7;
153 | }
154 | .wrapper-content-right li {
155 | font-size: 16px;
156 | line-height: 1.5em;
157 | }
158 |
159 | .border-top {
160 | border-top: 1px solid #e7e7e7;
161 | padding-top: 16px;
162 | margin-top: 16px;
163 | }
164 |
--------------------------------------------------------------------------------
/static/css/custom.css:
--------------------------------------------------------------------------------
1 | .lang-col {
2 | min-height: 200px;
3 | }
4 |
5 | .codehilite > pre {
6 | padding: 15px;
7 | border: 1px solid #ccc;
8 | border-radius: 2px;
9 | background: #f0f0f0 none repeat scroll 0 0;
10 | }
11 |
--------------------------------------------------------------------------------
/static/css/friendly-codehilite.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #60a0b0; font-style: italic } /* Comment */
3 | .codehilite .err { border: 1px solid #FF0000 } /* Error */
4 | .codehilite .k { color: #007020; font-weight: bold } /* Keyword */
5 | .codehilite .o { color: #666666 } /* Operator */
6 | .codehilite .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
7 | .codehilite .cp { color: #007020 } /* Comment.Preproc */
8 | .codehilite .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
9 | .codehilite .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
10 | .codehilite .gd { color: #A00000 } /* Generic.Deleted */
11 | .codehilite .ge { font-style: italic } /* Generic.Emph */
12 | .codehilite .gr { color: #FF0000 } /* Generic.Error */
13 | .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
14 | .codehilite .gi { color: #00A000 } /* Generic.Inserted */
15 | .codehilite .go { color: #808080 } /* Generic.Output */
16 | .codehilite .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
17 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
18 | .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
19 | .codehilite .gt { color: #0040D0 } /* Generic.Traceback */
20 | .codehilite .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
21 | .codehilite .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
22 | .codehilite .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
23 | .codehilite .kp { color: #007020 } /* Keyword.Pseudo */
24 | .codehilite .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
25 | .codehilite .kt { color: #902000 } /* Keyword.Type */
26 | .codehilite .m { color: #40a070 } /* Literal.Number */
27 | .codehilite .s { color: #4070a0 } /* Literal.String */
28 | .codehilite .na { color: #4070a0 } /* Name.Attribute */
29 | .codehilite .nb { color: #007020 } /* Name.Builtin */
30 | .codehilite .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
31 | .codehilite .no { color: #60add5 } /* Name.Constant */
32 | .codehilite .nd { color: #555555; font-weight: bold } /* Name.Decorator */
33 | .codehilite .ni { color: #d55537; font-weight: bold } /* Name.Entity */
34 | .codehilite .ne { color: #007020 } /* Name.Exception */
35 | .codehilite .nf { color: #06287e } /* Name.Function */
36 | .codehilite .nl { color: #002070; font-weight: bold } /* Name.Label */
37 | .codehilite .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
38 | .codehilite .nt { color: #062873; font-weight: bold } /* Name.Tag */
39 | .codehilite .nv { color: #bb60d5 } /* Name.Variable */
40 | .codehilite .ow { color: #007020; font-weight: bold } /* Operator.Word */
41 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
42 | .codehilite .mf { color: #40a070 } /* Literal.Number.Float */
43 | .codehilite .mh { color: #40a070 } /* Literal.Number.Hex */
44 | .codehilite .mi { color: #40a070 } /* Literal.Number.Integer */
45 | .codehilite .mo { color: #40a070 } /* Literal.Number.Oct */
46 | .codehilite .sb { color: #4070a0 } /* Literal.String.Backtick */
47 | .codehilite .sc { color: #4070a0 } /* Literal.String.Char */
48 | .codehilite .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
49 | .codehilite .s2 { color: #4070a0 } /* Literal.String.Double */
50 | .codehilite .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
51 | .codehilite .sh { color: #4070a0 } /* Literal.String.Heredoc */
52 | .codehilite .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
53 | .codehilite .sx { color: #c65d09 } /* Literal.String.Other */
54 | .codehilite .sr { color: #235388 } /* Literal.String.Regex */
55 | .codehilite .s1 { color: #4070a0 } /* Literal.String.Single */
56 | .codehilite .ss { color: #517918 } /* Literal.String.Symbol */
57 | .codehilite .bp { color: #007020 } /* Name.Builtin.Pseudo */
58 | .codehilite .vc { color: #bb60d5 } /* Name.Variable.Class */
59 | .codehilite .vg { color: #bb60d5 } /* Name.Variable.Global */
60 | .codehilite .vi { color: #bb60d5 } /* Name.Variable.Instance */
61 | .codehilite .il { color: #40a070 } /* Literal.Number.Integer.Long */
62 |
--------------------------------------------------------------------------------
/static/css/terminal.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Terminal style for /try page
3 | *
4 | */
5 |
6 | .terminal {
7 | background-color: #666666;
8 | border: 1px solid #e0e0e0;
9 | color: #ffffff;
10 | border-radius: 8px 8px 4px 4px;
11 | overflow: hidden;
12 | color: #efefef;
13 | box-shadow: 0px 4px 5px 0px rgba(0,0,0,0.38);
14 | -webkit-box-shadow: 0px 4px 5px 0px rgba(0,0,0,0.38);
15 | -moz-box-shadow: 0px 4px 5px 0px rgba(0,0,0,0.38);
16 | line-height: 24px;
17 | }
18 |
19 | .terminal-header {
20 | text-align: center;
21 | padding: 0;
22 | color: #666666;
23 | font-size: 13px;
24 | border-bottom: 1px solid #e0e0e0;
25 | height: 24px;
26 | /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#e8e6e8+0,d2d0d2+100 */
27 | background: #efefef; /* Old browsers */
28 | background: -moz-linear-gradient(top, #efefef 0%, #d2d0d2 100%); /* FF3.6-15 */
29 | background: -webkit-linear-gradient(top, #efefef 0%,#d2d0d2 100%); /* Chrome10-25,Safari5.1-6 */
30 | background: linear-gradient(to bottom, #efefef 0%,#d2d0d2 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
31 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#d2d0d2',GradientType=0 ); /* IE6-9 */
32 | }
33 |
34 | .terminal-body {
35 | background-color: #111111;
36 | min-height: 200px;
37 | clear: both;
38 | }
39 |
40 | .terminal pre, .terminal code, .terminal input, .terminal textarea {
41 | font-family: Consolas, Menlo, "Courier New", monospace;
42 | font-size: 14px;
43 | line-height: 16px;
44 | }
45 |
46 | pre.terminal-history {
47 | margin: 0px;
48 | padding: 10px;
49 | color: #ffffff;
50 | border: 0px none;
51 | background-color: transparent;
52 | max-height: 480px;
53 | word-wrap: normal !important;
54 | }
55 |
56 | .terminal-prompt {
57 | padding: 0 10px 10px;
58 | color: #98978b;
59 | }
60 |
61 | .terminal-prompt textarea {
62 | border: 0px none;
63 | color: #98978b;
64 | background-color: transparent;
65 | padding: 0px;
66 | width: 100%;
67 | line-height: 120%;
68 | resize: vertical;
69 | }
70 |
71 | .terminal-prompt textarea:focus {
72 | outline: none;
73 | }
74 |
75 | pre.tut {
76 | cursor: pointer;
77 | }
78 |
79 | .terminal .text-comment,
80 | .terminal .text-muted {
81 | white-space: normal;
82 | }
83 | .terminal .text-muted {
84 | color: #c2c5c3;
85 | }
86 | .terminal .text-success {
87 | color: #c0c86d;
88 | }
89 | .terminal .text-danger {
90 | color: #c66363;
91 | }
92 | .terminal .text-sql {
93 | line-height: 100%;
94 | }
95 |
96 | .terminal-bullet {
97 | margin-left: 12px;
98 | }
99 | .terminal-bullet span {
100 | display: inline-block;
101 | width: 12px;
102 | height: 12px;
103 | border-radius: 6px;
104 | margin-right: 2px;
105 | }
106 | .terminal-bullet .bullet-red {
107 | background-color: #FC635E;
108 | }
109 | .terminal-bullet .bullet-yellow {
110 | background-color: #FDBE41;
111 | }
112 | .terminal-bullet .bullet-green {
113 | background-color: #35CD4B;
114 | }
115 |
--------------------------------------------------------------------------------
/static/css/zenburn-hljs.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov
4 | based on dark.css by Ivan Sagalaev
5 |
6 | */
7 |
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #3f3f3f;
13 | color: #dcdcdc;
14 | }
15 |
16 | .hljs-keyword,
17 | .hljs-selector-tag,
18 | .hljs-tag {
19 | color: #e3ceab;
20 | }
21 |
22 | .hljs-template-tag {
23 | color: #dcdcdc;
24 | }
25 |
26 | .hljs-number {
27 | color: #8cd0d3;
28 | }
29 |
30 | .hljs-variable,
31 | .hljs-template-variable,
32 | .hljs-attribute {
33 | color: #efdcbc;
34 | }
35 |
36 | .hljs-literal {
37 | color: #efefaf;
38 | }
39 |
40 | .hljs-subst {
41 | color: #8f8f8f;
42 | }
43 |
44 | .hljs-title,
45 | .hljs-name,
46 | .hljs-selector-id,
47 | .hljs-selector-class,
48 | .hljs-section,
49 | .hljs-type {
50 | color: #efef8f;
51 | }
52 |
53 | .hljs-symbol,
54 | .hljs-bullet,
55 | .hljs-link {
56 | color: #dca3a3;
57 | }
58 |
59 | .hljs-deletion,
60 | .hljs-string,
61 | .hljs-built_in,
62 | .hljs-builtin-name {
63 | color: #cc9393;
64 | }
65 |
66 | .hljs-addition,
67 | .hljs-comment,
68 | .hljs-quote,
69 | .hljs-meta {
70 | color: #7f9f7f;
71 | }
72 |
73 |
74 | .hljs-emphasis {
75 | font-style: italic;
76 | }
77 |
78 | .hljs-strong {
79 | font-weight: bold;
80 | }
81 |
--------------------------------------------------------------------------------
/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/favicon.ico
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/favicon.png
--------------------------------------------------------------------------------
/static/fonts/BlenderPro-BoldWeb.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/BlenderPro-BoldWeb.woff
--------------------------------------------------------------------------------
/static/fonts/blenderpro-bold-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-bold-webfont.eot
--------------------------------------------------------------------------------
/static/fonts/blenderpro-bold-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-bold-webfont.ttf
--------------------------------------------------------------------------------
/static/fonts/blenderpro-bold-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-bold-webfont.woff
--------------------------------------------------------------------------------
/static/fonts/blenderpro-bold-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-bold-webfont.woff2
--------------------------------------------------------------------------------
/static/fonts/blenderpro-thin-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-thin-webfont.eot
--------------------------------------------------------------------------------
/static/fonts/blenderpro-thin-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-thin-webfont.ttf
--------------------------------------------------------------------------------
/static/fonts/blenderpro-thin-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-thin-webfont.woff
--------------------------------------------------------------------------------
/static/fonts/blenderpro-thin-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/fonts/blenderpro-thin-webfont.woff2
--------------------------------------------------------------------------------
/static/images/0816/awesome-to-the-max.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/awesome-to-the-max.png
--------------------------------------------------------------------------------
/static/images/0816/crate-k8s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/crate-k8s.png
--------------------------------------------------------------------------------
/static/images/0816/crate-k8s2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/crate-k8s2.png
--------------------------------------------------------------------------------
/static/images/0816/craties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/craties.png
--------------------------------------------------------------------------------
/static/images/0816/intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/intro.png
--------------------------------------------------------------------------------
/static/images/0816/k8s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/k8s.png
--------------------------------------------------------------------------------
/static/images/0816/max-cooking.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/max-cooking.jpg
--------------------------------------------------------------------------------
/static/images/0816/schwag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/schwag.png
--------------------------------------------------------------------------------
/static/images/0816/setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0816/setup.png
--------------------------------------------------------------------------------
/static/images/0916/logo-packet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0916/logo-packet.png
--------------------------------------------------------------------------------
/static/images/0916/packet-project.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0916/packet-project.png
--------------------------------------------------------------------------------
/static/images/0916/packet-servers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/0916/packet-servers.png
--------------------------------------------------------------------------------
/static/images/1116/crate-db-recovery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/1116/crate-db-recovery.png
--------------------------------------------------------------------------------
/static/images/1116/cratedb-load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/1116/cratedb-load.png
--------------------------------------------------------------------------------
/static/images/1216/grafana-cratedb-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/1216/grafana-cratedb-dashboard.png
--------------------------------------------------------------------------------
/static/images/1216/paul-adams.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/1216/paul-adams.jpg
--------------------------------------------------------------------------------
/static/images/5645e3972a73124134e9e237_hero-job.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/5645e3972a73124134e9e237_hero-job.jpg
--------------------------------------------------------------------------------
/static/images/565e0d8d1f8534060fa79589_logo-avuxi-160.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/565e0d8d1f8534060fa79589_logo-avuxi-160.png
--------------------------------------------------------------------------------
/static/images/565e0daa354b49b24c51b97f_logo-voipstudio-160.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/565e0daa354b49b24c51b97f_logo-voipstudio-160.png
--------------------------------------------------------------------------------
/static/images/AWS_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/AWS_Logo.png
--------------------------------------------------------------------------------
/static/images/Azure_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/Azure_Logo.png
--------------------------------------------------------------------------------
/static/images/Crash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/Crash.png
--------------------------------------------------------------------------------
/static/images/Docker_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/Docker_logo.png
--------------------------------------------------------------------------------
/static/images/GCE_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/GCE_logo.png
--------------------------------------------------------------------------------
/static/images/Linux_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/Linux_logo.png
--------------------------------------------------------------------------------
/static/images/Mac_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/Mac_Logo.png
--------------------------------------------------------------------------------
/static/images/Windows_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/Windows_Logo.png
--------------------------------------------------------------------------------
/static/images/admin_ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/admin_ui.png
--------------------------------------------------------------------------------
/static/images/amazon-logo-182.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/amazon-logo-182.png
--------------------------------------------------------------------------------
/static/images/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/apple-touch-icon.png
--------------------------------------------------------------------------------
/static/images/aws-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/aws-logo.png
--------------------------------------------------------------------------------
/static/images/blog.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/blog.jpg
--------------------------------------------------------------------------------
/static/images/bt-share-facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/bt-share-facebook.png
--------------------------------------------------------------------------------
/static/images/bt-share-google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/bt-share-google.png
--------------------------------------------------------------------------------
/static/images/bt-share-linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/bt-share-linkedin.png
--------------------------------------------------------------------------------
/static/images/bt-share-mail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/bt-share-mail.png
--------------------------------------------------------------------------------
/static/images/bt-share-twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/bt-share-twitter.png
--------------------------------------------------------------------------------
/static/images/cisco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/cisco.png
--------------------------------------------------------------------------------
/static/images/cloud_admin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/cloud_admin.png
--------------------------------------------------------------------------------
/static/images/cloud_everywhere.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/cloud_everywhere.png
--------------------------------------------------------------------------------
/static/images/cloud_open-source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/cloud_open-source.png
--------------------------------------------------------------------------------
/static/images/cloud_scale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/cloud_scale.png
--------------------------------------------------------------------------------
/static/images/crate-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/crate-logo.png
--------------------------------------------------------------------------------
/static/images/crate-logo_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/crate-logo_1.png
--------------------------------------------------------------------------------
/static/images/culture-drink.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-drink.jpg
--------------------------------------------------------------------------------
/static/images/culture-food.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-food.jpg
--------------------------------------------------------------------------------
/static/images/culture-gear.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-gear.jpg
--------------------------------------------------------------------------------
/static/images/culture-nutrition.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-nutrition.jpg
--------------------------------------------------------------------------------
/static/images/culture-sleep.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-sleep.jpg
--------------------------------------------------------------------------------
/static/images/culture-sport.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-sport.jpg
--------------------------------------------------------------------------------
/static/images/culture-testing.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-testing.jpg
--------------------------------------------------------------------------------
/static/images/culture-together.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-together.jpg
--------------------------------------------------------------------------------
/static/images/culture-wild.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/culture-wild.jpg
--------------------------------------------------------------------------------
/static/images/cv-logo-badge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/cv-logo-badge.png
--------------------------------------------------------------------------------
/static/images/documentation.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/documentation.jpg
--------------------------------------------------------------------------------
/static/images/efre_logo_l.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/efre_logo_l.jpg
--------------------------------------------------------------------------------
/static/images/efre_logo_s.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/efre_logo_s.jpg
--------------------------------------------------------------------------------
/static/images/f-logo-facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/f-logo-facebook.png
--------------------------------------------------------------------------------
/static/images/f-logo-github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/f-logo-github.png
--------------------------------------------------------------------------------
/static/images/f-logo-google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/f-logo-google.png
--------------------------------------------------------------------------------
/static/images/f-logo-linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/f-logo-linkedin.png
--------------------------------------------------------------------------------
/static/images/f-logo-twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/f-logo-twitter.png
--------------------------------------------------------------------------------
/static/images/f-logo-youtube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/f-logo-youtube.png
--------------------------------------------------------------------------------
/static/images/fa-bw-cisco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-cisco.png
--------------------------------------------------------------------------------
/static/images/fa-bw-gigaom-launchpad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-gigaom-launchpad.png
--------------------------------------------------------------------------------
/static/images/fa-bw-gigaom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-gigaom.png
--------------------------------------------------------------------------------
/static/images/fa-bw-hacker-news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-hacker-news.png
--------------------------------------------------------------------------------
/static/images/fa-bw-inventures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-inventures.png
--------------------------------------------------------------------------------
/static/images/fa-bw-pioneers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-pioneers.png
--------------------------------------------------------------------------------
/static/images/fa-bw-sxsw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-sxsw.png
--------------------------------------------------------------------------------
/static/images/fa-bw-techcrunch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-bw-techcrunch.png
--------------------------------------------------------------------------------
/static/images/fa-cisco-top-15 .png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-cisco-top-15 .png
--------------------------------------------------------------------------------
/static/images/fa-gigaom-launchpad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-gigaom-launchpad.png
--------------------------------------------------------------------------------
/static/images/fa-gigaom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-gigaom.png
--------------------------------------------------------------------------------
/static/images/fa-hacker-news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-hacker-news.png
--------------------------------------------------------------------------------
/static/images/fa-inventures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-inventures.png
--------------------------------------------------------------------------------
/static/images/fa-pioneers-final-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-pioneers-final-8.png
--------------------------------------------------------------------------------
/static/images/fa-sxsw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-sxsw.png
--------------------------------------------------------------------------------
/static/images/fa-techcrunch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/fa-techcrunch.png
--------------------------------------------------------------------------------
/static/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/favicon.png
--------------------------------------------------------------------------------
/static/images/gigaom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/gigaom.png
--------------------------------------------------------------------------------
/static/images/gigaom_launchpad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/gigaom_launchpad.png
--------------------------------------------------------------------------------
/static/images/google-logo-210.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/google-logo-210.png
--------------------------------------------------------------------------------
/static/images/hackernews.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hackernews.png
--------------------------------------------------------------------------------
/static/images/hero-bg-about.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero-bg-about.jpg
--------------------------------------------------------------------------------
/static/images/hero-crates.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero-crates.jpg
--------------------------------------------------------------------------------
/static/images/hero-docs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero-docs.png
--------------------------------------------------------------------------------
/static/images/hero-front-1440.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero-front-1440.jpg
--------------------------------------------------------------------------------
/static/images/hero-job.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero-job.jpg
--------------------------------------------------------------------------------
/static/images/hero-use-cases.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero-use-cases.jpg
--------------------------------------------------------------------------------
/static/images/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero.png
--------------------------------------------------------------------------------
/static/images/hero_bg_abstract_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hero_bg_abstract_2.jpg
--------------------------------------------------------------------------------
/static/images/hittisau.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/hittisau.jpg
--------------------------------------------------------------------------------
/static/images/icon-connect-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-connect-app.png
--------------------------------------------------------------------------------
/static/images/icon-connect-to-cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-connect-to-cluster.png
--------------------------------------------------------------------------------
/static/images/icon-docs@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-docs@2x.png
--------------------------------------------------------------------------------
/static/images/icon-home-fast-x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-home-fast-x100.png
--------------------------------------------------------------------------------
/static/images/icon-home-playswell-x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-home-playswell-x100.png
--------------------------------------------------------------------------------
/static/images/icon-home-simple-x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-home-simple-x100.png
--------------------------------------------------------------------------------
/static/images/icon-import-data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-import-data.png
--------------------------------------------------------------------------------
/static/images/icon-install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-install.png
--------------------------------------------------------------------------------
/static/images/icon-navigation-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-navigation-up.png
--------------------------------------------------------------------------------
/static/images/icon-performance@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-performance@2x.png
--------------------------------------------------------------------------------
/static/images/icon-scale-cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-scale-cluster.png
--------------------------------------------------------------------------------
/static/images/icon-search@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-search@2x.png
--------------------------------------------------------------------------------
/static/images/icon-search@2x_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-search@2x_1.png
--------------------------------------------------------------------------------
/static/images/icon-speed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-speed.png
--------------------------------------------------------------------------------
/static/images/icon-start@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-start@2x.png
--------------------------------------------------------------------------------
/static/images/icon-support@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon-support@2x.png
--------------------------------------------------------------------------------
/static/images/icon_analytics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon_analytics.png
--------------------------------------------------------------------------------
/static/images/icon_blob.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon_blob.png
--------------------------------------------------------------------------------
/static/images/icon_document.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon_document.png
--------------------------------------------------------------------------------
/static/images/icon_restructure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon_restructure.png
--------------------------------------------------------------------------------
/static/images/icon_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/icon_search.png
--------------------------------------------------------------------------------
/static/images/inventures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/inventures.png
--------------------------------------------------------------------------------
/static/images/lang-erlang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/lang-erlang.png
--------------------------------------------------------------------------------
/static/images/lang-java.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/lang-java.png
--------------------------------------------------------------------------------
/static/images/lang-perl.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/lang-perl.jpg
--------------------------------------------------------------------------------
/static/images/lang-php.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/lang-php.png
--------------------------------------------------------------------------------
/static/images/lang-python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/lang-python.png
--------------------------------------------------------------------------------
/static/images/logo-aws.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-aws.png
--------------------------------------------------------------------------------
/static/images/logo-azure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-azure.png
--------------------------------------------------------------------------------
/static/images/logo-crate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-crate.png
--------------------------------------------------------------------------------
/static/images/logo-gce.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-gce.png
--------------------------------------------------------------------------------
/static/images/logo-google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-google.png
--------------------------------------------------------------------------------
/static/images/logo-linux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-linux.png
--------------------------------------------------------------------------------
/static/images/logo-osx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-osx.png
--------------------------------------------------------------------------------
/static/images/logo-packet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-packet.png
--------------------------------------------------------------------------------
/static/images/logo-softlayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-softlayer.png
--------------------------------------------------------------------------------
/static/images/logo-tutum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-tutum.png
--------------------------------------------------------------------------------
/static/images/logo-ubuntu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-ubuntu.png
--------------------------------------------------------------------------------
/static/images/logo-windows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo-windows.png
--------------------------------------------------------------------------------
/static/images/logo_containership.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo_containership.png
--------------------------------------------------------------------------------
/static/images/logo_coreos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo_coreos.png
--------------------------------------------------------------------------------
/static/images/logo_docker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo_docker.png
--------------------------------------------------------------------------------
/static/images/logo_dockercloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo_dockercloud.png
--------------------------------------------------------------------------------
/static/images/logo_linux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo_linux.png
--------------------------------------------------------------------------------
/static/images/logo_windows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/logo_windows.png
--------------------------------------------------------------------------------
/static/images/microsoft-logo-210.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/microsoft-logo-210.png
--------------------------------------------------------------------------------
/static/images/notadev.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/notadev.jpg
--------------------------------------------------------------------------------
/static/images/packet-project.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/packet-project.png
--------------------------------------------------------------------------------
/static/images/packet-servers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/packet-servers.png
--------------------------------------------------------------------------------
/static/images/pioneers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/pioneers.png
--------------------------------------------------------------------------------
/static/images/resilience-status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/resilience-status.png
--------------------------------------------------------------------------------
/static/images/robert-downey-jr-i-love-you-kisses.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/robert-downey-jr-i-love-you-kisses.gif
--------------------------------------------------------------------------------
/static/images/scale_1_node_cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/scale_1_node_cluster.png
--------------------------------------------------------------------------------
/static/images/scale_2_node_cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/scale_2_node_cluster.png
--------------------------------------------------------------------------------
/static/images/scale_3_node_cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/scale_3_node_cluster.png
--------------------------------------------------------------------------------
/static/images/sequoia-microservices-preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/sequoia-microservices-preview.png
--------------------------------------------------------------------------------
/static/images/slack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/slack.png
--------------------------------------------------------------------------------
/static/images/snowsprint_bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/snowsprint_bg.jpg
--------------------------------------------------------------------------------
/static/images/softlayer-logo-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/softlayer-logo-200.png
--------------------------------------------------------------------------------
/static/images/status_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/status_bar.png
--------------------------------------------------------------------------------
/static/images/sxsw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/sxsw.png
--------------------------------------------------------------------------------
/static/images/techcrunch-disrupt-winners.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/techcrunch-disrupt-winners.jpg
--------------------------------------------------------------------------------
/static/images/techcrunch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/techcrunch.png
--------------------------------------------------------------------------------
/static/images/usecases.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crate/crate-web/9e595858266aedc67709718a593070129f9b39b1/static/images/usecases.jpg
--------------------------------------------------------------------------------
/static/js/modernizr.js:
--------------------------------------------------------------------------------
1 | /* Modernizr 2.7.1 (Custom Build) | MIT & BSD
2 | * Build: http://modernizr.com/download/#-video-touch-shiv-cssclasses-teststyles-prefixes-cssclassprefix:w!mod!
3 | */
4 | ;window.Modernizr=function(a,b,c){function w(a){j.cssText=a}function x(a,b){return w(m.join(a+";")+(b||""))}function y(a,b){return typeof a===b}function z(a,b){return!!~(""+a).indexOf(b)}function A(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:y(f,"function")?f.bind(d||b):f}return!1}var d="2.7.1",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={},o={},p={},q=[],r=q.slice,s,t=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},u={}.hasOwnProperty,v;!y(u,"undefined")&&!y(u.call,"undefined")?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=r.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(r.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(r.call(arguments)))};return e}),n.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:t(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},n.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c};for(var B in n)v(n,B)&&(s=B.toLowerCase(),e[s]=n[B](),q.push((e[s]?"":"no-")+s));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)v(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" w-mod-"+(b?"":"no-")+a),e[a]=b}return e},w(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e.testStyles=t,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" w-mod-js w-mod-"+q.join(" w-mod-"):""),e}(this,this.document);
5 | /**
6 | * Webflow: Custom tests
7 | */
8 | Modernizr.addTest('ios', /(ipod|iphone|ipad)/i.test(navigator.userAgent));
9 |
--------------------------------------------------------------------------------
/static/js/terminal.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Licensed to Crate (https://crate.io) under one or more contributor
3 | * license agreements. See the NOTICE file distributed with this work for
4 | * additional information regarding copyright ownership. Crate licenses
5 | * this file to you under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License. You may
7 | * obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | * License for the specific language governing permissions and limitations
15 | * under the License.
16 | *
17 | * However, if you have executed another commercial license agreement
18 | * with Crate these terms will supersede the license and you may use the
19 | * software solely pursuant to the terms of the relevant commercial agreement.
20 | */
21 |
22 | var Term = function(elem){
23 |
24 | var prefix = "cr>";
25 | var statement = "";
26 | var pfLen = prefix.length + statement.length + 1;
27 |
28 | var _form = elem;
29 | var form = $(elem);
30 | var settings = form.data();
31 |
32 | var history = $('pre', elem);
33 | var prompt = $('textarea', elem);
34 |
35 | var setStatement = function(text) {
36 | statement = text;
37 | pfLen = prefix.length + statement.length + 1;
38 | prompt.val(prefix + ' ' + text);
39 | prompt[0].setSelectionRange(pfLen, pfLen);
40 | prompt.focus();
41 | };
42 |
43 | var addComment = function(text) {
44 | history.append('