mirror of
https://github.com/stefanocasazza/ULib.git
synced 2025-10-05 19:18:01 +08:00
Create gh-pages branch via GitHub
This commit is contained in:
parent
82e789275d
commit
b1e076b3c2
BIN
images/bg_hr.png
Normal file
BIN
images/bg_hr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 78 B |
BIN
images/blacktocat.png
Normal file
BIN
images/blacktocat.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 463 B |
BIN
images/icon_download.png
Normal file
BIN
images/icon_download.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 216 B |
BIN
images/sprite_download.png
Normal file
BIN
images/sprite_download.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
250
index.html
250
index.html
|
@ -1,74 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
|
||||
<link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
|
||||
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
|
||||
<meta name="description" content="Ulib : C++ application development framework, to help developers create and deploy applications very fast and more simple">
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
|
||||
|
||||
<title>Ulib by stefanocasazza</title>
|
||||
<title>Ulib</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<div class="inner">
|
||||
<h1>Ulib</h1>
|
||||
<h2>C++ application development framework, to help developers create and deploy applications very fast and more simple</h2>
|
||||
<a href="https://github.com/stefanocasazza/ULib" class="button"><small>View project on</small>GitHub</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div id="content-wrapper">
|
||||
<div class="inner clearfix">
|
||||
<section id="main-content">
|
||||
<h1>ULib - C++ library</h1>
|
||||
<!-- HEADER -->
|
||||
<div id="header_wrap" class="outer">
|
||||
<header class="inner">
|
||||
<a id="forkme_banner" href="https://github.com/stefanocasazza/ULib">View on GitHub</a>
|
||||
|
||||
<h1 id="project_title">Ulib</h1>
|
||||
<h2 id="project_tagline">C++ application development framework, to help developers create and deploy applications very fast and more simple</h2>
|
||||
|
||||
<section id="downloads">
|
||||
<a class="zip_download_link" href="https://github.com/stefanocasazza/ULib/zipball/master">Download this project as a .zip file</a>
|
||||
<a class="tar_download_link" href="https://github.com/stefanocasazza/ULib/tarball/master">Download this project as a tar.gz file</a>
|
||||
</section>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
<!-- MAIN CONTENT -->
|
||||
<div id="main_content_wrap" class="outer">
|
||||
<section id="main_content" class="inner">
|
||||
<h1>
|
||||
<a name="ulib---c-library" class="anchor" href="#ulib---c-library"><span class="octicon octicon-link"></span></a>ULib - C++ library</h1>
|
||||
|
||||
<p><a href="https://travis-ci.org/stefanocasazza/ULib"><img src="https://travis-ci.org/stefanocasazza/ULib.svg?branch=master" alt="Build Status"></a></p>
|
||||
|
||||
<p>ULib is a highly optimized class framework for writing C++ applications. I wrote this framework as my tool for writing applications in various contexts. It is a result of many years of work as C++ programmer. I think, in my opinion, that its strongest points are simplicity, efficiency and sophisticate debugging. This framework offers a class foundation that disables language features that consume memory or introduce runtime overhead, such as rtti and exception handling, and assumes one will mostly be linking applications with other pure C based libraries rather than using the overhead of the standard C++ library and other similar class frameworks. It include as application example a powerful search engine with relative <a href="https://github.com/stefanocasazza/ULib/blob/master/examples/IR/ir_web.usp">web interface</a> and a multi purpose server (plugin oriented) which results, out of <a href="http://john.freml.in/ulib-fast-io-framework">John Fremlin accurate investigations</a>, to be one of the fastest web application frameworks for serving small dynamic webpages (and also make easier the usage of shell scripts for CGI application)</p>
|
||||
|
||||
<h2>Quickstart</h2>
|
||||
|
||||
<p>Take a look at:</p>
|
||||
|
||||
<pre><code>$ ./configure --help
|
||||
</code></pre>
|
||||
|
||||
<ul>
|
||||
<li>......</li>
|
||||
<li>--enable-zip enable build of ZIP support - require libz <code>[default: use if present libz]</code>
|
||||
</li>
|
||||
<li>--enable-thread enable build of thread support - require libpthread <code>[default: use if present libpthread]</code>
|
||||
</li>
|
||||
<li>--with-libz use system LIBZ library - [will check /usr /usr/local] <code>[default=use if present]</code>
|
||||
</li>
|
||||
<li>--with-libuuid use system libuuid library - [will check /usr /usr/local] <code>[default=use if present]</code>
|
||||
</li>
|
||||
<li>--with-magic use system libmagic library - [will check /usr /usr/local] <code>[default=use if present]</code>
|
||||
</li>
|
||||
<li>--with-ssl use system SSL library - [will check /usr /usr/local] <code>[default=use if present]</code>
|
||||
</li>
|
||||
<li>--with-pcre use system PCRE library - [will check /usr /usr/local] <code>[default=use if present]</code>
|
||||
</li>
|
||||
<li>--with-expat use system EXPAT library - [will check /usr /usr/local] <code>[default=use if present]</code>
|
||||
</li>
|
||||
<li>--with-ssh use system SSH library - [will check /usr /usr/local]</li>
|
||||
<li>--with-curl use system cURL library - [will check /usr /usr/local]</li>
|
||||
<li>--with-ldap use system openLDAP library - [will check /usr /usr/local]</li>
|
||||
<li>--with-mysql use system MySQL library - [will check /usr /usr/local]</li>
|
||||
<li>--with-dbi use system DBI library - [will check /usr /usr/local]</li>
|
||||
<li>--with-libevent use system libevent library - [will check /usr /usr/local]</li>
|
||||
<li>--with-libxml2 use system libxml2 library - [will check /usr /usr/local]</li>
|
||||
<li>--with-page-speed use google page-speed SDK - [will check /usr /usr/local]</li>
|
||||
<li>--with-v8-javascript use V8 JavaScript Engine - [will check /usr /usr/local]</li>
|
||||
</ul><p>if you desire wrapping of some system library installed.</p>
|
||||
|
||||
<h2>userver (<code>_tcp</code> | <code>_ssl</code> | <code>_ipc</code>) application server (<code>plugin oriented</code>)</h2>
|
||||
<h1>
|
||||
<a name="userver-_tcp--_ssl--_ipc-application-server-plugin-oriented" class="anchor" href="#userver-_tcp--_ssl--_ipc-application-server-plugin-oriented"><span class="octicon octicon-link"></span></a>userver (<code>_tcp</code> | <code>_ssl</code> | <code>_ipc</code>) application server (<code>plugin oriented</code>)</h1>
|
||||
|
||||
<p>The current version offers the following features :</p>
|
||||
|
||||
|
@ -103,7 +74,9 @@
|
|||
<a href="http://www.phpmotionwiz.com/what-is-pseudo-streaming">HTTP pseudo-streaming</a> for FLV video managed transparently.</li>
|
||||
<li>
|
||||
<a href="http://bellard.org/tcc/">C Servlet Support</a> with libtcc (if available) as a backend for dynamic code generation (experimental).</li>
|
||||
<li>Preforking mode to improve concurrency.</li>
|
||||
<li>Support for Windows (without preforking).</li>
|
||||
<li>Customizable builds (you can remove unneeded functionality).</li>
|
||||
<li>Requests cut in phases for modular architecture (apache-like).</li>
|
||||
<li>Configuration file with dedicated section.</li>
|
||||
<li>Built-in modules :
|
||||
|
@ -154,169 +127,24 @@
|
|||
<li>Immune to <a href="http://code.google.com/p/slowhttptest/">Slow Read DoS attack</a>
|
||||
</li>
|
||||
<li><a href="https://www.ssllabs.com/ssltest/analyze.html?d=wifi-aaa.comune.fi.it">High SSL server quality score</a></li>
|
||||
</ul><h2>Benchmarking</h2>
|
||||
|
||||
<pre><code>$ ./configure && make
|
||||
$ cd tests/examples
|
||||
$ ./benchmarking.sh (or hello_world.sh)
|
||||
</code></pre>
|
||||
|
||||
<p>Use apachebench (ab)</p>
|
||||
|
||||
<pre><code>$ ab -n 100000 -c10 http://127.0.0.1/servlet/benchmarking?name=stefano (or)
|
||||
$ ab -n 100000 -c10 http://127.0.0.1/servlet/hello_world
|
||||
</code></pre>
|
||||
|
||||
<h2><a href="https://github.com/stefanocasazza/ULib/tree/master/doc/benchmark">Comparative Benchmarking</a></h2>
|
||||
|
||||
<p>I consider in this benchmark the server <a href="http://www.gwan.ch/">G-WAN 3.2.24 (64 bit)</a> and <a href="http://nginx.net/">NGINX 1.1.16</a>.</p>
|
||||
|
||||
<h2>gwan run with the follow options:</h2>
|
||||
|
||||
<pre><code>-b: enable the TCP_DEFER_ACCEPT option
|
||||
-d: daemon mode (with an 'angel' process)
|
||||
</code></pre>
|
||||
|
||||
<h2>nginx is configured in this way:</h2>
|
||||
|
||||
<pre><code>nginx version: nginx/1.1.16
|
||||
TLS SNI support enabled
|
||||
configure arguments: --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error_log --pid-path=/var/run/nginx.pid
|
||||
--lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-cc-opt=-I/usr/include --with-ld-opt=-L/usr/lib --http-log-path=/var/log/nginx/access_log
|
||||
--http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi
|
||||
--http-scgi-temp-path=/var/tmp/nginx/scgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --with-ipv6 --with-pcre --with-http_realip_module --with-http_ssl_module
|
||||
--without-mail_imap_module --without-mail_pop3_module --without-mail_smtp_module
|
||||
</code></pre>
|
||||
|
||||
<h2>nginx run with the follow configuration:</h2>
|
||||
|
||||
<pre><code>user nginx nginx;
|
||||
worker_processes 2;
|
||||
|
||||
events {
|
||||
use epoll;
|
||||
worker_connections 1024;
|
||||
multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
log_format main
|
||||
'$remote_addr - $remote_user [$time_local] '
|
||||
'"$request" $status $bytes_sent '
|
||||
'"$http_referer" "$http_user_agent" '
|
||||
'"$gzip_ratio"';
|
||||
|
||||
client_header_timeout 10m;
|
||||
client_body_timeout 10m;
|
||||
send_timeout 10m;
|
||||
|
||||
connection_pool_size 256;
|
||||
client_header_buffer_size 1k;
|
||||
large_client_header_buffers 4 2k;
|
||||
request_pool_size 4k;
|
||||
|
||||
gzip off;
|
||||
gzip_min_length 1100;
|
||||
gzip_buffers 4 8k;
|
||||
gzip_types text/plain;
|
||||
|
||||
output_buffers 1 32k;
|
||||
postpone_output 1460;
|
||||
|
||||
error_log off;
|
||||
access_log off;
|
||||
|
||||
open_file_cache max=1000 inactive=20s;
|
||||
open_file_cache_valid 30s;
|
||||
open_file_cache_min_uses 2;
|
||||
|
||||
server_tokens off;
|
||||
|
||||
tcp_nopush on;
|
||||
tcp_nodelay on;
|
||||
|
||||
keepalive_timeout 75 20;
|
||||
|
||||
ignore_invalid_headers on;
|
||||
|
||||
index index.html;
|
||||
|
||||
server {
|
||||
listen 8080;
|
||||
server_name localhost;
|
||||
|
||||
access_log off;
|
||||
error_log off;
|
||||
|
||||
root /usr/src/ULib-1.1.0/tests/examples/benchmark/docroot;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
<p>All tests are performed on an Intel Pentium 4 2.8 Ghz, Hard drive 5400 rpm, Memory: 2GB DDR2 800MHz running <code>Gentoo 2.0.3 AMD64 (kernel 3.2.7)</code>.
|
||||
Yes, this CPU is 11-year old (single-core) P4, but some test on more recent processor (dual-core AMD) give similar results.</p>
|
||||
|
||||
<p>The client <a href="https://github.com/stefanocasazza/ULib/tree/master/doc/benchmark/bin/ab.c">ab.c</a>
|
||||
relies on ApacheBench (ab) and it is a slightly modified version of <a href="http://gwan.ch/source/ab.c.txt">G-WAN client</a>.</p>
|
||||
|
||||
<p>I have considered two scenario for benchmarking:</p>
|
||||
|
||||
<ul>
|
||||
<li>The client as well as the web server tested are hosted on the same computer.</li>
|
||||
<li>The client is running on different computer than the web server (networking is involved).</li>
|
||||
</ul><p>I had to increase the local port range on client (because of the TIME_WAIT status of the TCP ports).</p>
|
||||
|
||||
<ul>
|
||||
<li>HTTP Keep-Alives: yes/no</li>
|
||||
<li>Concurrency: from 0 to 1000, step 10</li>
|
||||
<li>Requests: up to 1000000 - within a fixed total amount of time (1 sec)</li>
|
||||
</ul><p>For serving static content I use 3 file of different size:</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://github.com/stefanocasazza/ULib/tree/master/tests/examples/benchmark/docroot/100.html">100.html</a> (100 bytes - only 'XXX...' without CR/LF)</li>
|
||||
<li>
|
||||
<a href="https://github.com/stefanocasazza/ULib/tree/master/tests/examples/benchmark/docroot/1000.html">1000.html</a> (1000 bytes - only 'XXX...' without CR/LF)</li>
|
||||
<li>
|
||||
<a href="https://github.com/stefanocasazza/ULib/tree/master/tests/examples/benchmark/docroot/ws/flash-bridge/WebSocketMain.swf">WebSocketMain.swf</a> (80K bytes)</li>
|
||||
</ul><p>For serving dynamic content I use a simple request: <code>Hello {name}</code></p>
|
||||
|
||||
<h2>userver_tcp is the winner of this benchmark for almost all level of concurrency.</h2>
|
||||
|
||||
<p>The raw data are <a href="https://github.com/stefanocasazza/ULib/tree/master/doc/benchmark/current">here</a>.</p>
|
||||
|
||||
<p><img src="https://github.com/stefanocasazza/ULib/blob/master/doc/benchmark/img/AB/net_keep_alive.png?raw=true" alt="Networking-KeepAlive-498-x-499"><img src="https://github.com/stefanocasazza/ULib/blob/master/doc/benchmark/img/AB/net_no_keep_alive.png?raw=true" alt="Networking-NoKeepAlive-498-x-499"><img src="https://github.com/stefanocasazza/ULib/blob/master/doc/benchmark/img/AB/localhost_keep_alive.png?raw=true" alt="Localhost-KeepAlive-498-x-499"><img src="https://github.com/stefanocasazza/ULib/blob/master/doc/benchmark/img/AB/localhost_no_keep_alive.png?raw=true" alt="Localhost-NoKeepAlive-498-x-499"></p>
|
||||
|
||||
<h2>More info</h2>
|
||||
|
||||
<p>ULib is normally built and installed as a set of shared object libraries and header files. These libraries and headers are installed using directories selected through a "configure" script that has been prepared with automake and autoconf. As such, they should build and install similarly to and in a manner compatible and consistent with most other GNU software. ULib is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
|
||||
</ul><p>ULib is normally built and installed as a set of shared object libraries and header files. These libraries and headers are installed using directories selected through a "configure" script that has been prepared with automake and autoconf. As such, they should build and install similarly to and in a manner compatible and consistent with most other GNU software. ULib is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
|
||||
|
||||
<p>Comments and suggestions are welcome.</p>
|
||||
|
||||
<pre><code>stefano casazza <stefano.casazza@gmail.com>
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<aside id="sidebar">
|
||||
<a href="https://github.com/stefanocasazza/ULib/zipball/master" class="button">
|
||||
<small>Download</small>
|
||||
.zip file
|
||||
</a>
|
||||
<a href="https://github.com/stefanocasazza/ULib/tarball/master" class="button">
|
||||
<small>Download</small>
|
||||
.tar.gz file
|
||||
</a>
|
||||
|
||||
<p class="repo-owner"><a href="https://github.com/stefanocasazza/ULib"></a> is maintained by <a href="https://github.com/stefanocasazza">stefanocasazza</a>.</p>
|
||||
|
||||
<p>This page was generated by <a href="pages.github.com">GitHub Pages</a> using the Architect theme by <a href="http://twitter.com/jasonlong">Jason Long</a>.</p>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<!-- FOOTER -->
|
||||
<div id="footer_wrap" class="outer">
|
||||
<footer class="inner">
|
||||
<p class="copyright">Ulib maintained by <a href="https://github.com/stefanocasazza">stefanocasazza</a></p>
|
||||
<p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
|
@ -1,64 +1,65 @@
|
|||
.highlight { background: #ffffff; }
|
||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
.highlight .k { font-weight: bold } /* Keyword */
|
||||
.highlight .o { font-weight: bold } /* Operator */
|
||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||
.highlight .hll { background-color: #ffffcc }
|
||||
.highlight { background: #f0f3f3; }
|
||||
.highlight .c { color: #0099FF; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
|
||||
.highlight .k { color: #006699; font-weight: bold } /* Keyword */
|
||||
.highlight .o { color: #555555 } /* Operator */
|
||||
.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #009999 } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
|
||||
.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
|
||||
.highlight .go { color: #AAAAAA } /* Generic.Output */
|
||||
.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
|
||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #009999 } /* Literal.Number */
|
||||
.highlight .s { color: #d14 } /* Literal.String */
|
||||
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #008080 } /* Name.Constant */
|
||||
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||
.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
|
||||
.highlight .gt { color: #99CC66 } /* Generic.Traceback */
|
||||
.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #006699 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #FF6600 } /* Literal.Number */
|
||||
.highlight .s { color: #CC3300 } /* Literal.String */
|
||||
.highlight .na { color: #330099 } /* Name.Attribute */
|
||||
.highlight .nb { color: #336666 } /* Name.Builtin */
|
||||
.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #336600 } /* Name.Constant */
|
||||
.highlight .nd { color: #9999FF } /* Name.Decorator */
|
||||
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
|
||||
.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #CC00FF } /* Name.Function */
|
||||
.highlight .nl { color: #9999FF } /* Name.Label */
|
||||
.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
|
||||
.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #003333 } /* Name.Variable */
|
||||
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
||||
.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #CC3300 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
|
||||
.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #CC3300 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #003333 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #003333 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #003333 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
|
||||
|
||||
.type-csharp .highlight .k { color: #0000FF }
|
||||
.type-csharp .highlight .kt { color: #0000FF }
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
/* http://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
/*******************************************************************************
|
||||
Slate Theme for GitHub Pages
|
||||
by Jason Costello, @jsncostello
|
||||
*******************************************************************************/
|
||||
|
||||
@import url(pygment_trac.css);
|
||||
|
||||
/*******************************************************************************
|
||||
MeyerWeb Reset
|
||||
*******************************************************************************/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
|
@ -18,462 +25,399 @@ time, mark, audio, video {
|
|||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/* LAYOUT STYLES */
|
||||
/*******************************************************************************
|
||||
Theme Styles
|
||||
*******************************************************************************/
|
||||
|
||||
body {
|
||||
font-size: 15px;
|
||||
box-sizing: border-box;
|
||||
color:#373737;
|
||||
background: #212121;
|
||||
font-size: 16px;
|
||||
font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
|
||||
line-height: 1.5;
|
||||
background: #fafafa url(../images/body-bg.jpg) 0 0 repeat;
|
||||
font-family: 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
font-weight: 400;
|
||||
color: #666;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #2879d0;
|
||||
}
|
||||
a:hover {
|
||||
color: #2268b2;
|
||||
}
|
||||
|
||||
header {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x;
|
||||
border-bottom: solid 1px #275da1;
|
||||
}
|
||||
|
||||
header h1 {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 10px 0;
|
||||
font-weight: 700;
|
||||
color:#222222;
|
||||
font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
|
||||
letter-spacing: -1px;
|
||||
font-size: 72px;
|
||||
color: #fff;
|
||||
line-height: 1;
|
||||
margin-bottom: 0.2em;
|
||||
width: 540px;
|
||||
}
|
||||
|
||||
header h2 {
|
||||
font-size: 26px;
|
||||
color: #9ddcff;
|
||||
font-weight: normal;
|
||||
line-height: 1.3;
|
||||
width: 540px;
|
||||
letter-spacing: 0;
|
||||
h1 {
|
||||
font-size: 36px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.inner {
|
||||
position: relative;
|
||||
width: 940px;
|
||||
margin: 0 auto;
|
||||
h2 {
|
||||
padding-bottom: 10px;
|
||||
font-size: 32px;
|
||||
background: url('../images/bg_hr.png') repeat-x bottom;
|
||||
}
|
||||
|
||||
#content-wrapper {
|
||||
border-top: solid 1px #fff;
|
||||
padding-top: 30px;
|
||||
h3 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
#main-content {
|
||||
width: 690px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#main-content img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
aside#sidebar {
|
||||
width: 200px;
|
||||
padding-left: 20px;
|
||||
min-height: 504px;
|
||||
float: right;
|
||||
background: transparent url(../images/sidebar-bg.jpg) 0 0 no-repeat;
|
||||
font-size: 12px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
aside#sidebar p.repo-owner,
|
||||
aside#sidebar p.repo-owner a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#downloads {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
a.button {
|
||||
width: 134px;
|
||||
height: 58px;
|
||||
line-height: 1.2;
|
||||
font-size: 23px;
|
||||
color: #fff;
|
||||
padding-left: 68px;
|
||||
padding-top: 22px;
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
}
|
||||
a.button small {
|
||||
display: block;
|
||||
font-size: 11px;
|
||||
}
|
||||
header a.button {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
background: transparent url(../images/github-button.png) 0 0 no-repeat;
|
||||
}
|
||||
aside a.button {
|
||||
width: 138px;
|
||||
padding-left: 64px;
|
||||
display: block;
|
||||
background: transparent url(../images/download-button.png) 0 0 no-repeat;
|
||||
margin-bottom: 20px;
|
||||
h4 {
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
code, pre {
|
||||
font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
color: #222;
|
||||
margin-bottom: 30px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #f2f8fc;
|
||||
border: solid 1px #dbe7f3;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 20px;
|
||||
background: #fff;
|
||||
text-shadow: none;
|
||||
overflow: auto;
|
||||
border: solid 1px #f2f2f2;
|
||||
}
|
||||
pre code {
|
||||
color: #2879d0;
|
||||
background-color: #fff;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul, ol, dl {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
|
||||
/* COMMON STYLES */
|
||||
|
||||
hr {
|
||||
height: 1px;
|
||||
line-height: 1px;
|
||||
margin-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
border: none;
|
||||
background: transparent url('../images/hr.png') 0 0 no-repeat;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border: 1px solid #ebebeb;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
td {
|
||||
border: 1px solid #ebebeb;
|
||||
text-align: center;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
form {
|
||||
background: #f2f2f2;
|
||||
padding: 20px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* GENERAL ELEMENT TYPE STYLES */
|
||||
|
||||
#main-content h1 {
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
font-size: 2.8em;
|
||||
letter-spacing: -1px;
|
||||
color: #474747;
|
||||
}
|
||||
|
||||
#main-content h1:before {
|
||||
content: "/";
|
||||
color: #9ddcff;
|
||||
padding-right: 0.3em;
|
||||
margin-left: -0.9em;
|
||||
}
|
||||
|
||||
#main-content h2 {
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 8px;
|
||||
color: #474747;
|
||||
}
|
||||
#main-content h2:before {
|
||||
content: "//";
|
||||
color: #9ddcff;
|
||||
padding-right: 0.3em;
|
||||
margin-left: -1.5em;
|
||||
}
|
||||
|
||||
#main-content h3 {
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
h5 {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
margin-top: 24px;
|
||||
margin-bottom: 8px;
|
||||
color: #474747;
|
||||
}
|
||||
|
||||
#main-content h3:before {
|
||||
content: "///";
|
||||
color: #9ddcff;
|
||||
padding-right: 0.3em;
|
||||
margin-left: -2em;
|
||||
}
|
||||
|
||||
#main-content h4 {
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
color: #474747;
|
||||
}
|
||||
|
||||
h4:before {
|
||||
content: "////";
|
||||
color: #9ddcff;
|
||||
padding-right: 0.3em;
|
||||
margin-left: -2.8em;
|
||||
}
|
||||
|
||||
#main-content h5 {
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
font-size: 14px;
|
||||
color: #474747;
|
||||
}
|
||||
h5:before {
|
||||
content: "/////";
|
||||
color: #9ddcff;
|
||||
padding-right: 0.3em;
|
||||
margin-left: -3.2em;
|
||||
}
|
||||
|
||||
#main-content h6 {
|
||||
font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
|
||||
font-size: .8em;
|
||||
color: #474747;
|
||||
}
|
||||
h6:before {
|
||||
content: "//////";
|
||||
color: #9ddcff;
|
||||
padding-right: 0.3em;
|
||||
margin-left: -3.7em;
|
||||
h6 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 20px;
|
||||
margin: 10px 0 15px 0;
|
||||
}
|
||||
|
||||
footer p {
|
||||
color: #f2f2f2;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #007edf;
|
||||
text-shadow: none;
|
||||
|
||||
transition: color 0.5s ease;
|
||||
transition: text-shadow 0.5s ease;
|
||||
-webkit-transition: color 0.5s ease;
|
||||
-webkit-transition: text-shadow 0.5s ease;
|
||||
-moz-transition: color 0.5s ease;
|
||||
-moz-transition: text-shadow 0.5s ease;
|
||||
-o-transition: color 0.5s ease;
|
||||
-o-transition: text-shadow 0.5s ease;
|
||||
-ms-transition: color 0.5s ease;
|
||||
-ms-transition: text-shadow 0.5s ease;
|
||||
}
|
||||
|
||||
p a {
|
||||
font-weight: 400;
|
||||
a:hover, a:focus {text-decoration: underline;}
|
||||
|
||||
footer a {
|
||||
color: #F2F2F2;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
max-width: 739px;
|
||||
padding: 5px;
|
||||
margin: 10px 0 10px 0;
|
||||
border: 1px solid #ebebeb;
|
||||
|
||||
box-shadow: 0 0 5px #ebebeb;
|
||||
-webkit-box-shadow: 0 0 5px #ebebeb;
|
||||
-moz-box-shadow: 0 0 5px #ebebeb;
|
||||
-o-box-shadow: 0 0 5px #ebebeb;
|
||||
-ms-box-shadow: 0 0 5px #ebebeb;
|
||||
}
|
||||
|
||||
p img {
|
||||
display: inline;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre, code {
|
||||
width: 100%;
|
||||
color: #222;
|
||||
background-color: #fff;
|
||||
|
||||
font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
font-size: 14px;
|
||||
|
||||
border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
}
|
||||
|
||||
pre {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,.1);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 3px;
|
||||
margin: 0 3px;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-size: 1.6em;
|
||||
border-left: 10px solid #e9e9e9;
|
||||
color: #666;
|
||||
margin-bottom: 20px;
|
||||
padding: 0 0 0 30px;
|
||||
padding: 0 0 0 20px;
|
||||
border-left: 3px solid #bbb;
|
||||
}
|
||||
|
||||
ul li {
|
||||
list-style: disc inside;
|
||||
|
||||
ul, ol, dl {
|
||||
margin-bottom: 15px
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: inside;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
ol li {
|
||||
ol {
|
||||
list-style: decimal inside;
|
||||
padding-left: 3px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
dl dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dl dd {
|
||||
padding-left: 20px;
|
||||
font-style: italic;
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
footer {
|
||||
background: transparent url('../images/hr.png') 0 0 no-repeat;
|
||||
margin-top: 40px;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 30px;
|
||||
font-size: 13px;
|
||||
color: #aaa;
|
||||
dl p {
|
||||
padding-left: 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
footer a {
|
||||
color: #666;
|
||||
}
|
||||
footer a:hover {
|
||||
color: #444;
|
||||
hr {
|
||||
height: 1px;
|
||||
margin-bottom: 5px;
|
||||
border: none;
|
||||
background: url('../images/bg_hr.png') repeat-x center;
|
||||
}
|
||||
|
||||
/* MISC */
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
content: '.';
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
height: 0;
|
||||
table {
|
||||
border: 1px solid #373737;
|
||||
margin-bottom: 20px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
padding: 10px;
|
||||
background: #373737;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 10px;
|
||||
border: 1px solid #373737;
|
||||
}
|
||||
|
||||
form {
|
||||
background: #f2f2f2;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.clearfix {display: inline-block;}
|
||||
* html .clearfix {height: 1%;}
|
||||
.clearfix {display: block;}
|
||||
/*******************************************************************************
|
||||
Full-Width Styles
|
||||
*******************************************************************************/
|
||||
|
||||
/* #Media Queries
|
||||
================================================== */
|
||||
|
||||
/* Smaller than standard 960 (devices and browsers) */
|
||||
@media only screen and (max-width: 959px) {}
|
||||
|
||||
/* Tablet Portrait size to standard 960 (devices and browsers) */
|
||||
@media only screen and (min-width: 768px) and (max-width: 959px) {
|
||||
.inner {
|
||||
width: 740px;
|
||||
}
|
||||
header h1, header h2 {
|
||||
width: 340px;
|
||||
}
|
||||
header h1 {
|
||||
font-size: 60px;
|
||||
}
|
||||
header h2 {
|
||||
font-size: 30px;
|
||||
}
|
||||
#main-content {
|
||||
width: 490px;
|
||||
}
|
||||
#main-content h1:before,
|
||||
#main-content h2:before,
|
||||
#main-content h3:before,
|
||||
#main-content h4:before,
|
||||
#main-content h5:before,
|
||||
#main-content h6:before {
|
||||
content: none;
|
||||
padding-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* All Mobile Sizes (devices and browser) */
|
||||
@media only screen and (max-width: 767px) {
|
||||
.inner {
|
||||
width: 93%;
|
||||
}
|
||||
header {
|
||||
padding: 20px 0;
|
||||
}
|
||||
header .inner {
|
||||
position: relative;
|
||||
}
|
||||
header h1, header h2 {
|
||||
.outer {
|
||||
width: 100%;
|
||||
}
|
||||
header h1 {
|
||||
font-size: 48px;
|
||||
}
|
||||
header h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
header a.button {
|
||||
background-image: none;
|
||||
width: auto;
|
||||
height: auto;
|
||||
display: inline-block;
|
||||
margin-top: 15px;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.inner {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
line-height: 1;
|
||||
background-color: #9ddcff;
|
||||
color: #2879d0;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
max-width: 640px;
|
||||
padding: 20px 10px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#forkme_banner {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top:0;
|
||||
right: 10px;
|
||||
z-index: 10;
|
||||
padding: 10px 50px 10px 10px;
|
||||
color: #fff;
|
||||
background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,.5);
|
||||
border-bottom-left-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
}
|
||||
|
||||
#header_wrap {
|
||||
background: #212121;
|
||||
background: -moz-linear-gradient(top, #373737, #212121);
|
||||
background: -webkit-linear-gradient(top, #373737, #212121);
|
||||
background: -ms-linear-gradient(top, #373737, #212121);
|
||||
background: -o-linear-gradient(top, #373737, #212121);
|
||||
background: linear-gradient(top, #373737, #212121);
|
||||
}
|
||||
|
||||
#header_wrap .inner {
|
||||
padding: 50px 10px 30px 10px;
|
||||
}
|
||||
|
||||
#project_title {
|
||||
margin: 0;
|
||||
color: #fff;
|
||||
font-size: 42px;
|
||||
font-weight: 700;
|
||||
text-shadow: #111 0px 0px 10px;
|
||||
}
|
||||
|
||||
#project_tagline {
|
||||
color: #fff;
|
||||
font-size: 24px;
|
||||
font-weight: 300;
|
||||
background: none;
|
||||
text-shadow: #111 0px 0px 10px;
|
||||
}
|
||||
|
||||
#downloads {
|
||||
position: absolute;
|
||||
width: 210px;
|
||||
z-index: 10;
|
||||
bottom: -40px;
|
||||
right: 0;
|
||||
height: 70px;
|
||||
background: url('../images/icon_download.png') no-repeat 0% 90%;
|
||||
}
|
||||
|
||||
.zip_download_link {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 90px;
|
||||
height:70px;
|
||||
text-indent: -5000px;
|
||||
overflow: hidden;
|
||||
background: url(../images/sprite_download.png) no-repeat bottom left;
|
||||
}
|
||||
|
||||
.tar_download_link {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 90px;
|
||||
height:70px;
|
||||
text-indent: -5000px;
|
||||
overflow: hidden;
|
||||
background: url(../images/sprite_download.png) no-repeat bottom right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.zip_download_link:hover {
|
||||
background: url(../images/sprite_download.png) no-repeat top left;
|
||||
}
|
||||
|
||||
.tar_download_link:hover {
|
||||
background: url(../images/sprite_download.png) no-repeat top right;
|
||||
}
|
||||
|
||||
#main_content_wrap {
|
||||
background: #f2f2f2;
|
||||
border-top: 1px solid #111;
|
||||
border-bottom: 1px solid #111;
|
||||
}
|
||||
|
||||
#main_content {
|
||||
padding-top: 40px;
|
||||
}
|
||||
|
||||
#footer_wrap {
|
||||
background: #212121;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
Small Device Styles
|
||||
*******************************************************************************/
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
body {
|
||||
font-size:14px;
|
||||
}
|
||||
header a.button small {
|
||||
font-size: 13px;
|
||||
display: inline;
|
||||
}
|
||||
#main-content,
|
||||
aside#sidebar {
|
||||
float: none;
|
||||
width: 100% ! important;
|
||||
}
|
||||
aside#sidebar {
|
||||
background-image: none;
|
||||
margin-top: 20px;
|
||||
border-top: solid 1px #ddd;
|
||||
padding: 20px 0;
|
||||
min-height: 0;
|
||||
}
|
||||
aside#sidebar a.button {
|
||||
|
||||
#downloads {
|
||||
display: none;
|
||||
}
|
||||
#main-content h1:before,
|
||||
#main-content h2:before,
|
||||
#main-content h3:before,
|
||||
#main-content h4:before,
|
||||
#main-content h5:before,
|
||||
#main-content h6:before {
|
||||
content: none;
|
||||
padding-right: 0;
|
||||
margin-left: 0;
|
||||
|
||||
.inner {
|
||||
min-width: 320px;
|
||||
max-width: 480px;
|
||||
}
|
||||
|
||||
#project_title {
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
code, pre {
|
||||
min-width: 320px;
|
||||
max-width: 480px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
|
||||
@media only screen and (min-width: 480px) and (max-width: 767px) {}
|
||||
|
||||
/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
|
||||
@media only screen and (max-width: 479px) {}
|
||||
|
|
Loading…
Reference in New Issue
Block a user