diff --git a/.gitignore b/.gitignore index 7562f2d..394404d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,7 @@ -.omakedb* -*.omc -.installed.cfg -bin -eggs -parts -develop-eggs /build/ /jubatus.github.com/ /jubakit/ *~ *.swp *.pyc +__pycache__ diff --git a/Makefile b/Makefile deleted file mode 100644 index a3effa7..0000000 --- a/Makefile +++ /dev/null @@ -1,99 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = build - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source - -.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest singlehtml - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR)/* - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Jubatus.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Jubatus.qhc" - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ - "run these through (pdf)latex." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -pdf: - $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf - @echo - @echo "Build finished. The PDF files are in _build/pdf." diff --git a/OMakefile b/OMakefile deleted file mode 100644 index ac85982..0000000 --- a/OMakefile +++ /dev/null @@ -1,131 +0,0 @@ - -.SUBDIRS: source - -# .DEFAULT: $(OCamlProgram $(PROGRAM), $(FILES)) -.DEFAULT: help - -BOOTSTRAP = ./bootstrap.py -BUILDOUT = bin/buildout - -.PHONY: buildout - -# for Sphinx - -sphinxopts = -SPHINXBUILD = sphinx-build -paper = -builddir = build -srcdir = source -supplementdir = supplement -langs = en ja -sources = $(find $(srcdir) -name *.rst) - -# Internal variables. -paperopt_a4 = -D latex_paper_size=a4 -paperopt_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = $(sphinxopts) # $(paperopt_$(paper)) $(sphinxopts) . - -.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex man changes linkcheck doctest singlehtml - -$(BUILDOUT): - python $(BOOTSTRAP) -d init - -buildout: $(BUILDOUT) $(BOOTSTRAP) buildout.cfg - -$(SPHINXBUILD): buildout - $(BUILDOUT) - -help_message = $""" -Please use `make ' where is one of - html to make standalone HTML files - dirhtml to make HTML files named index.html in directories - pickle to make pickle files - json to make JSON files - htmlhelp to make HTML files and a HTML help project - qthelp to make HTML files and a qthelp project - latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - man to make manual page files - changes to make an overview of all changed/added/deprecated items - linkcheck to check all external links for integrity - doctest to run all doctests embedded in the documentation (if enabled) -""" - -help: - eprintln( $(help_message) ) - -clean: - -rm -rf $(builddir)/* - -DepBuild(target, message) = - $(target): $(sources) # $(SPHINXBUILD) - foreach(lang, $(langs)): - $(SPHINXBUILD) -b $(target) $(ALLSPHINXOPTS) \ - -d $(builddir)/doctrees/$(lang) \ - $(srcdir)/$(lang) \ - $(builddir)/$(target)/$(lang) - /bin/cp -rf $(supplementdir)/* $(builddir) - eprintln( $(message) ) - -# # In fact I'd like to write like following: -# Dep_map. = -# extends $(Map) -# $|json| = $''' hoge ''' -# $|pickle| = $''' hage ''' -# $(Dep_map.map $(DepBuild) ) - -DepBuild( singlehtml, $'''' - Build finished. The HTML pages are in $(builddir)/html. - '''' ) - -DepBuild( html, $'''' - Build finished. The HTML pages are in $(builddir)/html. - '''' ) - -DepBuild( dirhtml, $'''' - Build finished. The HTML pages are in $(builddir)/dirhtml. - '''') - -DepBuild( pickle, $'''' - Build finished; now you can process the pickle files. - '''') - -DepBuild( json, $'''' - Build finished; now you can process the JSON files. - '''') - -DepBuild( htmlhelp, $''' - Build finished; now you can run HTML Help Workshop with the - .hhp project file in $(builddir)/htmlhelp. - ''') - -DepBuild( qthelp, $'''' - Build finished; now you can run "qcollectiongenerator" with the - .qhcp project file in $(builddir)/qthelp, like this: - # qcollectiongenerator $(builddir)/qthelp/CouchDBtheDefinitiveGuideTranslationtoJapanese.qhcp - To view the help file: - # assistant -collectionFile $(builddir)/qthelp/CouchDBtheDefinitiveGuideTranslationtoJapanese.qhc - '''') - -DepBuild( latex, $'''' - Build finished; the LaTeX files are in $(builddir)/latex. - Run 'make all-pdf' or 'make all-ps' in that directory to - run these through (pdf)latex. - '''') - -DepBuild( man, $'''' - Build finished. The manual pages are in $(builddir)/man. - '''' ) - -DepBuild( changes, $'''' - The overview file is in $(builddir)/changes. - '''') - -DepBuild( linkcheck, $'''' - Link check complete; look for any errors in the above output - or in $(builddir)/linkcheck/output.txt. - '''') - -DepBuild( doctest, $'''' - Testing of doctests in the sources finished, look at the - results in $(builddir)/doctest/output.txt. - '''') diff --git a/OMakeroot b/OMakeroot deleted file mode 100644 index 35c219d..0000000 --- a/OMakeroot +++ /dev/null @@ -1,45 +0,0 @@ -######################################################################## -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this file, to deal in the File without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the File, and to permit persons to whom the -# File is furnished to do so, subject to the following condition: -# -# THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR -# THE USE OR OTHER DEALINGS IN THE FILE. - -######################################################################## -# The standard OMakeroot file. -# You will not normally need to modify this file. -# By default, your changes should be placed in the -# OMakefile in this directory. -# -# If you decide to modify this file, note that it uses exactly -# the same syntax as the OMakefile. -# - -# -# Include the standard installed configuration files. -# Any of these can be deleted if you are not using them, -# but you probably want to keep the Common file. -# -open build/C -open build/OCaml -open build/LaTeX - -# -# The command-line variables are defined *after* the -# standard configuration has been loaded. -# -DefineCommandVars() - -# -# Include the OMakefile in this directory. -# -.SUBDIRS: . diff --git a/bootstrap.py b/bootstrap.py deleted file mode 100644 index 5f2cb08..0000000 --- a/bootstrap.py +++ /dev/null @@ -1,260 +0,0 @@ -############################################################################## -# -# Copyright (c) 2006 Zope Foundation and Contributors. -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# -############################################################################## -"""Bootstrap a buildout-based project - -Simply run this script in a directory containing a buildout.cfg. -The script accepts buildout command-line options, so you can -use the -c option to specify an alternate configuration file. -""" - -import os, shutil, sys, tempfile, textwrap, urllib, urllib2, subprocess -from optparse import OptionParser - -if sys.platform == 'win32': - def quote(c): - if ' ' in c: - return '"%s"' % c # work around spawn lamosity on windows - else: - return c -else: - quote = str - -# See zc.buildout.easy_install._has_broken_dash_S for motivation and comments. -stdout, stderr = subprocess.Popen( - [sys.executable, '-Sc', - 'try:\n' - ' import ConfigParser\n' - 'except ImportError:\n' - ' print 1\n' - 'else:\n' - ' print 0\n'], - stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() -has_broken_dash_S = bool(int(stdout.strip())) - -# In order to be more robust in the face of system Pythons, we want to -# run without site-packages loaded. This is somewhat tricky, in -# particular because Python 2.6's distutils imports site, so starting -# with the -S flag is not sufficient. However, we'll start with that: -if not has_broken_dash_S and 'site' in sys.modules: - # We will restart with python -S. - args = sys.argv[:] - args[0:0] = [sys.executable, '-S'] - args = map(quote, args) - os.execv(sys.executable, args) -# Now we are running with -S. We'll get the clean sys.path, import site -# because distutils will do it later, and then reset the path and clean -# out any namespace packages from site-packages that might have been -# loaded by .pth files. -clean_path = sys.path[:] -import site -sys.path[:] = clean_path -for k, v in sys.modules.items(): - if k in ('setuptools', 'pkg_resources') or ( - hasattr(v, '__path__') and - len(v.__path__)==1 and - not os.path.exists(os.path.join(v.__path__[0],'__init__.py'))): - # This is a namespace package. Remove it. - sys.modules.pop(k) - -is_jython = sys.platform.startswith('java') - -setuptools_source = 'http://peak.telecommunity.com/dist/ez_setup.py' -distribute_source = 'http://python-distribute.org/distribute_setup.py' - -# parsing arguments -def normalize_to_url(option, opt_str, value, parser): - if value: - if '://' not in value: # It doesn't smell like a URL. - value = 'file://%s' % ( - urllib.pathname2url( - os.path.abspath(os.path.expanduser(value))),) - if opt_str == '--download-base' and not value.endswith('/'): - # Download base needs a trailing slash to make the world happy. - value += '/' - else: - value = None - name = opt_str[2:].replace('-', '_') - setattr(parser.values, name, value) - -usage = '''\ -[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] - -Bootstraps a buildout-based project. - -Simply run this script in a directory containing a buildout.cfg, using the -Python that you want bin/buildout to use. - -Note that by using --setup-source and --download-base to point to -local resources, you can keep this script from going over the network. -''' - -parser = OptionParser(usage=usage) -parser.add_option("-v", "--version", dest="version", - help="use a specific zc.buildout version") -parser.add_option("-d", "--distribute", - action="store_true", dest="use_distribute", default=False, - help="Use Distribute rather than Setuptools.") -parser.add_option("--setup-source", action="callback", dest="setup_source", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or file location for the setup file. " - "If you use Setuptools, this will default to " + - setuptools_source + "; if you use Distribute, this " - "will default to " + distribute_source +".")) -parser.add_option("--download-base", action="callback", dest="download_base", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or directory for downloading " - "zc.buildout and either Setuptools or Distribute. " - "Defaults to PyPI.")) -parser.add_option("--eggs", - help=("Specify a directory for storing eggs. Defaults to " - "a temporary directory that is deleted when the " - "bootstrap script completes.")) -parser.add_option("-t", "--accept-buildout-test-releases", - dest='accept_buildout_test_releases', - action="store_true", default=False, - help=("Normally, if you do not specify a --version, the " - "bootstrap script and buildout gets the newest " - "*final* versions of zc.buildout and its recipes and " - "extensions for you. If you use this flag, " - "bootstrap and buildout will get the newest releases " - "even if they are alphas or betas.")) -parser.add_option("-c", None, action="store", dest="config_file", - help=("Specify the path to the buildout configuration " - "file to be used.")) - -options, args = parser.parse_args() - -# if -c was provided, we push it back into args for buildout's main function -if options.config_file is not None: - args += ['-c', options.config_file] - -if options.eggs: - eggs_dir = os.path.abspath(os.path.expanduser(options.eggs)) -else: - eggs_dir = tempfile.mkdtemp() - -if options.setup_source is None: - if options.use_distribute: - options.setup_source = distribute_source - else: - options.setup_source = setuptools_source - -if options.accept_buildout_test_releases: - args.append('buildout:accept-buildout-test-releases=true') -args.append('bootstrap') - -try: - import pkg_resources - import setuptools # A flag. Sometimes pkg_resources is installed alone. - if not hasattr(pkg_resources, '_distribute'): - raise ImportError -except ImportError: - ez_code = urllib2.urlopen( - options.setup_source).read().replace('\r\n', '\n') - ez = {} - exec ez_code in ez - setup_args = dict(to_dir=eggs_dir, download_delay=0) - if options.download_base: - setup_args['download_base'] = options.download_base - if options.use_distribute: - setup_args['no_fake'] = True - ez['use_setuptools'](**setup_args) - if 'pkg_resources' in sys.modules: - reload(sys.modules['pkg_resources']) - import pkg_resources - # This does not (always?) update the default working set. We will - # do it. - for path in sys.path: - if path not in pkg_resources.working_set.entries: - pkg_resources.working_set.add_entry(path) - -cmd = [quote(sys.executable), - '-c', - quote('from setuptools.command.easy_install import main; main()'), - '-mqNxd', - quote(eggs_dir)] - -if not has_broken_dash_S: - cmd.insert(1, '-S') - -find_links = options.download_base -if not find_links: - find_links = os.environ.get('bootstrap-testing-find-links') -if find_links: - cmd.extend(['-f', quote(find_links)]) - -if options.use_distribute: - setup_requirement = 'distribute' -else: - setup_requirement = 'setuptools' -ws = pkg_resources.working_set -setup_requirement_path = ws.find( - pkg_resources.Requirement.parse(setup_requirement)).location -env = dict( - os.environ, - PYTHONPATH=setup_requirement_path) - -requirement = 'zc.buildout' -version = options.version -if version is None and not options.accept_buildout_test_releases: - # Figure out the most recent final version of zc.buildout. - import setuptools.package_index - _final_parts = '*final-', '*final' - def _final_version(parsed_version): - for part in parsed_version: - if (part[:1] == '*') and (part not in _final_parts): - return False - return True - index = setuptools.package_index.PackageIndex( - search_path=[setup_requirement_path]) - if find_links: - index.add_find_links((find_links,)) - req = pkg_resources.Requirement.parse(requirement) - if index.obtain(req) is not None: - best = [] - bestv = None - for dist in index[req.project_name]: - distv = dist.parsed_version - if _final_version(distv): - if bestv is None or distv > bestv: - best = [dist] - bestv = distv - elif distv == bestv: - best.append(dist) - if best: - best.sort() - version = best[-1].version -if version: - requirement = '=='.join((requirement, version)) -cmd.append(requirement) - -if is_jython: - import subprocess - exitcode = subprocess.Popen(cmd, env=env).wait() -else: # Windows prefers this, apparently; otherwise we would prefer subprocess - exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env])) -if exitcode != 0: - sys.stdout.flush() - sys.stderr.flush() - print ("An error occurred when trying to install zc.buildout. " - "Look above this message for any errors that " - "were output by easy_install.") - sys.exit(exitcode) - -ws.add_entry(eggs_dir) -ws.require(requirement) -import zc.buildout.buildout -zc.buildout.buildout.main(args) -if not options.eggs: # clean up temporary egg directory - shutil.rmtree(eggs_dir) diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..d9bfea8 --- /dev/null +++ b/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash -uex + +# Remove dist directory. +rm -rf build + +# Build Sphinx. +for lang in "en" "ja" +do + sphinx-build -b html -c source "source/${lang}" "build/${lang}" +done + +# Copy index.html to build directory. +cp supplement/index.html build diff --git a/buildout.cfg b/buildout.cfg deleted file mode 100644 index cc17dea..0000000 --- a/buildout.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[buildout] -parts = env - -[env] -recipe = zc.recipe.egg -eggs = - sphinx -# PIL -# sphinxcontrib-blockdiag -# rst2pdf -# seqdiag -# netdiag - -interpreter = py diff --git a/ja.json b/ja.json deleted file mode 100644 index 90e99b4..0000000 --- a/ja.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "embeddedFonts" : - [[ - "VL-Gothic-Regular.ttf", - "VL-PGothic-Regular.ttf" - ]], - "fontsAlias" : { - "stdFont": "VL-PGothic-Regular", - "stdBold": "VL-PGothic-Regular", - "stdItalic": "VL-PGothic-Regular", - "stdBoldItalic": "VL-PGothic-Regular", - "stdMono": "VL-Gothic-Regular" - }, - "styles" : [ - ["base" , { - "wordWrap": "CJK" - }], - ["literal" , { - "wordWrap": "None" - }] - ] -} diff --git a/make.bat b/make.bat deleted file mode 100644 index 641634b..0000000 --- a/make.bat +++ /dev/null @@ -1,113 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -set SPHINXBUILD=sphinx-build -set BUILDDIR=build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Jubatus.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Jubatus.ghc - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end diff --git a/source/OMakefile b/source/OMakefile deleted file mode 100644 index e69de29..0000000 diff --git a/source/_static/custom.css b/source/_static/custom.css old mode 100755 new mode 100644 diff --git a/source/_static/favicon.ico b/source/_static/favicon.ico old mode 100755 new mode 100644 diff --git a/source/_static/tanakh/pfi.jpg b/source/_static/tanakh/pfi.jpg deleted file mode 100644 index 2eec7a8..0000000 Binary files a/source/_static/tanakh/pfi.jpg and /dev/null differ diff --git a/source/_static/tanakh/presen.html b/source/_static/tanakh/presen.html deleted file mode 100644 index 1553f2d..0000000 --- a/source/_static/tanakh/presen.html +++ /dev/null @@ -1,611 +0,0 @@ -pficommonと<br>MessagePack-RPC

自己紹介

  • 田中英行 (@tanakh)
  • (株)Preferred Infrastracture 研究開発部門
  • ライブラリやサーバ作成など
  • Jubatusのサーバ部分


 

本日の概要

  • Jubatusとともにひっそりと公開したC++ライブラリ pficommon のご紹介
  • MessagePack-RPC についても少し

C++ライブラリ pficommon

pficommonとは?

  • C++用汎用ライブラリ
  • http://github.com/pfi/pficommon.git
  • マルチスレッドサーバとネットワークプログラミングをやりやすく
  • モダンなC++コードを書きやすく
  • Sedueで利用

開発コンセプト

  • 小さくインストールしやすい
    • ⇒ Boostはインストールするのが大変
  • 古いコンパイラ(g++-3.x.y)でも通る
    • ⇒ CentOSなどのサポート
  • C++0x (C++11) への移行のつなぎ

ライブラリ構成

  • pfi::lang
    • Boost/tr1/C++11-std の再実装
  • pfi::concurrent
    • 並行プログラミングのサポート
  • pfi::network
    • ネットワークプログラミングのサポート
  • pfi::text
    • テキスト処理・各種フォーマットのパーザ
  • pfi::data
    • 各種データ構造・アルゴリズム
  • pfi::database
    • データベースサポート

pfi::lang

  • モダンなC++コードを書くためのライブラリ

  • shared_ptr / scoped_ptr
  • function
  • bind
  • noncopyable
  • etc...

pfi::concurrent

  • 並行プログラミングのためのライブラリ

  • thread
  • (recursive) mutex / read-write mutex / scoped locker
  • conditional variable
  • 同期変数 / 同期キュー
  • タスクキュー
  • threading model
  • メモリバリア

-
pfi::concurrent::mvar<int> m;

void foo()
{
m.put(123);
}

int main()
{
pfi::concurrent::thread t(&foo);
t.start();
cout << m.take() << endl;
return 0;
}
-

pfi::network

  • ネットワークプログラミングのためのライブラリ

  • バッファ付きソケット
  • サーバソケット
  • 各種プロトコル
  • Webアプリケーション用インターフェース
  • RPC

例1: HTTPクライアント

low-levelな実装

-
int main()
{
stream_socket sock;
sock.connect("tanakh.jp", 80);
sock.puts("GET /rss.xml HTTP/1.0\r\n\r\n");
sock.flush();
string line;
while (sock.getline(line))
cout << line << endl;
}
-

例2: HTTPクライアントその2

ソケットストリームを利用

-
int main()
{
soocketstream ss("tanakh.jp", 80);
if (!ss) return 1; // cannot connect
ss << "GET /rss.xml HTTP/1.0\r\n\r\n" << flush;
for (string line; getline(ss, line); )
cout << line << endl;
}
-

例3: echoサーバ

-
int main()
{
server_socket ssock;
ssock.create(8888);
for (; ;) {
socketstream ss(ssock.accept());
for (string line; getline(ss, line); )
ss << line;
}
return 0;
}
-

例4: HTTPクライアント

HTTPライブラリ

-
int main()
{
pfi::network::http::request req("GET", uri("http://tanakh.jp/"), 1, 1);
shared_ptr<stream_socket> ss(new stream_socket());
ss->connect("tanakh.jp", 80);
req.send(ss);
pfi::network::http::response resp(ss);

for (string line; getline(resp.body(), line); )
cout<<line<<endl;

return 0;
}
-

RPC

  • 2つのRPCをサポート
    • pficommonプロトコル
    • MessagePack-RPC プロトコル
      • 後述

pficommon-RPC (1)

  • シグニチャを定義
-
RPC_PROC(add, int(int, int))    // method-def
RPC_PROC(hello, string(string)) // method-def
RPC_GEN(0 /* VERSION */, test, add, hello) // gen server, client
-

