├── .gitattributes ├── .gitignore ├── .openshift ├── README.md ├── action_hooks │ ├── build │ ├── deploy │ ├── post_deploy │ ├── pre_build │ └── secure_db.py ├── cron │ ├── README.cron │ ├── daily │ │ └── .gitignore │ ├── hourly │ │ └── .gitignore │ ├── minutely │ │ └── .gitignore │ ├── monthly │ │ └── .gitignore │ └── weekly │ │ ├── README │ │ ├── chrono.dat │ │ ├── chronograph │ │ ├── jobs.allow │ │ └── jobs.deny └── template.patch ├── README ├── README.md ├── application ├── blog ├── __init__.py ├── admin.py ├── feeds.py ├── forms.py ├── models.py ├── static │ ├── admin │ │ ├── css │ │ │ ├── base.css │ │ │ ├── changelists.css │ │ │ ├── dashboard.css │ │ │ ├── forms.css │ │ │ ├── ie.css │ │ │ ├── login.css │ │ │ ├── rtl.css │ │ │ └── widgets.css │ │ ├── img │ │ │ ├── changelist-bg.gif │ │ │ ├── changelist-bg_rtl.gif │ │ │ ├── default-bg-reverse.gif │ │ │ ├── default-bg.gif │ │ │ ├── deleted-overlay.gif │ │ │ ├── gis │ │ │ │ ├── move_vertex_off.png │ │ │ │ └── move_vertex_on.png │ │ │ ├── icon-no.gif │ │ │ ├── icon-unknown.gif │ │ │ ├── icon-yes.gif │ │ │ ├── icon_addlink.gif │ │ │ ├── icon_alert.gif │ │ │ ├── icon_calendar.gif │ │ │ ├── icon_changelink.gif │ │ │ ├── icon_clock.gif │ │ │ ├── icon_deletelink.gif │ │ │ ├── icon_error.gif │ │ │ ├── icon_searchbox.png │ │ │ ├── icon_success.gif │ │ │ ├── inline-delete-8bit.png │ │ │ ├── inline-delete.png │ │ │ ├── inline-restore-8bit.png │ │ │ ├── inline-restore.png │ │ │ ├── inline-splitter-bg.gif │ │ │ ├── nav-bg-grabber.gif │ │ │ ├── nav-bg-reverse.gif │ │ │ ├── nav-bg-selected.gif │ │ │ ├── nav-bg.gif │ │ │ ├── selector-icons.gif │ │ │ ├── selector-search.gif │ │ │ ├── sorting-icons.gif │ │ │ ├── tooltag-add.png │ │ │ └── tooltag-arrowright.png │ │ └── js │ │ │ ├── LICENSE-JQUERY.txt │ │ │ ├── SelectBox.js │ │ │ ├── SelectFilter2.js │ │ │ ├── actions.js │ │ │ ├── actions.min.js │ │ │ ├── admin │ │ │ ├── DateTimeShortcuts.js │ │ │ └── RelatedObjectLookups.js │ │ │ ├── calendar.js │ │ │ ├── collapse.js │ │ │ ├── collapse.min.js │ │ │ ├── core.js │ │ │ ├── inlines.js │ │ │ ├── inlines.min.js │ │ │ ├── jquery.init.js │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ ├── prepopulate.js │ │ │ ├── prepopulate.min.js │ │ │ ├── timeparse.js │ │ │ └── urlify.js │ ├── css │ │ ├── GitHub2.css │ │ ├── arta.css │ │ ├── ascetic.css │ │ ├── atelier-dune.dark.css │ │ ├── atelier-dune.light.css │ │ ├── atelier-forest.dark.css │ │ ├── atelier-forest.light.css │ │ ├── atelier-heath.dark.css │ │ ├── atelier-heath.light.css │ │ ├── atelier-lakeside.dark.css │ │ ├── atelier-lakeside.light.css │ │ ├── atelier-seaside.dark.css │ │ ├── atelier-seaside.light.css │ │ ├── brown_paper.css │ │ ├── brown_papersq.png │ │ ├── code.css │ │ ├── code.css.bak2 │ │ ├── code.css.bak3 │ │ ├── codepen-embed.css │ │ ├── color-brewer.css │ │ ├── dark.css │ │ ├── default.css │ │ ├── docco.css │ │ ├── evil-font.css │ │ ├── far.css │ │ ├── font-awesome.css │ │ ├── font-awesome.min.css │ │ ├── foundation.css │ │ ├── github.css │ │ ├── googlecode.css │ │ ├── hybrid.css │ │ ├── idea.css │ │ ├── ir_black.css │ │ ├── kimbie.dark.css │ │ ├── kimbie.light.css │ │ ├── magula.css │ │ ├── markdown.css │ │ ├── mono-blue.css │ │ ├── monokai.css │ │ ├── monokai_sublime.css │ │ ├── normalize.css │ │ ├── normalize.min.css │ │ ├── obsidian.css │ │ ├── paraiso.dark.css │ │ ├── paraiso.light.css │ │ ├── pojoaque.css │ │ ├── pojoaque.jpg │ │ ├── railscasts.css │ │ ├── rainbow.css │ │ ├── school_book.css │ │ ├── school_book.png │ │ ├── shCore.css │ │ ├── shCoreDefault.css │ │ ├── shCoreDjango.css │ │ ├── shCoreEclipse.css │ │ ├── shCoreEmacs.css │ │ ├── shCoreFadeToGrey.css │ │ ├── shCoreMDUltra.css │ │ ├── shCoreMidnight.css │ │ ├── shCoreRDark.css │ │ ├── shThemeDefault.css │ │ ├── shThemeDjango.css │ │ ├── shThemeEclipse.css │ │ ├── shThemeEmacs.css │ │ ├── shThemeFadeToGrey.css │ │ ├── shThemeMDUltra.css │ │ ├── shThemeMidnight.css │ │ ├── shThemeRDark.css │ │ ├── solarized_dark.css │ │ ├── solarized_light.css │ │ ├── style-feel.css │ │ ├── style.css │ │ ├── style2.css │ │ ├── sunburst.css │ │ ├── tomorrow-night-blue.css │ │ ├── tomorrow-night-bright.css │ │ ├── tomorrow-night-eighties.css │ │ ├── tomorrow-night.css │ │ ├── tomorrow.css │ │ ├── vs.css │ │ ├── widgets.css │ │ ├── xcode.css │ │ └── zenburn.css │ ├── font │ │ ├── mathix67-font.eot?56173255 │ │ ├── mathix67-font.eot?56173255.1 │ │ ├── mathix67-font.svg?56173255 │ │ ├── mathix67-font.ttf?56173255 │ │ ├── mathix67-font.woff?56173255 │ │ └── mathix67-font.woff?56173255.1 │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── mathix67-font.eot?56173255 │ │ ├── mathix67-font.eot?56173255.1 │ │ ├── mathix67-font.svg?56173255 │ │ ├── mathix67-font.ttf?56173255 │ │ ├── mathix67-font.woff?56173255 │ │ └── mathix67-font.woff?56173255.1 │ ├── img │ │ ├── avatar.jpg │ │ ├── duck.png │ │ ├── g2.jpg │ │ ├── girl.png │ │ ├── girl2.png │ │ ├── hat.png │ │ └── sleep.gif │ └── js │ │ ├── comment-reply.js │ │ ├── highlight.pack.js │ │ ├── navigation.js │ │ ├── shAutoloader.js │ │ ├── shBrushAS3.js │ │ ├── shBrushAppleScript.js │ │ ├── shBrushBash.js │ │ ├── shBrushCSharp.js │ │ ├── shBrushColdFusion.js │ │ ├── shBrushCpp.js │ │ ├── shBrushCss.js │ │ ├── shBrushDelphi.js │ │ ├── shBrushDiff.js │ │ ├── shBrushErlang.js │ │ ├── shBrushGroovy.js │ │ ├── shBrushJScript.js │ │ ├── shBrushJava.js │ │ ├── shBrushJavaFX.js │ │ ├── shBrushPerl.js │ │ ├── shBrushPhp.js │ │ ├── shBrushPlain.js │ │ ├── shBrushPowerShell.js │ │ ├── shBrushPython.js │ │ ├── shBrushRuby.js │ │ ├── shBrushSass.js │ │ ├── shBrushScala.js │ │ ├── shBrushSql.js │ │ ├── shBrushVb.js │ │ ├── shBrushXml.js │ │ ├── shCore.js │ │ ├── shLegacy.js │ │ └── theme-customizer.js ├── templates │ ├── admin │ │ ├── 404.html │ │ ├── 500.html │ │ ├── actions.html │ │ ├── app_index.html │ │ ├── auth │ │ │ └── user │ │ │ │ ├── add_form.html │ │ │ │ └── change_password.html │ │ ├── base.html │ │ ├── base_site.html │ │ ├── change_form.html │ │ ├── change_list.html │ │ ├── change_list_results.html │ │ ├── date_hierarchy.html │ │ ├── delete_confirmation.html │ │ ├── delete_selected_confirmation.html │ │ ├── edit_inline │ │ │ ├── stacked.html │ │ │ └── tabular.html │ │ ├── filter.html │ │ ├── includes │ │ │ └── fieldset.html │ │ ├── index.html │ │ ├── invalid_setup.html │ │ ├── login.html │ │ ├── object_history.html │ │ ├── pagination.html │ │ ├── popup_response.html │ │ ├── prepopulated_fields_js.html │ │ ├── search_form.html │ │ └── submit_line.html │ ├── archive.html │ ├── archives.html │ ├── base.html │ ├── comment.html │ ├── comment_block copy.html │ ├── comment_block.html │ ├── content.html │ ├── footer.html │ ├── header.html │ ├── index.html │ ├── page.html │ ├── page_nator.html │ ├── page_nav.html │ ├── sidebar.html │ └── test.html ├── templatetags │ ├── __init__.py │ ├── gravatar.py │ ├── md2.py │ ├── my_filter.py │ └── myfilter.py ├── tests.py ├── urls.py ├── util.py ├── views.py └── widgets.py ├── data ├── .gitkeep ├── s.png ├── screen-shot1.png └── screen-shot2.png ├── libs └── .gitkeep ├── manage.py ├── media ├── .DS_Store └── uploads │ └── test.txt ├── mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ├── nginx-cfg └── default.conf ├── nginx-default-cfg └── alias.conf ├── requirements.txt ├── setup.py ├── static ├── README ├── css │ └── tst ├── img │ └── tst └── js │ └── tst ├── templates ├── archive.html ├── base.html ├── comment.html ├── content.html ├── footer.html ├── header.html ├── index.html ├── page.html ├── page_nator.html ├── page_nav.html ├── sidebar.html └── test.html └── uwsgi.ini /.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-language=Python 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[co] 2 | *.sw[po] 3 | *.bak 4 | *.orig 5 | *~ 6 | .project 7 | .pydevproject 8 | -------------------------------------------------------------------------------- /.openshift/README.md: -------------------------------------------------------------------------------- 1 | # Django Template for OpenShift 2 | 3 | ## Template App Information 4 | Product: Django 5 | Version: 1.4 6 | Source: https://github.com/django/django.git 7 | Commit: 2591fb8d4c0246f68b79554976c012039df75359 8 | 9 | ## Maintenance 10 | This folder contains a diff file that includes the changes made to the 11 | stock Django app in order to make it OpenShift-Template-ready. If 12 | you are a maintainer tasked with updating the Django template, you 13 | may be able to use this patch file on the updated Django code to 14 | automatically reapply these changes. 15 | 16 | Here are the steps involved: 17 | 18 | 1. Under the 'wsgi' directory, apply any patches required to update the 'openshift' Django app. 19 | 2. From the template root directory, run 'git apply --check .openshift/template.patch' to test for patching problems. 20 | 3. Next run 'git am --signoff < .openshift/template.patch' to apply the patch to the template. 21 | 22 | If this process succeeds, then the changes have been automatically 23 | applied. Otherwise it may be necessary to manually apply the 24 | changes. If the base package has changed enough, you may need to 25 | re-audit the base code and generate a new patch file. 26 | -------------------------------------------------------------------------------- /.openshift/action_hooks/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This is a simple build script and will be executed on your CI system if 3 | # available. Otherwise it will execute while your application is stopped 4 | # before the deploy step. This script gets executed directly, so it 5 | # could be python, php, ruby, etc. 6 | 7 | # Activate VirtualEnv in order to use the correct libraries 8 | -------------------------------------------------------------------------------- /.openshift/action_hooks/deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This deploy hook gets executed after dependencies are resolved and the 3 | # build hook has been run but before the application has been started back 4 | # up again. This script gets executed directly, so it could be python, php, 5 | # ruby, etc. 6 | 7 | source $OPENSHIFT_HOMEDIR/python/virtenv/bin/activate 8 | 9 | if [ ! -f $OPENSHIFT_DATA_DIR/db.sqlite3 ] 10 | then 11 | python "$OPENSHIFT_REPO_DIR"wsgi/mysite/manage.py syncdb 12 | echo "Copying $OPENSHIFT_REPO_DIR/wsgi/mysite/db.sqlite3 to $OPENSHIFT_DATA_DIR" 13 | cp "$OPENSHIFT_REPO_DIR"wsgi/mysite/db.sqlite3 $OPENSHIFT_DATA_DIR 14 | #python "$OPENSHIFT_REPO_DIR".openshift/action_hooks/secure_db.py | tee ${OPENSHIFT_DATA_DIR}/CREDENTIALS 15 | #python "$OPENSHIFT_REPO_DIR"wsgi/mysite/manage.py syncdb 16 | 17 | else 18 | echo "Executing 'python $OPENSHIFT_REPO_DIR/wsgi/mysite/manage.py syncdb --noinput'" 19 | python "$OPENSHIFT_REPO_DIR"wsgi/mysite/manage.py syncdb --noinput 20 | fi 21 | 22 | echo "Executing 'python $OPENSHIFT_REPO_DIR/wsgi/mysite/manage.py collectstatic --noinput'" 23 | python "$OPENSHIFT_REPO_DIR"wsgi/mysite/manage.py collectstatic --noinput 24 | -------------------------------------------------------------------------------- /.openshift/action_hooks/post_deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This is a simple post deploy hook executed after your application 3 | # is deployed and started. This script gets executed directly, so 4 | # it could be python, php, ruby, etc. -------------------------------------------------------------------------------- /.openshift/action_hooks/pre_build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This is a simple script and will be executed on your CI system if 3 | # available. Otherwise it will execute while your application is stopped 4 | # before the build step. This script gets executed directly, so it 5 | # could be python, php, ruby, etc. -------------------------------------------------------------------------------- /.openshift/action_hooks/secure_db.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import hashlib, imp, os, sqlite3 3 | 4 | # Load the OpenShift helper library 5 | lib_path = os.environ['OPENSHIFT_REPO_DIR'] + 'wsgi/openshift/' 6 | modinfo = imp.find_module('openshiftlibs', [lib_path]) 7 | openshiftlibs = imp.load_module('openshiftlibs', modinfo[0], modinfo[1], modinfo[2]) 8 | 9 | # Open the database 10 | conn = sqlite3.connect(os.environ['OPENSHIFT_DATA_DIR'] + '/sqlite3.db') 11 | c = conn.cursor() 12 | 13 | # Grab the default security info 14 | c.execute('SELECT password FROM AUTH_USER WHERE id = 1') 15 | pw_info = c.fetchone()[0] 16 | 17 | # The password is stored as [hashtype]$[salt]$[hashed] 18 | pw_fields = pw_info.split("$") 19 | hashtype = pw_fields[0] 20 | old_salt = pw_fields[1] 21 | old_pass = pw_fields[2] 22 | 23 | # Randomly generate a new password and a new salt 24 | # The PASSWORD value below just sets the length (12) 25 | # for the real new password. 26 | old_keys = { 'SALT': old_salt, 'PASS': '123456789ABC' } 27 | use_keys = openshiftlibs.openshift_secure(old_keys) 28 | 29 | # Encrypt the new password 30 | new_salt = use_keys['SALT'] 31 | new_pass = use_keys['PASS'] 32 | new_hashed = hashlib.sha1(new_salt + new_pass).hexdigest() 33 | new_pw_info = "$".join([hashtype,new_salt,new_hashed]) 34 | 35 | # Update the database 36 | c.execute('UPDATE AUTH_USER SET password = ? WHERE id = 1', [new_pw_info]) 37 | conn.commit() 38 | c.close() 39 | conn.close() 40 | 41 | # Print the new password info 42 | print "Django application credentials:\n\tuser: admin\n\t" + new_pass 43 | -------------------------------------------------------------------------------- /.openshift/cron/README.cron: -------------------------------------------------------------------------------- 1 | Run scripts or jobs on a periodic basis 2 | ======================================= 3 | Any scripts or jobs added to the minutely, hourly, daily, weekly or monthly 4 | directories will be run on a scheduled basis (frequency is as indicated by the 5 | name of the directory) using run-parts. 6 | 7 | run-parts ignores any files that are hidden or dotfiles (.*) or backup 8 | files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} 9 | 10 | The presence of two specially named files jobs.deny and jobs.allow controls 11 | how run-parts executes your scripts/jobs. 12 | jobs.deny ===> Prevents specific scripts or jobs from being executed. 13 | jobs.allow ===> Only execute the named scripts or jobs (all other/non-named 14 | scripts that exist in this directory are ignored). 15 | 16 | The principles of jobs.deny and jobs.allow are the same as those of cron.deny 17 | and cron.allow and are described in detail at: 18 | http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-Automating_System_Tasks.html#s2-autotasks-cron-access 19 | 20 | See: man crontab or above link for more details and see the the weekly/ 21 | directory for an example. 22 | 23 | PLEASE NOTE: The Cron cartridge must be installed in order to run the configured jobs. 24 | 25 | For more information about cron, consult the documentation: 26 | http://openshift.github.io/documentation/oo_cartridge_guide.html#cron 27 | http://openshift.github.io/documentation/oo_user_guide.html#cron 28 | -------------------------------------------------------------------------------- /.openshift/cron/daily/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/.openshift/cron/daily/.gitignore -------------------------------------------------------------------------------- /.openshift/cron/hourly/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/.openshift/cron/hourly/.gitignore -------------------------------------------------------------------------------- /.openshift/cron/minutely/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/.openshift/cron/minutely/.gitignore -------------------------------------------------------------------------------- /.openshift/cron/monthly/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/.openshift/cron/monthly/.gitignore -------------------------------------------------------------------------------- /.openshift/cron/weekly/README: -------------------------------------------------------------------------------- 1 | Run scripts or jobs on a weekly basis 2 | ===================================== 3 | Any scripts or jobs added to this directory will be run on a scheduled basis 4 | (weekly) using run-parts. 5 | 6 | run-parts ignores any files that are hidden or dotfiles (.*) or backup 7 | files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} and handles 8 | the files named jobs.deny and jobs.allow specially. 9 | 10 | In this specific example, the chronograph script is the only script or job file 11 | executed on a weekly basis (due to white-listing it in jobs.allow). And the 12 | README and chrono.dat file are ignored either as a result of being black-listed 13 | in jobs.deny or because they are NOT white-listed in the jobs.allow file. 14 | 15 | For more details, please see ../README.cron file. 16 | 17 | -------------------------------------------------------------------------------- /.openshift/cron/weekly/chrono.dat: -------------------------------------------------------------------------------- 1 | Time And Relative D...n In Execution (Open)Shift! 2 | -------------------------------------------------------------------------------- /.openshift/cron/weekly/chronograph: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "$(date): $(cat $(dirname \"$0\")/chrono.dat)" 4 | -------------------------------------------------------------------------------- /.openshift/cron/weekly/jobs.allow: -------------------------------------------------------------------------------- 1 | # 2 | # Script or job files listed in here (one entry per line) will be 3 | # executed on a weekly-basis. 4 | # 5 | # Example: The chronograph script will be executed weekly but the README 6 | # and chrono.dat files in this directory will be ignored. 7 | # 8 | # The README file is actually ignored due to the entry in the 9 | # jobs.deny which is checked before jobs.allow (this file). 10 | # 11 | chronograph 12 | 13 | -------------------------------------------------------------------------------- /.openshift/cron/weekly/jobs.deny: -------------------------------------------------------------------------------- 1 | # 2 | # Any script or job files listed in here (one entry per line) will NOT be 3 | # executed (read as ignored by run-parts). 4 | # 5 | 6 | README 7 | 8 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Feel free to change or remove this file, it is informational only. 2 | 3 | Repo layout 4 | =========== 5 | wsgi/ - Externally exposed wsgi code goes 6 | wsgi/static/ - Public static content gets served here 7 | libs/ - Additional libraries 8 | data/ - For not-externally exposed wsgi code 9 | setup.py - Standard setup.py, specify deps here 10 | ../data - For persistent data (also env var: OPENSHIFT_DATA_DIR) 11 | .openshift/action_hooks/pre_build - Script that gets run every git push before the build 12 | .openshift/action_hooks/build - Script that gets run every git push as part of the build process (on the CI system if available) 13 | .openshift/action_hooks/deploy - Script that gets run every git push after build but before the app is restarted 14 | .openshift/action_hooks/post_deploy - Script that gets run every git push after the app is restarted 15 | 16 | 17 | Environment Variables 18 | ===================== 19 | 20 | OpenShift provides several environment variables to reference for ease 21 | of use. The following list are some common variables but far from exhaustive: 22 | 23 | os.environ['OPENSHIFT_APP_NAME'] - Application name 24 | os.environ['OPENSHIFT_DATA_DIR'] - For persistent storage (between pushes) 25 | os.environ['OPENSHIFT_TMP_DIR'] - Temp storage (unmodified files deleted after 10 days) 26 | 27 | When embedding a database using 'rhc cartridge add', you can reference environment 28 | variables for username, host and password: 29 | 30 | If you embed MySQL, then: 31 | 32 | os.environ['OPENSHIFT_MYSQL_DB_HOST'] - DB host 33 | os.environ['OPENSHIFT_MYSQL_DB_PORT'] - DB Port 34 | os.environ['OPENSHIFT_MYSQL_DB_USERNAME'] - DB Username 35 | os.environ['OPENSHIFT_MYSQL_DB_PASSWORD'] - DB Password 36 | 37 | To get a full list of environment variables, simply add a line in your 38 | .openshift/action_hooks/build script that says "export" and push. 39 | 40 | 41 | Notes about layout 42 | ================== 43 | Please leave wsgi, libs and data directories but feel free to create additional 44 | directories if needed. 45 | 46 | Note: Every time you push, everything in your remote repo dir gets recreated 47 | please store long term items (like an sqlite database) in ../data which will 48 | persist between pushes of your repo. 49 | 50 | 51 | Notes about setup.py 52 | ==================== 53 | 54 | Adding deps to the install_requires will have the OpenShift server actually 55 | install those deps at git push time. 56 | -------------------------------------------------------------------------------- /application: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import os 4 | import sys 5 | 6 | os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 7 | 8 | if 'OPENSHIFT_REPO_DIR' in os.environ: 9 | sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'mysite')) 10 | virtenv = os.environ['APPDIR'] + '/virtenv/' 11 | os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python2.7/site-packages') 12 | virtualenv = os.path.join(virtenv, 'bin/activate_this.py') 13 | try: 14 | execfile(virtualenv, dict(__file__=virtualenv)) 15 | except: 16 | pass 17 | else: 18 | project=os.path.dirname(__file__) 19 | sys.path.append(os.path.join(project, 'mysite')) 20 | 21 | import django.core.handlers.wsgi 22 | from django.core.wsgi import get_wsgi_application 23 | application = get_wsgi_application() 24 | #application = django.core.handlers.wsgi.WSGIHandler() 25 | -------------------------------------------------------------------------------- /blog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/__init__.py -------------------------------------------------------------------------------- /blog/feeds.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | #!/usr/bin/env python 3 | # -*- coding:utf-8 -*- 4 | # Author : evilbinary.org 5 | # E-mail : rootntsd@gmail.com 6 | # Date : 14/10/1 12:21:19 7 | # Desc : rss生成 8 | 9 | 10 | from django.contrib.syndication.views import Feed 11 | from blog.models import Posts,Comments 12 | from blog.templatetags.myfilter import autop_filter 13 | 14 | class CommentsFeed(Feed): 15 | title=u"evilbinary博客评论" 16 | link=u"/blog/feeds/rss2" 17 | description=u"关注evilbinary博客" 18 | 19 | def items(self): 20 | return Comments.objects.select_related('comment_post').filter(comment_post__post_status='publish',comment_post__post_type='post').order_by('comment_date')[:50] 21 | def item_title(self,item): 22 | return item.comment_post.post_title 23 | def item_description(self,item): 24 | return autop_filter(item.comment_content) 25 | 26 | def item_link(self,item): 27 | return "/blog/article/"+str(item.comment_id) 28 | def author_name(self, obj): 29 | return 'evilbinary' 30 | def author_email(self, obj): 31 | return 'rootntsd@gmail.com' 32 | 33 | 34 | class ArticlesFeed(Feed): 35 | title=u"evilbinary博客" 36 | link="/blog/feeds/rss2" 37 | description=u"关注evilbinary博客" 38 | author_email="rootntsd@gmail.com" 39 | author_name="evilbinary" 40 | def items(self): 41 | return Posts.objects.filter(post_status='publish',post_type='post').order_by('-post_date')[:50] 42 | def item_title(self,item): 43 | return item.post_title 44 | def item_description(self,item): 45 | return autop_filter(item.post_content) 46 | 47 | def item_link(self,item): 48 | return "/blog/article/"+str(item.id) 49 | def author_name(self, obj): 50 | return 'evilbinary' 51 | def author_email(self, obj): 52 | return 'rootntsd@gmail.com' 53 | 54 | 55 | -------------------------------------------------------------------------------- /blog/static/admin/css/dashboard.css: -------------------------------------------------------------------------------- 1 | /* DASHBOARD */ 2 | 3 | .dashboard .module table th { 4 | width: 100%; 5 | } 6 | 7 | .dashboard .module table td { 8 | white-space: nowrap; 9 | } 10 | 11 | .dashboard .module table td a { 12 | display: block; 13 | padding-right: .6em; 14 | } 15 | 16 | /* RECENT ACTIONS MODULE */ 17 | 18 | .module ul.actionlist { 19 | margin-left: 0; 20 | } 21 | 22 | ul.actionlist li { 23 | list-style-type: none; 24 | } 25 | 26 | ul.actionlist li { 27 | overflow: hidden; 28 | text-overflow: ellipsis; 29 | -o-text-overflow: ellipsis; 30 | } 31 | -------------------------------------------------------------------------------- /blog/static/admin/css/ie.css: -------------------------------------------------------------------------------- 1 | /* IE 6 & 7 */ 2 | 3 | /* Proper fixed width for dashboard in IE6 */ 4 | 5 | .dashboard #content { 6 | *width: 768px; 7 | } 8 | 9 | .dashboard #content-main { 10 | *width: 535px; 11 | } 12 | 13 | /* IE 6 ONLY */ 14 | 15 | /* Keep header from flowing off the page */ 16 | 17 | #container { 18 | _position: static; 19 | } 20 | 21 | /* Put the right sidebars back on the page */ 22 | 23 | .colMS #content-related { 24 | _margin-right: 0; 25 | _margin-left: 10px; 26 | _position: static; 27 | } 28 | 29 | /* Put the left sidebars back on the page */ 30 | 31 | .colSM #content-related { 32 | _margin-right: 10px; 33 | _margin-left: -115px; 34 | _position: static; 35 | } 36 | 37 | .form-row { 38 | _height: 1%; 39 | } 40 | 41 | /* Fix right margin for changelist filters in IE6 */ 42 | 43 | #changelist-filter ul { 44 | _margin-right: -10px; 45 | } 46 | 47 | /* IE ignores min-height, but treats height as if it were min-height */ 48 | 49 | .change-list .filtered { 50 | _height: 400px; 51 | } 52 | 53 | /* IE doesn't know alpha transparency in PNGs */ 54 | 55 | .inline-deletelink { 56 | background: transparent url(../img/inline-delete-8bit.png) no-repeat; 57 | } 58 | 59 | /* IE7 doesn't support inline-block */ 60 | .change-list ul.toplinks li { 61 | zoom: 1; 62 | *display: inline; 63 | } -------------------------------------------------------------------------------- /blog/static/admin/css/login.css: -------------------------------------------------------------------------------- 1 | /* LOGIN FORM */ 2 | 3 | body.login { 4 | background: #eee; 5 | } 6 | 7 | .login #container { 8 | background: white; 9 | border: 1px solid #ccc; 10 | width: 28em; 11 | min-width: 300px; 12 | margin-left: auto; 13 | margin-right: auto; 14 | margin-top: 100px; 15 | } 16 | 17 | .login #content-main { 18 | width: 100%; 19 | } 20 | 21 | .login form { 22 | margin-top: 1em; 23 | } 24 | 25 | .login .form-row { 26 | padding: 4px 0; 27 | float: left; 28 | width: 100%; 29 | } 30 | 31 | .login .form-row label { 32 | padding-right: 0.5em; 33 | line-height: 2em; 34 | font-size: 1em; 35 | clear: both; 36 | color: #333; 37 | } 38 | 39 | .login .form-row #id_username, .login .form-row #id_password { 40 | clear: both; 41 | padding: 6px; 42 | width: 100%; 43 | -webkit-box-sizing: border-box; 44 | -moz-box-sizing: border-box; 45 | box-sizing: border-box; 46 | } 47 | 48 | .login span.help { 49 | font-size: 10px; 50 | display: block; 51 | } 52 | 53 | .login .submit-row { 54 | clear: both; 55 | padding: 1em 0 0 9.4em; 56 | } 57 | 58 | .login .password-reset-link { 59 | text-align: center; 60 | } 61 | -------------------------------------------------------------------------------- /blog/static/admin/img/changelist-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/changelist-bg.gif -------------------------------------------------------------------------------- /blog/static/admin/img/changelist-bg_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/changelist-bg_rtl.gif -------------------------------------------------------------------------------- /blog/static/admin/img/default-bg-reverse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/default-bg-reverse.gif -------------------------------------------------------------------------------- /blog/static/admin/img/default-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/default-bg.gif -------------------------------------------------------------------------------- /blog/static/admin/img/deleted-overlay.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/deleted-overlay.gif -------------------------------------------------------------------------------- /blog/static/admin/img/gis/move_vertex_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/gis/move_vertex_off.png -------------------------------------------------------------------------------- /blog/static/admin/img/gis/move_vertex_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/gis/move_vertex_on.png -------------------------------------------------------------------------------- /blog/static/admin/img/icon-no.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon-no.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon-unknown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon-unknown.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon-yes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon-yes.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_addlink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_addlink.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_alert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_alert.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_calendar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_calendar.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_changelink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_changelink.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_clock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_clock.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_deletelink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_deletelink.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_error.gif -------------------------------------------------------------------------------- /blog/static/admin/img/icon_searchbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_searchbox.png -------------------------------------------------------------------------------- /blog/static/admin/img/icon_success.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/icon_success.gif -------------------------------------------------------------------------------- /blog/static/admin/img/inline-delete-8bit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/inline-delete-8bit.png -------------------------------------------------------------------------------- /blog/static/admin/img/inline-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/inline-delete.png -------------------------------------------------------------------------------- /blog/static/admin/img/inline-restore-8bit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/inline-restore-8bit.png -------------------------------------------------------------------------------- /blog/static/admin/img/inline-restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/inline-restore.png -------------------------------------------------------------------------------- /blog/static/admin/img/inline-splitter-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/inline-splitter-bg.gif -------------------------------------------------------------------------------- /blog/static/admin/img/nav-bg-grabber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/nav-bg-grabber.gif -------------------------------------------------------------------------------- /blog/static/admin/img/nav-bg-reverse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/nav-bg-reverse.gif -------------------------------------------------------------------------------- /blog/static/admin/img/nav-bg-selected.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/nav-bg-selected.gif -------------------------------------------------------------------------------- /blog/static/admin/img/nav-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/nav-bg.gif -------------------------------------------------------------------------------- /blog/static/admin/img/selector-icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/selector-icons.gif -------------------------------------------------------------------------------- /blog/static/admin/img/selector-search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/selector-search.gif -------------------------------------------------------------------------------- /blog/static/admin/img/sorting-icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/sorting-icons.gif -------------------------------------------------------------------------------- /blog/static/admin/img/tooltag-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/tooltag-add.png -------------------------------------------------------------------------------- /blog/static/admin/img/tooltag-arrowright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/admin/img/tooltag-arrowright.png -------------------------------------------------------------------------------- /blog/static/admin/js/LICENSE-JQUERY.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010 John Resig, http://jquery.com/ 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /blog/static/admin/js/collapse.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | $(document).ready(function() { 3 | // Add anchor tag for Show/Hide link 4 | $("fieldset.collapse").each(function(i, elem) { 5 | // Don't hide if fields in this fieldset have errors 6 | if ($(elem).find("div.errors").length == 0) { 7 | $(elem).addClass("collapsed").find("h2").first().append(' (' + gettext("Show") + 9 | ')'); 10 | } 11 | }); 12 | // Add toggle to anchor tag 13 | $("fieldset.collapse a.collapse-toggle").click(function(ev) { 14 | if ($(this).closest("fieldset").hasClass("collapsed")) { 15 | // Show 16 | $(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]); 17 | } else { 18 | // Hide 19 | $(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]); 20 | } 21 | return false; 22 | }); 23 | }); 24 | })(django.jQuery); 25 | -------------------------------------------------------------------------------- /blog/static/admin/js/collapse.min.js: -------------------------------------------------------------------------------- 1 | (function(a){a(document).ready(function(){a("fieldset.collapse").each(function(c,b){a(b).find("div.errors").length==0&&a(b).addClass("collapsed").find("h2").first().append(' ('+gettext("Show")+")")});a("fieldset.collapse a.collapse-toggle").click(function(){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", 2 | [a(this).attr("id")]);return false})})})(django.jQuery); 3 | -------------------------------------------------------------------------------- /blog/static/admin/js/jquery.init.js: -------------------------------------------------------------------------------- 1 | /* Puts the included jQuery into our own namespace using noConflict and passing 2 | * it 'true'. This ensures that the included jQuery doesn't pollute the global 3 | * namespace (i.e. this preserves pre-existing values for both window.$ and 4 | * window.jQuery). 5 | */ 6 | var django = django || {}; 7 | django.jQuery = jQuery.noConflict(true); 8 | -------------------------------------------------------------------------------- /blog/static/admin/js/prepopulate.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | $.fn.prepopulate = function(dependencies, maxLength) { 3 | /* 4 | Depends on urlify.js 5 | Populates a selected field with the values of the dependent fields, 6 | URLifies and shortens the string. 7 | dependencies - array of dependent fields ids 8 | maxLength - maximum length of the URLify'd string 9 | */ 10 | return this.each(function() { 11 | var prepopulatedField = $(this); 12 | 13 | var populate = function () { 14 | // Bail if the field's value has been changed by the user 15 | if (prepopulatedField.data('_changed')) { 16 | return; 17 | } 18 | 19 | var values = []; 20 | $.each(dependencies, function(i, field) { 21 | field = $(field); 22 | if (field.val().length > 0) { 23 | values.push(field.val()); 24 | } 25 | }); 26 | prepopulatedField.val(URLify(values.join(' '), maxLength)); 27 | }; 28 | 29 | prepopulatedField.data('_changed', false); 30 | prepopulatedField.change(function() { 31 | prepopulatedField.data('_changed', true); 32 | }); 33 | 34 | if (!prepopulatedField.val()) { 35 | $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); 36 | } 37 | }); 38 | }; 39 | })(django.jQuery); 40 | -------------------------------------------------------------------------------- /blog/static/admin/js/prepopulate.min.js: -------------------------------------------------------------------------------- 1 | (function(b){b.fn.prepopulate=function(e,g){return this.each(function(){var a=b(this),d=function(){if(!a.data("_changed")){var f=[];b.each(e,function(h,c){c=b(c);c.val().length>0&&f.push(c.val())});a.val(URLify(f.join(" "),g))}};a.data("_changed",false);a.change(function(){a.data("_changed",true)});a.val()||b(e.join(",")).keyup(d).change(d).focus(d)})}})(django.jQuery); 2 | -------------------------------------------------------------------------------- /blog/static/css/ascetic.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: white; 12 | color: black; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-string, 17 | .hljs-tag .hljs-value, 18 | .hljs-filter .hljs-argument, 19 | .hljs-addition, 20 | .hljs-change, 21 | .apache .hljs-tag, 22 | .apache .hljs-cbracket, 23 | .nginx .hljs-built_in, 24 | .tex .hljs-formula { 25 | color: #888; 26 | } 27 | 28 | .hljs-comment, 29 | .hljs-shebang, 30 | .hljs-doctype, 31 | .hljs-pi, 32 | .hljs-javadoc, 33 | .hljs-deletion, 34 | .apache .hljs-sqbracket { 35 | color: #ccc; 36 | } 37 | 38 | .hljs-keyword, 39 | .hljs-tag .hljs-title, 40 | .ini .hljs-title, 41 | .lisp .hljs-title, 42 | .http .hljs-title, 43 | .nginx .hljs-title, 44 | .css .hljs-tag, 45 | .hljs-winutils, 46 | .hljs-flow, 47 | .apache .hljs-tag, 48 | .tex .hljs-command, 49 | .hljs-request, 50 | .hljs-status { 51 | font-weight: bold; 52 | } 53 | -------------------------------------------------------------------------------- /blog/static/css/atelier-dune.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Dune Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Dune Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #999580; 10 | } 11 | 12 | /* Atelier Dune Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d73737; 26 | } 27 | 28 | /* Atelier Dune Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #b65611; 37 | } 38 | 39 | /* Atelier Dune Dark Yellow */ 40 | .ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #cfb017; 43 | } 44 | 45 | /* Atelier Dune Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #60ac39; 53 | } 54 | 55 | /* Atelier Dune Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1fad83; 58 | } 59 | 60 | /* Atelier Dune Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #6684e1; 70 | } 71 | 72 | /* Atelier Dune Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #b854d4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #292824; 82 | color: #a6a28c; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-dune.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Dune Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Dune Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #7d7a68; 10 | } 11 | 12 | /* Atelier Dune Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d73737; 26 | } 27 | 28 | /* Atelier Dune Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #b65611; 37 | } 38 | 39 | /* Atelier Dune Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #cfb017; 43 | } 44 | 45 | /* Atelier Dune Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #60ac39; 53 | } 54 | 55 | /* Atelier Dune Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1fad83; 58 | } 59 | 60 | /* Atelier Dune Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #6684e1; 70 | } 71 | 72 | /* Atelier Dune Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #b854d4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #fefbec; 82 | color: #6e6b5e; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-forest.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Forest Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Forest Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #9c9491; 10 | } 11 | 12 | /* Atelier Forest Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #f22c40; 26 | } 27 | 28 | /* Atelier Forest Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #df5320; 37 | } 38 | 39 | /* Atelier Forest Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #d5911a; 43 | } 44 | 45 | /* Atelier Forest Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #5ab738; 53 | } 54 | 55 | /* Atelier Forest Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #00ad9c; 58 | } 59 | 60 | /* Atelier Forest Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #407ee7; 70 | } 71 | 72 | /* Atelier Forest Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #6666ea; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #2c2421; 82 | color: #a8a19f; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-forest.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Forest Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Forest Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #766e6b; 10 | } 11 | 12 | /* Atelier Forest Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #f22c40; 26 | } 27 | 28 | /* Atelier Forest Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #df5320; 37 | } 38 | 39 | /* Atelier Forest Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #d5911a; 43 | } 44 | 45 | /* Atelier Forest Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #5ab738; 53 | } 54 | 55 | /* Atelier Forest Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #00ad9c; 58 | } 59 | 60 | /* Atelier Forest Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #407ee7; 70 | } 71 | 72 | /* Atelier Forest Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #6666ea; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #f1efee; 82 | color: #68615e; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-heath.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Heath Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Heath Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #9e8f9e; 10 | } 11 | 12 | /* Atelier Heath Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #ca402b; 26 | } 27 | 28 | /* Atelier Heath Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #a65926; 37 | } 38 | 39 | /* Atelier Heath Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #bb8a35; 43 | } 44 | 45 | /* Atelier Heath Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #379a37; 53 | } 54 | 55 | /* Atelier Heath Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #159393; 58 | } 59 | 60 | /* Atelier Heath Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #516aec; 70 | } 71 | 72 | /* Atelier Heath Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #7b59c0; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #292329; 82 | color: #ab9bab; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-heath.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Heath Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Heath Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #776977; 10 | } 11 | 12 | /* Atelier Heath Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #ca402b; 26 | } 27 | 28 | /* Atelier Heath Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #a65926; 37 | } 38 | 39 | /* Atelier Heath Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #bb8a35; 43 | } 44 | 45 | /* Atelier Heath Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #379a37; 53 | } 54 | 55 | /* Atelier Heath Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #159393; 58 | } 59 | 60 | /* Atelier Heath Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #516aec; 70 | } 71 | 72 | /* Atelier Heath Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #7b59c0; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #f7f3f7; 82 | color: #695d69; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-lakeside.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Lakeside Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Lakeside Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #7195a8; 10 | } 11 | 12 | /* Atelier Lakeside Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d22d72; 26 | } 27 | 28 | /* Atelier Lakeside Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #935c25; 37 | } 38 | 39 | /* Atelier Lakeside Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #8a8a0f; 43 | } 44 | 45 | /* Atelier Lakeside Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #568c3b; 53 | } 54 | 55 | /* Atelier Lakeside Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #2d8f6f; 58 | } 59 | 60 | /* Atelier Lakeside Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #257fad; 70 | } 71 | 72 | /* Atelier Lakeside Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #5d5db1; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #1f292e; 82 | color: #7ea2b4; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-lakeside.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Lakeside Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Lakeside Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #5a7b8c; 10 | } 11 | 12 | /* Atelier Lakeside Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d22d72; 26 | } 27 | 28 | /* Atelier Lakeside Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #935c25; 37 | } 38 | 39 | /* Atelier Lakeside Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #8a8a0f; 43 | } 44 | 45 | /* Atelier Lakeside Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #568c3b; 53 | } 54 | 55 | /* Atelier Lakeside Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #2d8f6f; 58 | } 59 | 60 | /* Atelier Lakeside Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #257fad; 70 | } 71 | 72 | /* Atelier Lakeside Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #5d5db1; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #ebf8ff; 82 | color: #516d7b; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-seaside.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Seaside Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Seaside Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #809980; 10 | } 11 | 12 | /* Atelier Seaside Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #e6193c; 26 | } 27 | 28 | /* Atelier Seaside Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #87711d; 37 | } 38 | 39 | /* Atelier Seaside Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #c3c322; 43 | } 44 | 45 | /* Atelier Seaside Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #29a329; 53 | } 54 | 55 | /* Atelier Seaside Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1999b3; 58 | } 59 | 60 | /* Atelier Seaside Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #3d62f5; 70 | } 71 | 72 | /* Atelier Seaside Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #ad2bee; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #242924; 82 | color: #8ca68c; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/atelier-seaside.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Seaside Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Seaside Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #687d68; 10 | } 11 | 12 | /* Atelier Seaside Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #e6193c; 26 | } 27 | 28 | /* Atelier Seaside Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #87711d; 37 | } 38 | 39 | /* Atelier Seaside Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #c3c322; 43 | } 44 | 45 | /* Atelier Seaside Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #29a329; 53 | } 54 | 55 | /* Atelier Seaside Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1999b3; 58 | } 59 | 60 | /* Atelier Seaside Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #3d62f5; 70 | } 71 | 72 | /* Atelier Seaside Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #ad2bee; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #f0fff0; 82 | color: #5e6e5e; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/brown_paper.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Brown Paper style from goldblog.com.ua (c) Zaripov Yura 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background:#b7a68e url(./brown_papersq.png); 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-keyword, 16 | .hljs-literal, 17 | .hljs-change, 18 | .hljs-winutils, 19 | .hljs-flow, 20 | .nginx .hljs-title, 21 | .tex .hljs-special, 22 | .hljs-request, 23 | .hljs-status { 24 | color:#005599; 25 | font-weight:bold; 26 | } 27 | 28 | .hljs, 29 | .hljs-subst, 30 | .hljs-tag .hljs-keyword { 31 | color: #363c69; 32 | } 33 | 34 | .hljs-string, 35 | .hljs-title, 36 | .hljs-type, 37 | .hljs-tag .hljs-value, 38 | .css .hljs-rules .hljs-value, 39 | .hljs-preprocessor, 40 | .hljs-pragma, 41 | .ruby .hljs-symbol, 42 | .ruby .hljs-symbol .hljs-string, 43 | .ruby .hljs-class .hljs-parent, 44 | .hljs-built_in, 45 | .django .hljs-template_tag, 46 | .django .hljs-variable, 47 | .smalltalk .hljs-class, 48 | .hljs-javadoc, 49 | .ruby .hljs-string, 50 | .django .hljs-filter .hljs-argument, 51 | .smalltalk .hljs-localvars, 52 | .smalltalk .hljs-array, 53 | .hljs-attr_selector, 54 | .hljs-pseudo, 55 | .hljs-addition, 56 | .hljs-stream, 57 | .hljs-envvar, 58 | .apache .hljs-tag, 59 | .apache .hljs-cbracket, 60 | .tex .hljs-number { 61 | color: #2c009f; 62 | } 63 | 64 | .hljs-comment, 65 | .hljs-annotation, 66 | .hljs-decorator, 67 | .hljs-pi, 68 | .hljs-doctype, 69 | .hljs-deletion, 70 | .hljs-shebang, 71 | .apache .hljs-sqbracket, 72 | .nginx .hljs-built_in, 73 | .tex .hljs-formula { 74 | color: #802022; 75 | } 76 | 77 | .hljs-keyword, 78 | .hljs-literal, 79 | .css .hljs-id, 80 | .hljs-phpdoc, 81 | .hljs-dartdoc, 82 | .hljs-title, 83 | .hljs-type, 84 | .vbscript .hljs-built_in, 85 | .rsl .hljs-built_in, 86 | .smalltalk .hljs-class, 87 | .diff .hljs-header, 88 | .hljs-chunk, 89 | .hljs-winutils, 90 | .bash .hljs-variable, 91 | .apache .hljs-tag, 92 | .tex .hljs-command { 93 | font-weight: bold; 94 | } 95 | 96 | .coffeescript .javascript, 97 | .javascript .xml, 98 | .tex .hljs-formula, 99 | .xml .javascript, 100 | .xml .vbscript, 101 | .xml .css, 102 | .xml .hljs-cdata { 103 | opacity: 0.8; 104 | } 105 | -------------------------------------------------------------------------------- /blog/static/css/brown_papersq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/css/brown_papersq.png -------------------------------------------------------------------------------- /blog/static/css/codepen-embed.css: -------------------------------------------------------------------------------- 1 | /* 2 | codepen.io Embed Theme 3 | Author: Justin Perry 4 | Original theme - https://github.com/chriskempson/tomorrow-theme 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #222; 12 | color: #fff; 13 | font-family: Menlo, Monaco, 'Andale Mono', 'Lucida Console', 'Courier New', monospace; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-comment, 18 | .hljs-title { 19 | color: #777; 20 | } 21 | 22 | .hljs-variable, 23 | .hljs-attribute, 24 | .hljs-tag, 25 | .hljs-regexp, 26 | .ruby .constant, 27 | .xml .tag .title, 28 | .xml .pi, 29 | .xml .doctype, 30 | .html .doctype { 31 | color: #ab875d; 32 | } 33 | 34 | .css .value { 35 | color: #cd6a51; 36 | } 37 | 38 | .css .value .function, 39 | .css .value .string { 40 | color: #a67f59; 41 | } 42 | 43 | .css .value .number { 44 | color: #9b869c; 45 | } 46 | 47 | .css .id, 48 | .css .class, 49 | .css-pseudo, 50 | .css .selector, 51 | .css .tag { 52 | color: #dfc48c; 53 | } 54 | 55 | .hljs-number, 56 | .hljs-preprocessor, 57 | .hljs-built_in, 58 | .hljs-literal, 59 | .hljs-params, 60 | .hljs-constant { 61 | color: #ab875d; 62 | } 63 | 64 | .ruby .class .title, 65 | .css .rules .attribute { 66 | color: #9b869b; 67 | } 68 | 69 | .hljs-string, 70 | .hljs-value, 71 | .hljs-inheritance, 72 | .hljs-header, 73 | .ruby .symbol, 74 | .xml .cdata { 75 | color: #8f9c6c; 76 | } 77 | 78 | .css .hexcolor { 79 | color: #cd6a51; 80 | } 81 | 82 | .function, 83 | .python .decorator, 84 | .python .title, 85 | .ruby .function .title, 86 | .ruby .title .keyword, 87 | .perl .sub, 88 | .javascript .title, 89 | .coffeescript .title { 90 | color: #fff; 91 | } 92 | 93 | .hljs-keyword, 94 | .javascript .function { 95 | color: #8f9c6c; 96 | } 97 | 98 | .coffeescript .javascript, 99 | .javascript, 100 | .javascript .xml, 101 | .tex .formula, 102 | .xml .javascript, 103 | .xml .vbscript, 104 | .xml .css, 105 | .xml .cdata { 106 | background: transparent; 107 | opacity: 1; 108 | } 109 | -------------------------------------------------------------------------------- /blog/static/css/dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #444; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-keyword, 16 | .hljs-literal, 17 | .hljs-change, 18 | .hljs-winutils, 19 | .hljs-flow, 20 | .nginx .hljs-title, 21 | .tex .hljs-special { 22 | color: white; 23 | } 24 | 25 | .hljs, 26 | .hljs-subst { 27 | color: #ddd; 28 | } 29 | 30 | .hljs-string, 31 | .hljs-title, 32 | .hljs-type, 33 | .ini .hljs-title, 34 | .hljs-tag .hljs-value, 35 | .css .hljs-rules .hljs-value, 36 | .hljs-preprocessor, 37 | .hljs-pragma, 38 | .ruby .hljs-symbol, 39 | .ruby .hljs-symbol .hljs-string, 40 | .ruby .hljs-class .hljs-parent, 41 | .hljs-built_in, 42 | .django .hljs-template_tag, 43 | .django .hljs-variable, 44 | .smalltalk .hljs-class, 45 | .hljs-javadoc, 46 | .ruby .hljs-string, 47 | .django .hljs-filter .hljs-argument, 48 | .smalltalk .hljs-localvars, 49 | .smalltalk .hljs-array, 50 | .hljs-attr_selector, 51 | .hljs-pseudo, 52 | .hljs-addition, 53 | .hljs-stream, 54 | .hljs-envvar, 55 | .apache .hljs-tag, 56 | .apache .hljs-cbracket, 57 | .tex .hljs-command, 58 | .hljs-prompt, 59 | .coffeescript .hljs-attribute { 60 | color: #d88; 61 | } 62 | 63 | .hljs-comment, 64 | .hljs-annotation, 65 | .hljs-decorator, 66 | .hljs-pi, 67 | .hljs-doctype, 68 | .hljs-deletion, 69 | .hljs-shebang, 70 | .apache .hljs-sqbracket, 71 | .tex .hljs-formula { 72 | color: #777; 73 | } 74 | 75 | .hljs-keyword, 76 | .hljs-literal, 77 | .hljs-title, 78 | .css .hljs-id, 79 | .hljs-phpdoc, 80 | .hljs-dartdoc, 81 | .hljs-type, 82 | .vbscript .hljs-built_in, 83 | .rsl .hljs-built_in, 84 | .smalltalk .hljs-class, 85 | .diff .hljs-header, 86 | .hljs-chunk, 87 | .hljs-winutils, 88 | .bash .hljs-variable, 89 | .apache .hljs-tag, 90 | .tex .hljs-special, 91 | .hljs-request, 92 | .hljs-status { 93 | font-weight: bold; 94 | } 95 | 96 | .coffeescript .javascript, 97 | .javascript .xml, 98 | .tex .hljs-formula, 99 | .xml .javascript, 100 | .xml .vbscript, 101 | .xml .css, 102 | .xml .hljs-cdata { 103 | opacity: 0.5; 104 | } 105 | -------------------------------------------------------------------------------- /blog/static/css/docco.css: -------------------------------------------------------------------------------- 1 | /* 2 | Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | color: #000; 10 | background: #f8f8ff; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .hljs-comment, 15 | .diff .hljs-header, 16 | .hljs-javadoc { 17 | color: #408080; 18 | font-style: italic; 19 | } 20 | 21 | .hljs-keyword, 22 | .assignment, 23 | .hljs-literal, 24 | .css .rule .hljs-keyword, 25 | .hljs-winutils, 26 | .javascript .hljs-title, 27 | .lisp .hljs-title, 28 | .hljs-subst { 29 | color: #954121; 30 | } 31 | 32 | .hljs-number, 33 | .hljs-hexcolor { 34 | color: #40a070; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-tag .hljs-value, 39 | .hljs-phpdoc, 40 | .hljs-dartdoc, 41 | .tex .hljs-formula { 42 | color: #219161; 43 | } 44 | 45 | .hljs-title, 46 | .hljs-id { 47 | color: #19469d; 48 | } 49 | .hljs-params { 50 | color: #00f; 51 | } 52 | 53 | .javascript .hljs-title, 54 | .lisp .hljs-title, 55 | .hljs-subst { 56 | font-weight: normal; 57 | } 58 | 59 | .hljs-class .hljs-title, 60 | .haskell .hljs-label, 61 | .tex .hljs-command { 62 | color: #458; 63 | font-weight: bold; 64 | } 65 | 66 | .hljs-tag, 67 | .hljs-tag .hljs-title, 68 | .hljs-rules .hljs-property, 69 | .django .hljs-tag .hljs-keyword { 70 | color: #000080; 71 | font-weight: normal; 72 | } 73 | 74 | .hljs-attribute, 75 | .hljs-variable, 76 | .instancevar, 77 | .lisp .hljs-body { 78 | color: #008080; 79 | } 80 | 81 | .hljs-regexp { 82 | color: #b68; 83 | } 84 | 85 | .hljs-class { 86 | color: #458; 87 | font-weight: bold; 88 | } 89 | 90 | .hljs-symbol, 91 | .ruby .hljs-symbol .hljs-string, 92 | .ruby .hljs-symbol .hljs-keyword, 93 | .ruby .hljs-symbol .keymethods, 94 | .lisp .hljs-keyword, 95 | .tex .hljs-special, 96 | .input_number { 97 | color: #990073; 98 | } 99 | 100 | .builtin, 101 | .constructor, 102 | .hljs-built_in, 103 | .lisp .hljs-title { 104 | color: #0086b3; 105 | } 106 | 107 | .hljs-preprocessor, 108 | .hljs-pragma, 109 | .hljs-pi, 110 | .hljs-doctype, 111 | .hljs-shebang, 112 | .hljs-cdata { 113 | color: #999; 114 | font-weight: bold; 115 | } 116 | 117 | .hljs-deletion { 118 | background: #fdd; 119 | } 120 | 121 | .hljs-addition { 122 | background: #dfd; 123 | } 124 | 125 | .diff .hljs-change { 126 | background: #0086b3; 127 | } 128 | 129 | .hljs-chunk { 130 | color: #aaa; 131 | } 132 | 133 | .tex .hljs-formula { 134 | opacity: 0.5; 135 | } 136 | -------------------------------------------------------------------------------- /blog/static/css/evil-font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'mathix67-font'; 3 | src: url('../font/mathix67-font.eot?56173255'); 4 | src: url('../font/mathix67-font.eot?56173255#iefix') format('embedded-opentype'), 5 | url('../font/mathix67-font.woff?56173255') format('woff'), 6 | url('../font/mathix67-font.ttf?56173255') format('truetype'), 7 | url('../font/mathix67-font.svg?56173255#mathix67-font') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ 12 | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ 13 | /* 14 | @media screen and (-webkit-min-device-pixel-ratio:0) { 15 | @font-face { 16 | font-family: 'mathix67-font'; 17 | src: url('../font/mathix67-font.svg?56173255#mathix67-font') format('svg'); 18 | } 19 | } 20 | */ 21 | 22 | [class^="icon-"]:before, [class*=" icon-"]:before { 23 | font-family: "mathix67-font"; 24 | font-style: normal; 25 | font-weight: normal; 26 | speak: none; 27 | 28 | display: inline-block; 29 | text-decoration: inherit; 30 | width: 1em; 31 | margin-right: .2em; 32 | text-align: center; 33 | /* opacity: .8; */ 34 | 35 | /* For safety - reset parent styles, that can break glyph codes*/ 36 | font-variant: normal; 37 | text-transform: none; 38 | 39 | /* fix buttons height, for twitter bootstrap */ 40 | line-height: 1em; 41 | 42 | /* Animation center compensation - margins should be symmetric */ 43 | /* remove if not needed */ 44 | margin-left: .2em; 45 | 46 | /* you can be more comfortable with increased icons size */ 47 | /* font-size: 120%; */ 48 | 49 | /* Uncomment for 3D effect */ 50 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ 51 | } 52 | 53 | .icon-left-dir:before { content: '\e802'; } /* '' */ 54 | .icon-right-dir:before { content: '\e803'; } /* '' */ 55 | .icon-search-1:before { content: '\e801'; } /* '' */ 56 | .icon-rss:before { content: '\e800'; } /* '' */ -------------------------------------------------------------------------------- /blog/static/css/far.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | FAR Style (c) MajestiC 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #000080; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs, 16 | .hljs-subst { 17 | color: #0ff; 18 | } 19 | 20 | .hljs-string, 21 | .ruby .hljs-string, 22 | .haskell .hljs-type, 23 | .hljs-tag .hljs-value, 24 | .hljs-rules .hljs-value, 25 | .hljs-rules .hljs-value .hljs-number, 26 | .hljs-preprocessor, 27 | .hljs-pragma, 28 | .ruby .hljs-symbol, 29 | .ruby .hljs-symbol .hljs-string, 30 | .hljs-built_in, 31 | .django .hljs-template_tag, 32 | .django .hljs-variable, 33 | .smalltalk .hljs-class, 34 | .hljs-addition, 35 | .apache .hljs-tag, 36 | .apache .hljs-cbracket, 37 | .tex .hljs-command, 38 | .coffeescript .hljs-attribute { 39 | color: #ff0; 40 | } 41 | 42 | .hljs-keyword, 43 | .css .hljs-id, 44 | .hljs-title, 45 | .hljs-type, 46 | .vbscript .hljs-built_in, 47 | .rsl .hljs-built_in, 48 | .smalltalk .hljs-class, 49 | .xml .hljs-tag .hljs-title, 50 | .hljs-winutils, 51 | .hljs-flow, 52 | .hljs-change, 53 | .hljs-envvar, 54 | .bash .hljs-variable, 55 | .tex .hljs-special { 56 | color: #fff; 57 | } 58 | 59 | .hljs-comment, 60 | .hljs-phpdoc, 61 | .hljs-dartdoc, 62 | .hljs-javadoc, 63 | .hljs-annotation, 64 | .hljs-deletion, 65 | .apache .hljs-sqbracket, 66 | .tex .hljs-formula { 67 | color: #888; 68 | } 69 | 70 | .hljs-number, 71 | .hljs-date, 72 | .hljs-regexp, 73 | .hljs-literal, 74 | .smalltalk .hljs-symbol, 75 | .smalltalk .hljs-char, 76 | .clojure .hljs-attribute { 77 | color: #0f0; 78 | } 79 | 80 | .hljs-decorator, 81 | .django .hljs-filter .hljs-argument, 82 | .smalltalk .hljs-localvars, 83 | .smalltalk .hljs-array, 84 | .hljs-attr_selector, 85 | .hljs-pseudo, 86 | .xml .hljs-pi, 87 | .diff .hljs-header, 88 | .hljs-chunk, 89 | .hljs-shebang, 90 | .nginx .hljs-built_in, 91 | .hljs-prompt { 92 | color: #008080; 93 | } 94 | 95 | .hljs-keyword, 96 | .css .hljs-id, 97 | .hljs-title, 98 | .hljs-type, 99 | .vbscript .hljs-built_in, 100 | .rsl .hljs-built_in, 101 | .smalltalk .hljs-class, 102 | .hljs-winutils, 103 | .hljs-flow, 104 | .apache .hljs-tag, 105 | .nginx .hljs-built_in, 106 | .tex .hljs-command, 107 | .tex .hljs-special, 108 | .hljs-request, 109 | .hljs-status { 110 | font-weight: bold; 111 | } 112 | -------------------------------------------------------------------------------- /blog/static/css/foundation.css: -------------------------------------------------------------------------------- 1 | /* 2 | Description: Foundation 4 docs style for highlight.js 3 | Author: Dan Allen 4 | Website: http://foundation.zurb.com/docs/ 5 | Version: 1.0 6 | Date: 2013-04-02 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | background: #eee; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-header, 18 | .hljs-decorator, 19 | .hljs-annotation { 20 | color: #000077; 21 | } 22 | 23 | .hljs-horizontal_rule, 24 | .hljs-link_url, 25 | .hljs-emphasis, 26 | .hljs-attribute { 27 | color: #070; 28 | } 29 | 30 | .hljs-emphasis { 31 | font-style: italic; 32 | } 33 | 34 | .hljs-link_label, 35 | .hljs-strong, 36 | .hljs-value, 37 | .hljs-string, 38 | .scss .hljs-value .hljs-string { 39 | color: #d14; 40 | } 41 | 42 | .hljs-strong { 43 | font-weight: bold; 44 | } 45 | 46 | .hljs-blockquote, 47 | .hljs-comment { 48 | color: #998; 49 | font-style: italic; 50 | } 51 | 52 | .asciidoc .hljs-title, 53 | .hljs-function .hljs-title { 54 | color: #900; 55 | } 56 | 57 | .hljs-class { 58 | color: #458; 59 | } 60 | 61 | .hljs-id, 62 | .hljs-pseudo, 63 | .hljs-constant, 64 | .hljs-hexcolor { 65 | color: teal; 66 | } 67 | 68 | .hljs-variable { 69 | color: #336699; 70 | } 71 | 72 | .hljs-bullet, 73 | .hljs-javadoc { 74 | color: #997700; 75 | } 76 | 77 | .hljs-pi, 78 | .hljs-doctype { 79 | color: #3344bb; 80 | } 81 | 82 | .hljs-code, 83 | .hljs-number { 84 | color: #099; 85 | } 86 | 87 | .hljs-important { 88 | color: #f00; 89 | } 90 | 91 | .smartquote, 92 | .hljs-label { 93 | color: #970; 94 | } 95 | 96 | .hljs-preprocessor, 97 | .hljs-pragma { 98 | color: #579; 99 | } 100 | 101 | .hljs-reserved, 102 | .hljs-keyword, 103 | .scss .hljs-value { 104 | color: #000; 105 | } 106 | 107 | .hljs-regexp { 108 | background-color: #fff0ff; 109 | color: #880088; 110 | } 111 | 112 | .hljs-symbol { 113 | color: #990073; 114 | } 115 | 116 | .hljs-symbol .hljs-string { 117 | color: #a60; 118 | } 119 | 120 | .hljs-tag { 121 | color: #007700; 122 | } 123 | 124 | .hljs-at_rule, 125 | .hljs-at_rule .hljs-keyword { 126 | color: #088; 127 | } 128 | 129 | .hljs-at_rule .hljs-preprocessor { 130 | color: #808; 131 | } 132 | 133 | .scss .hljs-tag, 134 | .scss .hljs-attribute { 135 | color: #339; 136 | } 137 | -------------------------------------------------------------------------------- /blog/static/css/github.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #333; 12 | background: #f8f8f8; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-javadoc { 19 | color: #998; 20 | font-style: italic; 21 | } 22 | 23 | .hljs-keyword, 24 | .css .rule .hljs-keyword, 25 | .hljs-winutils, 26 | .nginx .hljs-title, 27 | .hljs-subst, 28 | .hljs-request, 29 | .hljs-status { 30 | color: #333; 31 | font-weight: bold; 32 | } 33 | 34 | .hljs-number, 35 | .hljs-hexcolor, 36 | .ruby .hljs-constant { 37 | color: #008080; 38 | } 39 | 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-phpdoc, 43 | .hljs-dartdoc, 44 | .tex .hljs-formula { 45 | color: #d14; 46 | } 47 | 48 | .hljs-title, 49 | .hljs-id, 50 | .scss .hljs-preprocessor { 51 | color: #900; 52 | font-weight: bold; 53 | } 54 | 55 | .hljs-list .hljs-keyword, 56 | .hljs-subst { 57 | font-weight: normal; 58 | } 59 | 60 | .hljs-class .hljs-title, 61 | .hljs-type, 62 | .vhdl .hljs-literal, 63 | .tex .hljs-command { 64 | color: #458; 65 | font-weight: bold; 66 | } 67 | 68 | .hljs-tag, 69 | .hljs-tag .hljs-title, 70 | .hljs-rules .hljs-property, 71 | .django .hljs-tag .hljs-keyword { 72 | color: #000080; 73 | font-weight: normal; 74 | } 75 | 76 | .hljs-attribute, 77 | .hljs-variable, 78 | .lisp .hljs-body { 79 | color: #008080; 80 | } 81 | 82 | .hljs-regexp { 83 | color: #009926; 84 | } 85 | 86 | .hljs-symbol, 87 | .ruby .hljs-symbol .hljs-string, 88 | .lisp .hljs-keyword, 89 | .clojure .hljs-keyword, 90 | .scheme .hljs-keyword, 91 | .tex .hljs-special, 92 | .hljs-prompt { 93 | color: #990073; 94 | } 95 | 96 | .hljs-built_in { 97 | color: #0086b3; 98 | } 99 | 100 | .hljs-preprocessor, 101 | .hljs-pragma, 102 | .hljs-pi, 103 | .hljs-doctype, 104 | .hljs-shebang, 105 | .hljs-cdata { 106 | color: #999; 107 | font-weight: bold; 108 | } 109 | 110 | .hljs-deletion { 111 | background: #fdd; 112 | } 113 | 114 | .hljs-addition { 115 | background: #dfd; 116 | } 117 | 118 | .diff .hljs-change { 119 | background: #0086b3; 120 | } 121 | 122 | .hljs-chunk { 123 | color: #aaa; 124 | } 125 | -------------------------------------------------------------------------------- /blog/static/css/idea.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Intellij Idea-like styling (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #000; 12 | background: #fff; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-subst, 17 | .hljs-title, 18 | .json .hljs-value { 19 | font-weight: normal; 20 | color: #000; 21 | } 22 | 23 | .hljs-comment, 24 | .hljs-javadoc, 25 | .diff .hljs-header { 26 | color: #808080; 27 | font-style: italic; 28 | } 29 | 30 | .hljs-annotation, 31 | .hljs-decorator, 32 | .hljs-preprocessor, 33 | .hljs-pragma, 34 | .hljs-doctype, 35 | .hljs-pi, 36 | .hljs-chunk, 37 | .hljs-shebang, 38 | .apache .hljs-cbracket, 39 | .hljs-prompt, 40 | .http .hljs-title { 41 | color: #808000; 42 | } 43 | 44 | .hljs-tag, 45 | .hljs-pi { 46 | background: #efefef; 47 | } 48 | 49 | .hljs-tag .hljs-title, 50 | .hljs-id, 51 | .hljs-attr_selector, 52 | .hljs-pseudo, 53 | .hljs-literal, 54 | .hljs-keyword, 55 | .hljs-hexcolor, 56 | .css .hljs-function, 57 | .ini .hljs-title, 58 | .css .hljs-class, 59 | .hljs-list .hljs-keyword, 60 | .nginx .hljs-title, 61 | .tex .hljs-command, 62 | .hljs-request, 63 | .hljs-status { 64 | font-weight: bold; 65 | color: #000080; 66 | } 67 | 68 | .hljs-attribute, 69 | .hljs-rules .hljs-keyword, 70 | .hljs-number, 71 | .hljs-date, 72 | .hljs-regexp, 73 | .tex .hljs-special { 74 | font-weight: bold; 75 | color: #0000ff; 76 | } 77 | 78 | .hljs-number, 79 | .hljs-regexp { 80 | font-weight: normal; 81 | } 82 | 83 | .hljs-string, 84 | .hljs-value, 85 | .hljs-filter .hljs-argument, 86 | .css .hljs-function .hljs-params, 87 | .apache .hljs-tag { 88 | color: #008000; 89 | font-weight: bold; 90 | } 91 | 92 | .hljs-symbol, 93 | .ruby .hljs-symbol .hljs-string, 94 | .hljs-char, 95 | .tex .hljs-formula { 96 | color: #000; 97 | background: #d0eded; 98 | font-style: italic; 99 | } 100 | 101 | .hljs-phpdoc, 102 | .hljs-dartdoc, 103 | .hljs-yardoctag, 104 | .hljs-javadoctag { 105 | text-decoration: underline; 106 | } 107 | 108 | .hljs-variable, 109 | .hljs-envvar, 110 | .apache .hljs-sqbracket, 111 | .nginx .hljs-built_in { 112 | color: #660e7a; 113 | } 114 | 115 | .hljs-addition { 116 | background: #baeeba; 117 | } 118 | 119 | .hljs-deletion { 120 | background: #ffc8bd; 121 | } 122 | 123 | .diff .hljs-change { 124 | background: #bccff9; 125 | } 126 | -------------------------------------------------------------------------------- /blog/static/css/ir_black.css: -------------------------------------------------------------------------------- 1 | /* 2 | IR_Black style (c) Vasily Mikhailitchenko 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #000; 10 | color: #f8f8f8; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .hljs-shebang, 15 | .hljs-comment, 16 | .hljs-javadoc { 17 | color: #7c7c7c; 18 | } 19 | 20 | .hljs-keyword, 21 | .hljs-tag, 22 | .tex .hljs-command, 23 | .hljs-request, 24 | .hljs-status, 25 | .clojure .hljs-attribute { 26 | color: #96cbfe; 27 | } 28 | 29 | .hljs-sub .hljs-keyword, 30 | .method, 31 | .hljs-list .hljs-title, 32 | .nginx .hljs-title { 33 | color: #ffffb6; 34 | } 35 | 36 | .hljs-string, 37 | .hljs-tag .hljs-value, 38 | .hljs-cdata, 39 | .hljs-filter .hljs-argument, 40 | .hljs-attr_selector, 41 | .apache .hljs-cbracket, 42 | .hljs-date, 43 | .coffeescript .hljs-attribute { 44 | color: #a8ff60; 45 | } 46 | 47 | .hljs-subst { 48 | color: #daefa3; 49 | } 50 | 51 | .hljs-regexp { 52 | color: #e9c062; 53 | } 54 | 55 | .hljs-title, 56 | .hljs-sub .hljs-identifier, 57 | .hljs-pi, 58 | .hljs-decorator, 59 | .tex .hljs-special, 60 | .hljs-type, 61 | .hljs-constant, 62 | .smalltalk .hljs-class, 63 | .hljs-javadoctag, 64 | .hljs-yardoctag, 65 | .hljs-phpdoc, 66 | .hljs-dartdoc, 67 | .nginx .hljs-built_in { 68 | color: #ffffb6; 69 | } 70 | 71 | .hljs-symbol, 72 | .ruby .hljs-symbol .hljs-string, 73 | .hljs-number, 74 | .hljs-variable, 75 | .vbscript, 76 | .hljs-literal { 77 | color: #c6c5fe; 78 | } 79 | 80 | .css .hljs-tag { 81 | color: #96cbfe; 82 | } 83 | 84 | .css .hljs-rules .hljs-property, 85 | .css .hljs-id { 86 | color: #ffffb6; 87 | } 88 | 89 | .css .hljs-class { 90 | color: #fff; 91 | } 92 | 93 | .hljs-hexcolor { 94 | color: #c6c5fe; 95 | } 96 | 97 | .hljs-number { 98 | color:#ff73fd; 99 | } 100 | 101 | .coffeescript .javascript, 102 | .javascript .xml, 103 | .tex .hljs-formula, 104 | .xml .javascript, 105 | .xml .vbscript, 106 | .xml .css, 107 | .xml .hljs-cdata { 108 | opacity: 0.7; 109 | } 110 | -------------------------------------------------------------------------------- /blog/static/css/kimbie.dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Kimbie (dark) 3 | Author: Jan T. Sott 4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License 5 | URL: https://github.com/idleberg/Kimbie-highlight.js 6 | */ 7 | 8 | /* Kimbie Comment */ 9 | .hljs-comment, 10 | .hljs-title { 11 | color: #d6baad; 12 | } 13 | 14 | /* Kimbie Red */ 15 | .hljs-variable, 16 | .hljs-attribute, 17 | .hljs-tag, 18 | .hljs-regexp, 19 | .ruby .hljs-constant, 20 | .xml .hljs-tag .hljs-title, 21 | .xml .hljs-pi, 22 | .xml .hljs-doctype, 23 | .html .hljs-doctype, 24 | .css .hljs-id, 25 | .css .hljs-class, 26 | .css .hljs-pseudo { 27 | color: #dc3958; 28 | } 29 | 30 | /* Kimbie Orange */ 31 | .hljs-number, 32 | .hljs-preprocessor, 33 | .hljs-built_in, 34 | .hljs-literal, 35 | .hljs-params, 36 | .hljs-constant { 37 | color: #f79a32; 38 | } 39 | 40 | /* Kimbie Yellow */ 41 | .ruby .hljs-class .hljs-title, 42 | .css .hljs-rules .hljs-attribute { 43 | color: #f06431; 44 | } 45 | 46 | /* Kimbie Green */ 47 | .hljs-string, 48 | .hljs-value, 49 | .hljs-inheritance, 50 | .hljs-header, 51 | .ruby .hljs-symbol, 52 | .xml .hljs-cdata { 53 | color: #889b4a; 54 | } 55 | 56 | /* Kimbie Aqua */ 57 | .css .hljs-hexcolor { 58 | color: #088649; 59 | } 60 | 61 | /* Kimbie Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #8ab1b0; 71 | } 72 | 73 | /* Kimbie Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #98676a; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #221a0f; 83 | color: #d3af86; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /blog/static/css/kimbie.light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Kimbie (light) 3 | Author: Jan T. Sott 4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License 5 | URL: https://github.com/idleberg/Kimbie-highlight.js 6 | */ 7 | 8 | /* Kimbie Comment */ 9 | .hljs-comment, 10 | .hljs-title { 11 | color: #a57a4c; 12 | } 13 | 14 | /* Kimbie Red */ 15 | .hljs-variable, 16 | .hljs-attribute, 17 | .hljs-tag, 18 | .hljs-regexp, 19 | .ruby .hljs-constant, 20 | .xml .hljs-tag .hljs-title, 21 | .xml .hljs-pi, 22 | .xml .hljs-doctype, 23 | .html .hljs-doctype, 24 | .css .hljs-id, 25 | .css .hljs-class, 26 | .css .hljs-pseudo { 27 | color: #dc3958; 28 | } 29 | 30 | /* Kimbie Orange */ 31 | .hljs-number, 32 | .hljs-preprocessor, 33 | .hljs-built_in, 34 | .hljs-literal, 35 | .hljs-params, 36 | .hljs-constant { 37 | color: #f79a32; 38 | } 39 | 40 | /* Kimbie Yellow */ 41 | .ruby .hljs-class .hljs-title, 42 | .css .hljs-rules .hljs-attribute { 43 | color: #f06431; 44 | } 45 | 46 | /* Kimbie Green */ 47 | .hljs-string, 48 | .hljs-value, 49 | .hljs-inheritance, 50 | .hljs-header, 51 | .ruby .hljs-symbol, 52 | .xml .hljs-cdata { 53 | color: #889b4a; 54 | } 55 | 56 | /* Kimbie Aqua */ 57 | .css .hljs-hexcolor { 58 | color: #088649; 59 | } 60 | 61 | /* Kimbie Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #8ab1b0; 71 | } 72 | 73 | /* Kimbie Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #98676a; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #fbebd4; 83 | color: #84613d; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /blog/static/css/magula.css: -------------------------------------------------------------------------------- 1 | /* 2 | Description: Magula style for highligh.js 3 | Author: Ruslan Keba 4 | Website: http://rukeba.com/ 5 | Version: 1.0 6 | Date: 2009-01-03 7 | Music: Aphex Twin / Xtal 8 | */ 9 | 10 | .hljs { 11 | display: block; 12 | overflow-x: auto; 13 | padding: 0.5em; 14 | background-color: #f4f4f4; 15 | -webkit-text-size-adjust: none; 16 | } 17 | 18 | .hljs, 19 | .hljs-subst { 20 | color: black; 21 | } 22 | 23 | .hljs-string, 24 | .hljs-title, 25 | .hljs-parent, 26 | .hljs-tag .hljs-value, 27 | .hljs-rules .hljs-value, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .ruby .hljs-symbol, 31 | .ruby .hljs-symbol .hljs-string, 32 | .hljs-template_tag, 33 | .django .hljs-variable, 34 | .smalltalk .hljs-class, 35 | .hljs-addition, 36 | .hljs-flow, 37 | .hljs-stream, 38 | .bash .hljs-variable, 39 | .apache .hljs-cbracket, 40 | .coffeescript .hljs-attribute { 41 | color: #050; 42 | } 43 | 44 | .hljs-comment, 45 | .hljs-annotation, 46 | .diff .hljs-header, 47 | .hljs-chunk { 48 | color: #777; 49 | } 50 | 51 | .hljs-number, 52 | .hljs-date, 53 | .hljs-regexp, 54 | .hljs-literal, 55 | .smalltalk .hljs-symbol, 56 | .smalltalk .hljs-char, 57 | .hljs-change, 58 | .tex .hljs-special { 59 | color: #800; 60 | } 61 | 62 | .hljs-label, 63 | .hljs-javadoc, 64 | .ruby .hljs-string, 65 | .hljs-decorator, 66 | .hljs-filter .hljs-argument, 67 | .hljs-localvars, 68 | .hljs-array, 69 | .hljs-attr_selector, 70 | .hljs-pseudo, 71 | .hljs-pi, 72 | .hljs-doctype, 73 | .hljs-deletion, 74 | .hljs-envvar, 75 | .hljs-shebang, 76 | .apache .hljs-sqbracket, 77 | .nginx .hljs-built_in, 78 | .tex .hljs-formula, 79 | .hljs-prompt, 80 | .clojure .hljs-attribute { 81 | color: #00e; 82 | } 83 | 84 | .hljs-keyword, 85 | .hljs-id, 86 | .hljs-phpdoc, 87 | .hljs-dartdoc, 88 | .hljs-title, 89 | .hljs-built_in, 90 | .smalltalk .hljs-class, 91 | .hljs-winutils, 92 | .bash .hljs-variable, 93 | .apache .hljs-tag, 94 | .xml .hljs-tag, 95 | .tex .hljs-command, 96 | .hljs-request, 97 | .hljs-status { 98 | font-weight: bold; 99 | color: navy; 100 | } 101 | 102 | .nginx .hljs-built_in { 103 | font-weight: normal; 104 | } 105 | 106 | .coffeescript .javascript, 107 | .javascript .xml, 108 | .tex .hljs-formula, 109 | .xml .javascript, 110 | .xml .vbscript, 111 | .xml .css, 112 | .xml .hljs-cdata { 113 | opacity: 0.5; 114 | } 115 | 116 | /* --- */ 117 | .apache .hljs-tag { 118 | font-weight: bold; 119 | color: blue; 120 | } 121 | 122 | -------------------------------------------------------------------------------- /blog/static/css/mono-blue.css: -------------------------------------------------------------------------------- 1 | /* 2 | Five-color theme from a single blue hue. 3 | */ 4 | .hljs { 5 | display: block; 6 | overflow-x: auto; 7 | padding: 0.5em; 8 | background: #eaeef3; 9 | -webkit-text-size-adjust: none; 10 | } 11 | 12 | .hljs, 13 | .hljs-list .hljs-built_in { 14 | color: #00193a; 15 | } 16 | 17 | .hljs-keyword, 18 | .hljs-title, 19 | .hljs-important, 20 | .hljs-request, 21 | .hljs-header, 22 | .hljs-javadoctag { 23 | font-weight: bold; 24 | } 25 | 26 | .hljs-comment, 27 | .hljs-chunk { 28 | color: #738191; 29 | } 30 | 31 | .hljs-string, 32 | .hljs-title, 33 | .hljs-parent, 34 | .hljs-built_in, 35 | .hljs-literal, 36 | .hljs-filename, 37 | .hljs-value, 38 | .hljs-addition, 39 | .hljs-tag, 40 | .hljs-argument, 41 | .hljs-link_label, 42 | .hljs-blockquote, 43 | .hljs-header { 44 | color: #0048ab; 45 | } 46 | 47 | .hljs-decorator, 48 | .hljs-prompt, 49 | .hljs-yardoctag, 50 | .hljs-subst, 51 | .hljs-symbol, 52 | .hljs-doctype, 53 | .hljs-regexp, 54 | .hljs-preprocessor, 55 | .hljs-pragma, 56 | .hljs-pi, 57 | .hljs-attribute, 58 | .hljs-attr_selector, 59 | .hljs-javadoc, 60 | .hljs-xmlDocTag, 61 | .hljs-deletion, 62 | .hljs-shebang, 63 | .hljs-string .hljs-variable, 64 | .hljs-link_url, 65 | .hljs-bullet, 66 | .hljs-sqbracket, 67 | .hljs-phony { 68 | color: #4c81c9; 69 | } 70 | -------------------------------------------------------------------------------- /blog/static/css/normalize.min.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} 2 | -------------------------------------------------------------------------------- /blog/static/css/paraiso.dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Paraíso (dark) 3 | Created by Jan T. Sott (http://github.com/idleberg) 4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 5 | */ 6 | 7 | /* Paraíso Comment */ 8 | .hljs-comment, 9 | .hljs-title { 10 | color: #8d8687; 11 | } 12 | 13 | /* Paraíso Red */ 14 | .hljs-variable, 15 | .hljs-attribute, 16 | .hljs-tag, 17 | .hljs-regexp, 18 | .ruby .hljs-constant, 19 | .xml .hljs-tag .hljs-title, 20 | .xml .hljs-pi, 21 | .xml .hljs-doctype, 22 | .html .hljs-doctype, 23 | .css .hljs-id, 24 | .css .hljs-class, 25 | .css .hljs-pseudo { 26 | color: #ef6155; 27 | } 28 | 29 | /* Paraíso Orange */ 30 | .hljs-number, 31 | .hljs-preprocessor, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #f99b15; 37 | } 38 | 39 | /* Paraíso Yellow */ 40 | .ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #fec418; 43 | } 44 | 45 | /* Paraíso Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #48b685; 53 | } 54 | 55 | /* Paraíso Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #5bc4bf; 58 | } 59 | 60 | /* Paraíso Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #06b6ef; 70 | } 71 | 72 | /* Paraíso Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #815ba4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #2f1e2e; 82 | color: #a39e9b; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/paraiso.light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Paraíso (light) 3 | Created by Jan T. Sott (http://github.com/idleberg) 4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 5 | */ 6 | 7 | /* Paraíso Comment */ 8 | .hljs-comment, 9 | .hljs-title { 10 | color: #776e71; 11 | } 12 | 13 | /* Paraíso Red */ 14 | .hljs-variable, 15 | .hljs-attribute, 16 | .hljs-tag, 17 | .hljs-regexp, 18 | .ruby .hljs-constant, 19 | .xml .hljs-tag .hljs-title, 20 | .xml .hljs-pi, 21 | .xml .hljs-doctype, 22 | .html .hljs-doctype, 23 | .css .hljs-id, 24 | .css .hljs-class, 25 | .css .hljs-pseudo { 26 | color: #ef6155; 27 | } 28 | 29 | /* Paraíso Orange */ 30 | .hljs-number, 31 | .hljs-preprocessor, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #f99b15; 37 | } 38 | 39 | /* Paraíso Yellow */ 40 | .ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #fec418; 43 | } 44 | 45 | /* Paraíso Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #48b685; 53 | } 54 | 55 | /* Paraíso Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #5bc4bf; 58 | } 59 | 60 | /* Paraíso Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #06b6ef; 70 | } 71 | 72 | /* Paraíso Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #815ba4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #e7e9db; 82 | color: #4f424c; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/pojoaque.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Pojoaque Style by Jason Tate 4 | http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html 5 | Based on Solarized Style from http://ethanschoonover.com/solarized 6 | 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | color: #dccf8f; 14 | background: url(./pojoaque.jpg) repeat scroll left top #181914; 15 | -webkit-text-size-adjust: none; 16 | } 17 | 18 | .hljs-comment, 19 | .diff .hljs-header, 20 | .hljs-doctype, 21 | .lisp .hljs-string, 22 | .hljs-javadoc { 23 | color: #586e75; 24 | font-style: italic; 25 | } 26 | 27 | .hljs-keyword, 28 | .css .rule .hljs-keyword, 29 | .hljs-winutils, 30 | .javascript .hljs-title, 31 | .method, 32 | .hljs-addition, 33 | .css .hljs-tag, 34 | .hljs-list .hljs-keyword, 35 | .nginx .hljs-title { 36 | color: #b64926; 37 | } 38 | 39 | .hljs-number, 40 | .hljs-command, 41 | .hljs-string, 42 | .hljs-tag .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor { 48 | color: #468966; 49 | } 50 | 51 | .hljs-title, 52 | .hljs-localvars, 53 | .hljs-function .hljs-title, 54 | .hljs-chunk, 55 | .hljs-decorator, 56 | .hljs-built_in, 57 | .hljs-identifier, 58 | .hljs-id { 59 | color: #ffb03b; 60 | } 61 | 62 | .hljs-attribute, 63 | .hljs-variable, 64 | .lisp .hljs-body, 65 | .smalltalk .hljs-number, 66 | .hljs-constant, 67 | .hljs-class .hljs-title, 68 | .hljs-parent, 69 | .hljs-type { 70 | color: #b58900; 71 | } 72 | 73 | .css .hljs-attribute { 74 | color: #b89859; 75 | } 76 | 77 | .css .hljs-number, 78 | .css .hljs-hexcolor { 79 | color: #dccf8f; 80 | } 81 | 82 | .css .hljs-class { 83 | color: #d3a60c; 84 | } 85 | 86 | .hljs-preprocessor, 87 | .hljs-pragma, 88 | .hljs-pi, 89 | .hljs-shebang, 90 | .hljs-symbol, 91 | .hljs-symbol .hljs-string, 92 | .diff .hljs-change, 93 | .hljs-special, 94 | .hljs-attr_selector, 95 | .hljs-important, 96 | .hljs-subst, 97 | .hljs-cdata { 98 | color: #cb4b16; 99 | } 100 | 101 | .hljs-deletion { 102 | color: #dc322f; 103 | } 104 | 105 | .tex .hljs-formula { 106 | background: #073642; 107 | } 108 | -------------------------------------------------------------------------------- /blog/static/css/pojoaque.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/css/pojoaque.jpg -------------------------------------------------------------------------------- /blog/static/css/rainbow.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Style with support for rainbow parens 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #474949; 12 | color: #d1d9e1; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | 17 | .hljs-body, 18 | .hljs-collection { 19 | color: #d1d9e1; 20 | } 21 | 22 | .hljs-comment, 23 | .diff .hljs-header, 24 | .hljs-doctype, 25 | .lisp .hljs-string, 26 | .hljs-javadoc { 27 | color: #969896; 28 | font-style: italic; 29 | } 30 | 31 | .hljs-keyword, 32 | .clojure .hljs-attribute, 33 | .hljs-winutils, 34 | .javascript .hljs-title, 35 | .hljs-addition, 36 | .css .hljs-tag { 37 | color: #cc99cc; 38 | } 39 | 40 | .hljs-number { color: #f99157; } 41 | 42 | .hljs-command, 43 | .hljs-string, 44 | .hljs-tag .hljs-value, 45 | .hljs-phpdoc, 46 | .hljs-dartdoc, 47 | .tex .hljs-formula, 48 | .hljs-regexp, 49 | .hljs-hexcolor { 50 | color: #8abeb7; 51 | } 52 | 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-function .hljs-title, 56 | .hljs-chunk, 57 | .hljs-decorator, 58 | .hljs-built_in, 59 | .hljs-identifier { 60 | color: #b5bd68; 61 | } 62 | 63 | .hljs-class .hljs-keyword { 64 | color: #f2777a; 65 | } 66 | 67 | .hljs-variable, 68 | .smalltalk .hljs-number, 69 | .hljs-constant, 70 | .hljs-class .hljs-title, 71 | .hljs-parent, 72 | .haskell .hljs-label, 73 | .hljs-id { 74 | color: #ffcc66; 75 | } 76 | 77 | .hljs-tag .hljs-title, 78 | .hljs-rules .hljs-property, 79 | .django .hljs-tag .hljs-keyword { 80 | font-weight: bold; 81 | } 82 | 83 | .hljs-attribute { 84 | color: #81a2be; 85 | } 86 | 87 | .hljs-preprocessor, 88 | .hljs-pragma, 89 | .hljs-pi, 90 | .hljs-shebang, 91 | .hljs-symbol, 92 | .hljs-symbol .hljs-string, 93 | .diff .hljs-change, 94 | .hljs-special, 95 | .hljs-attr_selector, 96 | .hljs-important, 97 | .hljs-subst, 98 | .hljs-cdata { 99 | color: #f99157; 100 | } 101 | 102 | .hljs-deletion { 103 | color: #dc322f; 104 | } 105 | 106 | .tex .hljs-formula { 107 | background: #eee8d5; 108 | } 109 | -------------------------------------------------------------------------------- /blog/static/css/school_book.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | School Book style from goldblog.com.ua (c) Zaripov Yura 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 15px 0.5em 0.5em 30px; 11 | font-size: 11px !important; 12 | line-height:16px !important; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | pre{ 17 | background:#f6f6ae url(./school_book.png); 18 | border-top: solid 2px #d2e8b9; 19 | border-bottom: solid 1px #d2e8b9; 20 | } 21 | 22 | .hljs-keyword, 23 | .hljs-literal, 24 | .hljs-change, 25 | .hljs-winutils, 26 | .hljs-flow, 27 | .nginx .hljs-title, 28 | .tex .hljs-special { 29 | color:#005599; 30 | font-weight:bold; 31 | } 32 | 33 | .hljs, 34 | .hljs-subst, 35 | .hljs-tag .hljs-keyword { 36 | color: #3e5915; 37 | } 38 | 39 | .hljs-string, 40 | .hljs-title, 41 | .hljs-type, 42 | .hljs-tag .hljs-value, 43 | .css .hljs-rules .hljs-value, 44 | .hljs-preprocessor, 45 | .hljs-pragma, 46 | .ruby .hljs-symbol, 47 | .ruby .hljs-symbol .hljs-string, 48 | .ruby .hljs-class .hljs-parent, 49 | .hljs-built_in, 50 | .django .hljs-template_tag, 51 | .django .hljs-variable, 52 | .smalltalk .hljs-class, 53 | .hljs-javadoc, 54 | .ruby .hljs-string, 55 | .django .hljs-filter .hljs-argument, 56 | .smalltalk .hljs-localvars, 57 | .smalltalk .hljs-array, 58 | .hljs-attr_selector, 59 | .hljs-pseudo, 60 | .hljs-addition, 61 | .hljs-stream, 62 | .hljs-envvar, 63 | .apache .hljs-tag, 64 | .apache .hljs-cbracket, 65 | .nginx .hljs-built_in, 66 | .tex .hljs-command, 67 | .coffeescript .hljs-attribute { 68 | color: #2c009f; 69 | } 70 | 71 | .hljs-comment, 72 | .hljs-annotation, 73 | .hljs-decorator, 74 | .hljs-pi, 75 | .hljs-doctype, 76 | .hljs-deletion, 77 | .hljs-shebang, 78 | .apache .hljs-sqbracket { 79 | color: #e60415; 80 | } 81 | 82 | .hljs-keyword, 83 | .hljs-literal, 84 | .css .hljs-id, 85 | .hljs-phpdoc, 86 | .hljs-dartdoc, 87 | .hljs-title, 88 | .hljs-type, 89 | .vbscript .hljs-built_in, 90 | .rsl .hljs-built_in, 91 | .smalltalk .hljs-class, 92 | .xml .hljs-tag .hljs-title, 93 | .diff .hljs-header, 94 | .hljs-chunk, 95 | .hljs-winutils, 96 | .bash .hljs-variable, 97 | .apache .hljs-tag, 98 | .tex .hljs-command, 99 | .hljs-request, 100 | .hljs-status { 101 | font-weight: bold; 102 | } 103 | 104 | .coffeescript .javascript, 105 | .javascript .xml, 106 | .tex .hljs-formula, 107 | .xml .javascript, 108 | .xml .vbscript, 109 | .xml .css, 110 | .xml .hljs-cdata { 111 | opacity: 0.5; 112 | } 113 | -------------------------------------------------------------------------------- /blog/static/css/school_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/css/school_book.png -------------------------------------------------------------------------------- /blog/static/css/solarized_dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #002b36; 12 | color: #839496; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-doctype, 19 | .hljs-pi, 20 | .lisp .hljs-string, 21 | .hljs-javadoc { 22 | color: #586e75; 23 | } 24 | 25 | /* Solarized Green */ 26 | .hljs-keyword, 27 | .hljs-winutils, 28 | .method, 29 | .hljs-addition, 30 | .css .hljs-tag, 31 | .hljs-request, 32 | .hljs-status, 33 | .nginx .hljs-title { 34 | color: #859900; 35 | } 36 | 37 | /* Solarized Cyan */ 38 | .hljs-number, 39 | .hljs-command, 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-rules .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor, 48 | .hljs-link_url { 49 | color: #2aa198; 50 | } 51 | 52 | /* Solarized Blue */ 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-chunk, 56 | .hljs-decorator, 57 | .hljs-built_in, 58 | .hljs-identifier, 59 | .vhdl .hljs-literal, 60 | .hljs-id, 61 | .css .hljs-function { 62 | color: #268bd2; 63 | } 64 | 65 | /* Solarized Yellow */ 66 | .hljs-attribute, 67 | .hljs-variable, 68 | .lisp .hljs-body, 69 | .smalltalk .hljs-number, 70 | .hljs-constant, 71 | .hljs-class .hljs-title, 72 | .hljs-parent, 73 | .hljs-type, 74 | .hljs-link_reference { 75 | color: #b58900; 76 | } 77 | 78 | /* Solarized Orange */ 79 | .hljs-preprocessor, 80 | .hljs-preprocessor .hljs-keyword, 81 | .hljs-pragma, 82 | .hljs-shebang, 83 | .hljs-symbol, 84 | .hljs-symbol .hljs-string, 85 | .diff .hljs-change, 86 | .hljs-special, 87 | .hljs-attr_selector, 88 | .hljs-subst, 89 | .hljs-cdata, 90 | .css .hljs-pseudo, 91 | .hljs-header { 92 | color: #cb4b16; 93 | } 94 | 95 | /* Solarized Red */ 96 | .hljs-deletion, 97 | .hljs-important { 98 | color: #dc322f; 99 | } 100 | 101 | /* Solarized Violet */ 102 | .hljs-link_label { 103 | color: #6c71c4; 104 | } 105 | 106 | .tex .hljs-formula { 107 | background: #073642; 108 | } 109 | -------------------------------------------------------------------------------- /blog/static/css/solarized_light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #fdf6e3; 12 | color: #657b83; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-doctype, 19 | .hljs-pi, 20 | .lisp .hljs-string, 21 | .hljs-javadoc { 22 | color: #93a1a1; 23 | } 24 | 25 | /* Solarized Green */ 26 | .hljs-keyword, 27 | .hljs-winutils, 28 | .method, 29 | .hljs-addition, 30 | .css .hljs-tag, 31 | .hljs-request, 32 | .hljs-status, 33 | .nginx .hljs-title { 34 | color: #859900; 35 | } 36 | 37 | /* Solarized Cyan */ 38 | .hljs-number, 39 | .hljs-command, 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-rules .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor, 48 | .hljs-link_url { 49 | color: #2aa198; 50 | } 51 | 52 | /* Solarized Blue */ 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-chunk, 56 | .hljs-decorator, 57 | .hljs-built_in, 58 | .hljs-identifier, 59 | .vhdl .hljs-literal, 60 | .hljs-id, 61 | .css .hljs-function { 62 | color: #268bd2; 63 | } 64 | 65 | /* Solarized Yellow */ 66 | .hljs-attribute, 67 | .hljs-variable, 68 | .lisp .hljs-body, 69 | .smalltalk .hljs-number, 70 | .hljs-constant, 71 | .hljs-class .hljs-title, 72 | .hljs-parent, 73 | .hljs-type, 74 | .hljs-link_reference { 75 | color: #b58900; 76 | } 77 | 78 | /* Solarized Orange */ 79 | .hljs-preprocessor, 80 | .hljs-preprocessor .hljs-keyword, 81 | .hljs-pragma, 82 | .hljs-shebang, 83 | .hljs-symbol, 84 | .hljs-symbol .hljs-string, 85 | .diff .hljs-change, 86 | .hljs-special, 87 | .hljs-attr_selector, 88 | .hljs-subst, 89 | .hljs-cdata, 90 | .css .hljs-pseudo, 91 | .hljs-header { 92 | color: #cb4b16; 93 | } 94 | 95 | /* Solarized Red */ 96 | .hljs-deletion, 97 | .hljs-important { 98 | color: #dc322f; 99 | } 100 | 101 | /* Solarized Violet */ 102 | .hljs-link_label { 103 | color: #6c71c4; 104 | } 105 | 106 | .tex .hljs-formula { 107 | background: #eee8d5; 108 | } 109 | -------------------------------------------------------------------------------- /blog/static/css/tomorrow-night-blue.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Blue Theme */ 2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 5 | 6 | /* Tomorrow Comment */ 7 | .hljs-comment { 8 | color: #7285b7; 9 | } 10 | 11 | /* Tomorrow Red */ 12 | .hljs-variable, 13 | .hljs-attribute, 14 | .hljs-tag, 15 | .hljs-regexp, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #ff9da4; 25 | } 26 | 27 | /* Tomorrow Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-pragma, 31 | .hljs-built_in, 32 | .hljs-literal, 33 | .hljs-params, 34 | .hljs-constant { 35 | color: #ffc58f; 36 | } 37 | 38 | /* Tomorrow Yellow */ 39 | .ruby .hljs-class .hljs-title, 40 | .css .hljs-rules .hljs-attribute { 41 | color: #ffeead; 42 | } 43 | 44 | /* Tomorrow Green */ 45 | .hljs-string, 46 | .hljs-value, 47 | .hljs-inheritance, 48 | .hljs-header, 49 | .ruby .hljs-symbol, 50 | .xml .hljs-cdata { 51 | color: #d1f1a9; 52 | } 53 | 54 | /* Tomorrow Aqua */ 55 | .hljs-title, 56 | .css .hljs-hexcolor { 57 | color: #99ffff; 58 | } 59 | 60 | /* Tomorrow Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #bbdaff; 70 | } 71 | 72 | /* Tomorrow Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #ebbbff; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #002451; 82 | color: white; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/tomorrow-night-bright.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Bright Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 4 | 5 | /* Tomorrow Comment */ 6 | .hljs-comment { 7 | color: #969896; 8 | } 9 | 10 | /* Tomorrow Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .ruby .hljs-constant, 16 | .xml .hljs-tag .hljs-title, 17 | .xml .hljs-pi, 18 | .xml .hljs-doctype, 19 | .html .hljs-doctype, 20 | .css .hljs-id, 21 | .css .hljs-class, 22 | .css .hljs-pseudo { 23 | color: #d54e53; 24 | } 25 | 26 | /* Tomorrow Orange */ 27 | .hljs-number, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #e78c45; 35 | } 36 | 37 | /* Tomorrow Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rules .hljs-attribute { 40 | color: #e7c547; 41 | } 42 | 43 | /* Tomorrow Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #b9ca4a; 51 | } 52 | 53 | /* Tomorrow Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #70c0b1; 57 | } 58 | 59 | /* Tomorrow Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #7aa6da; 69 | } 70 | 71 | /* Tomorrow Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #c397d8; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: black; 81 | color: #eaeaea; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /blog/static/css/tomorrow-night-eighties.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Eighties Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 4 | 5 | /* Tomorrow Comment */ 6 | .hljs-comment { 7 | color: #999999; 8 | } 9 | 10 | /* Tomorrow Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .ruby .hljs-constant, 16 | .xml .hljs-tag .hljs-title, 17 | .xml .hljs-pi, 18 | .xml .hljs-doctype, 19 | .html .hljs-doctype, 20 | .css .hljs-id, 21 | .css .hljs-class, 22 | .css .hljs-pseudo { 23 | color: #f2777a; 24 | } 25 | 26 | /* Tomorrow Orange */ 27 | .hljs-number, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #f99157; 35 | } 36 | 37 | /* Tomorrow Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rules .hljs-attribute { 40 | color: #ffcc66; 41 | } 42 | 43 | /* Tomorrow Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #99cc99; 51 | } 52 | 53 | /* Tomorrow Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #66cccc; 57 | } 58 | 59 | /* Tomorrow Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #6699cc; 69 | } 70 | 71 | /* Tomorrow Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #cc99cc; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #2d2d2d; 81 | color: #cccccc; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /blog/static/css/tomorrow-night.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Theme */ 2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 5 | 6 | /* Tomorrow Comment */ 7 | .hljs-comment { 8 | color: #969896; 9 | } 10 | 11 | /* Tomorrow Red */ 12 | .hljs-variable, 13 | .hljs-attribute, 14 | .hljs-tag, 15 | .hljs-regexp, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #cc6666; 25 | } 26 | 27 | /* Tomorrow Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-pragma, 31 | .hljs-built_in, 32 | .hljs-literal, 33 | .hljs-params, 34 | .hljs-constant { 35 | color: #de935f; 36 | } 37 | 38 | /* Tomorrow Yellow */ 39 | .ruby .hljs-class .hljs-title, 40 | .css .hljs-rules .hljs-attribute { 41 | color: #f0c674; 42 | } 43 | 44 | /* Tomorrow Green */ 45 | .hljs-string, 46 | .hljs-value, 47 | .hljs-inheritance, 48 | .hljs-header, 49 | .ruby .hljs-symbol, 50 | .xml .hljs-cdata { 51 | color: #b5bd68; 52 | } 53 | 54 | /* Tomorrow Aqua */ 55 | .hljs-title, 56 | .css .hljs-hexcolor { 57 | color: #8abeb7; 58 | } 59 | 60 | /* Tomorrow Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #81a2be; 70 | } 71 | 72 | /* Tomorrow Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #b294bb; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #1d1f21; 82 | color: #c5c8c6; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /blog/static/css/tomorrow.css: -------------------------------------------------------------------------------- 1 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 2 | 3 | /* Tomorrow Comment */ 4 | .hljs-comment { 5 | color: #8e908c; 6 | } 7 | 8 | /* Tomorrow Red */ 9 | .hljs-variable, 10 | .hljs-attribute, 11 | .hljs-tag, 12 | .hljs-regexp, 13 | .ruby .hljs-constant, 14 | .xml .hljs-tag .hljs-title, 15 | .xml .hljs-pi, 16 | .xml .hljs-doctype, 17 | .html .hljs-doctype, 18 | .css .hljs-id, 19 | .css .hljs-class, 20 | .css .hljs-pseudo { 21 | color: #c82829; 22 | } 23 | 24 | /* Tomorrow Orange */ 25 | .hljs-number, 26 | .hljs-preprocessor, 27 | .hljs-pragma, 28 | .hljs-built_in, 29 | .hljs-literal, 30 | .hljs-params, 31 | .hljs-constant { 32 | color: #f5871f; 33 | } 34 | 35 | /* Tomorrow Yellow */ 36 | .ruby .hljs-class .hljs-title, 37 | .css .hljs-rules .hljs-attribute { 38 | color: #eab700; 39 | } 40 | 41 | /* Tomorrow Green */ 42 | .hljs-string, 43 | .hljs-value, 44 | .hljs-inheritance, 45 | .hljs-header, 46 | .ruby .hljs-symbol, 47 | .xml .hljs-cdata { 48 | color: #718c00; 49 | } 50 | 51 | /* Tomorrow Aqua */ 52 | .hljs-title, 53 | .css .hljs-hexcolor { 54 | color: #3e999f; 55 | } 56 | 57 | /* Tomorrow Blue */ 58 | .hljs-function, 59 | .python .hljs-decorator, 60 | .python .hljs-title, 61 | .ruby .hljs-function .hljs-title, 62 | .ruby .hljs-title .hljs-keyword, 63 | .perl .hljs-sub, 64 | .javascript .hljs-title, 65 | .coffeescript .hljs-title { 66 | color: #4271ae; 67 | } 68 | 69 | /* Tomorrow Purple */ 70 | .hljs-keyword, 71 | .javascript .hljs-function { 72 | color: #8959a8; 73 | } 74 | 75 | .hljs { 76 | display: block; 77 | overflow-x: auto; 78 | background: white; 79 | color: #4d4d4c; 80 | padding: 0.5em; 81 | -webkit-text-size-adjust: none; 82 | } 83 | 84 | .coffeescript .javascript, 85 | .javascript .xml, 86 | .tex .hljs-formula, 87 | .xml .javascript, 88 | .xml .vbscript, 89 | .xml .css, 90 | .xml .hljs-cdata { 91 | opacity: 0.5; 92 | } 93 | -------------------------------------------------------------------------------- /blog/static/css/vs.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Visual Studio-like style based on original C# coloring by Jason Diamond 4 | 5 | */ 6 | .hljs { 7 | display: block; 8 | overflow-x: auto; 9 | padding: 0.5em; 10 | background: white; 11 | color: black; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-comment, 16 | .hljs-annotation, 17 | .diff .hljs-header, 18 | .hljs-chunk, 19 | .apache .hljs-cbracket { 20 | color: #008000; 21 | } 22 | 23 | .hljs-keyword, 24 | .hljs-id, 25 | .hljs-built_in,.css 26 | .smalltalk .hljs-class, 27 | .hljs-winutils, 28 | .bash .hljs-variable, 29 | .tex .hljs-command, 30 | .hljs-request, 31 | .hljs-status, 32 | .nginx .hljs-title, 33 | .xml .hljs-tag, 34 | .xml .hljs-tag .hljs-value { 35 | color: #00f; 36 | } 37 | 38 | .hljs-string, 39 | .hljs-title, 40 | .hljs-parent, 41 | .hljs-tag .hljs-value, 42 | .hljs-rules .hljs-value, 43 | .ruby .hljs-symbol, 44 | .ruby .hljs-symbol .hljs-string, 45 | .hljs-template_tag, 46 | .django .hljs-variable, 47 | .hljs-addition, 48 | .hljs-flow, 49 | .hljs-stream, 50 | .apache .hljs-tag, 51 | .hljs-date, 52 | .tex .hljs-formula, 53 | .coffeescript .hljs-attribute { 54 | color: #a31515; 55 | } 56 | 57 | .ruby .hljs-string, 58 | .hljs-decorator, 59 | .hljs-filter .hljs-argument, 60 | .hljs-localvars, 61 | .hljs-array, 62 | .hljs-attr_selector, 63 | .hljs-pseudo, 64 | .hljs-pi, 65 | .hljs-doctype, 66 | .hljs-deletion, 67 | .hljs-envvar, 68 | .hljs-shebang, 69 | .hljs-preprocessor, 70 | .hljs-pragma, 71 | .userType, 72 | .apache .hljs-sqbracket, 73 | .nginx .hljs-built_in, 74 | .tex .hljs-special, 75 | .hljs-prompt { 76 | color: #2b91af; 77 | } 78 | 79 | .hljs-phpdoc, 80 | .hljs-dartdoc, 81 | .hljs-javadoc, 82 | .hljs-xmlDocTag { 83 | color: #808080; 84 | } 85 | 86 | .hljs-type, 87 | .hljs-typename { font-weight: bold; } 88 | 89 | .vhdl .hljs-string { color: #666666; } 90 | .vhdl .hljs-literal { color: #a31515; } 91 | .vhdl .hljs-attribute { color: #00b0e8; } 92 | 93 | .xml .hljs-attribute { color: #f00; } 94 | -------------------------------------------------------------------------------- /blog/static/css/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-keyword, 18 | .hljs-tag, 19 | .css .hljs-class, 20 | .css .hljs-id, 21 | .lisp .hljs-title, 22 | .nginx .hljs-title, 23 | .hljs-request, 24 | .hljs-status, 25 | .clojure .hljs-attribute { 26 | color: #e3ceab; 27 | } 28 | 29 | .django .hljs-template_tag, 30 | .django .hljs-variable, 31 | .django .hljs-filter .hljs-argument { 32 | color: #dcdcdc; 33 | } 34 | 35 | .hljs-number, 36 | .hljs-date { 37 | color: #8cd0d3; 38 | } 39 | 40 | .dos .hljs-envvar, 41 | .dos .hljs-stream, 42 | .hljs-variable, 43 | .apache .hljs-sqbracket { 44 | color: #efdcbc; 45 | } 46 | 47 | .dos .hljs-flow, 48 | .diff .hljs-change, 49 | .python .exception, 50 | .python .hljs-built_in, 51 | .hljs-literal, 52 | .tex .hljs-special { 53 | color: #efefaf; 54 | } 55 | 56 | .diff .hljs-chunk, 57 | .hljs-subst { 58 | color: #8f8f8f; 59 | } 60 | 61 | .dos .hljs-keyword, 62 | .hljs-decorator, 63 | .hljs-title, 64 | .hljs-type, 65 | .diff .hljs-header, 66 | .ruby .hljs-class .hljs-parent, 67 | .apache .hljs-tag, 68 | .nginx .hljs-built_in, 69 | .tex .hljs-command, 70 | .hljs-prompt { 71 | color: #efef8f; 72 | } 73 | 74 | .dos .hljs-winutils, 75 | .ruby .hljs-symbol, 76 | .ruby .hljs-symbol .hljs-string, 77 | .ruby .hljs-string { 78 | color: #dca3a3; 79 | } 80 | 81 | .diff .hljs-deletion, 82 | .hljs-string, 83 | .hljs-tag .hljs-value, 84 | .hljs-preprocessor, 85 | .hljs-pragma, 86 | .hljs-built_in, 87 | .hljs-javadoc, 88 | .smalltalk .hljs-class, 89 | .smalltalk .hljs-localvars, 90 | .smalltalk .hljs-array, 91 | .css .hljs-rules .hljs-value, 92 | .hljs-attr_selector, 93 | .hljs-pseudo, 94 | .apache .hljs-cbracket, 95 | .tex .hljs-formula, 96 | .coffeescript .hljs-attribute { 97 | color: #cc9393; 98 | } 99 | 100 | .hljs-shebang, 101 | .diff .hljs-addition, 102 | .hljs-comment, 103 | .hljs-annotation, 104 | .hljs-pi, 105 | .hljs-doctype { 106 | color: #7f9f7f; 107 | } 108 | 109 | .coffeescript .javascript, 110 | .javascript .xml, 111 | .tex .hljs-formula, 112 | .xml .javascript, 113 | .xml .vbscript, 114 | .xml .css, 115 | .xml .hljs-cdata { 116 | opacity: 0.5; 117 | } 118 | 119 | -------------------------------------------------------------------------------- /blog/static/font/mathix67-font.eot?56173255: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/font/mathix67-font.eot?56173255 -------------------------------------------------------------------------------- /blog/static/font/mathix67-font.eot?56173255.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/font/mathix67-font.eot?56173255.1 -------------------------------------------------------------------------------- /blog/static/font/mathix67-font.svg?56173255: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2014 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /blog/static/font/mathix67-font.ttf?56173255: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/font/mathix67-font.ttf?56173255 -------------------------------------------------------------------------------- /blog/static/font/mathix67-font.woff?56173255: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/font/mathix67-font.woff?56173255 -------------------------------------------------------------------------------- /blog/static/font/mathix67-font.woff?56173255.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/font/mathix67-font.woff?56173255.1 -------------------------------------------------------------------------------- /blog/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /blog/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /blog/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /blog/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /blog/static/fonts/mathix67-font.eot?56173255: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/mathix67-font.eot?56173255 -------------------------------------------------------------------------------- /blog/static/fonts/mathix67-font.eot?56173255.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/mathix67-font.eot?56173255.1 -------------------------------------------------------------------------------- /blog/static/fonts/mathix67-font.svg?56173255: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2014 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /blog/static/fonts/mathix67-font.ttf?56173255: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/mathix67-font.ttf?56173255 -------------------------------------------------------------------------------- /blog/static/fonts/mathix67-font.woff?56173255: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/mathix67-font.woff?56173255 -------------------------------------------------------------------------------- /blog/static/fonts/mathix67-font.woff?56173255.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/fonts/mathix67-font.woff?56173255.1 -------------------------------------------------------------------------------- /blog/static/img/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/img/avatar.jpg -------------------------------------------------------------------------------- /blog/static/img/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/img/duck.png -------------------------------------------------------------------------------- /blog/static/img/g2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/img/g2.jpg -------------------------------------------------------------------------------- /blog/static/img/girl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/img/girl.png -------------------------------------------------------------------------------- /blog/static/img/girl2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/img/girl2.png -------------------------------------------------------------------------------- /blog/static/img/hat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/img/hat.png -------------------------------------------------------------------------------- /blog/static/img/sleep.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/static/img/sleep.gif -------------------------------------------------------------------------------- /blog/static/js/comment-reply.js: -------------------------------------------------------------------------------- 1 | var addComment = { 2 | moveForm : function(commId, parentId, respondId, postId) { 3 | var t = this, div, comm = t.I(commId), respond = t.I(respondId), cancel = t.I('cancel-comment-reply-link'), parent = t.I('comment_parent'), post = t.I('comment_post_ID'); 4 | 5 | if ( ! comm || ! respond || ! cancel || ! parent ) 6 | return; 7 | 8 | t.respondId = respondId; 9 | postId = postId || false; 10 | 11 | if ( ! t.I('wp-temp-form-div') ) { 12 | div = document.createElement('div'); 13 | div.id = 'wp-temp-form-div'; 14 | div.style.display = 'none'; 15 | respond.parentNode.insertBefore(div, respond); 16 | } 17 | 18 | comm.parentNode.insertBefore(respond, comm.nextSibling); 19 | if ( post && postId ) 20 | post.value = postId; 21 | parent.value = parentId; 22 | cancel.style.display = ''; 23 | 24 | cancel.onclick = function() { 25 | var t = addComment, temp = t.I('wp-temp-form-div'), respond = t.I(t.respondId); 26 | 27 | if ( ! temp || ! respond ) 28 | return; 29 | 30 | t.I('comment_parent').value = '0'; 31 | temp.parentNode.insertBefore(respond, temp); 32 | temp.parentNode.removeChild(temp); 33 | this.style.display = 'none'; 34 | this.onclick = null; 35 | return false; 36 | }; 37 | 38 | try { t.I('comment').focus(); } 39 | catch(e) {} 40 | 41 | return false; 42 | }, 43 | 44 | I : function(e) { 45 | return document.getElementById(e); 46 | } 47 | }; 48 | -------------------------------------------------------------------------------- /blog/static/js/navigation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Handles toggling the navigation menu for small screens and 3 | * accessibility for submenu items. 4 | */ 5 | ( function() { 6 | var nav = document.getElementById( 'site-navigation' ), button, menu; 7 | if ( ! nav ) { 8 | return; 9 | } 10 | 11 | button = nav.getElementsByTagName( 'button' )[0]; 12 | menu = nav.getElementsByTagName( 'ul' )[0]; 13 | if ( ! button ) { 14 | return; 15 | } 16 | 17 | // Hide button if menu is missing or empty. 18 | if ( ! menu || ! menu.childNodes.length ) { 19 | button.style.display = 'none'; 20 | return; 21 | } 22 | 23 | button.onclick = function() { 24 | if ( -1 === menu.className.indexOf( 'nav-menu' ) ) { 25 | menu.className = 'nav-menu'; 26 | } 27 | 28 | if ( -1 !== button.className.indexOf( 'toggled-on' ) ) { 29 | button.className = button.className.replace( ' toggled-on', '' ); 30 | menu.className = menu.className.replace( ' toggled-on', '' ); 31 | } else { 32 | button.className += ' toggled-on'; 33 | menu.className += ' toggled-on'; 34 | } 35 | }; 36 | } )(); 37 | 38 | // Better focus for hidden submenu items for accessibility. 39 | ( function( $ ) { 40 | $( '.main-navigation' ).find( 'a' ).on( 'focus.twentytwelve blur.twentytwelve', function() { 41 | $( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' ); 42 | } ); 43 | 44 | if ( 'ontouchstart' in window ) { 45 | $( '.menu-item-has-children > a' ).on( 'touchstart.twentytwelve', function( e ) { 46 | var el = $( this ).parent( 'li' ); 47 | 48 | if ( ! el.hasClass( 'focus' ) ) { 49 | e.preventDefault(); 50 | el.toggleClass( 'focus' ); 51 | el.siblings( '.focus').removeClass( 'focus' ); 52 | } 53 | } ); 54 | } 55 | } )( jQuery ); 56 | -------------------------------------------------------------------------------- /blog/static/js/shAutoloader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2(){1 h=5;h.I=2(){2 n(c,a){4(1 d=0;d)/g 47 | }); 48 | }; 49 | 50 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 51 | Brush.aliases = ['java']; 52 | 53 | SyntaxHighlighter.brushes.Java = Brush; 54 | 55 | // CommonJS 56 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 57 | })(); 58 | -------------------------------------------------------------------------------- /blog/static/js/shBrushJavaFX.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | // Contributed by Patrick Webster 25 | // http://patrickwebster.blogspot.com/2009/04/javafx-brush-for-syntaxhighlighter.html 26 | var datatypes = 'Boolean Byte Character Double Duration ' 27 | + 'Float Integer Long Number Short String Void' 28 | ; 29 | 30 | var keywords = 'abstract after and as assert at before bind bound break catch class ' 31 | + 'continue def delete else exclusive extends false finally first for from ' 32 | + 'function if import in indexof init insert instanceof into inverse last ' 33 | + 'lazy mixin mod nativearray new not null on or override package postinit ' 34 | + 'protected public public-init public-read replace return reverse sizeof ' 35 | + 'step super then this throw true try tween typeof var where while with ' 36 | + 'attribute let private readonly static trigger' 37 | ; 38 | 39 | this.regexList = [ 40 | { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, 41 | { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, 42 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, 43 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, 44 | { regex: /(-?\.?)(\b(\d*\.?\d+|\d+\.?\d*)(e[+-]?\d+)?|0x[a-f\d]+)\b\.?/gi, css: 'color2' }, // numbers 45 | { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'variable' }, // datatypes 46 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } 47 | ]; 48 | this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); 49 | }; 50 | 51 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 52 | Brush.aliases = ['jfx', 'javafx']; 53 | 54 | SyntaxHighlighter.brushes.JavaFX = Brush; 55 | 56 | // CommonJS 57 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 58 | })(); 59 | -------------------------------------------------------------------------------- /blog/static/js/shBrushPlain.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | }; 25 | 26 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 27 | Brush.aliases = ['text', 'plain']; 28 | 29 | SyntaxHighlighter.brushes.Plain = Brush; 30 | 31 | // CommonJS 32 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 33 | })(); 34 | -------------------------------------------------------------------------------- /blog/static/js/shBrushRuby.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | // Contributed by Erik Peterson. 25 | 26 | var keywords = 'alias and BEGIN begin break case class def define_method defined do each else elsif ' + 27 | 'END end ensure false for if in module new next nil not or raise redo rescue retry return ' + 28 | 'self super then throw true undef unless until when while yield'; 29 | 30 | var builtins = 'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' + 31 | 'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' + 32 | 'ThreadGroup Thread Time TrueClass'; 33 | 34 | this.regexList = [ 35 | { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments 36 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings 37 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings 38 | { regex: /\b[A-Z0-9_]+\b/g, css: 'constants' }, // constants 39 | { regex: /:[a-z][A-Za-z0-9_]*/g, css: 'color2' }, // symbols 40 | { regex: /(\$|@@|@)\w+/g, css: 'variable bold' }, // $global, @instance, and @@class variables 41 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords 42 | { regex: new RegExp(this.getKeywords(builtins), 'gm'), css: 'color1' } // builtins 43 | ]; 44 | 45 | this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); 46 | }; 47 | 48 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 49 | Brush.aliases = ['ruby', 'rails', 'ror', 'rb']; 50 | 51 | SyntaxHighlighter.brushes.Ruby = Brush; 52 | 53 | // CommonJS 54 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 55 | })(); 56 | -------------------------------------------------------------------------------- /blog/static/js/shBrushScala.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | // Contributed by Yegor Jbanov and David Bernard. 25 | 26 | var keywords = 'val sealed case def true trait implicit forSome import match object null finally super ' + 27 | 'override try lazy for var catch throw type extends class while with new final yield abstract ' + 28 | 'else do if return protected private this package false'; 29 | 30 | var keyops = '[_:=><%#@]+'; 31 | 32 | this.regexList = [ 33 | { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments 34 | { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments 35 | { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // multi-line strings 36 | { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double-quoted string 37 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings 38 | { regex: /0x[a-f0-9]+|\d+(\.\d+)?/gi, css: 'value' }, // numbers 39 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords 40 | { regex: new RegExp(keyops, 'gm'), css: 'keyword' } // scala keyword 41 | ]; 42 | } 43 | 44 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 45 | Brush.aliases = ['scala']; 46 | 47 | SyntaxHighlighter.brushes.Scala = Brush; 48 | 49 | // CommonJS 50 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 51 | })(); 52 | -------------------------------------------------------------------------------- /blog/static/js/shBrushVb.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' + 25 | 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' + 26 | 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' + 27 | 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' + 28 | 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' + 29 | 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' + 30 | 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' + 31 | 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' + 32 | 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' + 33 | 'Overloads Overridable Overrides ParamArray Preserve Private Property ' + 34 | 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' + 35 | 'Return Select Set Shadows Shared Short Single Static Step Stop String ' + 36 | 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' + 37 | 'Variant When While With WithEvents WriteOnly Xor'; 38 | 39 | this.regexList = [ 40 | { regex: /'.*$/gm, css: 'comments' }, // one line comments 41 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings 42 | { regex: /^\s*#.*$/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion 43 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // vb keyword 44 | ]; 45 | 46 | this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); 47 | }; 48 | 49 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 50 | Brush.aliases = ['vb', 'vbnet']; 51 | 52 | SyntaxHighlighter.brushes.Vb = Brush; 53 | 54 | // CommonJS 55 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 56 | })(); 57 | -------------------------------------------------------------------------------- /blog/static/js/shBrushXml.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | function process(match, regexInfo) 25 | { 26 | var constructor = SyntaxHighlighter.Match, 27 | code = match[0], 28 | tag = new XRegExp('(<|<)[\\s\\/\\?]*(?[:\\w-\\.]+)', 'xg').exec(code), 29 | result = [] 30 | ; 31 | 32 | if (match.attributes != null) 33 | { 34 | var attributes, 35 | regex = new XRegExp('(? [\\w:\\-\\.]+)' + 36 | '\\s*=\\s*' + 37 | '(? ".*?"|\'.*?\'|\\w+)', 38 | 'xg'); 39 | 40 | while ((attributes = regex.exec(code)) != null) 41 | { 42 | result.push(new constructor(attributes.name, match.index + attributes.index, 'color1')); 43 | result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string')); 44 | } 45 | } 46 | 47 | if (tag != null) 48 | result.push( 49 | new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword') 50 | ); 51 | 52 | return result; 53 | } 54 | 55 | this.regexList = [ 56 | { regex: new XRegExp('(\\<|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\>|>)', 'gm'), css: 'color2' }, // 57 | { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // 58 | { regex: new XRegExp('(<|<)[\\s\\/\\?]*(\\w+)(?.*?)[\\s\\/\\?]*(>|>)', 'sg'), func: process } 59 | ]; 60 | }; 61 | 62 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 63 | Brush.aliases = ['xml', 'xhtml', 'xslt', 'html']; 64 | 65 | SyntaxHighlighter.brushes.Xml = Brush; 66 | 67 | // CommonJS 68 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 69 | })(); 70 | -------------------------------------------------------------------------------- /blog/static/js/shLegacy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 u={8:{}};u.8={A:4(c,k,l,m,n,o){4 d(a,b){2 a!=1?a:b}4 f(a){2 a!=1?a.E():1}c=c.I(":");3 g=c[0],e={};t={"r":K};M=1;5=8.5;9(3 j R c)e[c[j]]="r";k=f(d(k,5.C));l=f(d(l,5.D));m=f(d(m,5.s));o=f(d(o,5.Q));n=f(d(n,5["x-y"]));2{P:g,C:d(t[e.O],k),D:d(t[e.N],l),s:d({"r":r}[e.s],m),"x-y":d(4(a,b){9(3 h=T S("^"+b+"\\\\[(?\\\\w+)\\\\]$","U"),i=1,p=0;p{% trans 'Page not found' %} 9 | 10 |

