diff --git a/content/notes/ane.rst b/content/notes/ane.rst new file mode 100644 index 0000000..c1441fc --- /dev/null +++ b/content/notes/ane.rst @@ -0,0 +1,39 @@ +Le secret du bonheur +==================== + +:date: 20/11/2014 + +Un enfant demande à son père : + + Dis papa, quel est le secret pour être heureux ? + +Sans dire un mot, le père demande à son fils de le suivre ; +Ils sortent de la maison, le père sur leur vieil âne et le fils suivant à pied. + +Et les gens du village de dire : + + Mais quel mauvais père qui oblige ainsi son fils d'aller à pied ! + +Le lendemain ils sortent de nouveau. + +Le père ayant installé son fils sur l'âne et lui marchant à côté. + +Les gens du village dirent alors : + + Quel fils indigne, qui ne respecte pas son vieux père et le laisse aller à pied ! + +Le jour suivant, ils s'installent tous les deux sur l'âne avant de quitter la maison. +Les villageois commentèrent en disant : + + Ils ne respectent pas leur bête à la surcharger ainsi ! + +Le jour suivant, ils partirent en portant eux-mêmes leurs affaires, l'âne trottinant derrière eux. +Cette fois les gens du village y trouvèrent encore à redire : + + Voilà qu'ils portent eux-mêmes leurs bagages maintenant ! C'est le monde à l'envers ! + +De retour à la maison, le père dit à son fils : + + Tu me demandais l'autre jour le secret du bonheur. + Peu importe ce que tu fais, il y aura toujours quelqu'un pour y trouver à redire. + Fais ce qui te plaît et là tu seras vraiment heureux. diff --git a/content/pages/about.rst b/content/pages/about.rst index 1b2cab5..240a34d 100644 --- a/content/pages/about.rst +++ b/content/pages/about.rst @@ -1,12 +1,10 @@ -Hi, I'm Alexis, -############### +Bonjour, je suis Alexis +####################### :slug: about (english version below) -Bonjour, je suis Alexis. - Je suis un développeur logiciel intéressé par l'écologie, l'éducation (populaire !), la thématique agricole et le *Do It Yourself* (DIY). diff --git a/content/thoughts/language.rst b/content/thoughts/language.rst new file mode 100644 index 0000000..94e2b2a --- /dev/null +++ b/content/thoughts/language.rst @@ -0,0 +1,44 @@ +Language +######## + +:date: 2015-05-01 +:headline: Je me surprends à préférer le français à l'anglais pour m'exprimer + ici. + +.. epigraph:: + + Nous savons tous que le fait d'obliger les fonctionnaires internationaux, + diplomates ou ministres à s'exprimer dans une langue qui n'est pas la leur + équivaut à les placer en situation d'infériorité. **Cela les prive de la + capacité de nuance et de raffinement**, ce qui revient à faire des + concessions à ceux dont c'est la langue maternelle. + + Aussi nous savons tous que les concepts qui paraissent similaires sont + souvent différents d'une civilisation à l'autre. Les mots expriment une + culture, une façon de penser et une vision du monde. + + -- M. Boutros Boutros-Ghali, ancien secrétaire général des Nations Unies + +Je me surprends à préférer le français pour m'exprimer au lieu de l'anglais, +notemment au niveau des articles non-techniques. + +Il y a quelques années, alors que je terminais mes études en angleterre et que +je commançais à travailler pour Mozilla, on me proposait de venir aux +États-Unis, ce que j'ai refusé parce qu'exprimer mes points de vue de manière +fine m'était trop difficile dans une langue qui n'était pas la mienne. + +- Cela me permet de pouvoir tenir des discours avec des positions et un + argumentaire "fin", ce qui me serait beaucoup plus difficile dans une langue + que je maitrise moins; +- Sans même parler d'argumentaire, les mots utilisés dans ma langue maternelle + me permettent de maneuvrer plus finement et de faire passer des idées de + manière plus efficace; +- J'ai l'impression de pouvoir engager plus facilement avec les gens qui + m'entourent géographiquement, par exemple par rapport à la communauté + technophile / pythoniste francophone. +- Même si mon niveau d'anglais à progressé, ce n'est pas necessairement le cas + de mes interlocuteurs. + +Par contre, cela nuit clairement à engager avec d'autres personnes dont la +langue n'est pas la mienne, dans tels cas, traduire les contenus interessants +vers l'anglais semble une solution (chronophage). diff --git a/pelican.conf.py b/pelican.conf.py index 76a4030..f6ec530 100644 --- a/pelican.conf.py +++ b/pelican.conf.py @@ -6,8 +6,9 @@ PATH = "content" AUTHOR = u'Alexis Métaireau' -SITENAME = "Alexis' log" -THEME = "theme" +SITENAME = u"Alexis, pensées partagées" +THEME = "pelicanyan" +# THEME = "theme" CSS_FILE = "wide.css" DISQUS_SITENAME = 'notmyidea' @@ -16,6 +17,11 @@ SITEURL = '' RELATIVE_URLS = True TIMEZONE = "Europe/Paris" -LOCALE = "en_US.utf8" +LOCALE = "fr_FR.utf8" DEFAULT_DATE_FORMAT = ('%B %Y') +LINKS = [ + ('Code', 'https://github.com/ametaireau'), + ('Messages courts', 'https://twitter.com/ametaireau'), + ('A propos', 'http://blog.notmyidea.org/pages/about.html') +] diff --git a/pelicanyan/LICENSE b/pelicanyan/LICENSE new file mode 100644 index 0000000..b97c831 --- /dev/null +++ b/pelicanyan/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 @thomaswilley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/pelicanyan/README.md b/pelicanyan/README.md new file mode 100644 index 0000000..c72c2e1 --- /dev/null +++ b/pelicanyan/README.md @@ -0,0 +1,129 @@ +# Pelicanyan + +Pelicanyan brings Jekyll's [Lanyon Theme](https://github.com/poole/lanyon/) to +[Pelican](http://github.com/getpelican) and adds some Pelican niceties +including a sitemap.xml, robots.txt, humans.txt, etc. + +More information about the lanyon theme including screenshots and such +is best found over at the [Lanyon Repo](https://github.com/poole/lanyon/). Here's a sample: + +![Lanyon](https://f.cloud.github.com/assets/98681/1825266/be03f014-71b0-11e3-9539-876e61530e24.png) + +## Usage + +Assumes you've already got your [blog +created](http://docs.getpelican.com/en/3.5.0/quickstart.html) and have +cloned this repo. + +1. Download poole.css, lanyon.css, and syntax.css from the [Lanyon + repo](https://github.com/poole/lanyon/tree/master/public/css) and save into the static/css directory +2. Set basic theme-specific settings in your blog's pelicanconf.py: + - THEME='path-to-cloned-repo' + - GA_ACCOUNT (your GA account id, e.g., 'UA-12344321-1') assuming + you'd like GA enabled (see base.html) + - TWITTER_ACCOUNT (e.g., your twitter account name without the @) + - DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', + 'sitemap', 'robots', 'humans') + - ROBOTS_SAVE_AS = 'robots.txt' + - HUMANS_SAVE_AS = 'humans.txt' + - SITEMAP_SAVE_AS = 'sitemap.xml' + - DEFAULT_LANG = 'en' + - DATE_FORMATS = { 'en': '%B %d, %Y', } + - STATIC_PATHS = ['images', 'favicon.ico'] note: this assumes your + blog's article images are located in content/images/ and your favicon.ico is located in content/ + - (Additional Required Fields) AUTHOR, SITENAME, SITEURL + - (Optional) TYPOGRIFY=True (and pip3 install it of course) + - (Optional) Set SITEDESCRIPTION + - (Optional) Set your LINKS +3. Add your profile photo - Replace the 400x400 PNG located at + static/img/profile.png with your own + +Then to try it out locally, back in your blog's directory: +```bash +$ make clean && make devserver && open http://localhost:8000 +``` + +## Compatability & Caveats + +Pelicanyan's probably best considered alpha at this time and hasn't +undergone much testing - would welcome help finding & fixing bugs and +also with the browser compatability matrix! While it's likely that +Lanyon's options - e.g., reversing the layout, updating color scheme, +etc. - remain functional here, these haven't been tested either. + +## Author + +**Thomas Willey** +- +- + +## License + +Open sourced under the [MIT license](LICENSE). + +### Example Quickstart + +```bash +$ mkdir sample_blog && cd sample_blog/ +$ python3 -m virtualenv --no-site-packages --distribute venv +$ source venv/bin/activate +$ pip3 install pelican markdown typogrify +$ pelican-quickstart +``` + +``` + Where do you want to create your new web site? [.] + What will be the title of this web site? sample blog + Who will be the author of this web site? me + What will be the default language of this web site? [en] + Do you want to specify a URL prefix? e.g., http://example.com + (Y/n) n + Do you want to enable article pagination? (Y/n) n + Do you want to generate a Fabfile/Makefile to automate + generation and publishing? (Y/n) Y + Do you want an auto-reload & simpleHTTP script to assist with theme + and site development? (Y/n) Y + Do you want to upload your website using FTP? (y/N) n + Do you want to upload your website using SSH? (y/N) n + Do you want to upload your website using Dropbox? (y/N) n + Do you want to upload your website using S3? (y/N) n + Do you want to upload your website using Rackspace Cloud Files? + (y/N) n + Do you want to upload your website using GitHub Pages? (y/N) n + Done. Your new project is available at /xyz/sample_blog +``` + +```bash +$ git clone https://github.com/thomaswilley/pelicanyan.git +$ vim pelicanconf.py +``` +Append the following to pelicanconf.py: + +``` +THEME = 'pelicanyan' +GA_ACCOUNT = 'UA-12344321-1' +TWITTER_ACCOUNT = 'getpelican' +DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', 'sitemap', 'robots', 'humans') +ROBOTS_SAVE_AS = 'robots.txt' +HUMANS_SAVE_AS = 'humans.txt' +SITEMAP_SAVE_AS = 'sitemap.xml' +DEFAULT_LANG = 'en' +DATE_FORMATS = { 'en': '%B %d, %Y', } +STATIC_PATHS = ['images', 'favicon.ico'] +SITEDESCRIPTION = 'sample blog' +TYPOGRIFY=True +``` + +```bash +$ cd pelicanyan/static/css/ +$ wget https://raw.githubusercontent.com/poole/lanyon/master/public/css/lanyon.css +$ wget https://raw.githubusercontent.com/poole/lanyon/master/public/css/poole.css +$ wget https://raw.githubusercontent.com/poole/lanyon/master/public/css/syntax.css +$ cd ../../../ +``` +(back in /xyz/sample_blog) + +```bash +$ make clean && make html && make serve +$ open http://localhost:8000 +``` diff --git a/pelicanyan/static/.DS_Store b/pelicanyan/static/.DS_Store new file mode 100644 index 0000000..ca0d446 Binary files /dev/null and b/pelicanyan/static/.DS_Store differ diff --git a/pelicanyan/static/css/lanyon.css b/pelicanyan/static/css/lanyon.css new file mode 100644 index 0000000..90a467d --- /dev/null +++ b/pelicanyan/static/css/lanyon.css @@ -0,0 +1,563 @@ +/* + * ___ + * /\_ \ + * \//\ \ __ ___ __ __ ___ ___ + * \ \ \ /'__`\ /' _ `\/\ \/\ \ / __`\ /' _ `\ + * \_\ \_/\ \_\.\_/\ \/\ \ \ \_\ \/\ \_\ \/\ \/\ \ + * /\____\ \__/.\_\ \_\ \_\/`____ \ \____/\ \_\ \_\ + * \/____/\/__/\/_/\/_/\/_/`/___/> \/___/ \/_/\/_/ + * /\___/ + * \/__/ + * + * Designed, built, and released under MIT license by @mdo. Learn more at + * https://github.com/poole/lanyon. + */ + + +/* + * Contents + * + * Global resets + * Masthead + * Sidebar + * Slide effect + * Posts and pages + * Pagination + * Reverse layout + * Themes + */ + + +/* + * Global resets + * + * Update the foundational and global aspects of the page. + */ + +/* Prevent scroll on narrow devices */ +html, +body { + overflow-x: hidden; +} + +html { + font-family: "PT Serif", Georgia, "Times New Roman", serif; +} + +h1, h2, h3, h4, h5, h6 { + font-family: "PT Sans", Helvetica, Arial, sans-serif; + font-weight: 400; + color: #313131; + letter-spacing: -.025rem; +} + + +/* + * Wrapper + * + * The wrapper is used to position site content when the sidebar is toggled. We + * use an outter wrap to position the sidebar without interferring with the + * regular page content. + */ + +.wrap { + position: relative; + width: 100%; +} + + +/* + * Container + * + * Center the page content. + */ + +.container { + max-width: 28rem; +} +@media (min-width: 38em) { + .container { + max-width: 32rem; + } +} +@media (min-width: 56em) { + .container { + max-width: 38rem; + } +} + + +/* + * Masthead + * + * Super small header above the content for site name and short description. + */ + +.masthead { + padding-top: 1rem; + padding-bottom: 1rem; + margin-bottom: 3rem; + border-bottom: 1px solid #eee; +} +.masthead-title { + margin-top: 0; + margin-bottom: 0; + color: #505050; +} +.masthead-title a { + color: #505050; +} +.masthead-title small { + font-size: 75%; + font-weight: 400; + color: #c0c0c0; + letter-spacing: 0; +} + +@media (max-width: 48em) { + .masthead-title { + text-align: center; + } + .masthead-title small { + display: none; + } +} + + +/* + * Sidebar + * + * The sidebar is the drawer, the item we are toggling with our handy hamburger + * button in the corner of the page. + * + * This particular sidebar implementation was inspired by Chris Coyier's + * "Offcanvas Menu with CSS Target" article, and the checkbox variation from the + * comments by a reader. It modifies both implementations to continue using the + * checkbox (no change in URL means no polluted browser history), but this uses + * `position` for the menu to avoid some potential content reflow issues. + * + * Source: http://css-tricks.com/off-canvas-menu-with-css-target/#comment-207504 + */ + +/* Style and "hide" the sidebar */ +.sidebar { + position: fixed; + top: 0; + bottom: 0; + left: -14rem; + width: 14rem; + visibility: hidden; + overflow-y: auto; + font-family: "PT Sans", Helvetica, Arial, sans-serif; + font-size: .875rem; /* 15px */ + color: rgba(255,255,255,.6); + background-color: #202020; + -webkit-transition: all .3s ease-in-out; + transition: all .3s ease-in-out; +} +@media (min-width: 30em) { + .sidebar { + font-size: .75rem; /* 14px */ + } +} + +/* Sidebar content */ +.sidebar a { + font-weight: normal; + color: #fff; +} +.sidebar-item { + padding: 1rem; +} +.sidebar-item p:last-child { + margin-bottom: 0; +} + +/* Sidebar nav */ +.sidebar-nav { + border-bottom: 1px solid rgba(255,255,255,.1); +} +.sidebar-nav-item { + display: block; + padding: .5rem 1rem; + border-top: 1px solid rgba(255,255,255,.1); +} +.sidebar-nav-item.active, +a.sidebar-nav-item:hover, +a.sidebar-nav-item:focus { + text-decoration: none; + background-color: rgba(255,255,255,.1); + border-color: transparent; +} + +@media (min-width: 48em) { + .sidebar-item { + padding: 1.5rem; + } + .sidebar-nav-item { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} + +/* Hide the sidebar checkbox that we toggle with `.sidebar-toggle` */ +.sidebar-checkbox { + display: none; +} + +/* Style the `label` that we use to target the `.sidebar-checkbox` */ +.sidebar-toggle { + position: absolute; + top: 1rem; + left: 1rem; + display: block; + width: 2.2rem; + padding: .5rem .65rem; + color: #505050; + background-color: #fff; + border-radius: 4px; + cursor: pointer; +} +.sidebar-toggle:before { + display: block; + content: ""; + width: 100%; + padding-bottom: .125rem; + border-top: .375rem double; + border-bottom: .125rem solid; + + /* Make the border inside the box */ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.sidebar-toggle:active, +#sidebar-checkbox:checked ~ .sidebar-toggle { + color: #fff; + background-color: #505050; +} + +@media (min-width: 30.1em) { + .sidebar-toggle { + position: fixed; + width: 2.25rem; + } + .sidebar-toggle:before { + padding-bottom: .15rem; + border-top-width: .45rem; + border-bottom-width: .15rem; + } +} + + +/* Slide effect + * + * Handle the sliding effects of the sidebar and content in one spot, seperate + * from the default styles. + * + * As an a heads up, we don't use `transform: translate3d()` here because when + * mixed with `position: fixed;` for the sidebar toggle, it creates a new + * containing block. Put simply, the fixed sidebar toggle behaves like + * `position: absolute;` when transformed. + * + * Read more about it at http://meyerweb.com/eric/thoughts/2011/09/12/. + */ + +.wrap, +.sidebar, +.sidebar-toggle { + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} +.wrap, +.sidebar-toggle { + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; +} + +#sidebar-checkbox:checked + .sidebar { + z-index: 10; + visibility: visible; +} +#sidebar-checkbox:checked ~ .sidebar, +#sidebar-checkbox:checked ~ .wrap, +#sidebar-checkbox:checked ~ .sidebar-toggle { + -webkit-transform: translateX(14rem); + -ms-transform: translateX(14rem); + transform: translateX(14rem); +} + + +/* + * Posts and pages + * + * Each post is wrapped in `.post` and is used on default and post layouts. Each + * page is wrapped in `.page` and is only used on the page layout. + */ + +.page, +.post { + margin-bottom: 4em; +} + +/* Blog post or page title */ +.page-title, +.post-title, +.post-title a { + color: #303030; +} +.page-title, +.post-title { + margin-top: 0; +} + +/* Meta data line below post title */ +.post-date { + display: block; + margin-top: -.5rem; + margin-bottom: 1rem; + color: #9a9a9a; +} + +/* Related posts */ +.related { + padding-top: 2rem; + padding-bottom: 2rem; + border-top: 1px solid #eee; +} +.related-posts { + padding-left: 0; + list-style: none; +} +.related-posts h3 { + margin-top: 0; +} +.related-posts li small { + font-size: 75%; + color: #999; +} +.related-posts li a:hover { + color: #268bd2; + text-decoration: none; +} +.related-posts li a:hover small { + color: inherit; +} + + +/* + * Pagination + * + * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when + * there are no more previous or next posts to show. + */ + +.pagination { + overflow: hidden; /* clearfix */ + margin-left: -1rem; + margin-right: -1rem; + font-family: "PT Sans", Helvetica, Arial, sans-serif; + color: #ccc; + text-align: center; +} + +/* Pagination items can be `span`s or `a`s */ +.pagination-item { + display: block; + padding: 1rem; + border: 1px solid #eee; +} +.pagination-item:first-child { + margin-bottom: -1px; +} + +/* Only provide a hover state for linked pagination items */ +a.pagination-item:hover { + background-color: #f5f5f5; +} + +@media (min-width: 30em) { + .pagination { + margin: 3rem 0; + } + .pagination-item { + float: left; + width: 50%; + } + .pagination-item:first-child { + margin-bottom: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .pagination-item:last-child { + margin-left: -1px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +} + + +/* + * Reverse layout + * + * Flip the orientation of the page by placing the `.sidebar` and sidebar toggle + * on the right side. + */ + +.layout-reverse .sidebar { + left: auto; + right: -14rem; +} +.layout-reverse .sidebar-toggle { + left: auto; + right: 1rem; +} + +.layout-reverse #sidebar-checkbox:checked ~ .sidebar, +.layout-reverse #sidebar-checkbox:checked ~ .wrap, +.layout-reverse #sidebar-checkbox:checked ~ .sidebar-toggle { + -webkit-transform: translateX(-14rem); + -ms-transform: translateX(-14rem); + transform: translateX(-14rem); +} + + +/* + * Themes + * + * Apply custom color schemes by adding the appropriate class to the `body`. + * Based on colors from Base16: http://chriskempson.github.io/base16/#default. + */ + +/* Red */ +.theme-base-08 .sidebar, +.theme-base-08 .sidebar-toggle:active, +.theme-base-08 #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #ac4142; +} +.theme-base-08 .container a, +.theme-base-08 .sidebar-toggle, +.theme-base-08 .related-posts li a:hover { + color: #ac4142; +} + +/* Orange */ +.theme-base-09 .sidebar, +.theme-base-09 .sidebar-toggle:active, +.theme-base-09 #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #d28445; +} +.theme-base-09 .container a, +.theme-base-09 .sidebar-toggle, +.theme-base-09 .related-posts li a:hover { + color: #d28445; +} + +/* Yellow */ +.theme-base-0a .sidebar, +.theme-base-0a .sidebar-toggle:active, +.theme-base-0a #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #f4bf75; +} +.theme-base-0a .container a, +.theme-base-0a .sidebar-toggle, +.theme-base-0a .related-posts li a:hover { + color: #f4bf75; +} + +/* Green */ +.theme-base-0b .sidebar, +.theme-base-0b .sidebar-toggle:active, +.theme-base-0b #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #90a959; +} +.theme-base-0b .container a, +.theme-base-0b .sidebar-toggle, +.theme-base-0b .related-posts li a:hover { + color: #90a959; +} + +/* Cyan */ +.theme-base-0c .sidebar, +.theme-base-0c .sidebar-toggle:active, +.theme-base-0c #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #75b5aa; +} +.theme-base-0c .container a, +.theme-base-0c .sidebar-toggle, +.theme-base-0c .related-posts li a:hover { + color: #75b5aa; +} + +/* Blue */ +.theme-base-0d .sidebar, +.theme-base-0d .sidebar-toggle:active, +.theme-base-0d #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #6a9fb5; +} +.theme-base-0d .container a, +.theme-base-0d .sidebar-toggle, +.theme-base-0d .related-posts li a:hover { + color: #6a9fb5; +} + +/* Magenta */ +.theme-base-0e .sidebar, +.theme-base-0e .sidebar-toggle:active, +.theme-base-0e #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #aa759f; +} +.theme-base-0e .container a, +.theme-base-0e .sidebar-toggle, +.theme-base-0e .related-posts li a:hover { + color: #aa759f; +} + +/* Brown */ +.theme-base-0f .sidebar, +.theme-base-0f .sidebar-toggle:active, +.theme-base-0f #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #8f5536; +} +.theme-base-0f .container a, +.theme-base-0f .sidebar-toggle, +.theme-base-0f .related-posts li a:hover { + color: #8f5536; +} + + +/* + * Overlay sidebar + * + * Make the sidebar content overlay the viewport content instead of pushing it + * aside when toggled. + */ + +.sidebar-overlay #sidebar-checkbox:checked ~ .wrap { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar-toggle { + box-shadow: 0 0 0 .25rem #fff; +} +.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar { + box-shadow: .25rem 0 .5rem rgba(0,0,0,.1); +} + +/* Only one tweak for a reverse layout */ +.layout-reverse.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar { + box-shadow: -.25rem 0 .5rem rgba(0,0,0,.1); +} + +.attribution { + font-weight: bold; + font-size: 0.8em; + text-align: right; +} + +blockquote { + padding-right: 15px !important; +} diff --git a/pelicanyan/static/css/poole.css b/pelicanyan/static/css/poole.css new file mode 100644 index 0000000..9990037 --- /dev/null +++ b/pelicanyan/static/css/poole.css @@ -0,0 +1,430 @@ +/* + * ___ + * /\_ \ + * _____ ___ ___\//\ \ __ + * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ + * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ + * \ \ ,__/\ \____/\ \____//\____\ \____\ + * \ \ \/ \/___/ \/___/ \/____/\/____/ + * \ \_\ + * \/_/ + * + * Designed, built, and released under MIT license by @mdo. Learn more at + * https://github.com/poole/poole. + */ + + +/* + * Contents + * + * Body resets + * Custom type + * Messages + * Container + * Masthead + * Posts and pages + * Pagination + * Reverse layout + * Themes + */ + + +/* + * Body resets + * + * Update the foundational and global aspects of the page. + */ + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html, +body { + margin: 0; + padding: 0; +} + +html { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 1.5; +} +@media (min-width: 38em) { + html { + font-size: 20px; + } +} + +body { + color: #515151; + background-color: #fff; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +/* No `:visited` state is required by default (browsers will use `a`) */ +a { + color: #268bd2; + text-decoration: none; +} +a strong { + color: inherit; +} +/* `:focus` is linked to `:hover` for basic accessibility */ +a:hover, +a:focus { + text-decoration: underline; +} + +/* Headings */ +h1, h2, h3, h4, h5, h6 { + margin-bottom: .5rem; + font-weight: bold; + line-height: 1.25; + color: #313131; + text-rendering: optimizeLegibility; +} +h1 { + font-size: 2rem; +} +h2 { + margin-top: 1rem; + font-size: 1.5rem; +} +h3 { + margin-top: 1.5rem; + font-size: 1.25rem; +} +h4, h5, h6 { + margin-top: 1rem; + font-size: 1rem; +} + +/* Body text */ +p { + margin-top: 0; + margin-bottom: 1rem; +} + +strong { + color: #303030; +} + + +/* Lists */ +ul, ol, dl { + margin-top: 0; + margin-bottom: 1rem; +} + +dt { + font-weight: bold; +} +dd { + margin-bottom: .5rem; +} + +/* Misc */ +hr { + position: relative; + margin: 1.5rem 0; + border: 0; + border-top: 1px solid #eee; + border-bottom: 1px solid #fff; +} + +abbr { + font-size: 85%; + font-weight: bold; + color: #555; + text-transform: uppercase; +} +abbr[title] { + cursor: help; + border-bottom: 1px dotted #e5e5e5; +} + +/* Code */ +code, +pre { + font-family: Menlo, Monaco, "Courier New", monospace; +} +code { + padding: .25em .5em; + font-size: 85%; + color: #bf616a; + background-color: #f9f9f9; + border-radius: 3px; +} +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + padding: 1rem; + font-size: .8rem; + line-height: 1.4; + white-space: pre; + white-space: pre-wrap; + word-break: break-all; + word-wrap: break-word; + background-color: #f9f9f9; +} +pre code { + padding: 0; + font-size: 100%; + color: inherit; + background-color: transparent; +} + +/* Pygments via Jekyll */ +.highlight { + margin-bottom: 1rem; + border-radius: 4px; +} +.highlight pre { + margin-bottom: 0; +} + +/* Gist via GitHub Pages */ +.gist .gist-file { + font-family: Menlo, Monaco, "Courier New", monospace !important; +} +.gist .markdown-body { + padding: 15px; +} +.gist pre { + padding: 0; + background-color: transparent; +} +.gist .gist-file .gist-data { + font-size: .8rem !important; + line-height: 1.4; +} +.gist code { + padding: 0; + color: inherit; + background-color: transparent; + border-radius: 0; +} + +/* Quotes */ +blockquote { + padding: .5rem 1rem; + margin: .8rem 0; + color: #7a7a7a; + background-color: #F2FBFE +} +blockquote p:last-child { + margin-bottom: 0; +} +@media (min-width: 30em) { + blockquote { + padding-right: 5rem; + padding-left: 1.25rem; + } +} + +img { + display: block; + max-width: 100%; + margin: 0 0 1rem; + border-radius: 5px; +} + +/* Tables */ +table { + margin-bottom: 1rem; + width: 100%; + border: 1px solid #e5e5e5; + border-collapse: collapse; +} +td, +th { + padding: .25rem .5rem; + border: 1px solid #e5e5e5; +} +tbody tr:nth-child(odd) td, +tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + + +/* + * Custom type + * + * Extend paragraphs with `.lead` for larger introductory text. + */ + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + + +/* + * Messages + * + * Show alert messages to users. You may add it to single elements like a `