pficommon-RPC (2)

  • サーバ
-
int add(int x, int y){ return x + y; }

string hello(string s)
{
return "Hello, " + s;
}

int main()
{
test_server serv;
serv.set_add(&add);
serv.set_hello(&hello);
serv.serv(12345, 10); // port-num, thread-num
}
-

pficommon-RPC (3)

  • クライアント
-
int main()
{
test_client cli("localhost", 12345); // host, port-num

cout << cli.call_add(123, 456) << endl; // => 579
cout << cli.call_hello("World!") << endl; // => Hello, World!
}
-

他言語バインディング

  • RPCのシグニチャを記述したC++のヘッダファイルから、他言語バインディングを生成する genrpc というプログラムが付属
-
$ genrpc --php rpc.h
-

(いまのところPHPとHaskellだけ)

pfi::network::cgi

  • Webアプリケーションを C++ で楽に書くためのライブラリ
  • フロントエンドとバックエンドの分離
  • フロントエンド
    • text/plain
    • HTML4 / XHTML / HTML5
    • Json / XML
  • バックエンド
    • cgi
    • fcgi
    • standalone HTTP server

例1: シンプルCGI

-
class my_cgi : public cgi {
public:
void run(ostream &os){
// implementation...
head["Content-Type"] = "text/plain";
os << "Hello, " << query["name"] << endl;
}
};