{% trans "We're sorry, but the requested page could not be found." %}

11 | 12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /blog/templates/admin/500.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n %} 3 | 4 | {% block breadcrumbs %} 5 | 9 | {% endblock %} 10 | 11 | {% block title %}{% trans 'Server error (500)' %}{% endblock %} 12 | 13 | {% block content %} 14 |

{% trans 'Server Error (500)' %}

15 |

{% trans "There's been an error. It's been reported to the site administrators via email and should be fixed shortly. Thanks for your patience." %}

16 | 17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /blog/templates/admin/actions.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
3 | {% for field in action_form %}{% if field.label %}{% endif %}{% endfor %} 4 | 5 | {% if actions_selection_counter %} 6 | 7 | {{ selection_note }} 8 | {% if cl.result_count != cl.result_list|length %} 9 | {{ selection_note_all }} 10 | 11 | {% blocktrans with cl.result_count as total_count %}Select all {{ total_count }} {{ module_name }}{% endblocktrans %} 12 | 13 | {% trans "Clear selection" %} 14 | {% endif %} 15 | {% endif %} 16 |
17 | -------------------------------------------------------------------------------- /blog/templates/admin/app_index.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/index.html" %} 2 | {% load i18n %} 3 | 4 | {% block bodyclass %}{{ block.super }} app-{{ app_label }}{% endblock %} 5 | 6 | {% if not is_popup %} 7 | {% block breadcrumbs %} 8 | 15 | {% endblock %} 16 | {% endif %} 17 | 18 | {% block sidebar %}{% endblock %} 19 | -------------------------------------------------------------------------------- /blog/templates/admin/auth/user/add_form.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_form.html" %} 2 | {% load i18n %} 3 | 4 | {% block form_top %} 5 | {% if not is_popup %} 6 |

{% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}

7 | {% else %} 8 |

{% trans "Enter a username and password." %}

9 | {% endif %} 10 | {% endblock %} 11 | 12 | {% block after_field_sets %} 13 | 14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /blog/templates/admin/base_site.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base.html" %} 2 | 3 | {% block title %}{{ title }} | {{ site_title|default:_('evilbinary site admin') }}{% endblock %} 4 | 5 | {% block branding %} 6 |

{{ site_header|default:_('evilbinary administration') }}

7 | {% endblock %} 8 | 9 | {% block nav-global %}{% endblock %} 10 | -------------------------------------------------------------------------------- /blog/templates/admin/change_list_results.html: -------------------------------------------------------------------------------- 1 | {% load i18n admin_static %}{% load cycle from future %} 2 | {% if result_hidden_fields %} 3 |
{# DIV for HTML validation #} 4 | {% for item in result_hidden_fields %}{{ item }}{% endfor %} 5 |
6 | {% endif %} 7 | {% if results %} 8 |
9 | 10 | 11 | 12 | {% for header in result_headers %} 13 | {% endfor %} 26 | 27 | 28 | 29 | {% for result in results %} 30 | {% if result.form.non_field_errors %} 31 | 32 | {% endif %} 33 | {% for item in result %}{{ item }}{% endfor %} 34 | {% endfor %} 35 | 36 |
14 | {% if header.sortable %} 15 | {% if header.sort_priority > 0 %} 16 |
17 | 18 | {% if num_sorted_fields > 1 %}{{ header.sort_priority }}{% endif %} 19 | 20 |
21 | {% endif %} 22 | {% endif %} 23 |
{% if header.sortable %}{{ header.text|capfirst }}{% else %}{{ header.text|capfirst }}{% endif %}
24 |
25 |
{{ result.form.non_field_errors }}
37 |
38 | {% endif %} 39 | -------------------------------------------------------------------------------- /blog/templates/admin/date_hierarchy.html: -------------------------------------------------------------------------------- 1 | {% if show %} 2 |
3 |
9 |
10 | {% endif %} 11 | -------------------------------------------------------------------------------- /blog/templates/admin/delete_confirmation.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n admin_urls %} 3 | 4 | {% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation{% endblock %} 5 | 6 | {% block breadcrumbs %} 7 | 14 | {% endblock %} 15 | 16 | {% block content %} 17 | {% if perms_lacking or protected %} 18 | {% if perms_lacking %} 19 |

{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}

20 |
    21 | {% for obj in perms_lacking %} 22 |
  • {{ obj }}
  • 23 | {% endfor %} 24 |
25 | {% endif %} 26 | {% if protected %} 27 |

{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktrans %}

28 |
    29 | {% for obj in protected %} 30 |
  • {{ obj }}
  • 31 | {% endfor %} 32 |
33 | {% endif %} 34 | {% else %} 35 |

{% blocktrans with escaped_object=object %}Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktrans %}

