Init
This commit is contained in:
		
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					cache/*
 | 
				
			||||||
 | 
					output/*
 | 
				
			||||||
 | 
					__pycache__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[submodule "plugins/thirdparty/md-metayaml"]
 | 
				
			||||||
 | 
						path = plugins/thirdparty/md-metayaml
 | 
				
			||||||
 | 
						url = git@git.246060.ru:/f1x1t/pelican-md-metayaml.git
 | 
				
			||||||
 | 
					[submodule "plugins/thirdparty/pelican-css"]
 | 
				
			||||||
 | 
						path = plugins/thirdparty/pelican-css
 | 
				
			||||||
 | 
						url = https://notabug.org/jorgesumle/pelican-css
 | 
				
			||||||
 | 
					[submodule "plugins/official"]
 | 
				
			||||||
 | 
						path = plugins/official
 | 
				
			||||||
 | 
						url = git@github.com:/getpelican/pelican-plugins.git
 | 
				
			||||||
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					Сайт ДСП
 | 
				
			||||||
 | 
					========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Установка:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					git clone git@git.246060.ru:/f1x1t/dsp-site dsp-site
 | 
				
			||||||
 | 
					cd dsp-site
 | 
				
			||||||
 | 
					git submodule update --init --recursive plugins/thirdparty/md-metayaml
 | 
				
			||||||
 | 
					git submodule update --init plugins/official
 | 
				
			||||||
 | 
					git submodule update --init plugins/thirdparty/pelican-css
 | 
				
			||||||
 | 
					git submodule update --init themes/bootstrap4
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Первую компиляцию нужно выполнить без учёта кэша:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					pelican --ignore-cache
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										106
									
								
								pelicanconf.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								pelicanconf.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*- #
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class i18n(object):
 | 
				
			||||||
 | 
					    # looks for translations in
 | 
				
			||||||
 | 
					    # {LOCALE_DIR}/{LANGUAGE}/LC_MESSAGES/{DOMAIN}.mo
 | 
				
			||||||
 | 
					    # if not present, falls back to default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DOMAIN = 'messages'
 | 
				
			||||||
 | 
					    LOCALE_DIR = '{THEME}/translations'
 | 
				
			||||||
 | 
					    LANGUAGES = ['ru']
 | 
				
			||||||
 | 
					    NEWSTYLE = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    __name__ = 'i18n'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def register(self):
 | 
				
			||||||
 | 
					        from pelican.signals import generator_init
 | 
				
			||||||
 | 
					        generator_init.connect(self.install_translator)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def install_translator(self, generator):
 | 
				
			||||||
 | 
					        import gettext
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            translator = gettext.translation(
 | 
				
			||||||
 | 
					                self.DOMAIN,
 | 
				
			||||||
 | 
					                self.LOCALE_DIR.format(THEME=THEME),
 | 
				
			||||||
 | 
					                self.LANGUAGES)
 | 
				
			||||||
 | 
					        except (OSError, IOError):
 | 
				
			||||||
 | 
					            translator = gettext.NullTranslations()
 | 
				
			||||||
 | 
					        generator.env.install_gettext_translations(translator, self.NEWSTYLE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AUTHOR = 'Андрей Астафьев'
 | 
				
			||||||
 | 
					SITENAME = 'ДСП'
 | 
				
			||||||
 | 
					SITEURL = 'https://dsp.246060.ru'
 | 
				
			||||||
 | 
					PORT = 33322
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PATH = 'wiki'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TIMEZONE = 'Europe/Moscow'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DEFAULT_LANG = 'ru'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Generation time
 | 
				
			||||||
 | 
					CACHE_CONTENT = True
 | 
				
			||||||
 | 
					LOAD_CONTENT_CACHE = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Feed generation is usually not desired when developing
 | 
				
			||||||
 | 
					FEED_ALL_ATOM = None
 | 
				
			||||||
 | 
					CATEGORY_FEED_ATOM = None
 | 
				
			||||||
 | 
					TRANSLATION_FEED_ATOM = None
 | 
				
			||||||
 | 
					AUTHOR_FEED_ATOM = None
 | 
				
			||||||
 | 
					AUTHOR_FEED_RSS = None
 | 
				
			||||||
 | 
					USE_FOLDER_AS_CATEGORY = True
 | 
				
			||||||
 | 
					DEFAULT_DATE = 'fs'
 | 
				
			||||||
 | 
					STATIC_PATHS = [ 'images', 'files' ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MARKDOWN = {
 | 
				
			||||||
 | 
					    'extension_configs': {
 | 
				
			||||||
 | 
					        'markdown.extensions.codehilite': {'css_class': 'highlight'},
 | 
				
			||||||
 | 
					        'markdown.extensions.extra': {},
 | 
				
			||||||
 | 
					        'markdown.extensions.meta': {},
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    'output_format': 'html5',
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DISPLAY_CATEGORIES_ON_MENU = False
 | 
				
			||||||
 | 
					DISPLAY_CATEGORIES_ON_SIDEBAR = True
 | 
				
			||||||
 | 
					DISPLAY_TAGS_ON_SIDEBAR = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THEME = 'themes/bootstrap4'
 | 
				
			||||||
 | 
					BOOTSTRAP_THEME = 'litera'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I18N_TEMPLATES_LANG = 'ru'
 | 
				
			||||||
 | 
					I18N_GETTEXT_NEWSTYLE = True
 | 
				
			||||||
 | 
					I18N_GETTEXT_LOCALEDIR = 'themes/bootstrap4/translations'
 | 
				
			||||||
 | 
					I18N_GETTEXT_DOMAIN = 'messages'
 | 
				
			||||||
 | 
					JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PLUGIN_PATHS = ["plugins/official", "plugins/thirdparty"]
 | 
				
			||||||
 | 
					PLUGINS = [i18n(), "md-metayaml", "render_math", "series", "subcategory", "tag_cloud", "tipue_search", "pelican-css"]
 | 
				
			||||||
 | 
					#PLUGINS = ["better_tables", "just_table"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
 | 
				
			||||||
 | 
					PLUGINS += ["yuicompressor"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', 'search')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Blogroll
 | 
				
			||||||
 | 
					LINKS = ()
 | 
				
			||||||
 | 
					# LINKS = (('Pelican', 'http://getpelican.com/'),
 | 
				
			||||||
 | 
					#          ('Python.org', 'http://python.org/'),
 | 
				
			||||||
 | 
					#          ('Jinja2', 'http://jinja.pocoo.org/'),
 | 
				
			||||||
 | 
					#          ('You can modify those links in your config file', '#'),)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Social widget
 | 
				
			||||||
 | 
					SOCIAL = ()
 | 
				
			||||||
 | 
					# SOCIAL = (('You can add links in your config file', '#'),
 | 
				
			||||||
 | 
					#           ('Another social link', '#'),)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PYGMENTS_STYLE='pastie'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DEFAULT_PAGINATION = 20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Uncomment following line if you want document-relative URLs when developing
 | 
				
			||||||
 | 
					RELATIVE_URLS = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								plugins/official
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								plugins/official
									
									
									
									
									
										Submodule
									
								
							 Submodule plugins/official added at cfc7a3f224
									
								
							
							
								
								
									
										1
									
								
								plugins/thirdparty/md-metayaml
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								plugins/thirdparty/md-metayaml
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule plugins/thirdparty/md-metayaml added at 37143ae6e1
									
								
							
							
								
								
									
										1
									
								
								plugins/thirdparty/pelican-css
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								plugins/thirdparty/pelican-css
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule plugins/thirdparty/pelican-css added at 5d6009dcf5
									
								
							
							
								
								
									
										25
									
								
								publishconf.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								publishconf.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*- #
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This file is only used if you use `make publish` or
 | 
				
			||||||
 | 
					# explicitly specify it as your config file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					sys.path.append(os.curdir)
 | 
				
			||||||
 | 
					from pelicanconf import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If your site is available via HTTPS, make sure SITEURL begins with https://
 | 
				
			||||||
 | 
					SITEURL = 'https://dsp.246060.ru'
 | 
				
			||||||
 | 
					RELATIVE_URLS = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FEED_ALL_ATOM = 'feeds/all.atom.xml'
 | 
				
			||||||
 | 
					CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DELETE_OUTPUT_DIRECTORY = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Following items are often useful when publishing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#DISQUS_SITENAME = ""
 | 
				
			||||||
 | 
					#GOOGLE_ANALYTICS = ""
 | 
				
			||||||
							
								
								
									
										80
									
								
								tasks.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								tasks.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import shutil
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					import datetime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from invoke import task
 | 
				
			||||||
 | 
					from invoke.util import cd
 | 
				
			||||||
 | 
					from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CONFIG = {
 | 
				
			||||||
 | 
					    # Local path configuration (can be absolute or relative to tasks.py)
 | 
				
			||||||
 | 
					    'deploy_path': 'output',
 | 
				
			||||||
 | 
					    # Remote server configuration
 | 
				
			||||||
 | 
					    'production': 'root@localhost:22',
 | 
				
			||||||
 | 
					    'dest_path': '/var/www',
 | 
				
			||||||
 | 
					    # Port for `serve`
 | 
				
			||||||
 | 
					    'port': 8000,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def clean(c):
 | 
				
			||||||
 | 
					    """Remove generated files"""
 | 
				
			||||||
 | 
					    if os.path.isdir(CONFIG['deploy_path']):
 | 
				
			||||||
 | 
					        shutil.rmtree(CONFIG['deploy_path'])
 | 
				
			||||||
 | 
					        os.makedirs(CONFIG['deploy_path'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def build(c):
 | 
				
			||||||
 | 
					    """Build local version of site"""
 | 
				
			||||||
 | 
					    c.run('pelican -s pelicanconf.py')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def rebuild(c):
 | 
				
			||||||
 | 
					    """`build` with the delete switch"""
 | 
				
			||||||
 | 
					    c.run('pelican -d -s pelicanconf.py')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def regenerate(c):
 | 
				
			||||||
 | 
					    """Automatically regenerate site upon file modification"""
 | 
				
			||||||
 | 
					    c.run('pelican -r -s pelicanconf.py')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def serve(c):
 | 
				
			||||||
 | 
					    """Serve site at http://localhost:8000/"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class AddressReuseTCPServer(RootedHTTPServer):
 | 
				
			||||||
 | 
					        allow_reuse_address = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    server = AddressReuseTCPServer(
 | 
				
			||||||
 | 
					        CONFIG['deploy_path'],
 | 
				
			||||||
 | 
					        ('', CONFIG['port']),
 | 
				
			||||||
 | 
					        ComplexHTTPRequestHandler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG))
 | 
				
			||||||
 | 
					    server.serve_forever()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def reserve(c):
 | 
				
			||||||
 | 
					    """`build`, then `serve`"""
 | 
				
			||||||
 | 
					    build(c)
 | 
				
			||||||
 | 
					    serve(c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def preview(c):
 | 
				
			||||||
 | 
					    """Build production version of site"""
 | 
				
			||||||
 | 
					    c.run('pelican -s publishconf.py')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@task
 | 
				
			||||||
 | 
					def publish(c):
 | 
				
			||||||
 | 
					    """Publish to production via rsync"""
 | 
				
			||||||
 | 
					    c.run('pelican -s publishconf.py')
 | 
				
			||||||
 | 
					    c.run(
 | 
				
			||||||
 | 
					        'rsync --delete --exclude ".DS_Store" -pthrvz -c '
 | 
				
			||||||
 | 
					        '{} {production}:{dest_path}'.format(
 | 
				
			||||||
 | 
					            CONFIG['deploy_path'].rstrip('/') + '/',
 | 
				
			||||||
 | 
					            **CONFIG))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								wiki/Prog/Git/Git замена адреса подмодуля.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								wiki/Prog/Git/Git замена адреса подмодуля.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					# Git: замена адреса подмодуля
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					title: "Git: замена адреса подмодуля"
 | 
				
			||||||
 | 
					category: Программирование
 | 
				
			||||||
 | 
					tags: программирование, git
 | 
				
			||||||
 | 
					summary:
 | 
				
			||||||
 | 
					CSS: table-100.css
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Если у подмодуля `thirdparty/example` нужно заменить адрес синхронизации
 | 
				
			||||||
 | 
					и имя используемой ветки, то в каталоге с файлом `.gitmodules`, в котором
 | 
				
			||||||
 | 
					содержится информация об этом подмодуле, нужно выполнить команды:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					git config --file=.gitmodules submodule.thirdparty/example.url https://github.com/username/ABC.git
 | 
				
			||||||
 | 
					git config --file=.gitmodules submodule.thirdparty/example.branch new-branch-name
 | 
				
			||||||
 | 
					git submodule sync
 | 
				
			||||||
 | 
					git submodule update --init --recursive --remote
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								wiki/Prog/Git/Git распаковка объекта.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								wiki/Prog/Git/Git распаковка объекта.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					# Git: распаковка объекта
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					title: "Git: распаковка объекта"
 | 
				
			||||||
 | 
					category: Программирование
 | 
				
			||||||
 | 
					tags: программирование, git
 | 
				
			||||||
 | 
					summary:
 | 
				
			||||||
 | 
					CSS: table-100.css
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					В случае повреждения репозитория можно восстановить отдельные
 | 
				
			||||||
 | 
					объекты, которые сохраняются в формате zlib. Пример команды:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					perl -MCompress::Zlib -e 'undef $/; print uncompress(<>)' < 1234567890abcdef1234567890abcdef012345 > file
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
		Reference in New Issue
	
	Block a user