int main()
{
// run as a CGI
run_cgi(my_cgi()).run();
}
-

XHTML CGI

-
class my_cgi : public xhtml_cgi {
public:
void run() {
html__ {
head__
title__
text__("Hoge Hoge Page");
body__ {
a__ { href__ = "http://tanakh.jp";
text__("hoge-");
}
br__;
}
}
}
};
-

バックエンド切り替え

fcgiとして実行

-
int main()
{
run_fcgi(my_cgi()).run();
}
-

Standaloneサーバとして実行

-
int main()
{
run_server(my_cgi(), port_number /* = 8080 */,
thread_num /* = 1 */, timeout /* = 10 */).start();
}
-

pfi::data

  • unordered_map / set
  • optional
  • LRU
  • SuffixArray
  • Digest / encoding
    • MD5, base64, ...
  • Aho-Corasick
  • FenwickTree
  • FFT
  • ...

pfi::data::serialization

  • シリアライザ
  • 大体Boost互換のインターフェース
-
class hoge {
public:
hoge() {}
private:
friend class pfi::data::serialization::access;
template <class Ar>
void serialize(Ar &ar) {
ar & a & s;
}
int a;
string s;
};
-

serializationによるreflectionもどき

  • シリアライザは、データの値を書きだす
  • 値の代わりに型を書きだせば
     ⇒ reflectionもどき