36 |
    {{ deleted_objects|unordered_list }}
37 |
{% csrf_token %} 38 |
39 | 40 | 41 |
42 |
43 | {% endif %} 44 | {% endblock %} 45 | -------------------------------------------------------------------------------- /blog/templates/admin/delete_selected_confirmation.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n l10n admin_urls %} 3 | 4 | {% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation delete-selected-confirmation{% endblock %} 5 | 6 | {% block breadcrumbs %} 7 | 13 | {% endblock %} 14 | 15 | {% block content %} 16 | {% if perms_lacking or protected %} 17 | {% if perms_lacking %} 18 |

{% blocktrans %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}

19 |
    20 | {% for obj in perms_lacking %} 21 |
  • {{ obj }}
  • 22 | {% endfor %} 23 |
24 | {% endif %} 25 | {% if protected %} 26 |

{% blocktrans %}Deleting the selected {{ objects_name }} would require deleting the following protected related objects:{% endblocktrans %}

27 |
    28 | {% for obj in protected %} 29 |
  • {{ obj }}
  • 30 | {% endfor %} 31 |
32 | {% endif %} 33 | {% else %} 34 |

{% blocktrans %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktrans %}

35 | {% for deletable_object in deletable_objects %} 36 |
    {{ deletable_object|unordered_list }}
37 | {% endfor %} 38 |
{% csrf_token %} 39 |
40 | {% for obj in queryset %} 41 | 42 | {% endfor %} 43 | 44 | 45 | 46 |
47 |
48 | {% endif %} 49 | {% endblock %} 50 | -------------------------------------------------------------------------------- /blog/templates/admin/edit_inline/stacked.html: -------------------------------------------------------------------------------- 1 | {% load i18n admin_static %} 2 |
3 |

{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}

4 | {{ inline_admin_formset.formset.management_form }} 5 | {{ inline_admin_formset.formset.non_form_errors }} 6 | 7 | {% for inline_admin_form in inline_admin_formset %}
8 |

{{ inline_admin_formset.opts.verbose_name|capfirst }}: {% if inline_admin_form.original %}{{ inline_admin_form.original }}{% else %}#{{ forloop.counter }}{% endif %} 9 | {% if inline_admin_form.show_url %}{% trans "View on site" %}{% endif %} 10 | {% if inline_admin_formset.formset.can_delete and inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}{% endif %} 11 |

12 | {% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %} 13 | {% for fieldset in inline_admin_form %} 14 | {% include "admin/includes/fieldset.html" %} 15 | {% endfor %} 16 | {% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %} 17 | {{ inline_admin_form.fk_field.field }} 18 |
{% endfor %} 19 |
20 | 21 | 31 | -------------------------------------------------------------------------------- /blog/templates/admin/filter.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |

{% blocktrans with filter_title=title %} By {{ filter_title }} {% endblocktrans %}

3 | 9 | -------------------------------------------------------------------------------- /blog/templates/admin/includes/fieldset.html: -------------------------------------------------------------------------------- 1 | {% load myfilter %} 2 |
3 | {% if fieldset.name %}

{{ fieldset.name }}

{% endif %} 4 | {% if fieldset.description %} 5 |
{{ fieldset.description|safe }}
6 | {% endif %} 7 | {% for line in fieldset %} 8 |
9 | {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %} 10 | {% for field in line %} 11 | 12 | {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %} 13 | {% if field.is_checkbox %} 14 | {{ field.field }}{{ field.label_tag }} 15 | {% else %} 16 | {{ field.label_tag }} 17 | {% if field.is_readonly %} 18 |

{{ field.contents }}

19 | {% else %} 20 | {{ field.field }} 21 | 22 | {% endif %} 23 | {% endif %} 24 | {% if field.field.help_text %} 25 |

{{ field.field.help_text|safe }}

26 | {% endif %} 27 |
28 | {% endfor %} 29 | 30 | {% endfor %} 31 |
32 | -------------------------------------------------------------------------------- /blog/templates/admin/invalid_setup.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n %} 3 | 4 | {% block breadcrumbs %} 5 | 9 | {% endblock %} 10 | 11 | {% block content %} 12 |