`, + * or to a parent if there are multiple elements to show. + */ + +.message { + margin-bottom: 1rem; + padding: 1rem; + color: #717171; + background-color: #f9f9f9; +} + + +/* + * Container + * + * Center the page content. + */ + +.container { + max-width: 38rem; + padding-left: 1rem; + padding-right: 1rem; + margin-left: auto; + margin-right: auto; +} + + +/* + * Masthead + * + * Super small header above the content for site name and short description. + */ + +.masthead { + padding-top: 1rem; + padding-bottom: 1rem; + margin-bottom: 3rem; +} +.masthead-title { + margin-top: 0; + margin-bottom: 0; + color: #505050; +} +.masthead-title a { + color: #505050; +} +.masthead-title small { + font-size: 75%; + font-weight: 400; + color: #c0c0c0; + letter-spacing: 0; +} + + +/* + * Posts and pages + * + * Each post is wrapped in `.post` and is used on default and post layouts. Each + * page is wrapped in `.page` and is only used on the page layout. + */ + +.page, +.post { + margin-bottom: 4em; +} + +/* Blog post or page title */ +.page-title, +.post-title, +.post-title a { + color: #303030; +} +.page-title, +.post-title { + margin-top: 0; +} + +/* Meta data line below post title */ +.post-date { + display: block; + margin-top: -.5rem; + margin-bottom: 1rem; + color: #9a9a9a; +} + +/* Related posts */ +.related { + padding-top: 2rem; + padding-bottom: 2rem; + border-top: 1px solid #eee; +} +.related-posts { + padding-left: 0; + list-style: none; +} +.related-posts h3 { + margin-top: 0; +} +.related-posts li small { + font-size: 75%; + color: #999; +} +.related-posts li a:hover { + color: #268bd2; + text-decoration: none; +} +.related-posts li a:hover small { + color: inherit; +} + + +/* + * Pagination + * + * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when + * there are no more previous or next posts to show. + */ + +.pagination { + overflow: hidden; /* clearfix */ + margin-left: -1rem; + margin-right: -1rem; + font-family: "PT Sans", Helvetica, Arial, sans-serif; + color: #ccc; + text-align: center; +} + +/* Pagination items can be `span`s or `a`s */ +.pagination-item { + display: block; + padding: 1rem; + border: 1px solid #eee; +} +.pagination-item:first-child { + margin-bottom: -1px; +} + +/* Only provide a hover state for linked pagination items */ +a.pagination-item:hover { + background-color: #f5f5f5; +} + +@media (min-width: 30em) { + .pagination { + margin: 3rem 0; + } + .pagination-item { + float: left; + width: 50%; + } + .pagination-item:first-child { + margin-bottom: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .pagination-item:last-child { + margin-left: -1px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +} diff --git a/pelicanyan/static/css/styles.css b/pelicanyan/static/css/styles.css new file mode 100644 index 0000000..004010e --- /dev/null +++ b/pelicanyan/static/css/styles.css @@ -0,0 +1,34 @@ +.profile { + height: 80px; + width: 80px; + border-radius: 40px; + -webkit-border-radius: 40px; + -moz-border-radius: 40px; + background: url('../img/profile.png') no-repeat center center; + background-size: 99% auto; +} +.profile img { + opacity: 0; + filter: alpha(opactiy=0); +} +.content-title h2 { + color: #9a9a9a; +} +table { + max-width: 100% !important; +} +tr { + max-width: 100% !important; +} +td { + max-width: 100px !important; +} +td img { + width: 100% auto; +} +.tiny-note { + font-size: 8pt; +} +.muted { + color: #9a9a9a !important; +} diff --git a/pelicanyan/static/css/syntax.css b/pelicanyan/static/css/syntax.css new file mode 100644 index 0000000..15ad797 --- /dev/null +++ b/pelicanyan/static/css/syntax.css @@ -0,0 +1,65 @@ +.highlight .hll { background-color: #ffc; } +.highlight .c { color: #999; } /* Comment */ +.highlight .err { color: #a00; background-color: #faa } /* Error */ +.highlight .k { color: #069; } /* Keyword */ +.highlight .o { color: #555 } /* Operator */ +.highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #099 } /* Comment.Preproc */ +.highlight .c1 { color: #999; } /* Comment.Single */ +.highlight .cs { color: #999; } /* Comment.Special */ +.highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #f00 } /* Generic.Error */ +.highlight .gh { color: #030; } /* Generic.Heading */ +.highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */ +.highlight .go { color: #aaa } /* Generic.Output */ +.highlight .gp { color: #009; } /* Generic.Prompt */ +.highlight .gs { } /* Generic.Strong */ +.highlight .gu { color: #030; } /* Generic.Subheading */ +.highlight .gt { color: #9c6 } /* Generic.Traceback */ +.highlight .kc { color: #069; } /* Keyword.Constant */ +.highlight .kd { color: #069; } /* Keyword.Declaration */ +.highlight .kn { color: #069; } /* Keyword.Namespace */ +.highlight .kp { color: #069 } /* Keyword.Pseudo */ +.highlight .kr { color: #069; } /* Keyword.Reserved */ +.highlight .kt { color: #078; } /* Keyword.Type */ +.highlight .m { color: #f60 } /* Literal.Number */ +.highlight .s { color: #d44950 } /* Literal.String */ +.highlight .na { color: #4f9fcf } /* Name.Attribute */ +.highlight .nb { color: #366 } /* Name.Builtin */ +.highlight .nc { color: #0a8; } /* Name.Class */ +.highlight .no { color: #360 } /* Name.Constant */ +.highlight .nd { color: #99f } /* Name.Decorator */ +.highlight .ni { color: #999; } /* Name.Entity */ +.highlight .ne { color: #c00; } /* Name.Exception */ +.highlight .nf { color: #c0f } /* Name.Function */ +.highlight .nl { color: #99f } /* Name.Label */ +.highlight .nn { color: #0cf; } /* Name.Namespace */ +.highlight .nt { color: #2f6f9f; } /* Name.Tag */ +.highlight .nv { color: #033 } /* Name.Variable */ +.highlight .ow { color: #000; } /* Operator.Word */ +.highlight .w { color: #bbb } /* Text.Whitespace */ +.highlight .mf { color: #f60 } /* Literal.Number.Float */ +.highlight .mh { color: #f60 } /* Literal.Number.Hex */ +.highlight .mi { color: #f60 } /* Literal.Number.Integer */ +.highlight .mo { color: #f60 } /* Literal.Number.Oct */ +.highlight .sb { color: #c30 } /* Literal.String.Backtick */ +.highlight .sc { color: #c30 } /* Literal.String.Char */ +.highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #c30 } /* Literal.String.Double */ +.highlight .se { color: #c30; } /* Literal.String.Escape */ +.highlight .sh { color: #c30 } /* Literal.String.Heredoc */ +.highlight .si { color: #a00 } /* Literal.String.Interpol */ +.highlight .sx { color: #c30 } /* Literal.String.Other */ +.highlight .sr { color: #3aa } /* Literal.String.Regex */ +.highlight .s1 { color: #c30 } /* Literal.String.Single */ +.highlight .ss { color: #fc3 } /* Literal.String.Symbol */ +.highlight .bp { color: #366 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #033 } /* Name.Variable.Class */ +.highlight .vg { color: #033 } /* Name.Variable.Global */ +.highlight .vi { color: #033 } /* Name.Variable.Instance */ +.highlight .il { color: #f60 } /* Literal.Number.Integer.Long */ + +.css .o, +.css .o + .nt, +.css .nt + .nt { color: #999; } diff --git a/pelicanyan/static/img/2015-05-01.jpg b/pelicanyan/static/img/2015-05-01.jpg new file mode 100644 index 0000000..08917e0 Binary files /dev/null and b/pelicanyan/static/img/2015-05-01.jpg differ diff --git a/pelicanyan/static/img/profile.png b/pelicanyan/static/img/profile.png new file mode 100644 index 0000000..db6cf92 Binary files /dev/null and b/pelicanyan/static/img/profile.png differ diff --git a/pelicanyan/templates/archives.html b/pelicanyan/templates/archives.html new file mode 100644 index 0000000..050f268 --- /dev/null +++ b/pelicanyan/templates/archives.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} +{% block content %} +

Archives for {{ SITENAME }}

+ +
+{% for article in dates %} +
{{ article.locale_date }}
+
{{ article.title }}
+{% endfor %} +
+{% endblock %} diff --git a/pelicanyan/templates/article.html b/pelicanyan/templates/article.html new file mode 100644 index 0000000..90db97d --- /dev/null +++ b/pelicanyan/templates/article.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} +{% block head %} + {{ super() }} + {% for keyword in article.keywords %} + + {% endfor %} + + {% for description in article.description %} + + {% endfor %} + + {% for tag in article.tags %} + + {% endfor %} + +{% endblock %} + +{% block title %}{{ article.title }} - {{ SITENAME }}{% endblock %} + +{% block content %} +
+
+

+ {{ article.title }} +

+ + + {{ article.content }} +
+
+{% endblock %} diff --git a/pelicanyan/templates/author.html b/pelicanyan/templates/author.html new file mode 100644 index 0000000..e9f7870 --- /dev/null +++ b/pelicanyan/templates/author.html @@ -0,0 +1,7 @@ +{% extends "index.html" %} + +{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %} +{% block content_title %} +

Articles by {{ author }}

+{% endblock %} + diff --git a/pelicanyan/templates/authors.html b/pelicanyan/templates/authors.html new file mode 100644 index 0000000..4914904 --- /dev/null +++ b/pelicanyan/templates/authors.html @@ -0,0 +1,13 @@ +{% extends "base.html" %} + +{% block title %}{{ SITENAME }} - Authors{% endblock %} + +{% block content %} +

Authors on {{ SITENAME }}

+ + +{% endblock %} diff --git a/pelicanyan/templates/base.html b/pelicanyan/templates/base.html new file mode 100644 index 0000000..59ce788 --- /dev/null +++ b/pelicanyan/templates/base.html @@ -0,0 +1,109 @@ + + + + {% block head %} + + + + + + {% block title %}{{ SITENAME }}{% endblock title %} + + + {% if FEED_ALL_ATOM %} + + {% endif %} + {% if FEED_ALL_RSS %} + + {% endif %} + {% if FEED_ATOM %} + + {% endif %} + {% if FEED_RSS %} + + {% endif %} + {% if CATEGORY_FEED_ATOM and category %} + + {% endif %} + {% if CATEGORY_FEED_RSS and category %} + + {% endif %} + {% if TAG_FEED_ATOM and tag %} + + {% endif %} + {% if TAG_FEED_RSS and tag %} + + {% endif %} + + + + + + {% endblock head %} + + + + {% include 'sidebar.html' %} +
+
+
+

+ {{ SITENAME }} + {% if SITEDESCRIPTION %} + {{ SITEDESCRIPTION }} + {% endif %} +

+
+
+ +
+ {% block content %}{% endblock %} +
+ + + + + + + {% if GA_ACCOUNT %} + + {% endif %} +
+ + diff --git a/pelicanyan/templates/categories.html b/pelicanyan/templates/categories.html new file mode 100644 index 0000000..e29be0c --- /dev/null +++ b/pelicanyan/templates/categories.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% block content %} + +{% endblock %} diff --git a/pelicanyan/templates/category.html b/pelicanyan/templates/category.html new file mode 100644 index 0000000..da2f9b8 --- /dev/null +++ b/pelicanyan/templates/category.html @@ -0,0 +1,5 @@ +{% extends "index.html" %} +{% block content_title %} +

{{ category }} category

+{% endblock %} + diff --git a/pelicanyan/templates/humans.html b/pelicanyan/templates/humans.html new file mode 100644 index 0000000..e69de29 diff --git a/pelicanyan/templates/index.html b/pelicanyan/templates/index.html new file mode 100644 index 0000000..0c47a0d --- /dev/null +++ b/pelicanyan/templates/index.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} +{% block content %} +
+{% block content_title %} +{% endblock %} +
+
+ {% for article in articles_page.object_list %} +
+

+ {{ article.title }} +

+ + {{ article.headline }} +
+ {% endfor %} +
+{% include 'pagination.html' %} +{% endblock content %} diff --git a/pelicanyan/templates/page.html b/pelicanyan/templates/page.html new file mode 100644 index 0000000..5ceb779 --- /dev/null +++ b/pelicanyan/templates/page.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} +{% block title %}{{ page.title }}{%endblock%} +{% block content %} +

{{ page.title }}

+ {% import 'translations.html' as translations with context %} + {{ translations.translations_for(page) }} + + {{ page.content }} + + {% if page.modified %} +

+ Last updated: {{ page.locale_modified }} +

+ {% endif %} +{% endblock %} diff --git a/pelicanyan/templates/pagination.html b/pelicanyan/templates/pagination.html new file mode 100644 index 0000000..9765460 --- /dev/null +++ b/pelicanyan/templates/pagination.html @@ -0,0 +1,15 @@ +{% if DEFAULT_PAGINATION %} + + +{% endif %} diff --git a/pelicanyan/templates/period_archives.html b/pelicanyan/templates/period_archives.html new file mode 100644 index 0000000..d930dbb --- /dev/null +++ b/pelicanyan/templates/period_archives.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} +{% block content %} +

Archives for {{ period | reverse | join(' ') }}

+ +
+{% for article in dates %} +
{{ article.locale_date }}
+
{{ article.title }}
+{% endfor %} +
+{% endblock %} diff --git a/pelicanyan/templates/robots.html b/pelicanyan/templates/robots.html new file mode 100644 index 0000000..d195e20 --- /dev/null +++ b/pelicanyan/templates/robots.html @@ -0,0 +1,2 @@ +User-Agent: * +Sitemap: {{ SITEURL }}/sitemap.xml diff --git a/pelicanyan/templates/sidebar.html b/pelicanyan/templates/sidebar.html new file mode 100644 index 0000000..f4ca4ea --- /dev/null +++ b/pelicanyan/templates/sidebar.html @@ -0,0 +1,19 @@ + + + + diff --git a/pelicanyan/templates/sitemap.html b/pelicanyan/templates/sitemap.html new file mode 100644 index 0000000..0ce53d8 --- /dev/null +++ b/pelicanyan/templates/sitemap.html @@ -0,0 +1,32 @@ + + + + {% for article in articles %} + + {{ SITEURL }}/{{ article.url }} + 0.8 + + + {% for translation in article.translations %} + + {{ SITEURL }}/{{ translation.url }} + 0.8 + + {% endfor %} + {% endfor %} + + {% for page in pages %} + + {{ SITEURL }}/{{ page.url }} + 1.0 + + + {% for translation in page.translations %} + + {{ SITEURL }}/{{ translation.url }} + 1.0 + + {% endfor %} + {% endfor %} + + diff --git a/pelicanyan/templates/tag.html b/pelicanyan/templates/tag.html new file mode 100644 index 0000000..e69de29 diff --git a/pelicanyan/templates/tags.html b/pelicanyan/templates/tags.html new file mode 100644 index 0000000..b5d1482 --- /dev/null +++ b/pelicanyan/templates/tags.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} + +{% block title %}{{ SITENAME }} - Tags{% endblock %} + +{% block content %} +

Tags for {{ SITENAME }}

+ {%- for tag, articles in tags|sort %} +
  • {{ tag }} ({{ articles|count }})
  • + {% endfor %} +{% endblock %} diff --git a/pelicanyan/templates/translations.html b/pelicanyan/templates/translations.html new file mode 100644 index 0000000..db8c372 --- /dev/null +++ b/pelicanyan/templates/translations.html @@ -0,0 +1,9 @@ +{% macro translations_for(article) %} +{% if article.translations %} +Translations: +{% for translation in article.translations %} +{{ translation.lang }} +{% endfor %} +{% endif %} +{% endmacro %} +