From 8720b9c4c4823e201dbdd0e1bd1c89cbc5f0f95c Mon Sep 17 00:00:00 2001 From: Konstantin Osipov <kostja.osipov@gmail.com> Date: Wed, 22 Feb 2012 22:17:27 +0400 Subject: [PATCH] www-restyle: review fixes - add content - speed up rebuild by keeping static stuff in www-data - change the layout and stylesheet --- .gitignore | 4 +- CMakeLists.txt | 4 + doc/CMakeLists.txt | 4 +- doc/developer/CMakeLists.txt | 2 +- doc/developer/developer.xml | 26 ++- doc/user/CMakeLists.txt | 6 +- doc/www-data.in/CMakeLists.txt | 4 + doc/www-data.in/_config | 6 +- doc/www-data.in/_ignore | 7 +- doc/www-data.in/_layout/base | 27 ++- doc/www-data.in/_layout/benchmark | 2 + doc/www-data.in/_layout/docs | 2 +- doc/www-data.in/_layout/download | 2 + doc/www-data.in/_layout/faq | 2 + doc/www-data.in/_layout/home | 40 ++--- doc/www-data.in/_layout/intro | 2 + doc/www-data.in/benchmark | 6 + doc/www-data.in/docs | 18 +- doc/www-data.in/download.cmake | 159 ++++++++++++++++++ doc/www-data.in/faq | 67 ++++++++ doc/www-data.in/index | 69 +++++--- doc/www-data.in/{about => intro} | 27 ++- doc/www-data.in/sidebar | 57 ++++--- doc/www-data/bg_header.png | Bin 0 -> 388 bytes .../_extras => www-data}/favicon.ico | Bin .../_extras/style.css => www-data/global.css} | 90 ++++++---- .../_extras => www-data}/logo.png | Bin .../_extras => www-data}/mail-logo.png | Bin .../_extras => www-data}/robots.txt | 0 scripts/static.py | 23 +-- 30 files changed, 494 insertions(+), 162 deletions(-) create mode 100644 doc/www-data.in/CMakeLists.txt create mode 100644 doc/www-data.in/_layout/benchmark create mode 100644 doc/www-data.in/_layout/download create mode 100644 doc/www-data.in/_layout/faq create mode 100644 doc/www-data.in/_layout/intro create mode 100644 doc/www-data.in/benchmark create mode 100644 doc/www-data.in/download.cmake create mode 100644 doc/www-data.in/faq rename doc/www-data.in/{about => intro} (84%) create mode 100644 doc/www-data/bg_header.png rename doc/{www-data.in/_extras => www-data}/favicon.ico (100%) rename doc/{www-data.in/_extras/style.css => www-data/global.css} (85%) rename doc/{www-data.in/_extras => www-data}/logo.png (100%) rename doc/{www-data.in/_extras => www-data}/mail-logo.png (100%) rename doc/{www-data.in/_extras => www-data}/robots.txt (100%) diff --git a/.gitignore b/.gitignore index 95ba77b34e..e1fc93468d 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ tarantool-*.tar.gz doc/tnt.ent doc/user/tarantool_user_guide.html doc/developer/tarantool_developer_guide.html -doc/www-data/* third_party/luajit/src/luajit third_party/luajit/lib/vmdef.lua third_party/luajit/src/buildvm @@ -39,3 +38,6 @@ third_party/luajit/src/lj_recdef.h third_party/luajit/src/lj_vm.s test/connector_c/tt *.reject +doc/www-data/*.html +doc/www-data/*.ru.html +doc/www-data.in/download diff --git a/CMakeLists.txt b/CMakeLists.txt index 7adcf4e119..6cfb1b4358 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -262,6 +262,10 @@ configure_file( "${PROJECT_BINARY_DIR}/doc/tnt.ent" ) +configure_file( + "${PROJECT_SOURCE_DIR}/doc/www-data.in/download.cmake" + "${PROJECT_BINARY_DIR}/doc/www-data.in/download" + ) message (STATUS "") message (STATUS "Successfully configured Tarantool infrastructure on ") message (STATUS "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}, build type '${CMAKE_BUILD_TYPE}'. ") diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 367db9f4a1..d38b79a036 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,5 +1,3 @@ add_subdirectory(user) add_subdirectory(developer) - -add_custom_target(www-data ALL - COMMAND rm -rf www-data && mkdir www-data && ../scripts/static.py --source-path www-data.in --output-path www-data) +add_subdirectory(www-data.in) diff --git a/doc/developer/CMakeLists.txt b/doc/developer/CMakeLists.txt index 691e16c82e..6760f3e479 100644 --- a/doc/developer/CMakeLists.txt +++ b/doc/developer/CMakeLists.txt @@ -1,7 +1,7 @@ add_custom_target(dev-html ALL COMMAND ${XSLTPROC} --nonet --stringparam collect.xref.targets "all" - --xinclude -o tarantool_developer_guide.html + --xinclude -o ${PROJECT_BINARY_DIR}/doc/www-data/tarantool_developer_guide.html ${CMAKE_SOURCE_DIR}/doc/user/tnt-html.xsl developer.xml) diff --git a/doc/developer/developer.xml b/doc/developer/developer.xml index 2b54754e3f..2e15a8d78e 100644 --- a/doc/developer/developer.xml +++ b/doc/developer/developer.xml @@ -34,17 +34,25 @@ The other alternative, if you have actually modified </para> </section> -</chapter> -To build documentation, you'll need: +<section> +<title>How to build the user guide from DocBook .xml files</title> + + <para> + To build documentation, you'll need: -xsltproc -docbook5-xml -docbook-xsl-ns -libsaxon-java- for saxon processing -libxml-commons-resolver1.1-java -libxerces2-java -libxslthl-java + <itemizedlist> + <listitem>xsltproc</listitem> + <listitem>docbook5-xml</listitem> + <listitem>docbook-xsl-ns</listitem> + <listitem>libsaxon-java- for saxon processing</listitem> + <listitem>libxml-commons-resolver1.1-java</listitem> + <listitem>libxerces2-java</listitem> + <listitem>libxslthl-java</listitem> + </itemizedlist> + </para> +</section> +</chapter> <!-- TOC: diff --git a/doc/user/CMakeLists.txt b/doc/user/CMakeLists.txt index 5421db1da1..fc9c78dbd0 100644 --- a/doc/user/CMakeLists.txt +++ b/doc/user/CMakeLists.txt @@ -1,7 +1,7 @@ add_custom_target(html ALL COMMAND ${XSLTPROC} --nonet --stringparam collect.xref.targets "all" - --xinclude -o tarantool_user_guide.html + --xinclude -o ${PROJECT_BINARY_DIR}/doc/www-data/tarantool_user_guide.html tnt-html.xsl user.xml) @@ -16,7 +16,7 @@ add_custom_target(pdf add_custom_target(relink COMMAND ${XSLTPROC} --nonet --stringparam collect.xref.targets "only" - --xinclude -o tarantool_user_guide.html + --xinclude -o ${PROJECT_BINARY_DIR}/doc/www-data/tarantool_user_guide.html tnt-html.xsl user.xml) @@ -29,7 +29,7 @@ add_custom_target(html-saxon -x org.apache.xml.resolver.tools.ResolvingXMLReader -y org.apache.xml.resolver.tools.ResolvingXMLReader -r org.apache.xml.resolver.tools.CatalogResolver - -u -o tarantool_user_guide.html user.xml tnt-html.xsl) + -u -o ${PROJECT_BINARY_DIR}/doc/www-data/tarantool_user_guide.html user.xml tnt-html.xsl) add_custom_target(pdf-saxon COMMAND java -cp "/usr/share/java/saxon.jar:/usr/share/java/xml-commons-resolver-1.1.jar:/usr/share/java/docbook-xsl-saxon.jar:/usr/share/java/xercesImpl.jar:/etc/xml/resolver:/usr/share/java/xslthl.jar" diff --git a/doc/www-data.in/CMakeLists.txt b/doc/www-data.in/CMakeLists.txt new file mode 100644 index 0000000000..eb092d3d9b --- /dev/null +++ b/doc/www-data.in/CMakeLists.txt @@ -0,0 +1,4 @@ +add_custom_target(www-data ALL + COMMAND ${PROJECT_SOURCE_DIR}/scripts/static.py + --source-path ${PROJECT_SOURCE_DIR}/doc/www-data.in + --output-path ${PROJECT_BINARY_DIR}/doc/www-data) diff --git a/doc/www-data.in/_config b/doc/www-data.in/_config index 3c4029598b..97b70bf13d 100644 --- a/doc/www-data.in/_config +++ b/doc/www-data.in/_config @@ -4,12 +4,8 @@ languages: ru: { source-encoding: 'utf-8', output-encoding: 'utf-8', suffix: '.ru.html' } # i18n for small bits -home_tag: { en: 'Home', ru: 'Ðачало' } +home_tag: { en: 'Tarantool/Box - Front page', ru: 'Tarantool/Box - ГлавнаÑ' } # implement language switch in the header, note the reversed language tags lang_tag: { en: 'РуÑÑкий', ru: 'English' } lang_ext: { en: '.ru.html', ru: '.html' } - -# Download links: -current_download: http://tarantool.org/dist/tarantool-1.4.3-76-gf2b7d20-src.tar.gz -more_downloads: http://tarantool.org/dist diff --git a/doc/www-data.in/_ignore b/doc/www-data.in/_ignore index bed262709f..c56389fbc0 100644 --- a/doc/www-data.in/_ignore +++ b/doc/www-data.in/_ignore @@ -1,2 +1,7 @@ README -*.py *.pyc \ No newline at end of file +*.py *.pyc +CMakeLists.txt +CMakeFiles +cmake_install.cmake +download.cmake +Makefile diff --git a/doc/www-data.in/_layout/base b/doc/www-data.in/_layout/base index 42b24a5a80..567481a9e0 100644 --- a/doc/www-data.in/_layout/base +++ b/doc/www-data.in/_layout/base @@ -4,12 +4,12 @@ <title>{{ title }}</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="shortcut icon" href="favicon.ico" /> -<link rel="stylesheet" type="text/css" href="style.css" /> +<link rel="stylesheet" type="text/css" href="global.css" /> {% include "script" ignore missing %} </head> <body id="tarantool"> -<div id="wrapper"> +<div id="wrapper"> <div id="header"> {% block header %} <p class='lwrap'><a id="home_link" href="index{{ languages[pagelang].suffix | e }}">{{ home_tag | langselect | e }}</a></p> @@ -20,21 +20,16 @@ <div id="content"> {% block content %} <div class="grid"> - <div id="sidebar" class="span_4"> -<!-- - <div id="content_cap"> - <img id="logo" src="logo.png" alt="Tarantool Logo" /> - </div> ---> - <div class="clear"></div> - {{ sidebar | langselect }} - </div> - <div id="main" class="span_8"> - {% block prologue %}{% endblock %} - {{ content }} - {% block epilogue %}{% endblock %} + <div id="sidebar" class="span_3"> + <div class="clear"></div> + {{ sidebar | langselect }} + </div> + <div id="main" class="span_8"> + {% block prologue %}{% endblock %} + {{ content }} + {% block epilogue %}{% endblock %} + </div> </div> - </div> {% endblock content %} </div> diff --git a/doc/www-data.in/_layout/benchmark b/doc/www-data.in/_layout/benchmark new file mode 100644 index 0000000000..80cf7ac151 --- /dev/null +++ b/doc/www-data.in/_layout/benchmark @@ -0,0 +1,2 @@ +{% extends "base" %} +{% set title = "Tarantool/Box: a benchmark" %} diff --git a/doc/www-data.in/_layout/docs b/doc/www-data.in/_layout/docs index 37c5371c20..68623fc1de 100644 --- a/doc/www-data.in/_layout/docs +++ b/doc/www-data.in/_layout/docs @@ -1,2 +1,2 @@ {% extends "base" %} -{% set title = "Tarantool Docs" %} +{% set title = "Tarantool/Box documentation" %} diff --git a/doc/www-data.in/_layout/download b/doc/www-data.in/_layout/download new file mode 100644 index 0000000000..af503d442b --- /dev/null +++ b/doc/www-data.in/_layout/download @@ -0,0 +1,2 @@ +{% extends "base" %} +{% set title = "Tarantool/Box: downloads" %} diff --git a/doc/www-data.in/_layout/faq b/doc/www-data.in/_layout/faq new file mode 100644 index 0000000000..7b42d7633d --- /dev/null +++ b/doc/www-data.in/_layout/faq @@ -0,0 +1,2 @@ +{% extends "base" %} +{% set title = "Tarantool/Box: Frequently Asked Questions" %} diff --git a/doc/www-data.in/_layout/home b/doc/www-data.in/_layout/home index 4e4c39ac60..57cee8c12e 100644 --- a/doc/www-data.in/_layout/home +++ b/doc/www-data.in/_layout/home @@ -1,52 +1,52 @@ {% extends "base" %} -{% set title = "Tarantool" %} +{% set title = "Tarantool/Box -- an efficient in-memory data store" %} {% block content %} - <div class="grid"> - - <div class="lwrap"> + <div id="blurb" class="span_12"> - <div id="blurb" class="span_8"> + <img id="logo" src="logo.png" alt="Tarantool/Box Logo" /> - <img id="logo" src="logo.png" alt="Tarantool Logo" /> + {{ blurb | langselect }} - {{ blurb | langselect }} + <div class="clear"></div> - <div class="clear"></div> + </div> - <p id="download" class="front_block"> - <a id="current" href="{{ current_download | e }}">Download</a> - <a href="{{ more_downloads | e }}">[ More Downloads ]</a> - </p> + <div class="grid"> - </div> + <div class="lwrap"> <div id="blocks"> <div id="docs" class="span_4"> <div class='front_block'> - {{ home_page_docs | langselect }} + {{ home_page_learn | langselect }} + </div> + </div> + + <div id="use" class="span_4"> + <div class='front_block'> + {{ home_page_use | langselect }} </div> </div> <div id="join" class="span_4"> <div class='front_block'> - {{ home_page_community | langselect }} + {{ home_page_join | langselect }} </div> </div> <div class="clear"></div> </div> - - </div> - - <div class="span_4"> - <div id="news" class='front_block'> + <div class="span_9"> + <div id="news" class='news_block'> {{ home_page_news | langselect }} </div> </div> + </div> + <div class="clear"></div> </div> <!-- grid --> diff --git a/doc/www-data.in/_layout/intro b/doc/www-data.in/_layout/intro new file mode 100644 index 0000000000..c0323af768 --- /dev/null +++ b/doc/www-data.in/_layout/intro @@ -0,0 +1,2 @@ +{% extends "base" %} +{% set title = "Tarantool/Box: an introduction" %} diff --git a/doc/www-data.in/benchmark b/doc/www-data.in/benchmark new file mode 100644 index 0000000000..5a1658e377 --- /dev/null +++ b/doc/www-data.in/benchmark @@ -0,0 +1,6 @@ +{% page benchmark en %} + + +{% page benchmark ru %} + + diff --git a/doc/www-data.in/docs b/doc/www-data.in/docs index ee0c5f0229..4b18b9a109 100644 --- a/doc/www-data.in/docs +++ b/doc/www-data.in/docs @@ -3,11 +3,25 @@ Documentation ============= -blah blah blah +- [Tarnatool/Box User Guide](http://tarantool.org/tarantool_user_guide.html) +- [Tarnatool/Box Developer guide](http://tarantool.org/tarantool_user_guide.html) + +## Where to get more help + +- [discussion list](http://groups.google.com/group/tarantool) +- [developer list](http://lists.launchpad.net/tarantool-developers) {% page docs ru %} Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ ============ -Ð»Ñ Ð»Ñ Ñ‚Ð¾Ð¿Ð¾Ð»Ñ +ПользовательÑÐºÐ°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° данный момент +доÑтупна только на английÑком Ñзыке. + +## Другие иÑточники: + +* руÑÑкоÑзычный ÑпиÑок раÑÑылки +* ÑÑ‚ÐµÐ½Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ Ð´Ð¾ÐºÐ»Ð°Ð´Ð° на Форуме Технологий Mail.Ru +* Ñтатьи на habrahabr.ru + diff --git a/doc/www-data.in/download.cmake b/doc/www-data.in/download.cmake new file mode 100644 index 0000000000..6873671f03 --- /dev/null +++ b/doc/www-data.in/download.cmake @@ -0,0 +1,159 @@ +{% page download en %} + +### What's in the package + +Each binary package includes the server binary, *tarantool_box*, +the command line client, *tarantool*, instance management +script, *tarantool.sh*, a script to add more instances, +*tarantool_expand.sh*, and, last but not least, man pages and the user +guide. + +### How to choose the right version for download + +Tarantool/Box uses a 3-digit versioning scheme +<major>-<minor>-<patch>. +Major digits change rarely. A minor version increase +indicates an incompatibile change. Minor version change happens +when the source tree receives a few important bugfixes. + +The version string may also contain a git revision id, to ease +identification of the unqiue commit used to generate the build. + +The current version of the stable branch is **@TARANTOOL_VERSION@**. + +An automatic build system creates, tests and publishes packages +for every push into the stable branch. All binary packages contain +symbol information. Additionally, **-debug-** +packages contain asserts and are compiled without optimization. + +To simplify problem analysis and avoid various bugs induced +by compilation parameters and environment, it is recommended +that production systems use the builds provided on this site. + +The latest build can be found below. + +<table border=1 title="Download the latest build, @TARANTOOL_VERSION@" width=100%> + + <tr width=60%> + <td colspan=1>Source tarball</td> + <td colspan=3 align=center> + <a href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@.src.tar.gz">tarantool-@TARANTOOL_VERSION@.src.tar.gz</a> + </td> + </tr> + + <th colspan=3>Linux</th> + +<!-- Debian --> + + <tr> + <td> + Debian software package (<b>.deb</b>) + </td> + + <td align=center> + <a href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-i686.deb">32-bit</a> + </td> + + <td align=center> + <a href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-i686.deb">64-bit</a> + </td> + </tr> + + <tr> + <td> + Debian software package (<b>.deb</b>), with debug info + </td> + <td align=center> + <a + href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-i686-debug.deb">32-bit</a> + </td> + + <td align=center> + <a + href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-x864_64-debug.deb">64-bit</a> + </td> + </tr> + +<!-- RPM --> + + <tr> + <td> + RedHat <b>.rpm</b> + </td> + + <td align=center> + <a href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-i686.rpm">32-bit</a> + </td> + + <td align=center> + <a href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-i686.rpm">64-bit</a> + </td> + </tr> + + <tr> + <td> + RedHat <b>.rpm</b>, with debug info + </td> + <td align=center> + <a + href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-i686-debug.rpm">32-bit</a> + </td> + + <td align=center> + <a + href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-x864_64-debug.rpm">64-bit</a> + </td> + </tr> + +<!-- .tar.gz --> + + <tr> + <td> + Binary tarball (<b>.tar.gz</b>) + </td> + <td align=center> + <a href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-i686.tar.gz">32-bit</a> + </td> + + <td align=center> + <a href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-linux-x86_64.tar.gz">64-bit</a> + </td> + </tr> + + <th colspan=3>FreeBSD</th> + +<!-- .tar.gz --> + + <tr> + <td> + Binary tarball (<b>.tar.gz</b>) + </td> + <td align=center> + <a + href="http://tarantool.org/dist/tarantool-@TARANTOOL_VERSION@-freebsd-i386.tar.gz">32-bit</a> + </td> + + <td align=center> + </td> + </tr> + <th colspan=4>Mac OS X</th> + <tr> + <td align=center colspan=4><i>Coming soon...</i></td> + <tr> + +</table> + +### All downloads + +An archive of old releases can be found at <a +href="http://tarantool.org/dist">here</a>. + +### Connectors + +- Perl driver, [CPAN home](http://search.cpan.org/~yuran/MR-Tarantool/) +- [Ruby driver](https://github.com/mailru/tarantool-ruby) +- Python driver, [hosted at pypi.python.org](http://pypi.python.org/pypi/tarantool) +{% page download ru %} + +<!-- vim: syntax=html +--> diff --git a/doc/www-data.in/faq b/doc/www-data.in/faq new file mode 100644 index 0000000000..41ba2e7b78 --- /dev/null +++ b/doc/www-data.in/faq @@ -0,0 +1,67 @@ +{% page faq en %} + +## Frequently Asked Questions + +**Q. Why Tarantool?** + +A. Tarantool is a result of long trial and error process within Mail.Ru. It's an nth generation of a family of custom in-memory data servers, developed for various web applications. Besides, when Tarantool development started (2008) there were no stable and sufficiently functional open source alternative. + +**Q. What's the key advantage of Tarantool?** + +A. Tarantool provides a fairly rich core feature set (HASH and TREE indexes, secondary indexes, composite indexes, +asynchronous replication, hot standby, data durability) along with support for Lua stored procedures. +These two properties allow to code fast, atomic and reliable in-memory data servers which handle non-trivial application-specific logic. The win over traditional SQL servers is in performance: low-overhead, lock-free architecture allows to serve +an order of magnitude more RPS on comparable hardware. The win over NoSQL alternatives is in flexibility: Lua allows to flexibly process data stored in compact, not normalized format. + +**Q. What are your development plans?** + +A. Performance. Better support for transactions. Advanced replication and clustering features. + +**Q. Who is developing Tarantool?** + +A. There is a small engineering team employed by Mail.ru -- check out our commit logs on github. The development is fully open, and Python and PHP drivers are written by Konstantin Cherkasoff and Alexander Kalendarev from community. + +**Q. How serious is Mail.Ru about Tarantool?** + +A. Tarantool is an open source project, distributed under BSD license, and as such does not depend on any one sponsor. However, it is currently and integral part of Mail.Ru backbone, and because of that, gets a lot of support from Mail.ru. + +**Q. Why is Tarantool primary port number 33013?** + +A. It's a prime number which is easy to remember, because 3313, 3301, 313, 13 and 3 are also prime numbers. + +**Q. My arena_used/items_used in SHOW SLAB output is >> 1. What does it mean and what should I do?** + +A. A ratio of arena_used to items_used >> 1 indicates that there shore/fragmentation accumulated by the slab allocator. Imagine there are a lot of small tuples stored in the system initially, and later on each tuple becomes bigger and doesn't fit into its old slab size. The old slabs are never relinquished by the allocator. Currently this can be solved only by a server restart. + +{% page faq ru %} + +**Q. Why Tarantool?** + +A. Tarantool is a result of long trial and error process within Mail.Ru. It's an nth generation of a family of custom in-memory data servers, developed for various web applications. Besides, when Tarantool development started (2008) there were no stable and sufficiently functional open source alternative. + +**Q. What's the key advantage of Tarantool?** + +A. Tarantool provides a fairly rich core feature set (HASH and TREE indexes, secondary indexes, composite indexes, +asynchronous replication, hot standby, data durability) along with support for Lua stored procedures. +These two properties allow to code fast, atomic and reliable in-memory data servers which handle non-trivial application-specific logic. The win over traditional SQL servers is in performance: low-overhead, lock-free architecture allows to serve +an order of magnitude more RPS on comparable hardware. The win over NoSQL alternatives is in flexibility: Lua allows to flexibly process data stored in compact, not normalized format. + +**Q. What are your development plans?** + +A. Performance. Better support for transactions. Advanced replication and clustering features. + +**Q. Who is developing Tarantool?** + +A. There is a small engineering team employed by Mail.ru -- check out our commit logs on github. The development is fully open, and Python and PHP drivers are written by Konstantin Cherkasoff and Alexander Kalendarev from community. + +**Q. How serious is Mail.Ru about Tarantool?** + +A. Tarantool is an open source project, distributed under BSD license, and as such does not depend on any one sponsor. However, it is currently and integral part of Mail.Ru backbone, and because of that, gets a lot of support from Mail.ru. + +**Q. Why is Tarantool primary port number 33013?** + +A. It's a prime number which is easy to remember, because 3313, 3301, 313, 13 and 3 are also prime numbers. + +**Q. My arena_used/items_used in SHOW SLAB output is >> 1. What does it mean and what should I do?** + +A. A ratio of arena_used to items_used >> 1 indicates that there shore/fragmentation accumulated by the slab allocator. Imagine there are a lot of small tuples stored in the system initially, and later on each tuple becomes bigger and doesn't fit into its old slab size. The old slabs are never relinquished by the allocator. Currently this can be solved only by a server restart. diff --git a/doc/www-data.in/index b/doc/www-data.in/index index 652e9f3f4c..17a6576177 100644 --- a/doc/www-data.in/index +++ b/doc/www-data.in/index @@ -1,19 +1,19 @@ {% text blurb en %} -# Tarantool -## high performance in-memory key-value store +# Tarantool/Box - an efficient in-memory data store +##Tarantool is an extensible, persistent, transactional database, designed to store the most volatile and highly accessible web data. {% text blurb ru %} -# Tarantool -## high performance in-memory key-value store +# Tarantool/Box - NoSQL СУБД Ð´Ð»Ñ Ð²Ñ‹Ñокой нагрузки +## Tarantool - раÑширÑемаÑ, Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¡Ð£Ð‘Ð” Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ запрашиваемых и чаÑто менÑющихÑÑ Ð´Ð°Ð½Ð½Ñ‹Ñ…. {% text home_page_news en %} -Stay Informed -============= +What's new +========== -### What's new +2012-02-18: <a href="http://tarantool.org">http://tarantool.org</a> gets a new look! 2011-10-07: <a href="http://tarantool.org/dist/tarantool-1.4.3-3-g45804c6-src.tar.gz">Tarantool 1.4.3</a>, stable version of 1.4 branch. @@ -25,10 +25,10 @@ Stay Informed {% text home_page_news ru %} -Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ -========== +ÐовоÑти +======= -### ÐовоÑти +2012-02-18: Ðовый дизайн <a href="http://tarantool.org">http://tarantool.org</a> 2011-10-07: <a href="http://tarantool.org/dist/tarantool-1.4.3-3-g45804c6-src.tar.gz">Tarantool 1.4.3</a>, stable version of 1.4 branch. @@ -38,34 +38,57 @@ Stay Informed 2011-05-14: <a href="http://launchpad.net/tarantool/1.3/1.3.5/+download/tarantool-1.3.5-src.tar.gz">tarantool-1.3.5</a> (stable) is out. -{% text home_page_docs en %} +{% text home_page_learn en %} -[Learn It](docs.html) +Learn more ===================== -- [About](about.html) -- [Documentation](http://tarantool.org/tarantool_user_guide.html) -- [Wiki](http://github.com/mailru/tarantool/wiki) +- [Introduction](intro.html) +- [Frequently Aasked Questions](faq.html) +- [A benchmark](benchmark.html) -{% text home_page_docs ru %} +{% text home_page_learn ru %} -[ОпиÑание](docs.ru.html) +Узнать больше ======================== - [Обзор](about.ru.html) -- [ДокументвциÑ](http://tarantool.org/tarantool_user_guide.html) +- ÑÑ‚Ð°Ñ‚ÑŒÑ Ð½Ð° habrahabr - [Wiki](http://github.com/mailru/tarantool/wiki) -{% text home_page_community en %} +{% text home_page_use en %} -Get Involved +Use Tarantool ============ +- <p id="download"><a id="current_download" href="download.html">Download Tarantool</a></p> +- [Read the User Guide](tarantool_user_guide.html) +- [Browse a stored procedures archive](http://github.com/mailru/tntlua) +- [Join the mailing list](http://groups.google.com/group/tarantool/subscribe) +- [Report a bug](https://bugs.launchpad.net/tarantool/+filebug) +- [View features and milestones](https://launchpad.net/tarantool) -- [Code Repo](https://github.com/mailru/tarantool) -- [Bugs](http://bugs.launchpad.net/tarantool) +{% text home_page_use ru %} + +ИÑпользовать Tarantool +====================== + +- [ИÑходный код](https://github.com/mailru/tarantool) +- [База дефектов](http://bugs.launchpad.net/tarantool) +- [ДокументациÑ](tarantool_user_guide.html) - IRC: #tarantool on irc.freenode.net -{% text home_page_community ru %} +{% text home_page_join en %} + +Get Involved +============ + +- [Browse Git source](https://github.com/mailru/tarantool) +- [Read the developer guide](tarantool_developer_guide.html) +- [IRC chat with developers](http://webchat.freenode.net/?channels=tarantool) +- [Developer list archives](https://lists.launchpad.net/tarantool-developers/) +- [Help improve our Wiki](http://github.com/mailru/tarantool/wiki) + +{% text home_page_join ru %} УчаÑтие ======= diff --git a/doc/www-data.in/about b/doc/www-data.in/intro similarity index 84% rename from doc/www-data.in/about rename to doc/www-data.in/intro index 5f434bd4d0..1840b3fd60 100644 --- a/doc/www-data.in/about +++ b/doc/www-data.in/intro @@ -1,6 +1,10 @@ -{% page docs en %} +{% page intro en %} -Tarantool/Box, or simply Tarantool, is a high performance key/value storage server. The code is available for free under the terms of <em><a href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">BSD license</a></em>. Supported platforms are GNU/Linux and FreeBSD. +## What is Tarantool? + +Tarantool/Box, or simply Tarantool, is a high performance key/value storage server. The code is available for free under the terms of <em><a href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">BSD license</a></em>. Supported platforms are GNU/Linux and FreeBSD. + +## An overview of the architecture The server <span class="strong"><strong>maintains all its data in random-access memory</strong></span>, and therefore can handle read requests blazingly fast. At the same time, a copy of the data is kept on non-volatile storage (a disk drive), and inserts and updates are performed atomically. @@ -8,15 +12,28 @@ To ensure atomicity, consistency and crash-safety of the persistent copy, a writ If update and delete rate is high, a constantly growing write-ahead log file (or files) can pose a disk space problem, and significantly increase time necessary to restart from disk. A simple solution is employed: the server <span class="strong"><strong>can be requested to save a concise snapshot</strong></span> of its current data. The underlying operating system's <span class="quote">“<span class="quote">copy-on-write</span>”</span> feature is employed to take the snapshot in a quick, resource-savvy and non-blocking manner. The <span class="quote">“<span class="quote">copy-on-write</span>”</span> technique guarantees that snapshotting has minimal impact on server performance. +<span class="strong"><strong>Tarantool is lock-free</strong></span>. Instead of the underlying operating system's concurrency primitives, Tarantool uses cooperative multitasking environment to simultaneously operate on thousands of connections. While this approach limits server scalability to a single CPU core, in practice it removes competition for the memory bus and sets the scalability limit to the top of memory and network throughput. CPU utilization of a typical highly-loaded Tarantool server is under 10%. + +## Main features + +A key feature of Tarantool is support for stored procedures, which can +access and modify data atomically. Procedures can be created, modified, +dropped at runtime. With stored procedures, it's possible to +turn Tarantool into a highly flexible and extremely fast social web +application server. + Tarantool supports replication. Replicas may run locally or on a remote host. Tarantool replication is asynchronous and does not block writes to the master. When or if the master becomes unavailable, the replica can be switched to assume the role of the master. -<span class="strong"><strong>Tarantool is lock-free</strong></span>. Instead of the underlying operating system's concurrency primitives, Tarantool uses cooperative multitasking environment to simultaneously operate on thousands of connections. While this approach limits server scalability to a single CPU core, in practice it removes competition for the memory bus and sets the scalability limit to the top of memory and network throughput. CPU utilization of a typical highly-loaded Tarantool server is under 10%. +## How stable is the software? -<span class="strong"><strong>The software is production-ready</strong></span>. Tarantool has been developed and is actively used at <em><a href="http://api.mail.ru">Mail.Ru</a></em> one of the leading Russian web content providers. At Mail.Ru, the sowtware serves the <span class="quote">“<span class="quote">hottest</span>”</span> data, such as online users and their sessions, online application properties, the map between users and their serving shards. +<span class="strong"><strong>The software is +production-ready</strong></span>. Tarantool has been developed and is +actively used at <em><a href="http://api.mail.ru">Mail.Ru</a></em> one of +the leading Russian web content providers, since 2008. At Mail.Ru, the sowtware serves the <span class="quote">“<span class="quote">hottest</span>”</span> data, such as online users and their sessions, online application properties, the map between users and their serving shards. To conclude, Tarantool/Box is ideal for highly volatile and/or highly accessed Web data. With Tarantool, performance overhead on serving data is minimal: a single server can easily deal with tens or even hundreds of thousands of requests per second. Snapshots can be made when Web user activity is at its lowest, for example at night, and thus add little or no restraint on the top throughput of the system. If the master becomes unavailable, a replica can assume the role of the master with minimal downtime. -{% page docs ru %} +{% page intro ru %} <b>Tarantool</b> — однопоточный TCP Ñервер, реализующий кооперативную многозадачноÑÑ‚ÑŒ. РазрабатываетÑÑ Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ работы под выÑокими нагрузками (деÑÑтки Ñ‚Ñ‹ÑÑч RPS). Можно выделить две логичеÑкие ÑоÑтавлÑющие: Ñдро и модули. Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ модулей производитÑÑ Ð½Ð° Ñтапе компилÑции. Ðа уровне Ñдра реализуетÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¹ функционал (общение по Ñети, работа Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ð¼Ð¸ логами, Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ð¾ Ñети, быÑтрое переключение на резервный Ñервер и Ñ‚.п.). Ð’ модулÑÑ… реализуетÑÑ Ð±Ð¸Ð·Ð½ÐµÑ Ð»Ð¾Ð³Ð¸ÐºÐ° конкретного Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¸Ñпользованием API Ñдра. diff --git a/doc/www-data.in/sidebar b/doc/www-data.in/sidebar index e1cabb08c3..41fc0ca284 100644 --- a/doc/www-data.in/sidebar +++ b/doc/www-data.in/sidebar @@ -1,24 +1,43 @@ {% text sidebar en %} -* [Home](index.html) -* [Docs](docs.html) - * [About](about.html) - * [User Guide](http://tarantool.org/tarantool_user_guide.html) - * [Wiki](https://github.com/mailru/tarantool/wiki) -* [Downloads](http://tarantool.org/dist/) -* Community - * [Code Repo](https://github.com/mailru/tarantool) - * [Bugs](https://bugs.launchpad.net/tarantool) +* [Documentation](docs.html) + * [Introduction](intro.html) + * [Benchmark](benchmark.html) + * [User Guide](tarantool_user_guide.html) + * [FAQ](faq.html) + * [Developer guide](tarantool_developer_guide.html) +* [Github resources](http://github.com/mailru/tarantool) + * [Git source](https://github.com/mailru/tarantool) + * [Wiki](http://github.com/mailru/tarantool/wiki) + * [Lua code](http://github.com/mailru/tntlua) +* [Launchpad resources](http://launchpad.net/tarantool) + * [Bug Database](https://bugs.launchpad.net/tarantool) + * [Open tasks](https://blueprints.launchpad.net/tarantool) + * [Mailinng list](https://lists.launchpad.net/tarantool-developers/) +* Other + * [User group](http://groups.google.com/group/tarantool) + * [IRC chat](http://webchat.freenode.net/?channels=tarantool) + * [Latest build](download.html) + * [All downloads](http://tarantool.org/dist) {% text sidebar ru %} -* [Home](index.ru.html) -* [Docs](docs.ru.html) - * [About](about.ru.html) -* * [User Guide](http://tarantool.org/tarantool_user_guide.html) - * [Wiki](https://github.com/mailru/tarantool/wiki) -* [Downloads](http://tarantool.org/dist/) -* Community - * [Code Repo](https://github.com/mailru/tarantool) - * [Bugs](https://bugs.launchpad.net/tarantool) - +* [ДокументациÑ](docs.ru.html) + * [Введение](intro.ru.html) + * [Бенчмарк](benchmark.ru.html) + * [РуководÑтво пользователÑ](tarantool_user_guide.html) + * [ЧÐВО](faq.ru.html) + * [РуководÑтво разработчика](tarantool_developer_guide.html) +* [РеÑурÑÑ‹ Github](http://github.com/mailru/tarantool) + * [ИÑходный код](https://github.com/mailru/tarantool) + * [Вики](http://github.com/mailru/tarantool/wiki) + * [Lua примеры](http://github.com/mailru/tntlua) +* [РеÑурÑÑ‹ Launchpad](http://launchpad.net/tarantool) + * [База дефектов](https://bugs.launchpad.net/tarantool) + * [База задач](https://blueprints.launchpad.net/tarantool) + * [СпиÑок раÑÑылки](https://lists.launchpad.net/tarantool-developers/) +* Другое + * [Группа пользователей](http://groups.google.com/group/tarantool-ru) + * [IRC чат](http://webchat.freenode.net/?channels=tarantool) + * [ПоÑледний релиз](download.ru.html) + * [Ð’Ñе релизы](http://tarantool.org/dist) diff --git a/doc/www-data/bg_header.png b/doc/www-data/bg_header.png new file mode 100644 index 0000000000000000000000000000000000000000..8d543cdec89de602df198f4dd527f5749f2636db GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^MnGJ}!3-o%z537uq!^2X+?^QKos)S9<dg>Zgt*Gb z%n}Qm=2f%SrF^wq%q-*V#ny$(eQMWP6)f|uTdx>5TQ_}ycItfFq80WfE8MHrxK^w- z%~_%xKgY9rtxVKRz4V0+B`YN(rkmw1(M*}Ak}yXjd7e|*D(R>h2APY38aD<uZd6N} z>tDaYB7dn-*5Z)nP2%CxKJxz%13G}Sz$3Dlfq`2Xgc%uT&5-~KvX^-Jy0YJ46696p z{PMu_2T*9Lr;B4q#No52kBc@jh%h+zaIhJ5Nd&&!?~;Av^gjFVo^=tArl_k;6<3?e z*&S`<qot`fRaI>&+hngs&!tC}Y&x{0=<uUya+6PSPCg|#`IOk?Q+$(8u}?n5I@zoB zsIIh+R=kfEzmJxz+EiP$smy9q87H6WII5fPqZRI>WvVt+X0lgAwvU#s+Ei<??Q;xQ go|zFMHY51ot?V;%>Xw$=2Re|!)78&qol`;+0FjQ2r2qf` literal 0 HcmV?d00001 diff --git a/doc/www-data.in/_extras/favicon.ico b/doc/www-data/favicon.ico similarity index 100% rename from doc/www-data.in/_extras/favicon.ico rename to doc/www-data/favicon.ico diff --git a/doc/www-data.in/_extras/style.css b/doc/www-data/global.css similarity index 85% rename from doc/www-data.in/_extras/style.css rename to doc/www-data/global.css index 65b17addd2..d7b10f77ea 100644 --- a/doc/www-data.in/_extras/style.css +++ b/doc/www-data/global.css @@ -58,7 +58,7 @@ a:hover, a:active { */ h1 { - font-size: 2em; + font-size: 1.5em; } /* @@ -186,9 +186,9 @@ table { } -/* ============================================================================= +/* =========================================================================== Layout - ========================================================================== */ + ======================================================================== */ /* * Top-level page sections: @@ -208,15 +208,11 @@ table { overflow: hidden; } -#header { - border-bottom: 1px dotted #3f3f3f; -} -#footer { - border-top: 1px dotted #3f3f3f; - clear: both; +#header { + margin-bottom: 5px; } - + #footer p, #header p { margin: 0 10px; } @@ -233,16 +229,23 @@ table { height: 0; } -/* ============================================================================= +/* ========================================================================== Grid - ========================================================================== */ + ======================================================================== */ .grid { - width: 960px; + width: 940px; overflow: hidden; margin-left: auto; margin-right: auto; padding: 0 10px 0 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.3); + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.3); + box-shadow: 0 1px 3px rgba(0,0,0,0.3); clear: both; } @@ -264,7 +267,7 @@ table { .span_1 { width: 70px; } .span_2 { width: 150px; } .span_3 { width: 230px; } -.span_4 { width: 310px; } +.span_4 { width: 303px; } .span_5 { width: 390px; } .span_6 { width: 470px; } .span_7 { width: 550px; } @@ -319,7 +322,7 @@ body { } #content { - padding-bottom: 20px; + padding-bottom: 5px; } a { color: #201e9e; } @@ -330,25 +333,36 @@ a:visited { color: #3f3f3f; } } #logo { - width: 170px; - height: 170px; + width: 120px; + height: 120px; float: left; } #blurb { - margin-top: 9px; + margin-bottom: 8px; color: #ffffff; - background-color: #00468c; +/* background-color: #00468c; */ + background: url('bg_header.png') repeat-x scroll 50% 0 white; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.3); + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.3); + box-shadow: 0 1px 3px rgba(0,0,0,0.3); } #blurb h1 { - font-size: 3em; + font-size: 1.5em; line-height: 1; } #blurb h2 { - font-size: 1.5em; + font-size: 1.2em; + font-weight: normal; + font-style: italic; line-height: 1; + width: 80%; } .front_block { @@ -358,10 +372,13 @@ a:visited { color: #3f3f3f; } padding: 0 10px; } -#download { - border-top: 1px dotted black; - padding-top: 10px; - text-align: center; +.news_block { + /*border: 1px dotted black;*/ + margin-top: 10px; + margin-bottom: 10px; + margin-left: 230px; + margin-right: auto; + padding: 0 10px; } #download a { @@ -369,15 +386,22 @@ a:visited { color: #3f3f3f; } text-decoration: none; } #download a:visited { - color: #cfcfcf; + color: #eee; text-decoration: none; } -#download #current { - font-size: 150%; - border: 2px outset grey; - padding: 4px 10px; +#current_download { + font-size: 110%; + font-weight: bold; + padding: 4px 5px; background-color: #ffaa00; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.3); + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.3); + box-shadow: 0 1px 3px rgba(0,0,0,0.3); } #content_cap { @@ -390,9 +414,9 @@ a:visited { color: #3f3f3f; } height: 65px; } -/* ============================================================================= +/* =========================================================================== Navigation - ========================================================================== */ + ======================================================================= */ #nav { width: 740px; @@ -428,7 +452,7 @@ a:visited { color: #3f3f3f; } margin: 0 10px; } -#nav ul li.current a { +#nav ul li.current_download a { background-color: rgba(0,0,0,0.5) !important; } diff --git a/doc/www-data.in/_extras/logo.png b/doc/www-data/logo.png similarity index 100% rename from doc/www-data.in/_extras/logo.png rename to doc/www-data/logo.png diff --git a/doc/www-data.in/_extras/mail-logo.png b/doc/www-data/mail-logo.png similarity index 100% rename from doc/www-data.in/_extras/mail-logo.png rename to doc/www-data/mail-logo.png diff --git a/doc/www-data.in/_extras/robots.txt b/doc/www-data/robots.txt similarity index 100% rename from doc/www-data.in/_extras/robots.txt rename to doc/www-data/robots.txt diff --git a/scripts/static.py b/scripts/static.py index e87ab184ac..17651c1977 100755 --- a/scripts/static.py +++ b/scripts/static.py @@ -26,7 +26,6 @@ class Config(object): self.ignore_file = '_ignore' self.corpus_dir = '.' self.layout_dir = '_layout' - self.extras_dir = '_extras' self.output_dir = 'www' self.abs_output_path = None self.config = {} @@ -44,9 +43,6 @@ class Config(object): def layout_path(self): return os.path.join(self.source_path, self.layout_dir) @property - def extras_path(self): - return os.path.join(self.source_path, self.extras_dir) - @property def output_path(self): if self.abs_output_path: return self.abs_output_path @@ -68,7 +64,6 @@ class Config(object): config = yaml.load(f) f.close() self.check('layout_dir', config) - self.check('extras_dir', config) self.check('output_dir', config) self.config = config #print config @@ -217,7 +212,7 @@ class PageHandler(BaseHandler): self.environ = make_environ(config.layout_path) def write(self, name, data): - print 'write %s' % name + print 'Writing %s' % name f = open(os.path.join(self.config.output_path, name), 'w') f.write(data) f.close @@ -233,7 +228,7 @@ class PageHandler(BaseHandler): else: langdesc = default_lang text = unicode(text, langdesc['source-encoding']) - text = markdown.markdown(text) + text = markdown.markdown(text, ['tables']) filename = name + langdesc['suffix'] template = self.environ.get_template(layout, globals=self.config.config) page = template.render( @@ -309,23 +304,12 @@ def load_entries(config): entries = [] corpus = config.get_corpus() for name in corpus: - print 'load content file "%s"' % name scanner = Scanner(name, config) for entry in iter(scanner): entries.append(entry) + print 'Loaded content file "%s"' % name return entries -def copy_extras(config): - names = os.listdir(config.extras_path) - for name in names: - srcname = os.path.join(config.extras_path, name) - dstname = os.path.join(config.output_path, name) - print 'copy %s' % srcname - if os.path.isdir(srcname): - shutil.copytree(srcname, dstname) - else: - shutil.copy2(srcname, dstname) - def main(): config = Config() parse_args(config) @@ -333,7 +317,6 @@ def main(): renderer = Renderer(config) entries = load_entries(config) renderer.render(entries) - copy_extras(config) if __name__ == '__main__': main() -- GitLab