{% trans "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." %}

13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /blog/templates/admin/login.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n admin_static %} 3 | 4 | {% block extrastyle %}{{ block.super }}{% endblock %} 5 | 6 | {% block bodyclass %}{{ block.super }} login{% endblock %} 7 | 8 | {% block nav-global %}{% endblock %} 9 | 10 | {% block content_title %}{% endblock %} 11 | 12 | {% block breadcrumbs %}{% endblock %} 13 | 14 | {% block content %} 15 | {% if form.errors and not form.non_field_errors %} 16 |

17 | {% if form.errors.items|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %} 18 |

19 | {% endif %} 20 | 21 | {% if form.non_field_errors %} 22 | {% for error in form.non_field_errors %} 23 |

24 | {{ error }} 25 |

26 | {% endfor %} 27 | {% endif %} 28 | 29 |
30 |
{% csrf_token %} 31 |
32 | {{ form.username.errors }} 33 | {{ form.username }} 34 |
35 |
36 | {{ form.password.errors }} 37 | {{ form.password }} 38 | 39 |
40 | {% url 'admin_password_reset' as password_reset_url %} 41 | {% if password_reset_url %} 42 | 45 | {% endif %} 46 |
47 | 48 |
49 |
50 | 51 | 54 |
55 | {% endblock %} 56 | -------------------------------------------------------------------------------- /blog/templates/admin/object_history.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n admin_urls %} 3 | 4 | {% block breadcrumbs %} 5 | 12 | {% endblock %} 13 | 14 | {% block content %} 15 |
16 |
17 | 18 | {% if action_list %} 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% for action in action_list %} 29 | 30 | 31 | 32 | 33 | 34 | {% endfor %} 35 | 36 |
{% trans 'Date/time' %}{% trans 'User' %}{% trans 'Action' %}
{{ action.action_time|date:"DATETIME_FORMAT" }}{{ action.user.get_username }}{% if action.user.get_full_name %} ({{ action.user.get_full_name }}){% endif %}{{ action.change_message }}
37 | {% else %} 38 |