-
struct hoge {
template <class Ar> void serialize(Ar &ar) {
ar & MEMBER(a) & MEMBER(b);
}
string a;
vector<int> b;
};
int main()
{
shared_ptr<type_rep> typ = get_type<hoge>();
typ->print(cout); // => class(){string:a,array<int(4)>:b}
return 0;
}
-

serialization応用いろいろ

  • ユーザ定義型をRPCで送れるようになる
  • ユーザ定義型をJSONに相互変換できるようになる
  • ユーザ定義型のメンバの列挙ができる
     ⇒ RPCクライアントコード、テスタ自動生成など

pfi::database

  • データベースサポート
    • PostgreSQL / MySQL
-
int main()
{
shared_ptr<connection>
conn(mysql::connect("localhost", 3306, "dbname", "user", "passwd"));
transaction(conn) { // auto commit if success, otherwise rollback.
shared_ptr<statement>
stat(conn->prepare("SELECT * from hoge where bar > ?"));
stat->execute(3.14);
string name; int val;
while (stat->fetch_row(name, val)){ ... }
conn->run("INSERT INTO hoge (foo, bar) VALUES (?, ?)",
"test", 1.23);
}
}
-

pfi::text

  • JSON
  • CSV
  • HTML / XML
  • config file (.ini file)
  • ...

