From ff8451d283dc74723b332643d34897b569cb7f1a Mon Sep 17 00:00:00 2001 From: Yann Esposito Date: Mon, 26 Oct 2015 14:27:51 +0100 Subject: [PATCH] partial commit --- README.html | 5 +- README.pdf | Bin 0 -> 15898 bytes articles/Two_years_with_clojure.html | 21 +- articles/Two_years_with_clojure.md | 36 +++ articles/Two_years_with_clojure.pdf | Bin 0 -> 19599 bytes footer.html | 5 +- styling.css | 431 ++++++++++++++++++++++++++- 7 files changed, 485 insertions(+), 13 deletions(-) create mode 100644 README.pdf create mode 100644 articles/Two_years_with_clojure.pdf diff --git a/README.html b/README.html index dadd6bd..5ee5f89 100644 --- a/README.html +++ b/README.html @@ -27,8 +27,11 @@
  • pandoc
  • XeLaTeX
  • +
    diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a81ac2b61ea9177fd3bfc5acc0fd5aa6ae15352b GIT binary patch literal 15898 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
  • TODO: choose a title
  • @@ -25,6 +26,11 @@

    Plan

    TODO: Remove the detailled plan

      +
    • Start with the end +
        +
      • show a pulse
      • +
      • explain what is simple / hard
      • +
    • The situation before
      • pb with volume (MongoDB / PHP, etc…)
      • @@ -59,8 +65,21 @@
    • One year later (maintenance and impressions)
    +

    The Elephant Graveyard

    +

    Imagine you could get all tweets in realtime.

    +

    Imagine you need to count them. Imagine you need to filter them by keywords. Imagine you need to answer complex questions about them in realtime. For example, how many tweets from women, containing the word clojure expressing a positive sentiment during the last hour. Imagine the same question about the last year.

    +

    How would you do it?

    +

    First you’ll need to absorb tweets in realtime. The twitter streaming API is here for that. But you are limited to 1% of all twitter volume. If you want not to be limited, you need either deal directly with twitter or use GNIP.

    +

    Next, you’ll need to keep only tweet of interest. By example, you’ll need to filter by keyword.

    +

    Just after that, you need to add informations for each received tweet. You need to enrich them by information it doesn’t already possess. For example, the gender of the author of a tweet must be guessed. The same for the sentiment expressed by the tweet.

    +

    In the end you’ll need to display all these informations in real-time. By real-time we mean with a very low latency.

    +

    Under the minute is generally acceptable. But under the hood, we generally have less than half a second of latency.

    +

    Most of the lantency is due to twitter (about 2s) or gnip (about 15s).

    +
    diff --git a/articles/Two_years_with_clojure.md b/articles/Two_years_with_clojure.md index 014edaa..3e64535 100644 --- a/articles/Two_years_with_clojure.md +++ b/articles/Two_years_with_clojure.md @@ -8,6 +8,9 @@ TODO: introduction (20 lines max) TODO: Remove the detailled plan +- Start with the end + - show a pulse + - explain what is simple / hard - The situation before - pb with volume (MongoDB / PHP, etc...) - securities issues @@ -33,3 +36,36 @@ TODO: Remove the detailled plan - was it a mistake? - Do we have any doubts? - One year later (maintenance and impressions) + +## The Elephant Graveyard + +Imagine you could get all tweets in realtime. + +Imagine you need to count them. +Imagine you need to filter them by keywords. +Imagine you need to answer complex questions about them in realtime. +For example, how many tweets from women, containing the word `clojure` expressing a positive sentiment during the last hour. +Imagine the same question about the last year. + +How would you do it? + +First you'll need to absorb tweets in realtime. +The twitter streaming API is here for that. +But you are limited to 1% of all twitter volume. +If you want not to be limited, you need either deal directly with twitter or use GNIP. + +Next, you'll need to keep only tweet of interest. +By example, you'll need to filter by keyword. + +Just after that, you need to add informations for each received tweet. +You need to enrich them by information it doesn't already possess. +For example, the gender of the author of a tweet must be guessed. +The same for the sentiment expressed by the tweet. + +In the end you'll need to display all these informations in real-time. +By real-time we mean with a very low latency. + +Under the minute is generally acceptable. +But under the hood, we generally have less than half a second of latency. + +Most of the lantency is due to twitter (about 2s) or gnip (about 15s). diff --git a/articles/Two_years_with_clojure.pdf b/articles/Two_years_with_clojure.pdf new file mode 100644 index 0000000000000000000000000000000000000000..60c7cbd0dc5746b1ef0b37c7a12d031772fc51cc GIT binary patch literal 19599 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 literal 0 HcmV?d00001 diff --git a/footer.html b/footer.html index dca059b..5bc85e0 100644 --- a/footer.html +++ b/footer.html @@ -1,3 +1,6 @@ +
    diff --git a/styling.css b/styling.css index 36890e3..0607023 100644 --- a/styling.css +++ b/styling.css @@ -1,13 +1,424 @@ -@import url(//fonts.googleapis.com/css?family=Libre+Baskerville:400,400italic,700);@import url(//fonts.googleapis.com/css?family=Source+Code+Pro:400,400italic,700,700italic);/* normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}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}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}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}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}body,code,tr.odd,tr.even,figure{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAABOFBMVEWDg4NycnJnZ2ebm5tjY2OgoKCurq5lZWWoqKiKiopmZmahoaGOjo5TU1N6enp7e3uRkZGJiYmFhYWxsbFOTk6Xl5eBgYGkpKRhYWFRUVGvr69dXV2wsLBiYmKnp6dUVFR5eXmdnZ1sbGxYWFh2dnZ0dHSmpqaZmZlVVVVqamqsrKyCgoJ3d3dubm5fX19tbW2ioqKSkpJWVlaHh4epqalSUlKTk5OVlZWysrJoaGhzc3N+fn5wcHBaWlqcnJxkZGRpaWlvb2+zs7NcXFxPT09/f3+lpaWWlpaQkJCjo6OIiIitra2enp6YmJhQUFBZWVmqqqqLi4uNjY1eXl6rq6ufn599fX2AgIB8fHyEhIRxcXFra2tbW1uPj4+MjIyGhoaamppgYGB4eHhNTU1XV1d1dXW0tLSUlJSHWuNDAAAAaHRSTlMNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDUnKohIAAAaZSURBVHhelZWFrmZVDEb3cffzq7u7u7u7u9z7/m8AhISQwMDMAzRN2/WtAhO7zOd0x0U/UNb0oWQZGLWhIHBK/lC96klgkA+3B5JoqI9ozRcn4306YeDweKG9vxo5YbGbqBkln93ZFGs3SA0RRpSO4dpdpg+VnMUv8BEqmiIcli8gJeRZc29K51qOg0OWHRGyA0ccrmbmSRj1r7x5JisCpAs+iuCd8GFc0pMGldB2BOC0VoY37qKJh5nqZNjb4XtnjRlYMQYxsN0KWTdk77hnJZB7s+MbXK3Mxawrwu8cHGNKynDQTUqhbrxmNQ+belwSPemILVuUu1p4G6xGI0yUA0lh26IduYnd2soQ0KVmwUxo7D6U0QdCJwLWDTwzFij0cE/ZvorI7kl/QuCHUy7ibZCHT9mtLaY4HJLhIHOJ+jt5DAI9MJqOs0refRcF5H7S9mb2vnsqo21xvTPVgZGrLDCTJ+kk9eQ67kPk+xP4697EDY+boY3tC4zs3yy+5XRqg58EivoohEownfBzjpeQN6v6gaY0TCzADte1m2pbFSUbpKfDqU0iq+4UPNyxFlW00Q70b9jGpIbqdoCQLZ1Lax+Bv3XUj5ZnoT1N0j3CZS95FfHDRump2ujpuLY47oI5VWjmR2PwietdJbJGZRYFFm6SWPiwmhFZqWKEwNM6Nlw7XmZuQmKu8FHq8DFcaYjAYojsS6NrLKNnMRgyu2oaXaNpyLa0Nncawan7eDOxZVSxv4GYoLCF184C0EAvuhuJNvZ1gosWDdHUfJ05uHdwhRKYb/5+4W90jQxT/pHd2hnkBgn3GFzCCzcVXPbZ3qdqLlYrDl0dUWqkXYc6LStL8QLPI3G3gVDdAa2Pr0co8wQgwRYBlTB5AEmteLPCRHMgoHi56glp5rMSrwAllRSatomKatJdy0nXEkCI2z5065bpKav5/bKgSXr+L0HgDwSsvwQaeC0SjH1cnu7WZTcxJn0kVLI/HEzNK1j8W7etR/BfXDXhak8LmTQdwMqaF/jh+k+ZVMUvWU/+OfUwz5TDJhclFAtiMYD8ss6TFNluVg6lYZaeXXv/FzqQ3yjupMEIyzlf6yt2zmyHxI43held1dMbGkLMY5Kpv4llTCazqHbKsakh+DPPZdHvqYQF1onZpg1W/H7b6DJr019WhPWucVJTcStosCf1fQ1kLWA/12vjb3PItlBUuo6FO/4kFTPGNXC4e/TRMDGwPpSG1RJwYXNH4vkHK8BSmFNrXVTwJjLAphVEKq7HS2d8pSqoZdCBAv6mdJ72revxET6giWB7PgbJph+2i011uUifL7xruTb3zv+NKvgpqRSU0yBSckeKeQzSgeZZcaQb8+JYzehtPraBkg3Jc3e8boxVXJzNW23deFoZ74Vzy6xd1+FemwZ/neOnHQh2ufopy5c/r69Cz+scIrx+uN+dzhyzEjCeNLL0hgjGUOHdvb25YDijfq/An/D+iv7BBDutUsyuvBrH2ya6j2SIkLvjxFIpk8H37wcAt9KHX9cLeNmn+8CR1xtKgrzojVXl/qikMqAsDcO1coQrEanpsrB3DlAImIwS07oN2k3C2x2jSE3jxSm908P1tUXUMD15Lpp50CHii7i2BDSdYMcfB7+X7QdqymsDWH6BJ5APN+qIRhTVc/msYf5CjOyA82VSuIEtZA3GmUuXBK2r6xJ2LXO8fCU9kmCvydDptoECLq+XXLs4w8U+DUZyir9Cw+XL3rHFGoDNI9Rw3baFy/fZwTY2Gr0WMuLaxMrWaC5rh+IeyZijp0fdaDLPg8YtugLgnwYZss1xIh1o13qB7L8pC6wEutNQVuy5aIpNkSSl2yWAiRADUVXSMqpTH8Da3gCNr8maodNIxjY7CXyvzHHfiJoto/CE9UMmX+cRqPC8RKdks7OV35txMGkdXzOkkhX9wTr+tIOGKZzjoo+qbWy3hsJJtz5D7nP+syyjxYe7eCAMIOywwFNfv/ZMNyBSxV0g7ZEJCPVE8IA5sw7jg9Kx3RXdfCQXGxpH+0kyHYpBj0H4y2VdAHRW9RyegOPPB+5NudysJji/lnxHQ9pFOMLMLeZ0O9hrnsuFsstbjczbC+14JHS+xsDf3pPgQXvUG6Q/H2fKV/B7jYX8RdOrug5BjG/1jueAPq1ElQb4AeH/sRNwnNyoFqsJwT9tWhChzL/IP/gxfleLSIgVQDdRvKBZVfu9wgKkeHEEfgIqa/F6fJ0HM8knJtkbCn4hKFvNDLWXDr8BGMywGD1Lh54AAAAASUVORK5CYII=")}body{font-family:"Libre Baskerville",Baskerville,Georgia,serif;background-color:#ECF0F1;color:#34495E;line-height:1.3;text-align:justify;-moz-hyphens:auto;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}@media (max-width: 400px){body{font-size:16px;margin-left:10px;margin-right:10px;margin-top:10px;margin-bottom:15px}}@media (min-width: 401px) and (max-width: 600px){body{font-size:18px;margin-left:10px;margin-right:10px;margin-top:10px;margin-bottom:15px}}@media (min-width: 601px) and (max-width: 900px){body{font-size:19px;margin-left:100px;margin-right:100px;margin-top:20px;margin-bottom:25px}}@media (min-width: 901px) and (max-width: 1800px){body{font-size:21px;margin-left:200px;margin-right:200px;margin-top:30px;margin-bottom:25px;max-width:800px}}@media (min-width: 1801px){body{font-size:22px;margin-left:20%;margin-right:20%;margin-top:30px;margin-bottom:25px;max-width:1000px}}p{margin-top:10px;margin-bottom:18px}em{font-style:italic}strong{font-weight:bold}h1,h2,h3,h4,h5,h6{font-weight:bold;padding-top:0.25em;margin-bottom:0.15em}header{line-height:2.475em;padding-bottom:0.7em;border-bottom:1px solid #bbb;margin-bottom:1.2em}header>h1{border:none;padding:0;margin:0;font-size:225%}header>h2{border:none;padding:0;margin:0;font-style:normal;font-size:175%}header>h3{padding:0;margin:0;font-size:125%;font-style:italic}header+h1{border-top:none;padding-top:0px}h1{border-top:1px solid #bbb;padding-top:15px;font-size:150%;margin-bottom:10px}h1:first-of-type{border:none}h2{font-size:125%;font-style:italic}h3{font-size:105%;font-style:italic}hr{border:0px;border-top:1px solid #bbb;width:100%;height:0px}hr+h1{border-top:none;padding-top:0px}ul,ol{font-size:90%;margin-top:10px;margin-bottom:15px;padding-left:30px}ul{list-style:circle}ol{list-style:decimal}ul ul,ol ol,ul ol,ol ul{font-size:inherit}li{margin-top:5px;margin-bottom:7px}q,blockquote,dd{font-style:italic;font-size:90%}blockquote,dd{quotes:none;border-left:0.35em #bbb solid;padding-left:1.15em;margin:0 1.5em 0 0}blockquote blockquote,dd blockquote,blockquote dd,dd dd,ol blockquote,ol dd,ul blockquote,ul dd,blockquote ol,dd ol,blockquote ul,dd ul{font-size:inherit}a,a:link,a:visited,a:hover{color:inherit;text-decoration:none;border-bottom:1px dashed #111}a:hover,a:link:hover,a:visited:hover,a:hover:hover{border-bottom-style:solid}a.footnoteRef,a:link.footnoteRef,a:visited.footnoteRef,a:hover.footnoteRef{border-bottom:none;color:#666}code{font-family:"Source Code Pro","Consolas","Monaco",monospace;font-size:85%;background-color:#ddd;border:1px solid #bbb;padding:0px 0.15em 0px 0.15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}pre{margin-right:1.5em;display:block}pre>code{display:block;font-size:70%;padding:10px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;overflow-x:auto}blockquote pre,dd pre,ul pre,ol pre{margin-left:0;margin-right:0}blockquote pre>code,dd pre>code,ul pre>code,ol pre>code{font-size:77.77778%}caption,figcaption{font-size:80%;font-style:italic;text-align:right;margin-bottom:5px}caption:empty,figcaption:empty{display:none}table{width:100%;margin-top:1em;margin-bottom:1em}table+h1{border-top:none}tr td,tr th{padding:0.2em 0.7em}tr.header{border-top:1px solid #222;border-bottom:1px solid #222;font-weight:700}tr.odd{background-color:#eee}tr.even{background-color:#ccc}tbody:last-child{border-bottom:1px solid #222}dt{font-weight:700}dt:after{font-weight:normal;content:":"}dd{margin-bottom:10px}figure{margin:1.3em 0 1.3em 0;text-align:center;padding:0px;width:100%;background-color:#ddd;border:1px solid #bbb;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;overflow:hidden}img{display:block;margin:0px auto;padding:0px;max-width:100%}figcaption{margin:5px 10px 5px 30px}.footnotes{color:#666;font-size:70%;font-style:italic}.footnotes li p:last-child a:last-child{border-bottom:none} -#footer,#TOC { - padding: 2em; - margin: 2em 0; +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * Correct `inline-block` display not defined in IE 8/9. + */ + +audio, +canvas, +video { + display: inline-block; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9. + * Hide the `template` element in IE, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background: transparent; +} + +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { font-weight: bold; - background-color: rgba(255,255,255,0.5); - box-shadow: 0 0 3px rgba(0,0,0,0.3) inset; - border-radius: 3px; } -pre > code { - background-color: rgba(255,255,255,0.5); + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; } -pre { overflow: scroll; } + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Correct font family set oddly in Safari 5 and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +/** + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre-wrap; +} + +/** + * Set consistent quote types. + */ + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * 1. Correct font family not being inherited in all browsers. + * 2. Correct font size not being inherited in all browsers. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ + +button, +input, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +.go-top { +position: fixed; +bottom: 2em; +right: 2em; +text-decoration: none; +background-color: #E0E0E0; +font-size: 12px; +padding: 1em; +display: inline; +} + +/* Github css */ + +html,body{ margin: auto; + padding-right: 1em; + padding-left: 1em; + max-width: 44em; color:black;}*:not('#mkdbuttons'){margin:0;padding:0}body{font:13.34px helvetica,arial,freesans,clean,sans-serif;-webkit-font-smoothing:subpixel-antialiased;line-height:1.4;padding:3px;background:#fff;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}p{margin:1em 0}a{color:#4183c4;text-decoration:none}body{background-color:#fff;padding:30px;margin:15px;font-size:14px;line-height:1.6}body>*:first-child{margin-top:0!important}body>*:last-child{margin-bottom:0!important}@media screen{body{box-shadow:0 0 0 1px #cacaca,0 0 0 4px #eee}}h1,h2,h3,h4,h5,h6{margin:20px 0 10px;padding:0;font-weight:bold;-webkit-font-smoothing:subpixel-antialiased;cursor:text}h1{font-size:28px;color:#000}h2{font-size:24px;border-bottom:1px solid #ccc;color:#000}h3{font-size:18px;color:#333}h4{font-size:16px;color:#333}h5{font-size:14px;color:#333}h6{color:#777;font-size:14px}p,blockquote,table,pre{margin:15px 0}ul{padding-left:30px}ol{padding-left:30px}ol li ul:first-of-type{margin-top:0}hr{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;border:0 none;color:#ccc;height:4px;padding:0}body>h2:first-child{margin-top:0;padding-top:0}body>h1:first-child{margin-top:0;padding-top:0}body>h1:first-child+h2{margin-top:0;padding-top:0}body>h3:first-child,body>h4:first-child,body>h5:first-child,body>h6:first-child{margin-top:0;padding-top:0}a:first-child h1,a:first-child h2,a:first-child h3,a:first-child h4,a:first-child h5,a:first-child h6{margin-top:0;padding-top:0}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p,ul li>:first-child,ol li>:first-child{margin-top:0}dl{padding:0}dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px}dl dt:first-child{padding:0}dl dt>:first-child{margin-top:0}dl dt>:last-child{margin-bottom:0}dl dd{margin:0 0 15px;padding:0 15px}dl dd>:first-child{margin-top:0}dl dd>:last-child{margin-bottom:0}blockquote{border-left:4px solid #DDD;padding:0 15px;color:#777}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}table{border-collapse:collapse;border-spacing:0;font-size:100%;font:inherit}table th{font-weight:bold;border:1px solid #ccc;padding:6px 13px}table td{border:1px solid #ccc;padding:6px 13px}table tr{border-top:1px solid #ccc;background-color:#fff}table tr:nth-child(2n){background-color:#f8f8f8}img{max-width:100%}code,tt{margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px;font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;color:#333}pre>code{margin:0;padding:0;white-space:pre;border:0;background:transparent}.highlight pre{background-color:#f8f8f8;border:1px solid #ccc;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}pre{background-color:#f8f8f8;border:1px solid #ccc;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}pre code,pre tt{background-color:transparent;border:0}.poetry pre{font-family:Georgia,Garamond,serif!important;font-style:italic;font-size:110%!important;line-height:1.6em;display:block;margin-left:1em}.poetry pre code{font-family:Georgia,Garamond,serif!important;word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;white-space:pre-wrap}sup,sub,a.footnote{font-size:1.4ex;height:0;line-height:1;vertical-align:super;position:relative}sub{vertical-align:sub;top:-1px}@media print{body{background:#fff}img,pre,blockquote,table,figure{page-break-inside:avoid}body{background:#fff;border:0}code{background-color:#fff;color:#333!important;padding:0 .2em;border:1px solid #dedede}pre{background:#fff}pre code{background-color:white!important;overflow:visible}}@media screen{body.inverted{color:#eee!important;border-color:#555;box-shadow:none}.inverted body,.inverted hr .inverted p,.inverted td,.inverted li,.inverted h1,.inverted h2,.inverted h3,.inverted h4,.inverted h5,.inverted h6,.inverted th,.inverted .math,.inverted caption,.inverted dd,.inverted dt,.inverted blockquote{color:#eee!important;border-color:#555;box-shadow:none}.inverted td,.inverted th{background:#333}.inverted h2{border-color:#555}.inverted hr{border-color:#777;border-width:1px!important}::selection{background:rgba(157,193,200,0.5)}h1::selection{background-color:rgba(45,156,208,0.3)}h2::selection{background-color:rgba(90,182,224,0.3)}h3::selection,h4::selection,h5::selection,h6::selection,li::selection,ol::selection{background-color:rgba(133,201,232,0.3)}code::selection{background-color:rgba(0,0,0,0.7);color:#eee}code span::selection{background-color:rgba(0,0,0,0.7)!important;color:#eee!important}a::selection{background-color:rgba(255,230,102,0.2)}.inverted a::selection{background-color:rgba(255,230,102,0.6)}td::selection,th::selection,caption::selection{background-color:rgba(180,237,95,0.5)}.inverted{background:#0b2531;background:#252a2a}.inverted body{background:#252a2a}.inverted a{color:#acd1d5}}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k,.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#800080;font-weight:bold}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:#008080}.highlight .ni{color:#800080}.highlight .ne,.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:#000080}.highlight .nv{color:#008080}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc,.highlight .vg,.highlight .vi{color:#008080}.highlight .il{color:#099}.highlight .gc{color:#999;background-color:#eaf2f5}.type-csharp .highlight .k,.type-csharp .highlight .kt{color:#00F}.type-csharp .highlight .nf{color:#000;font-weight:normal}.type-csharp .highlight .nc{color:#2b91af}.type-csharp .highlight .nn{color:#000}.type-csharp .highlight .s,.type-csharp .highlight .sc{color:#a31515}