{% trans "This object doesn't have a change history. It probably wasn't added via this admin site." %}

39 | {% endif %} 40 |
41 |
42 | {% endblock %} 43 | -------------------------------------------------------------------------------- /blog/templates/admin/pagination.html: -------------------------------------------------------------------------------- 1 | {% load admin_list %} 2 | {% load i18n %} 3 |

4 | {% if pagination_required %} 5 | {% for i in page_range %} 6 | {% paginator_number cl i %} 7 | {% endfor %} 8 | {% endif %} 9 | {{ cl.result_count }} {% ifequal cl.result_count 1 %}{{ cl.opts.verbose_name }}{% else %}{{ cl.opts.verbose_name_plural }}{% endifequal %} 10 | {% if show_all_url %}  {% trans 'Show all' %}{% endif %} 11 | {% if cl.formset and cl.result_count %}{% endif %} 12 |

13 | -------------------------------------------------------------------------------- /blog/templates/admin/popup_response.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /blog/templates/admin/prepopulated_fields_js.html: -------------------------------------------------------------------------------- 1 | {% load l10n %} 2 | 28 | -------------------------------------------------------------------------------- /blog/templates/admin/search_form.html: -------------------------------------------------------------------------------- 1 | {% load i18n admin_static %} 2 | {% if cl.search_fields %} 3 |
16 | 17 | {% endif %} 18 | -------------------------------------------------------------------------------- /blog/templates/admin/submit_line.html: -------------------------------------------------------------------------------- 1 | {% load i18n admin_urls %} 2 |
3 | {% if show_save %}{% endif %} 4 | {% if show_delete_link %} 5 | {% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %} 6 | 7 | {% endif %} 8 | {% if show_save_as_new %}{%endif%} 9 | {% if show_save_and_add_another %}{% endif %} 10 | {% if show_save_and_continue %}{% endif %} 11 |
12 | -------------------------------------------------------------------------------- /blog/templates/archive.html: -------------------------------------------------------------------------------- 1 | {% for post in posts %} 2 |