pfi::text::json

  • ユーザ定義型の自動変換
-
struct foo {
int a;
string b;
template <class Archive> void serialize(Archive &ar) {
ar & MEMBER(a) & MEMBER(b) & MEMBER(c);
}
};

int main()
{
foo f; f.a = 123; f.b = "test";
cout << to_json(f) << endl; // => { "a": 123, "b": "test" }
}
-

pficommonとMessagePack-RPC

MessagePackとは?

  • バイナリベースのオブジェクトシリアライズフォーマット http://msgpack.org/
    • ほぼJSONと同様のデータが扱える
  • シンプル・ハイパフォーマンス
  • 様々な言語のライブラリ
    • Ruby, Python, Perl, C/C+, Java, Haskell, ...

MessagePack-RPC

  • MessagePackフォーマットで通信を行うRPCが策定されている
  • シンプルなプロトコル
  • 色々な言語での実装がある
  • Jubatusでも採用

pficommonでのMessagePack-RPC

  • pficommonプロトコルのRPCと同じインターフェースで扱える
  • RPC_XXX => MPRPC_XXX に変えるだけ
-
MPRPC_PROC(add, int(int, int))    // method def
MPRPC_PROC(hello, string(string)) // method def
MPRPC_GEN(0 /* VERSION */, test /* NAME */,
add, hello) // METHODS
-