{{post.post_titile}}

3 |

{{post.post_date}}

4 |

{{post.post_title}}

5 |

{{post.post_content}}

6 | {% endfor%} 7 | -------------------------------------------------------------------------------- /blog/templates/base.html: -------------------------------------------------------------------------------- 1 | {%block header%} 2 | {%endblock%} 3 | {%block middle%} 4 | {%endblock%} 5 | {%block test%} 6 | {%endblock%} 7 | {%block footer%} 8 | {%endblock%} -------------------------------------------------------------------------------- /blog/templates/comment_block copy.html: -------------------------------------------------------------------------------- 1 | {% load gravatar %} 2 | 3 |
  • 4 |
    5 |
    6 | {%if not comment.comment_author_email %} 7 | 8 | {%else%} 9 | {%if level < 1 %} 10 | 11 | {%else%} 12 | 13 | {%endif%} 14 | {%endif%} 15 | 16 | 17 | {%if comment.comment_author_url != ''%} 18 | {{comment.comment_author}} 19 | {%else%} 20 | {{comment.comment_author}} 21 | {%endif%} 22 | 23 | {%if comment.user_id != 0%} 24 | Post author 25 | {%else%} 26 | 27 | {%endif%} 28 | 29 | 30 | 31 | 32 |
    33 | 34 |
    35 |

    {{comment.comment_content}}

    36 | 37 |
    38 | 39 |
    40 | 回复 41 |
    42 |
    43 |
  • -------------------------------------------------------------------------------- /blog/templates/comment_block.html: -------------------------------------------------------------------------------- 1 | {% load gravatar %} 2 | 3 |
  • 4 |
    5 | {%if not comment.comment_author_email %} 6 | 7 | {%else%} 8 | {%if level < 1 %} 9 | 10 | {%else%} 11 | 12 | {%endif%} 13 | {%endif%} 14 |
    15 |
    16 | {%if comment.comment_author_url != ''%} 17 | {{comment.comment_author}} 18 | {%else%} 19 |
    {{comment.comment_author}}
    20 | {%endif%} 21 | {%if comment.user_id != 0%} 22 | Post author 23 | {%else%} 24 | 25 | {%endif%} 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 回复 34 | 35 |
    36 |
    37 | 38 | {{comment.comment_content}} 39 | {%if comment.comment_approved = '0' %} 40 | 您的评论已经提交等待博主审核! 41 | {%endif%} 42 | 43 | 44 |
    45 | 46 | 47 |
    48 |
    49 | 50 |
  • 51 | 52 | -------------------------------------------------------------------------------- /blog/templates/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{headeinfo.title}} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 23 |
    24 | 49 | 50 |
    -------------------------------------------------------------------------------- /blog/templates/index.html: -------------------------------------------------------------------------------- 1 | {%extends "base.html"%} 2 | {%block header%} 3 | {{header}} 4 | {%endblock%} 5 | {%block middle%} 6 |
    7 |
    8 | {{contents}} 9 |
    10 |
    11 | {{sidebar}} 12 | {%endblock%} 13 | {%block footer%} 14 | {{footer}} 15 | {%endblock%} 16 | 17 | -------------------------------------------------------------------------------- /blog/templates/page.html: -------------------------------------------------------------------------------- 1 | {{page_contents}} 2 | {{page_nator}} 3 | {{page_comment}} 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /blog/templates/page_nator.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blog/templates/page_nav.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blog/templates/test.html: -------------------------------------------------------------------------------- 1 | 2 | {{test}} 3 | cats================= 4 | {{cats}} 5 |
    6 | links================ 7 | {{links}} 8 |
    9 | ------------------------- 10 |
    11 | {%for x,y in links.items%} 12 | {{x}}
    13 | {%for l in y%} 14 | {{l}}
    15 | {%endfor%} 16 |
    17 | 18 | {%endfor%} 19 | comment_content:{{form.content.errors}} 20 | comment_author:{{form.author.errors}} 21 | comment_author_email:{{form.email.errors}} 22 | 23 | -------------------------------------------------------------------------------- /blog/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/blog/templatetags/__init__.py -------------------------------------------------------------------------------- /blog/templatetags/gravatar.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | #!/usr/bin/env python 3 | # -*- coding:utf-8 -*- 4 | # Author : evilbinary.org 5 | # E-mail : rootntsd@gmail.com 6 | # Date : 14/10/1 12:21:19 7 | # Desc : 8 | 9 | from django import template 10 | import urllib 11 | import hashlib 12 | from django.conf import settings 13 | 14 | register = template.Library() 15 | 16 | GRAVATAR_URL_PREFIX = getattr(settings, "GRAVATAR_URL_PREFIX", "http://www.gravatar.com/avatar/") 17 | GRAVATAR_DEFAULT_IMAGE = getattr(settings, "GRAVATAR_DEFAULT_IMAGE", "/static/img/avatar.jpg") 18 | 19 | class GravatarUrlNode(template.Node): 20 | def __init__(self, email): 21 | self.email = template.Variable(email) 22 | 23 | def render(self, context): 24 | try: 25 | email = self.email.resolve(context) 26 | except template.VariableDoesNotExist: 27 | return '' 28 | 29 | default = GRAVATAR_DEFAULT_IMAGE 30 | size = 40 31 | 32 | gravatar_url = GRAVATAR_URL_PREFIX + hashlib.md5(email.lower()).hexdigest() + "?" 33 | gravatar_url += urllib.urlencode({'d':default, 's':str(size)}) 34 | return gravatar_url 35 | 36 | @register.tag 37 | def gravatar_url(parser, token): 38 | try: 39 | tag_name, email = token.split_contents() 40 | except ValueError: 41 | raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0] 42 | 43 | return GravatarUrlNode(email) 44 | 45 | @register.filter 46 | def get_gravatar(email,size=44,verify_default=False): 47 | try: 48 | gravatar_url=GRAVATAR_URL_PREFIX + hashlib.md5(email.lower()).hexdigest()+'?s=%d' %size 49 | if (verify_default): 50 | gravatar_url += '&d=404' 51 | try: 52 | urllib2.urlopen(gravatar_url) 53 | except urllib2.URLError, e: 54 | return None 55 | return gravatar_url 56 | except Exception,e: 57 | return '' 58 | -------------------------------------------------------------------------------- /blog/templatetags/md2.py: -------------------------------------------------------------------------------- 1 | """ 2 | Markdown2 filter, requires the python-markdown2 library from 3 | http://code.google.com/p/python-markdown2 4 | 5 | This code is based on django's markup contrib. 6 | """ 7 | 8 | from django import template 9 | from django.conf import settings 10 | from django.utils.encoding import force_unicode 11 | from django.utils.safestring import mark_safe 12 | 13 | register = template.Library() 14 | 15 | 16 | @register.filter(name='markdown2') 17 | def markdown(value, arg=''): 18 | """ 19 | Runs Markdown over a given value, optionally using various 20 | extensions python-markdown supports. 21 | 22 | Syntax:: 23 | 24 | {{ value|markdown2:"extension1_name,extension2_name..." }} 25 | 26 | To enable safe mode, which strips raw HTML and only returns HTML 27 | generated by actual Markdown syntax, pass "safe" as the first 28 | extension in the list. 29 | 30 | If the version of Markdown in use does not support extensions, 31 | they will be silently ignored. 32 | 33 | """ 34 | try: 35 | import markdown2 36 | except ImportError: 37 | if settings.DEBUG: 38 | raise template.TemplateSyntaxError, "Error in {% markdown %} filter: The python-markdown2 library isn't installed." 39 | return force_unicode(value) 40 | else: 41 | def parse_extra(extra): 42 | if ':' not in extra: 43 | return (extra, {}) 44 | name, values = extra.split(':', 1) 45 | values = dict((str(val.strip()), True) for val in values.split('|')) 46 | return (name.strip(), values) 47 | 48 | extras = (e.strip() for e in arg.split(',')) 49 | extras = dict(parse_extra(e) for e in extras if e) 50 | 51 | if 'safe' in extras: 52 | del extras['safe'] 53 | safe_mode = True 54 | else: 55 | safe_mode = False 56 | 57 | return mark_safe(markdown2.markdown(force_unicode(value), extras=extras, safe_mode=safe_mode)) 58 | markdown.is_safe = True 59 | -------------------------------------------------------------------------------- /blog/templatetags/my_filter.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | from django.utils.html import conditional_escape 3 | from django.utils.safestring import mark_safe 4 | 5 | 6 | register=template.Library() 7 | 8 | 9 | @register.filter(name='autop') 10 | def autop_filter(value,autoescape=None): 11 | values=value.split('\n\r') 12 | ret='' 13 | esc=None 14 | if autoescape==None: 15 | esc = conditional_escape 16 | else: 17 | esc = lambda x: x 18 | pass 19 | for v in values: 20 | if v=='\r': 21 | ret=esc(ret)+'
    ' 22 | else: 23 | ret=ret+'

    '+esc(v).replace('\r','
    ')+'

    ' 24 | ret=mark_safe(ret) 25 | return ret 26 | 27 | -------------------------------------------------------------------------------- /blog/tests.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # Author : evilbinary.org 4 | # E-mail : rootntsd@gmail.com 5 | # Date : 14/10/1 12:21:19 6 | # Desc : 测试 7 | 8 | 9 | from django.test import TestCase 10 | 11 | # Create your tests here. 12 | -------------------------------------------------------------------------------- /blog/urls.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # Author : evilbinary.org 4 | # E-mail : rootntsd@gmail.com 5 | # Date : 14/10/1 11:21:19 6 | # Desc : url定义 7 | 8 | from django.conf.urls import * 9 | from blog import views 10 | from django.conf import settings 11 | from blog.views import * 12 | from django.contrib import admin 13 | from feeds import ArticlesFeed,CommentsFeed 14 | 15 | urlpatterns= patterns('blog.views', 16 | url(r'^$','index'), 17 | url(r'^blog/','index'), 18 | url(r'^archive/(\d{4})/(\d{1,2})/$','archive'), 19 | url(r'^article/(\d+)/$', 'article'), 20 | url(r'^articles/(\d{4})/$', 'year_archive'), 21 | url(r'^articles/(\d{4})/(\d{2})/$','month_archive'), 22 | url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'article_detail'), 23 | url(r'^pages(?P\d+)/$', 'pages'), 24 | url(r'^pages/$', 'pages'), 25 | url(r'^pages/(?P\d+)/$', 'pages'), 26 | url(r'^page/(?P\d+)$', 'page'), 27 | # url(r'^test(?P\d+)/$', 'page'), 28 | url(r'^comment','comment'), 29 | url(r'^search/$','search'), 30 | url(r'^cat/(?P\d+)$','cat'), 31 | url(r'^archives/(?P\d+)/$','archives'), 32 | url(r'^archives$','archives'), 33 | url(r'^feeds/rss2$',ArticlesFeed()), 34 | url(r'^feeds/comments-rss2$',CommentsFeed()), 35 | url(r'^feeds/(?P\S+)$','feed'), 36 | url(r'^test$','test'), 37 | url(r'^page_expir$','page_expir'), 38 | 39 | ) 40 | -------------------------------------------------------------------------------- /data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/data/.gitkeep -------------------------------------------------------------------------------- /data/s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/data/s.png -------------------------------------------------------------------------------- /data/screen-shot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/data/screen-shot1.png -------------------------------------------------------------------------------- /data/screen-shot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/data/screen-shot2.png -------------------------------------------------------------------------------- /libs/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/libs/.gitkeep -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # Author : cold 4 | # E-mail : rootntsd@gmail.com 5 | # Date : 14/10/1 12:21:19 6 | # Desc : 7 | import os 8 | import sys 9 | 10 | if __name__ == "__main__": 11 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 12 | 13 | from django.core.management import execute_from_command_line 14 | 15 | execute_from_command_line(sys.argv) 16 | -------------------------------------------------------------------------------- /media/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/media/.DS_Store -------------------------------------------------------------------------------- /media/uploads/test.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/media/uploads/test.txt -------------------------------------------------------------------------------- /mysite/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # Author : cold 4 | # E-mail : rootntsd@gmail.com 5 | # Date : 14/10/1 12:21:19 6 | # Desc : -------------------------------------------------------------------------------- /mysite/urls.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # Author : cold 4 | # E-mail : rootntsd@gmail.com 5 | # Date : 14/10/1 12:21:19 6 | # Desc : 7 | from django.conf.urls import patterns, include, url 8 | from django.contrib import admin 9 | from django.conf.urls.static import static 10 | from django.conf import settings 11 | 12 | urlpatterns = patterns('', 13 | # Examples: 14 | # url(r'^$', 'mysite.views.home', name='home'), 15 | url(r'^$', include('blog.urls')), 16 | url(r'^blog/', include('blog.urls')), 17 | 18 | url(r'^admin/', include(admin.site.urls)), 19 | url(r'^ckeditor/', include('ckeditor_uploader.urls')), 20 | )+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 21 | -------------------------------------------------------------------------------- /mysite/wsgi.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # Author : cold 4 | # E-mail : rootntsd@gmail.com 5 | # Date : 14/10/1 12:21:19 6 | # Desc : 7 | """ 8 | WSGI config for mysite project. 9 | 10 | It exposes the WSGI callable as a module-level variable named ``application``. 11 | 12 | For more information on this file, see 13 | https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/ 14 | """ 15 | 16 | import os 17 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 18 | 19 | from django.core.wsgi import get_wsgi_application 20 | application = get_wsgi_application() 21 | -------------------------------------------------------------------------------- /nginx-cfg/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 8080; 3 | server_name 127.0.0.1 localhost .openshiftapps.com .evilbinary.org; 4 | charset UTF-8; 5 | #access_log /opt/app-root/project/access_log; 6 | #error_log /opt/app-root/project/error_log; 7 | 8 | location / { 9 | include uwsgi_params; 10 | uwsgi_pass 127.0.0.1:8000; 11 | uwsgi_read_timeout 10; 12 | } 13 | location ~ ^/(images|javascript|js|css|flash|media|static)/ { 14 | root /opt/app-root/src/; 15 | expires 130d; 16 | } 17 | root /opt/app-root/src; 18 | index index.html; 19 | } -------------------------------------------------------------------------------- /nginx-default-cfg/alias.conf: -------------------------------------------------------------------------------- 1 | location /aliased/ { 2 | alias /opt/app-root/src/; 3 | } -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Django==1.7 2 | pysqlite 3 | pytz 4 | Markdown==2.5.1 5 | Pygments==1.6 6 | MySQL-python 7 | django-admin-bootstrapped==2.1.0 8 | beautifulsoup4==4.3.2 9 | Pillow==5.3.0 10 | django-ckeditor===5.0.3 11 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # Author : cold 4 | # E-mail : rootntsd@gmail.com 5 | # Date : 14/10/1 12:21:19 6 | # Desc : 7 | 8 | from setuptools import setup 9 | 10 | setup( 11 | name='Blog', 12 | version='1.1', 13 | description='evilbinary blog app', 14 | author='evilbinary', 15 | author_email='rootntsd@gmail.com', 16 | url='http://www.python.org/sigs/distutils-sig/', 17 | install_requires=['Django==1.7','pysqlite','pytz','Markdown>=2.5.1','Pygments>=1.6','MySQL-python','django-admin-bootstrapped==2.1.0','beautifulsoup4>=4.3.2','Pillow','django-ckeditor'], 18 | ) 19 | -------------------------------------------------------------------------------- /static/README: -------------------------------------------------------------------------------- 1 | Public, static content goes here. Users can create rewrite rules to link to 2 | content in the static dir. For example, django commonly uses /media/ 3 | directories for static content. For example in a .htaccess file in a 4 | wsgi/.htaccess location, developers could put: 5 | 6 | RewriteEngine On 7 | RewriteRule ^application/media/(.+)$ /static/media/$1 [L] 8 | 9 | Then copy the media/* content to yourapp/wsgi/static/media/ and it should 10 | just work. 11 | 12 | Note: The ^application/ part of the URI match is required. 13 | -------------------------------------------------------------------------------- /static/css/tst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/static/css/tst -------------------------------------------------------------------------------- /static/img/tst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/static/img/tst -------------------------------------------------------------------------------- /static/js/tst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilbinary/myblog/4584758b4cbc285b482ae9a5401ff98482afe7ef/static/js/tst -------------------------------------------------------------------------------- /templates/archive.html: -------------------------------------------------------------------------------- 1 | {% for post in posts %} 2 |

    {{post.post_titile}}

    3 |

    {{post.post_date}}

    4 |

    {{post.post_title}}

    5 |

    {{post.post_content}}

    6 | {% endfor%} 7 | -------------------------------------------------------------------------------- /templates/base.html: -------------------------------------------------------------------------------- 1 | {%block header%} 2 | {%endblock%} 3 | 4 | 5 | {%block middle%} 6 | 7 | {%endblock%} 8 | 9 | {%block test%} 10 | {%endblock%} 11 | 12 | {%block footer%} 13 | {%endblock%} 14 | 15 | 16 | -------------------------------------------------------------------------------- /templates/content.html: -------------------------------------------------------------------------------- 1 | {% load myfilter %} 2 | {% load md2 %} 3 | {%for post in posts%} 4 |
    5 |
    6 | {%if post.post_type == 'post'%} 7 |

    {{post.post_title}}

    8 | {%endif%} 9 | 22 |
    23 | 24 |
    25 | {% if post.post_mime_type == "markdown" %} 26 |

    {{post.post_content|markdown:"codehilite,nl2br"}}

    27 | {%else%} 28 |

    {{post.post_content|autop:'true'}}

    29 | {%endif%} 30 |
    31 | 32 | 54 | 55 |
    56 | {%endfor%} 57 | 58 | {{info}} -------------------------------------------------------------------------------- /templates/footer.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 8 |
    9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /templates/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 | 33 | 34 |
    35 | -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | {%extends "base.html"%} 2 | {%block header%} 3 | {{header}} 4 | {%endblock%} 5 | 6 | {%block middle%} 7 |
    8 |
    9 | {{contents}} 10 |
    11 |
    12 | {{sidebar}} 13 | {%endblock%} 14 | 15 | {%block footer%} 16 | {{footer}} 17 | {%endblock%} 18 | 19 | -------------------------------------------------------------------------------- /templates/page.html: -------------------------------------------------------------------------------- 1 | {{page_contents}} 2 | {{page_nator}} 3 | {{page_comment}} 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/page_nator.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/page_nav.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/test.html: -------------------------------------------------------------------------------- 1 | {{test}} -------------------------------------------------------------------------------- /uwsgi.ini: -------------------------------------------------------------------------------- 1 | # uwsgi.ini file 2 | [uwsgi] 3 | 4 | # Django-related settings 5 | #http =127.0.0.1:8000 6 | socket = :8000 7 | 8 | # the base directory (full path) 9 | chdir = /opt/app-root/src/ 10 | 11 | # Django uwsgi file 12 | wsgi-file = /opt/app-root/src/mysite/wsgi.py 13 | 14 | # process-related settings 15 | # master 16 | master = true 17 | 18 | # maximum number of worker processes 19 | processes = 4 20 | 21 | #daemonize = /opt/app-root/src/project/uwsgi.log 22 | 23 | # ... with appropriate permissions - may be needed 24 | # chmod-socket = 664 25 | # clear environment on exit 26 | vacuum = true 27 | --------------------------------------------------------------------------------