情報源など

Try it NOW!

It is now open source! You can try it:

-
$ git clone git://github.com/pfi/pficommon.git
$ cd pficommon
$ ./waf configure
$ ./waf build
$ sudo ./waf install
-

fork me!
-


 
 
 
 
 
 
 ご清聴ありがとうございました

diff --git a/source/_static/tanakh/rpc-web.png b/source/_static/tanakh/rpc-web.png deleted file mode 100644 index a7a523d..0000000 Binary files a/source/_static/tanakh/rpc-web.png and /dev/null differ diff --git a/source/_static/tanakh/style.css b/source/_static/tanakh/style.css deleted file mode 100644 index 7e18190..0000000 --- a/source/_static/tanakh/style.css +++ /dev/null @@ -1,15 +0,0 @@ -.slides.template-pfi > article:not(.nobackground):not(.biglogo) { - background: url(./pfi.jpg) 710px 625px no-repeat; - background-color: white; -} - -.template-pfi h3 { - font-size: 45px; - line-height: 50px; - padding: 0; - margin: 0; - padding-right: 40px; - font-weight: 600; - letter-spacing: -1px; - color: rgb(51, 51, 51); -} diff --git a/source/_static/tanakh/syntax.css b/source/_static/tanakh/syntax.css deleted file mode 100644 index 87e6407..0000000 --- a/source/_static/tanakh/syntax.css +++ /dev/null @@ -1,17 +0,0 @@ -table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre - { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; } -td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } -td.sourceCode { padding-left: 5px; } -code.sourceCode span.kw { color: #007020; font-weight: bold; } -code.sourceCode span.dt { color: #902000; } -code.sourceCode span.dv { color: #40a070; } -code.sourceCode span.bn { color: #40a070; } -code.sourceCode span.fl { color: #40a070; } -code.sourceCode span.ch { color: #4070a0; } -code.sourceCode span.st { color: #4070a0; } -code.sourceCode span.co { color: #60a0b0; font-style: italic; } -code.sourceCode span.ot { color: #007020; } -code.sourceCode span.al { color: red; font-weight: bold; } -code.sourceCode span.fu { color: #06287e; } -code.sourceCode span.re { } -code.sourceCode span.er { color: red; font-weight: bold; } diff --git a/source/conf.py b/source/conf.py index 5b3fd35..cb6ccb4 100644 --- a/source/conf.py +++ b/source/conf.py @@ -1,303 +1,80 @@ -# -*- coding: utf-8 -*- +# Configuration file for the Sphinx documentation builder. # -# Jubatus documentation build configuration file, created by -# sphinx-quickstart on Wed Mar 30 16:47:02 2011. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html -import sys, os +# -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.append(os.path.abspath('../../exts')) - -# -- General configuration ----------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['mpidl_domain', - 'jubamember', - 'sphinx.ext.autodoc', - 'sphinx.ext.autosummary', - 'sphinx.ext.doctest', - 'sphinx.ext.intersphinx', - 'sphinx.ext.mathjax', - 'sphinx.ext.napoleon', - 'sphinx.ext.viewcode', - 'sphinxcontrib.blockdiag', - 'sphinxcontrib.rubydomain'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['../../_templates'] -# The suffix of source filenames. -source_suffix = '.rst' +import os +import sys +sys.path.insert(0, os.path.abspath('../exts')) -# The encoding of source files. -#source_encoding = 'utf-8' -# The master toctree document. -master_doc = 'index' +# -- Project information ----------------------------------------------------- -# General information about the project. -project = u'Jubatus' -copyright = u'2011-2019 PFN & NTT' +project = 'Jubatus' +copyright = '2011-2019 PFN & NTT' +author = 'PFN & NTT' -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '' -# The full version, including alpha/beta/rc tags. +# The full version, including alpha/beta/rc tags release = '1.1.1' -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -today = ' ' # disable embedding dates -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of documents that shouldn't be included in the build. -#unused_docs = [] - -# List of directories, relative to source directory, that shouldn't be searched -# for source files. -exclude_trees = [] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True +# -- General configuration --------------------------------------------------- -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'mpidl_domain', + 'jubamember', + 'sphinxcontrib.blockdiag', +# 'sphinxcontrib.rubydomain', +] -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] -# -- Options for HTML output --------------------------------------------------- +# -- Options for HTML output ------------------------------------------------- -# The theme to use for HTML and HTML Help pages. Major themes that come with -# Sphinx are currently 'default' and 'sphinxdoc'. -# html_theme = 'default' -# html_theme = 'sphinxdoc' -# html_theme = 'jubatus' +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. html_theme = 'sphinx_rtd_theme' -# on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org -on_rtd = os.environ.get('READTHEDOCS', None) == 'True' - -if not on_rtd: # only import and set the theme if we're building docs locally - import sphinx_rtd_theme - html_theme = 'sphinx_rtd_theme' - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] - # Override default css to get a larger width for local build - def setup(app): - #app.add_javascript("custom.js") - app.add_stylesheet('custom.css') -else: - # Override default css to get a larger width for ReadTheDoc build - html_context = { - 'css_files': [ - 'https://media.readthedocs.org/css/sphinx_rtd_theme.css', - 'https://media.readthedocs.org/css/readthedocs-doc-embed.css', - '_static/custom.css', - ], -} - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -html_title = "Jubatus" - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] # The name of an image file (relative to this directory) to place at the top # of the sidebar. -html_logo = 'title.png' +html_logo = '_static/title.png' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. -html_favicon = 'favicon.ico' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['../_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_use_modindex = True - -# If false, no index is generated. -#html_use_index = True +html_favicon = '_static/favicon.ico' -# If true, the index is split into individual pages for each letter. -#html_split_index = False +# A list of CSS files. The entry must be a filename string or a tuple +# containing the filename string and the attributes dictionary. The filename +# must be relative to the html_static_path, or a full URI with scheme like +# http://example.org/style.css. The attributes is used for attributes of +# tag. It defaults to an empty list. +html_css_files = ['custom.css'] # If true, links to the reST sources are added to the pages. html_show_sourcelink = False -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = '' - # Output file base name for HTML help builder. htmlhelp_basename = 'Jubatusdoc' - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -#latex_paper_size = 'letter' - -# The font size ('10pt', '11pt' or '12pt'). -#latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'Jubatus.tex', u'Jubatus Documentation', - u'PFN\\&NTT', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_use_modindex = True - -# -- Options for PDF output -------------------------------------------------- -# Grouping the document tree into PDF files. List of tuples -# (source start file, target name, title, author, options). -# -# If there is more than one author, separate them with \\. -# For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' -# -# The options element is a dictionary that lets you override -# this config per-document. -# For example, -# ('index', u'MyProject', u'My Project', u'Author Name', -# dict(pdf_compressed = True)) -# would mean that specific document would be compressed -# regardless of the global pdf_compressed setting. -pdf_documents = [ - ('index', u'Jubatus', u'Jubtus', u'Author Name'), -] -# A comma-separated list of custom stylesheets. Example: -pdf_stylesheets = ['sphinx','kerning','a4','ja'] -# Create a compressed PDF -# Use True/False or 1/0 -# Example: compressed=True -#pdf_compressed = False -# A colon-separated list of folders to search for fonts. Example: -pdf_font_path = ['/usr/share/fonts/TTF', '/usr/share/texmf-dist/fonts/'] -# Language to be used for hyphenation support -pdf_language = "ja" -# Mode for literal blocks wider than the frame. Can be - -# overflow, shrink or truncate -#pdf_fit_mode = "shrink" -# Section level that forces a break page. -# For example: 1 means top-level sections start in a new page -# 0 means disabled -#pdf_break_level = 0 -# When a section starts in a new page, force it to be 'even', 'odd', -# or just use 'any' -#pdf_breakside = 'any' -# Insert footnotes where they are defined instead of -# at the end. -#pdf_inline_footnotes = True -# verbosity level. 0 1 or 2 -#pdf_verbosity = 0 -# If false, no index is generated. -#pdf_use_index = True -# If false, no modindex is generated. -#pdf_use_modindex = True -# If false, no coverpage is generated. -#pdf_use_coverpage = True -# Name of the cover page template to use -#pdf_cover_template = 'sphinxcover.tmpl' -# Documents to append as an appendix to all manuals. -#pdf_appendices = [] -# Enable experimental feature to split table cells. Use it -# if you get "DelayedTable too big" errors -#pdf_splittables = False -# Set the default DPI for images -#pdf_default_dpi = 72 -# Enable rst2pdf extension modules (default is empty list) -# you need vectorpdf for better sphinx's graphviz support -#pdf_extensions = ['vectorpdf'] -# Page template name for "regular" pages -#pdf_page_template = 'cutePage' - -# -- Options for manpage output -------------------------------------------------- -man_pages = [ - ('commands/jubatus_server', 'jubatus_server', 'Jubatus Server', 'PFN & NTT', 8), - ('commands/jubatus_proxy', 'jubatus_proxy', 'Jubatus Proxy', 'PFN & NTT', 8), - ('commands/jubaconfig', 'jubaconfig', 'jubaconfig', 'PFN & NTT', 8), - ('commands/jubavisor', 'jubavisor', 'jubavisor', 'PFN & NTT', 8), - ('commands/jubactl', 'jubactl', 'jubactl', 'PFN & NTT', 8), - ('commands/jubaconv', 'jubaconv', 'jubaconv', 'PFN & NTT', 1), - ('commands/jubadump', 'jubadump', 'jubadump', 'PFN & NTT', 1), - ('commands/jenerator', 'jenerator', 'jenerator', 'PFN & NTT', 1), -] diff --git a/source/en/conf.py b/source/en/conf.py deleted file mode 100644 index c79de32..0000000 --- a/source/en/conf.py +++ /dev/null @@ -1,2 +0,0 @@ -execfile("../conf.py") -language = 'en' diff --git a/source/ja/conf.py b/source/ja/conf.py deleted file mode 100644 index becf00f..0000000 --- a/source/ja/conf.py +++ /dev/null @@ -1,2 +0,0 @@ -execfile("../conf.py") -language = 'ja' diff --git a/supplement/html/ja/index_ja.html b/supplement/html/ja/index_ja.html deleted file mode 100644 index 44b83df..0000000 --- a/supplement/html/ja/index_ja.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - Jubatus - - - -

Jubatus

-

The document has moved here.

- - diff --git a/supplement/html/index.html b/supplement/index.html similarity index 100% rename from supplement/html/index.html rename to supplement/index.html