From e1f06b311652786b2a3c9dd5981bbe9b51383d1a Mon Sep 17 00:00:00 2001 From: "David T. Sadler" Date: Mon, 25 Mar 2019 21:05:35 +0000 Subject: Begining of rebuild. --- .gitignore | 5 - .rvmrc | 26 -- CC-LICENSE | 360 ----------------- Gemfile | 7 - Gemfile.lock | 37 -- MIT-LICENSE | 21 - Rakefile | 157 -------- VERSION | 1 - _config.yml | 107 ----- _config.yml.example | 120 ------ _site_build/404.markdown | 17 - _site_build/_includes/footer.html | 10 - _site_build/_includes/head.html | 12 - _site_build/_includes/header.html | 6 - _site_build/_includes/javascript/disqus.html | 10 - _site_build/_includes/javascript/facebook.html | 5 - .../_includes/javascript/google_analytics.html | 6 - _site_build/_includes/javascript/google_plus.html | 6 - _site_build/_includes/javascript/twitter.html | 5 - _site_build/_includes/post_excerpt.html | 13 - _site_build/_includes/sidebar.html | 41 -- _site_build/_includes/social/buttons.html | 5 - _site_build/_includes/social/facebook_like.html | 1 - _site_build/_includes/social/google_plus.html | 1 - _site_build/_includes/social/twitter_share.html | 1 - _site_build/_layouts/category_index.html | 11 - _site_build/_layouts/default.html | 46 --- _site_build/_layouts/post.html | 41 -- _site_build/_plugins/category_indexes.rb | 63 --- _site_build/_plugins/date.rb | 19 - _site_build/_plugins/posts.rb | 15 - ...012-05-06-installing-node-js-on-ubuntu.markdown | 187 --------- ...06-03-how-to-install-magento-on-ubuntu.markdown | 338 ---------------- ...1-installing-the-android-sdk-on-ubuntu.markdown | 81 ---- _site_build/about/index.html | 16 - _site_build/apple-touch-icon-114x114.png | Bin 28273 -> 0 bytes _site_build/apple-touch-icon-57x57.png | Bin 10048 -> 0 bytes _site_build/apple-touch-icon-72x72.png | Bin 13902 -> 0 bytes _site_build/apple-touch-icon.png | Bin 10048 -> 0 bytes _site_build/archives/index.html | 32 -- _site_build/css/style.css | 444 --------------------- _site_build/favicon.ico | Bin 894 -> 0 bytes _site_build/feed/index.html | 39 -- _site_build/img/localhost.magento-store.com.png | Bin 36681 -> 0 bytes _site_build/img/magento-setup-wizard-step-1.png | Bin 157183 -> 0 bytes _site_build/img/magento-store-admin.png | Bin 68690 -> 0 bytes _site_build/img/magento-store.png | Bin 501629 -> 0 bytes _site_build/index.html | 11 - _site_build/js/libs/modernizr-2.5.3.min.js | 4 - _site_build/robots.txt | 6 - _site_build/sitemap.xml | 26 -- lib/random.rb | 31 -- lib/templates/post.markdown | 30 -- public/css/main.css | 295 ++++++++++++++ public/css/normalize.css | 349 ++++++++++++++++ public/favicon.ico | Bin 0 -> 894 bytes public/index.html | 19 + public/robots.txt | 5 + 58 files changed, 668 insertions(+), 2420 deletions(-) delete mode 100644 .gitignore delete mode 100644 .rvmrc delete mode 100644 CC-LICENSE delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 MIT-LICENSE delete mode 100644 Rakefile delete mode 100644 VERSION delete mode 100644 _config.yml delete mode 100644 _config.yml.example delete mode 100644 _site_build/404.markdown delete mode 100644 _site_build/_includes/footer.html delete mode 100644 _site_build/_includes/head.html delete mode 100644 _site_build/_includes/header.html delete mode 100644 _site_build/_includes/javascript/disqus.html delete mode 100644 _site_build/_includes/javascript/facebook.html delete mode 100644 _site_build/_includes/javascript/google_analytics.html delete mode 100644 _site_build/_includes/javascript/google_plus.html delete mode 100644 _site_build/_includes/javascript/twitter.html delete mode 100644 _site_build/_includes/post_excerpt.html delete mode 100644 _site_build/_includes/sidebar.html delete mode 100644 _site_build/_includes/social/buttons.html delete mode 100644 _site_build/_includes/social/facebook_like.html delete mode 100644 _site_build/_includes/social/google_plus.html delete mode 100644 _site_build/_includes/social/twitter_share.html delete mode 100644 _site_build/_layouts/category_index.html delete mode 100644 _site_build/_layouts/default.html delete mode 100644 _site_build/_layouts/post.html delete mode 100644 _site_build/_plugins/category_indexes.rb delete mode 100644 _site_build/_plugins/date.rb delete mode 100644 _site_build/_plugins/posts.rb delete mode 100644 _site_build/_posts/2012-05-06-installing-node-js-on-ubuntu.markdown delete mode 100644 _site_build/_posts/2012-06-03-how-to-install-magento-on-ubuntu.markdown delete mode 100644 _site_build/_posts/2012-08-01-installing-the-android-sdk-on-ubuntu.markdown delete mode 100644 _site_build/about/index.html delete mode 100755 _site_build/apple-touch-icon-114x114.png delete mode 100755 _site_build/apple-touch-icon-57x57.png delete mode 100755 _site_build/apple-touch-icon-72x72.png delete mode 100755 _site_build/apple-touch-icon.png delete mode 100644 _site_build/archives/index.html delete mode 100644 _site_build/css/style.css delete mode 100755 _site_build/favicon.ico delete mode 100644 _site_build/feed/index.html delete mode 100644 _site_build/img/localhost.magento-store.com.png delete mode 100644 _site_build/img/magento-setup-wizard-step-1.png delete mode 100644 _site_build/img/magento-store-admin.png delete mode 100644 _site_build/img/magento-store.png delete mode 100644 _site_build/index.html delete mode 100644 _site_build/js/libs/modernizr-2.5.3.min.js delete mode 100644 _site_build/robots.txt delete mode 100644 _site_build/sitemap.xml delete mode 100644 lib/random.rb delete mode 100644 lib/templates/post.markdown create mode 100644 public/css/main.css create mode 100644 public/css/normalize.css create mode 100755 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/robots.txt diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e00ccac..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -public -*.swp -*~ -.DS_Store -_deploy.yml diff --git a/.rvmrc b/.rvmrc deleted file mode 100644 index 4eb6111..0000000 --- a/.rvmrc +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -ruby_string="ruby-1.9.3" -gemset_name="jekyll-blog" - -if rvm list strings | grep -q "${ruby_string}" ; then - if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \ - && -s "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}" ]] ; then - \. "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}" - else - if ! rvm --create "${ruby_string}@${gemset_name}" - then - echo "Failed to create RVM environment '${ruby_string}@${gemset_name}'." - fi - fi - - if ! command -v bundle ; then - gem install bundler - fi - - if [[ -e Gemfile ]]; then - bundle install - fi -else - echo "${ruby_string} was not found, please run 'rvm install ${ruby_string}' and then cd back into the project directory." -fi diff --git a/CC-LICENSE b/CC-LICENSE deleted file mode 100644 index a632f3e..0000000 --- a/CC-LICENSE +++ /dev/null @@ -1,360 +0,0 @@ -Creative Commons Legal Code - -Attribution-NonCommercial-ShareAlike 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(g) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "License Elements" means the following high-level license attributes - as selected by Licensor and indicated in the title of this License: - Attribution, Noncommercial, ShareAlike. - e. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - f. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - g. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - h. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - i. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - j. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved, including but not limited to the -rights described in Section 4(e). - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(d), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(d), as requested. - b. You may Distribute or Publicly Perform an Adaptation only under: (i) - the terms of this License; (ii) a later version of this License with - the same License Elements as this License; (iii) a Creative Commons - jurisdiction license (either this or a later license version) that - contains the same License Elements as this License (e.g., - Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). - You must include a copy of, or the URI, for Applicable License with - every copy of each Adaptation You Distribute or Publicly Perform. You - may not offer or impose any terms on the Adaptation that restrict the - terms of the Applicable License or the ability of the recipient of the - Adaptation to exercise the rights granted to that recipient under the - terms of the Applicable License. You must keep intact all notices that - refer to the Applicable License and to the disclaimer of warranties - with every copy of the Work as included in the Adaptation You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Adaptation, You may not impose any effective technological - measures on the Adaptation that restrict the ability of a recipient of - the Adaptation from You to exercise the rights granted to that - recipient under the terms of the Applicable License. This Section 4(b) - applies to the Adaptation as incorporated in a Collection, but this - does not require the Collection apart from the Adaptation itself to be - made subject to the terms of the Applicable License. - c. You may not exercise any of the rights granted to You in Section 3 - above in any manner that is primarily intended for or directed toward - commercial advantage or private monetary compensation. The exchange of - the Work for other copyrighted works by means of digital file-sharing - or otherwise shall not be considered to be intended for or directed - toward commercial advantage or private monetary compensation, provided - there is no payment of any monetary compensation in con-nection with - the exchange of copyrighted works. - d. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and, (iv) consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4(d) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor reserves - the exclusive right to collect such royalties for any exercise by - You of the rights granted under this License if Your exercise of - such rights is for a purpose or use which is otherwise than - noncommercial as permitted under Section 4(c) and otherwise waives - the right to collect royalties through any statutory or compulsory - licensing scheme; and, - iii. Voluntary License Schemes. The Licensor reserves the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License that is for a - purpose or use which is otherwise than noncommercial as permitted - under Section 4(c). - f. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE -FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS -AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE -WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT -LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, -ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT -DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED -WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at http://creativecommons.org/. diff --git a/Gemfile b/Gemfile deleted file mode 100644 index c1ba012..0000000 --- a/Gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "http://rubygems.org" -source "http://gemcutter.org" - -gem 'jekyll' -gem 'rdiscount' -gem 'rake' -gem 'sanitize' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 182b4e8..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,37 +0,0 @@ -GEM - remote: http://rubygems.org/ - remote: http://gemcutter.org/ - specs: - albino (1.3.3) - posix-spawn (>= 0.3.6) - classifier (1.3.3) - fast-stemmer (>= 1.0.0) - directory_watcher (1.4.1) - fast-stemmer (1.0.1) - jekyll (0.11.2) - albino (~> 1.3) - classifier (~> 1.3) - directory_watcher (~> 1.1) - kramdown (~> 0.13) - liquid (~> 2.3) - maruku (~> 0.5) - kramdown (0.13.8) - liquid (2.4.1) - maruku (0.6.0) - syntax (>= 1.0.0) - nokogiri (1.5.5) - posix-spawn (0.3.6) - rake (0.9.2.2) - rdiscount (1.6.8) - sanitize (2.0.3) - nokogiri (>= 1.4.4, < 1.6) - syntax (1.0.0) - -PLATFORMS - ruby - -DEPENDENCIES - jekyll - rake - rdiscount - sanitize diff --git a/MIT-LICENSE b/MIT-LICENSE deleted file mode 100644 index 7269a18..0000000 --- a/MIT-LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 David T. Sadler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the 'Software'), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Rakefile b/Rakefile deleted file mode 100644 index 8c7c7c6..0000000 --- a/Rakefile +++ /dev/null @@ -1,157 +0,0 @@ -$:.unshift(File.dirname(__FILE__)) -require 'yaml' -require 'lib/random' - -task :default => [:'site:deploy:development'] - -namespace :site do - namespace :deploy do - desc 'Builds the site and deploys it locally using the built in server.' - task :development => [:'env:development', :'build:development'] - - desc 'Builds the site and deploys it to a remote server using rsync over ssh.' - task :production => [:'env:production', :'build:production'] do - config = @config['deployment'] || {} - config.merge! YAML::load_file('_deploy.yml')['deployment']if File.exists?('_deploy.yml') - - host = config['host'] || ask('Host?', nil, lambda { |answer| !answer.empty? }, 'You must enter a host') - user = config['user'] || ask('User?', nil, lambda { |answer| !answer.empty? }, 'You must enter a user') - port = config['port'] || ask('Port?', '22', lambda { |answer| !answer.empty? }, 'You must enter a port number') - dir = config['directory'] || ask('Directory?', nil, lambda { |answer| !answer.empty? }, 'You must enter a directory') - - system("rsync -avz --delete --rsh='ssh -p#{port}' #{@config['destination']}/ #{user}@#{host}:#{dir}") - end - end - - namespace :build do - desc 'Builds the site and runs the local built in server.' - task :development => [:clean] do - system 'bundle exec jekyll --server --auto' - end - - desc 'Builds the site so that it can be deployed.' - task :production => [:'test_posts:clean', :clean] do - system 'bundle exec jekyll' - end - end - - namespace :env do - desc 'Sets the configuration for development mode.' - task :development do - edit_config 'production', 'false' - end - - desc 'Sets the configuration for production mode.' - task :production do - edit_config 'production', 'true' - end - end - - desc 'Deletes any generated files.' - task :clean => [:load_config] do - FileUtils.rm_rf(@config['destination']) - end -end - -namespace :test_posts do - desc 'Creates several test posts.' - task :create => [:load_config, :clean, :create_directory] do - (1..@config['num_test_posts']).each do |day| - date, title, categories = TestPosts::Random.generate - save_post(date, title, @config['author'], title, categories, @config['test_posts']) - end - end - - desc 'Deletes any test posts.' - task :clean => [:load_config] do - FileUtils.rm_rf(@config['test_posts']) - end - - desc 'Creates the required test posts directory if one does not exist.' - task :create_directory => [:load_config] do - create_directory(@config['test_posts']) - end -end - -namespace :post do - desc 'Creates a new post based on user input' - task :create => [:load_config, :create_directory] do - date = Date.today.to_s - title = nil - author = @config['author'] - description = nil - categories = nil - - loop do - date = ask('Date?', date, lambda { |answer| !answer.empty? && answer =~ /^\d{4}-\d{2}-\d{2}$/ }, 'Date must be entered as YYYY-MM-DD') - title = ask('Title?', title, lambda { |answer| !answer.empty? }, 'You must enter a title') - author = ask('Author?', author) - description = ask('Description?', description) - categories = ask('Categories?', categories) - break if agree('Ok to create this post?') - end - - save_post(date, title, author, description, categories, @config['posts']) - end - - desc 'Creates the required posts directory if one does not exist.' - task :create_directory => [:load_config] do - create_directory(@config['posts']) - end -end - -desc 'Loads the configuration file into an instance variable to be used by other tasks.' -task :load_config do - @config = YAML::load_file('_config.yml') - @config['posts'] = "#{@config['source']}/_posts" - @config['test_posts'] = @config['posts'] + '/test' -end - -def edit_config(name, value) - config = File.read('_config.yml') - regexp = Regexp.new('(^\s*' + name + '\s*:\s*)(\S+)(\s*)$') - config.sub!(regexp,'\1'+value+'\3') - File.open('_config.yml', 'w') {|f| f.write(config)} -end - -def create_directory(dir) - FileUtils.mkdir_p(dir) unless File.directory?(dir) -end - -def save_post(date, title, author, description, categories, directory) - # Ensure string is in the form of ["category one", "category two"] - categories = "[#{categories.split(',').map { |c| '"' + c.strip + '"' }.join(',')}]" - - template = File.read("lib/templates/post.markdown") - template.gsub!(/:title/, title) - template.gsub!(/:author/, author) - template.gsub!(/:description/, description) - template.gsub!(/:categories/, categories) - - filename = "#{directory}/#{date}-#{parameterize(title)}.markdown" - File.open(filename, 'w') { |f| f.write(template) } -end - -def parameterize(string, sep = '-') - string.downcase.gsub(/[^a-z0-9\-_]+/, sep) -end - -def ask(prompt, default, validator = nil, message = nil) - prompt << " |#{default}|" if default - prompt << ' ' - answer = '' - loop do - print prompt - answer = $stdin.gets.chomp - answer = default if answer.empty? && default - valid = validator ? validator.call(answer) : true - puts(message) if message && !valid - break if valid - end - answer -end - -def agree(prompt) - yn = ask(prompt, 'y', lambda { |yn| yn.downcase[0] == 'y' || yn.downcase[0] == 'n' }, "Enter y, n or yes, no") - yn.downcase[0] == 'y' -end diff --git a/VERSION b/VERSION deleted file mode 100644 index 0ea3a94..0000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.2.0 diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 8c38768..0000000 --- a/_config.yml +++ /dev/null @@ -1,107 +0,0 @@ -# *************************** -# SITE -# *************************** - -# Set to true when building the site for production. -# Some parts of the site are only built in production mode. E.g. Google analytics code. -production: false - -# Full url for the site minus the ending forward slash. -url: http://davidtsadler.com - -# Appears in the and <header> elements within the site. -title: davidtsadler.com - -# Optional. Appears in the site's main <header> element. -subtitle: My little bit of the Internet - -# Used in various places where the author of the site needs to appear. -# For example, the copyright notice. -# Also appears in the RSS feed. -author: David T. Sadler - -# Used in the meta description tag of the site and the description element of the RSS feed. -description: The personal web site of David T. Sadler with articles and tutorials on web development and other programming. - -# Optional information that appears in the 'Contact' sidebar. -# Mainly used to generate URLs to various social sites. - -# email address of the site author. Also appears in the RSS feed if specified. -#email: - -# Twitter name minus the @ character. -twitter: davidtsadler - -# Git hub name. -github: davidtsadler - -# Facebook username -#facebook: - -# Google plus profile ID -google_plus_id: 103985843031062200565 - -# Controls the number of recent posts shown on the main index page and in the RSS feed. -max_recent_posts: 10 - -# Used in the footer of the site and RSS feed. -copyright_year: 2012 - -# Optional Google analytics. -google_ua: UA-30821012-1 - -# Optional Google site verification. -google_site_verification: CIud64O3k34lfbD3Ljbv2ENKcILv9VzIXkTHnPpw4fk - -# Optional Feedburner ID. -feedburner: davidtsadlercom - -# Optional Disqus integration. -disqus_shortname: dtscom - -# Social buttons will be enabled for posts. -# Each post can control what buttons they want through their meta tags. -social_buttons: true - -# *************************** -# JEKYLL -# *************************** - -# Markdown engine that will be used. -markdown: rdiscount - -# Directory where Jekyll will look to transform files. -source: _site_build - -# Directory where Jekyll will save transformed files. -destination: public - -# Format that Jekyll will use when generating URLs to posts. -permalink: /archives/:year/:month/:day/:title/ - -pygments: true - -# *************************** -# PLUGINS -# *************************** - -# Directory where plugins are located. -plugins: _site_build/_plugins - -# Set to true to have Jekyll generate category pages for posts. -generate_category_indexes: true - -# The directory where categories will be served from. Defaults to categories -#category_dir: - -# String prefixed to the title of the category page. Defaults to Category: -#category_title_prefix: - -# String prefixed to the meta description of the category page. Defaults to Category: -#category_meta_description_prefix: - -# *************************** -# RAKE TASKS -# *************************** -# The number of test posts that will be generated by the task test_posts:create -num_test_posts: 50 diff --git a/_config.yml.example b/_config.yml.example deleted file mode 100644 index 8ddaf3b..0000000 --- a/_config.yml.example +++ /dev/null @@ -1,120 +0,0 @@ -# *************************** -# SITE -# *************************** - -# Set to true when building the site for production. -# Some parts of the site are only built in production mode. E.g. Google analytics code. -production: false - -# Full url for the site minus the ending forward slash. -url: - -# Appears in the <title> and <header> elements within the site. -title: - -# Optional. Appears in the site's main <header> element. -#subtitle: - -# Used in various places where the author of the site needs to appear. -# For example, the copyright notice. -# Also appears in the RSS feed. -author: - -# Used in the meta description tag of the site and the description element of the RSS feed. -description: - -# Optional information that appears in the 'Contact' sidebar. -# Mainly used to generate URLs to various social sites. - -# email address of the site author. Also appears in the RSS feed if specified. -#email: - -# Twitter name minus the @ character. -#twitter: - -# Git hub name. -#github: - -# Facebook username -#facebook: - -# Google plus profile ID -#google_plus_id: - -# Controls the number of recent posts shown on the main index page and in the RSS feed. -max_recent_posts: 10 - -# Used in the footer of the site and RSS feed. -copyright_year: - -# Optional Google analytics. -#google_ua: - -# Optional Google site verification. -#google_site_verification: - -# Optional Feedburner ID. -#feedburner: - -# Optional Disqus integration. -#disqus_shortname: - -# Social buttons will be enabled for posts. -# Each post can control what buttons they want through their meta tags. -social_buttons: true - -# *************************** -# JEKYLL -# *************************** - -# Markdown engine that will be used. -markdown: rdiscount - -# Directory where Jekyll will look to transform files. -source: _site_build - -# Directory where Jekyll will save transformed files. -destination: public - -# Format that Jekyll will use when generating URLs to posts. -permalink: /archives/:year/:month/:day/:title/ - -# Enable if you want syntax highlighting. -# Will require you to install pygments onto your system. -#pygments: true - -# *************************** -# PLUGINS -# *************************** - -# Directory where plugins are located. -plugins: _site_build/_plugins - -# Set to true to have Jekyll generate category pages for posts. -#generate_category_indexes: true - -# The directory where categories will be served from. Defaults to categories -#category_dir: - -# String prefixed to the title of the category page. Defaults to Category: -#category_title_prefix: - -# String prefixed to the meta description of the category page. Defaults to Category: -#category_meta_description_prefix: - -# *************************** -# RAKE TASKS -# *************************** -# The number of test posts that will be generated by the task test_posts:create -num_test_posts: 50 - -# *************************** -# DEPLOYMENT -# *************************** -# These options are used by the Rake task site:deploy:production. -# The task will prompt you for any values that you do not wish to specifiy within the configuration file. -#deployment: -# host: -# user: -# port: -# directory: diff --git a/_site_build/404.markdown b/_site_build/404.markdown deleted file mode 100644 index 8839354..0000000 --- a/_site_build/404.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: default -title: Page not found -robots: follow, noindex, noodp, noydir, noarchive ---- -# Page not found -Sorry, but the page you were trying to view does not exist. - -It looks like this was the result of either: - -* a mistyped address -* an out-of-date link - -<script> - var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host; -</script> -<script src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script> diff --git a/_site_build/_includes/footer.html b/_site_build/_includes/footer.html deleted file mode 100644 index 2aefd40..0000000 --- a/_site_build/_includes/footer.html +++ /dev/null @@ -1,10 +0,0 @@ -<footer> - {% if page.licensed %} - <p id="license"> - <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons Licence" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br />This <span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" rel="dct:type">work</span> by <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">{{ site.author }}</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>. - </p> - {% endif %} - <p> - <small>Copyright © {{ site.copyright_year }} by {{ site.author }}. All Rights Reserved.</small> - </p> -</footer> diff --git a/_site_build/_includes/head.html b/_site_build/_includes/head.html deleted file mode 100644 index f122012..0000000 --- a/_site_build/_includes/head.html +++ /dev/null @@ -1,12 +0,0 @@ -<meta charset="utf-8"> -<title>{{ page.title }} - {{ site.title }} - - - -{% if page.robots %}{% endif %} - - - - -{% if site.production and site.google_site_verification %}{% endif %} - diff --git a/_site_build/_includes/header.html b/_site_build/_includes/header.html deleted file mode 100644 index 4f9d01e..0000000 --- a/_site_build/_includes/header.html +++ /dev/null @@ -1,6 +0,0 @@ -
-
-

{{ site.title }}

- {% if site.subtitle %}

{{ site.subtitle }}

{% endif %} -
-
diff --git a/_site_build/_includes/javascript/disqus.html b/_site_build/_includes/javascript/disqus.html deleted file mode 100644 index 06d96d5..0000000 --- a/_site_build/_includes/javascript/disqus.html +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/_site_build/_includes/javascript/facebook.html b/_site_build/_includes/javascript/facebook.html deleted file mode 100644 index badc26a..0000000 --- a/_site_build/_includes/javascript/facebook.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/_site_build/_includes/javascript/google_analytics.html b/_site_build/_includes/javascript/google_analytics.html deleted file mode 100644 index 0b1bd9a..0000000 --- a/_site_build/_includes/javascript/google_analytics.html +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/_site_build/_includes/javascript/google_plus.html b/_site_build/_includes/javascript/google_plus.html deleted file mode 100644 index d0cfd4f..0000000 --- a/_site_build/_includes/javascript/google_plus.html +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/_site_build/_includes/javascript/twitter.html b/_site_build/_includes/javascript/twitter.html deleted file mode 100644 index ddac6c0..0000000 --- a/_site_build/_includes/javascript/twitter.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/_site_build/_includes/post_excerpt.html b/_site_build/_includes/post_excerpt.html deleted file mode 100644 index da5225f..0000000 --- a/_site_build/_includes/post_excerpt.html +++ /dev/null @@ -1,13 +0,0 @@ -
-
-

{{ post.title }}

- - {% if post.categories.size != 0 %} - | Posted in {{ post.categories | category_links }} - {% endif %} - {% if post.comments and site.disqus_shortname %} - | Comments - {% endif %} -
- {{ post.content | truncate }} -
diff --git a/_site_build/_includes/sidebar.html b/_site_build/_includes/sidebar.html deleted file mode 100644 index 73cef70..0000000 --- a/_site_build/_includes/sidebar.html +++ /dev/null @@ -1,41 +0,0 @@ - diff --git a/_site_build/_includes/social/buttons.html b/_site_build/_includes/social/buttons.html deleted file mode 100644 index 828b435..0000000 --- a/_site_build/_includes/social/buttons.html +++ /dev/null @@ -1,5 +0,0 @@ -
- {% if page.google_plus %}{% include social/google_plus.html %}{% endif %} - {% if page.twitter_share %}{% include social/twitter_share.html %}{% endif %} - {% if page.facebook_like %}{% include social/facebook_like.html %}{% endif %} -
diff --git a/_site_build/_includes/social/facebook_like.html b/_site_build/_includes/social/facebook_like.html deleted file mode 100644 index 4a2f6fd..0000000 --- a/_site_build/_includes/social/facebook_like.html +++ /dev/null @@ -1 +0,0 @@ -
diff --git a/_site_build/_includes/social/google_plus.html b/_site_build/_includes/social/google_plus.html deleted file mode 100644 index eee47ec..0000000 --- a/_site_build/_includes/social/google_plus.html +++ /dev/null @@ -1 +0,0 @@ -
diff --git a/_site_build/_includes/social/twitter_share.html b/_site_build/_includes/social/twitter_share.html deleted file mode 100644 index 2a4b55c..0000000 --- a/_site_build/_includes/social/twitter_share.html +++ /dev/null @@ -1 +0,0 @@ -
diff --git a/_site_build/_layouts/category_index.html b/_site_build/_layouts/category_index.html deleted file mode 100644 index 61a79a8..0000000 --- a/_site_build/_layouts/category_index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -robots: follow, noindex, noodp, noydir, noarchive -show_comment_counts: true ---- -
-

{{ page.title }}

- {% for post in site.categories[page.category] %} - {% include post_excerpt.html %} - {% endfor %} -
diff --git a/_site_build/_layouts/default.html b/_site_build/_layouts/default.html deleted file mode 100644 index 264ad87..0000000 --- a/_site_build/_layouts/default.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - {% include head.html %} - - -
- -
-
- {{ content }} -
-
- {% include sidebar.html %} -
-
- -
-{% if site.production and site.google_ua %} - {% include javascript/google_analytics.html %} -{% endif %} -{% if page.google_plus %} - {% include javascript/google_plus.html %} -{% endif %} -{% if page.twitter_share %} - {% include javascript/twitter.html %} -{% endif %} -{% if page.facebook_like %} - {% include javascript/facebook.html %} -{% endif %} -{% if (page.comments or page.show_comment_counts) and site.disqus_shortname %} - {% include javascript/disqus.html %} -{% endif %} - - diff --git a/_site_build/_layouts/post.html b/_site_build/_layouts/post.html deleted file mode 100644 index df0dcd0..0000000 --- a/_site_build/_layouts/post.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default ---- -
-
-

{{ page.title }}

- - {% if site.generate_category_indexes and page.categories.size != 0 %} - | Posted in {{ page.categories | category_links }} - {% endif %} - {% if page.comments and site.disqus_shortname %} - | Comments - {% endif %} - {% if site.social_buttons %} - {% include social/buttons.html %} - {% endif %} -
- {{ content }} - - {% if page.comments and site.disqus_shortname %} - - {% endif %} -
diff --git a/_site_build/_plugins/category_indexes.rb b/_site_build/_plugins/category_indexes.rb deleted file mode 100644 index 10dae02..0000000 --- a/_site_build/_plugins/category_indexes.rb +++ /dev/null @@ -1,63 +0,0 @@ -module Jekyll - # Monkey patch so that both GenerateCategoryIndexes and CategoryFilter have access to this method. - class Site - # A very simple implementation. - def parameterize(string, sep = '-') - string.downcase.gsub(/[^a-z0-9\-_]+/, sep) - end - end - - class CategoryIndex < Page - def initialize(site, base, dir, category) - @site = site - @base = base - @dir = dir - @name = 'index.html' - - self.process(@name) - self.read_yaml(File.join(base, '_layouts'), 'category_index.html') - self.data['category'] = category - - title_prefix = site.config['category_title_prefix'] || 'Category: ' - self.data['title'] = "#{title_prefix}#{category}" - - description_prefix = site.config['category_meta_description_prefix'] || 'Category: ' - self.data['description'] = "#{description_prefix}#{category}" - end - end - - class GenerateCategoryIndexes < Generator - safe true - priority :low - - def generate(site) - if site.config['generate_category_indexes'] && site.layouts.key?('category_index') - dir = site.config['category_dir'] || 'categories' - site.categories.keys.each do |category| - write_category_index(site, File.join("/#{dir}", site.parameterize(category)), category) - end - end - end - - def write_category_index(site, dir, category) - index = CategoryIndex.new(site, site.source, dir, category) - index.render(site.layouts, site.site_payload) - index.write(site.dest) - site.pages << index - end - end - - module CategoryFilter - def category_links(categories) - site = @context.registers[:site] - directory = site.config['category_dir'] || 'categories' - categories = categories.sort.map do |item| - '' + item + '' - end - categories.join(', ') - end - end - -end - -Liquid::Template.register_filter(Jekyll::CategoryFilter) diff --git a/_site_build/_plugins/date.rb b/_site_build/_plugins/date.rb deleted file mode 100644 index f1a3c26..0000000 --- a/_site_build/_plugins/date.rb +++ /dev/null @@ -1,19 +0,0 @@ -module Jekyll - module DateFilter - def ordinalize(date) - day = date.day - if (11..13).include?(day % 100) - "#{day}th" - else - case day % 10 - when 1; "#{day}st" - when 2; "#{day}nd" - when 3; "#{day}rd" - else "#{day}th" - end - end - end - end -end - -Liquid::Template.register_filter(Jekyll::DateFilter) diff --git a/_site_build/_plugins/posts.rb b/_site_build/_plugins/posts.rb deleted file mode 100644 index 41826dd..0000000 --- a/_site_build/_plugins/posts.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'sanitize' - -module Jekyll - module PostFilter - def truncate(html, num_characters = 1000, indicator = ' [...]') - '

' << Sanitize.clean(html).slice(Regexp.new(".{1,#{num_characters}}( |$)")).chomp(' ') << indicator << '

' - end - - def chomp_url(url, str = 'index.html') - url.chomp(str) - end - end -end - -Liquid::Template.register_filter(Jekyll::PostFilter) diff --git a/_site_build/_posts/2012-05-06-installing-node-js-on-ubuntu.markdown b/_site_build/_posts/2012-05-06-installing-node-js-on-ubuntu.markdown deleted file mode 100644 index 1ac5b3c..0000000 --- a/_site_build/_posts/2012-05-06-installing-node-js-on-ubuntu.markdown +++ /dev/null @@ -1,187 +0,0 @@ ---- -layout: post -title: Installing Node.js on Ubuntu -author: David T. Sadler -description: This guide will show you how to install Node.js on Ubuntu. -categories: ["Node.js","Ubuntu"] -robots: follow, noodp, noydir, noarchive -comments: true -google_plus: true -twitter_share: true -facebook_like: true -published: true -licensed: true ---- -This guide will show you how to install Node.js on Ubuntu from either the source code or Git repository. I'm going to assume that you are using Ubuntu 12.04 (Precise Pangolin) and that you wish to install version 0.6.17 of Node.js. You're results may vary if you are using different versions. - -## Getting started. - -There are a few things that we require before we can install Node.js. Firstly we need a compiler which can be got by installing the `build-essential` package. This contains tools (such as the gcc complier, make tool, etc) for compiling/building software from source. - -{% highlight bash %} -sudo apt-get update -sudo apt-get install build-essential -y -{% endhighlight %} - -You will need `Git` if you are going to install from the repository. - -{% highlight bash %} -sudo apt-get install git -y -{% endhighlight %} - -Node.js itself requires very little in the way of dependencies. - -* python - Version 2.6 or 2.7. -* libssl-dev - You will need this if you plan to use SSL/TLS encryption. - -{% highlight bash %} -sudo apt-get install python libssl-dev -y -{% endhighlight %} - -Wtih the dependencies installed we can now move onto installing Node.js itself. Since there is a very good chance that Node.js has been updated since this was written, you should check the website for the latest version number and substitute it for the one used in the rest of this post. You have two options when it comes to the installation. You can download the source code or clone the Git repository. The process is similar for both methods and so you should choose which ever one you are comfortable with. I personally use Git as I find it easier to update Node.js to the latest version. - -* [Installing from source.](#from-source) -* [Installing with Git.](#via-git) - -

Installing from source.

- -You will need to download the tar archive of the source code and unpack it into a suitable directory. We will create this directory in `/usr/local/src`. Note that you will have to use the `sudo` command in order to write to this directory. - -{% highlight bash %} -cd /usr/local/src -sudo mkdir node -cd node -sudo wget http://nodejs.org/dist/v0.6.17/node-v0.6.17.tar.gz -sudo tar -xzvf node-v0.6.17.tar.gz -{% endhighlight %} - -We now need to enter the extracted directory and configure the code. The `configure` script checks your system to see if the required dependencies are present. Since we have installed these earlier it should report that everything is ok. Note that by default the `configure` script will ensure that Node.js is installed globally for the whole system. If you wish to install it for use by a single user you can follow the extra instructions [here](#single-user). - -{% highlight bash %} -cd node-v0.6.17 -sudo ./configure -{% endhighlight %} - -The `make` command can now be used to compile and install Node.js. - -{% highlight bash %} -sudo make -sudo make install -{% endhighlight %} - -This will result in the commands `node` and `npm` been installed into the `/usr/local/bin` directory. Now that Node.js has been installed you may wish to try the example [application](#application). - -## Upgrading from source. - -To upgrade Node.js from source simply download the latest tar archive and repeat the above installation process. The updated version will overwrite the previous version. - -

Installing with Git.

- -The first step is to clone the repository into a suitable directory. For this guide we will use `/usr/local/src`. Note that you will have to use the `sudo` command in order to write to this directory. - -{% highlight bash %} -cd /usr/local/src -sudo git clone git://github.com/joyent/node.git -{% endhighlight %} - -We can now enter the cloned repository and checkout the v0.6.17 branch. - -{% highlight bash %} -cd node -sudo git checkout v0.6.17 -{% endhighlight %} - -We now need to configure the source code by using the provided `configure` script. This checks your system to see if the required dependencies are present. Since we have installed these earlier it should report that everything is ok. Note that by default the `configure` script will ensure that Node.js is installed globally for the whole system. If you wish to install it for use by a single user you can follow the extra instructions [here](#single-user). - -{% highlight bash %} -sudo ./configure -{% endhighlight %} - -The `make` command can now be used to compile and install Node.js. - -{% highlight bash %} -sudo make -sudo make install -{% endhighlight %} - -This will result in the commands `node` and `npm` been installed into the `/usr/local/bin` directory. Now that Node.js has been installed you may wish to try the example [application](#application). - -## Upgrading via Git. - -To upgrade Node.js you need to go back into the cloned repository and pull down the latest source code. - -{% highlight bash %} -cd /usr/local/src/node -sudo git checkout master -sudo git pull origin master -{% endhighlight %} - -You can then checkout the version branch that you wish to upgrade to. To check which versions are available use the `git tag` command. The upgrade is then performed by using the normal install commands. - -{% highlight bash %} -sudo git checkout vx.x.x -sudo ./configure -sudo make -sudo make install -{% endhighlight %} - -

Installing for a single user.

- -Node.js can be easily installed for a single user with the modified process outlined below. For the sake of brevity I will show how to do this using the Git repository. The method is the same when using the source code. - -The idea is that we create a custom directory located in the user's home directory and configure Node.js to install itself there by using the `--prefix` option. For this example we will create a directory called `~/local/src` into which we will clone the Git repository. We then configure the code so that Node.js will be installed into the directory `~/local`. Note that because we are installing into the user's home directory we no longer need the `sudo` command. - -{% highlight bash %} -mkdir -p ~/local/src -cd ~/local/src -git clone git://github.com/joyent/node.git -cd node -git checkout v0.6.17 -./configure --prefix=~/local -make -make install -{% endhighlight %} - -The install process will create several new directories under the `~/local` directory. One of them is the `bin` directory that contains the `node` and `npm` commands. Since the system will not look in this directory when searching for commands entered by the user, we will need to update the `PATH` environment variable. - -{% highlight bash %} -echo 'PATH=$PATH:$HOME/local/bin' >> $HOME/.bashrc -source ~/.bashrc -{% endhighlight %} - -Now when ever you enter `node` or `npm` on the command line the system will know where to locate them. - -

Example application.

- -This example is taken directly from the Node.js website and is a web server that responds with 'Hello World' for every request. - -{% highlight bash %} -cat > ~/server.js <comments. Simply install a text-based web browser such as lynx. - -{% highlight bash %} -sudo apt-get install lynx -{% endhighlight %} - -You can then use this browser to connect to the running web server and the results will be displayed onto the console. - -{% highlight bash %} -lynx -dump http://127.0.0.1:1337/ -{% endhighlight %} diff --git a/_site_build/_posts/2012-06-03-how-to-install-magento-on-ubuntu.markdown b/_site_build/_posts/2012-06-03-how-to-install-magento-on-ubuntu.markdown deleted file mode 100644 index 48f3f27..0000000 --- a/_site_build/_posts/2012-06-03-how-to-install-magento-on-ubuntu.markdown +++ /dev/null @@ -1,338 +0,0 @@ ---- -layout: post -title: How to install Magento on Ubuntu -author: David T. Sadler -description: By the end of this guide you will have installed Magento locally on Ubuntu. -categories: ["Magento","Ubuntu"] -robots: follow, noodp, noydir, noarchive -comments: true -google_plus: true -twitter_share: true -facebook_like: true -published: true -licensed: true ---- -By the end of this guide you will have installed Magento, and some sample data, locally on Ubuntu. This will allow you to get to grips with the software before installing it onto a production server. In addition to Magento I will take you through installing Apache, PHP and MySQL. I'm going to assume that you are using Ubuntu 12.04 (Precise Pangolin) and that you wish to install version 1.7.0.0 of Magento. You're results may vary if you are using different versions. - -As this is quite a long post I have broken it down into various sections. Feel free to ignore those parts that are not relevent for you. - -* [Getting started.](#start) -* [Installing and configuring the Apache HTTP server.](#apache) -* [Installing PHP.](#php) -* [Installing the MySQL database server.](#mysql) -* [Creating the directory from which Magento will be served from.](#directory) -* [Configuring the Apache Virtual Host.](#vhost) -* [Installing Magento.](#magento) -* [Running the Magento setup wizard](#wizard.) - -

Getting started.

- -If you have never heard of Magento the following from the website will explain. - -
-

Magento is a feature-rich eCommerce platform built on open-source technology that provides online merchants with unprecedented flexibility and control over the look, content and functionality of their eCommerce store. Magento’s intuitive administration interface features powerful marketing, search engine optimization and catalog-management tools to give merchants the power to create sites that are tailored to their unique business needs. Designed to be completely scalable and backed by Varien's support network, Magento offers companies the ultimate eCommerce solution.

- -
- -Magento is available in two editions, Community and Enterprise. The Enterprise edition is the company's commercial version of the software and is meant for large-scale eCommerce users. The Community edition on the other hand is available as a free download under the open source OSL 3.0 license and is the version that you will be installing. - -This post will walk you through every thing you need to get a local copy of Magento running on Ubuntu. It is not meant as a guide to installing a fully working eCommerce store located on a production server. - -To begin, open up a terminal and enter the command below. - -{% highlight bash %} -sudo apt-get update -{% endhighlight %} - -This will ensure that the computer's database of software packages is updated to contain the latest versions. While this command is not strictly necessary, I tend to issue it before installing any software so that the most up to date versions of the packages are used. - -

Installing and configuring the Apache HTTP server.

-Apache is easily installed by entering the following command. -{% highlight bash %} -sudo apt-get install apache2 -y -{% endhighlight %} - -During the install you may notice the following warning: -{% highlight console %} -apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName -{% endhighlight %} - -This comes from Apache itself and means that it was unable to determine its own name. The Apache server needs to know its own name under certain situations. For example, when creating redirection URLs. - -To stop this warning we can create an Apache config file to store the name. On a production server you would set this as either a hostname or a FQDN, but for local development we can get away with using 'localhost'. - -{% highlight bash %} -sudo bash -c "cat >> /etc/apache2/conf.d/servername.conf <Installing PHP. -As can be seen from the list of system requirements, Magento needs PHP version 5.2.13 or later with the following extensions. - -* PDO_MySQL -* simplexml -* mcrypt -* hash -* GD -* DOM -* iconv -* curl -* SOAP - -We will therefore install PHP with the following command. - -{% highlight bash %} -sudo apt-get install php5 php5-curl php5-gd php5-mcrypt php5-mysql -y -{% endhighlight %} - -

Installing the MySQL database server.

-The command below will install MySQL. Note that the install process will ask you to create and confirm a password for the root user. Remember the password that you enter as it will be needed later. - -{% highlight bash %} -sudo apt-get install mysql-server -y -{% endhighlight %} - -

Creating the directory from which Magento will be served from.

-Before we get into the business of creating the directory I need to point out a few things. The process below is heavly infulenced by how I setup websites when developing locally. The actual whys and wherefores of how I do this is are too long to go into detail in this post but can be summarised as such. - -* Each site is served from its own directory named after the site's domain name. E.g, `my-example-site.com` -* Group ownership of these directories, and their contents, is set as `www-data`. The same group that the Apache process runs under. -* The directories are located in a `public_html` directory that has been created in my home directory. - -Many of the commands that follow use absoulte paths when refering to directories located in my home directory. Since the username on my computer is `dev` you will need to replace any occurrences of this with your own username. Feel free to also change the location of any of the directories. Just remember that you must use the correct location when configuring the virtual host later on. - -The first thing we need to do is ensure that you belong to the same group as the Apache process. Note that after entering the command you must log out and then log back in before the system will recognise that you belong to a new group. - -{% highlight bash %} -sudo usermod -a -G www-data dev -{% endhighlight %} - -You can use the `groups` command to check that you belong to the `www-data` group. As long as it appears in the list of groups you can move on to creating the required directories. - -{% highlight bash %} -mkdir /home/dev/public_html -chgrp www-data /home/dev/public_html -{% endhighlight %} - -As both you and Apache need read and write access to the directory we have used the `chgrp` command to change its group to be `www-data`. However, any new files or directories that you create within `public_html` will not inherit the same group. We therefore need to change the permissions to include the "setgid" bit. - -{% highlight bash %} -sudo chmod 2750 /home/dev/public_html -{% endhighlight %} - -We can now create the directory that Magento will be served from and it will be given the `www-data` group automatically. - -{% highlight bash %} -mkdir -p /home/dev/public_html/magento-store.com/{public,log} -{% endhighlight %} - -

Configuring the Apache Virtual Host.

- -We will create a simple virtual host configuration file that will instruct Apache to serve the contents of the directory `/home/dev/public_html/magento-store.com/public` for any requests to `localhost.magento-store.com` - -{% highlight bash %} -sudo bash -c "cat >> /etc/apache2/sites-available/magento-store.com < - - ServerName localhost.magento-store.com - ServerAlias www.localhost.magento-store.com - - DocumentRoot /home/dev/public_html/magento-store.com/public - - LogLevel warn - ErrorLog /home/dev/public_html/magento-store.com/log/error.log - CustomLog /home/dev/public_html/magento-store.com/log/access.log combined - - -EOF" -{% endhighlight %} - -Using the `a2ensite` command and restarting Apache will load the new configuration file. - -{% highlight bash %} -sudo a2ensite magento-store.com -sudo service apache2 restart -{% endhighlight %} - -To ensure that the domain `localhost.magento-store.com` resolves locally to the computer we need to add some entries to the system's `hosts` file. - -{% highlight bash %} -sudo bash -c "cat >> /etc/hosts < -![Browser showing the directory listing when going to localhost.magento-store.com](/img/localhost.magento-store.com.png "Visiting localhost.magento-store.com for the first time.") - - -

Installing Magento.

- -Log into MySQL with the following command. Note that it will prompt you to enter the root user password that you specified as part of the MySQL install. - -{% highlight bash %} -mysql -u root -p -{% endhighlight %} - -We need to create a database for Magento and a MySQL user that it can use to access it. For local development it is fine to use the value "magento" for not only the database name but for the user's name and password. On a production server you would use something a lot more secure. - -{% highlight mysql %} -CREATE DATABASE magento; -INSERT INTO mysql.user (User,Host,Password) VALUES('magento','localhost',PASSWORD('magento')); -FLUSH PRIVILEGES; -GRANT ALL PRIVILEGES ON magento.* TO magento@localhost; -FLUSH PRIVILEGES; -exit -{% endhighlight %} - -Change into the directory where we wish to perform the install. - -{% highlight bash %} -cd /home/dev/public_html/magento-store.com/public -{% endhighlight %} - -You now need to download the tar archive of the source code and unpack it. - -{% highlight bash %} -wget http://www.magentocommerce.com/downloads/assets/1.7.0.0/magento-1.7.0.0.tar.gz -tar -xzvf magento-1.7.0.0.tar.gz -{% endhighlight %} - -The source code is located in a directory called `magento`. Since we don't want Apache to serve Magento from this sub-directory we need to move the source code out of it. - -{% highlight bash %} -mv magento/* magento/.htaccess . -{% endhighlight %} - -We should now tidy up after ourselves by removing any unnecessary files. - -{% highlight bash %} -rm magento-1.7.0.0.tar.gz -rm -r magento -{% endhighlight %} - -Since testing an eCommerce store without any products is not much fun we will install some sample data. First download and extract the tar archive that Magento provides for us. - -{% highlight bash %} -wget http://www.magentocommerce.com/downloads/assets/1.6.1.0/magento-sample-data-1.6.1.0.tar.gz -tar -xzvf magento-sample-data-1.6.1.0.tar.gz -{% endhighlight %} - -The archive provides a sql file and various assets such as images. The assets need to be moved from the sample sub-directory and put into the `media` directory of the Magento source. The sql file is also moved to make it easier for loading into MySQL. - -{% highlight bash %} -mv magento-sample-data-1.6.1.0/media/* media/ -mv magento-sample-data-1.6.1.0/magento_sample_data_for_1.6.1.0.sql data.sql -{% endhighlight %} - -We need to log into MySQL again but this time we will use the MySQL user `magento` that we set up earlier. - -{% highlight bash %} -mysql -u magento -p -{% endhighlight %} - -When prompted enter `magento` as the password and then enter the following sql statements to load in the sample data. - -{% highlight mysql %} -USE magento; -SOURCE data.sql; -exit -{% endhighlight %} - -Again we can now remove any unnecessary files. - -{% highlight bash %} -rm magento-sample-data-1.6.1.0.tar.gz -rm -r magento-sample-data-1.6.1.0 -rm data.sql -{% endhighlight %} - -When you run Magento for the first time you will be taken through the setup wizard. This needs to have permission to create files and directories where necessary. We therefore need to ensure that the correct write permission is set on the following. - -* The directory `var` -* The file `var/.htaccess` -* The directory `app/etc` -* All directories under `var/package` -* All directories under `media` - -Since the Apache process runs under the `www-data` group we can use the `chmod` command to give write permission to the this group. - -{% highlight bash %} -chmod g+w var var/.htaccess app/etc -chmod -R g+w var/package/ media -{% endhighlight %} - -

Running the Magento setup wizard.

- -Now that everything is setup, open your browser and navigate to `localhost.magento-store.com` where you will start the setup wizard as show below. - -
-![Browser showing the Magento setup wizard](/img/magento-setup-wizard-step-1.png "Starting the Magento setup wizard.") -
- -You need to accept the terms and conditions before you can continue. Once that's done fill in the localization settings with the values that are relevant to you. - -Next up is the database connection settings which should be filled in with the following information. - -* Database Type: *MySQL* -* Host: *localhost* -* Database Name: *magento* -* User Name: *magento* -* Password: *magento* -* Tables Prefix: *Leave blank* - -On the same page you will also need to specify the web access options. - -* Base URL: *http://localhost.magento-store.com/* -* Admin Path: *admin* -* Select the *Use Web Server (Apache) Rewrites* option. - -The next step is where you create the Admin user. Fill in the required details and choose to let the software generate an encryption key for you. Proceed to the next step and you will have finished installing Magento. - -At this point you can view your store at `http://localhost.magento-store.com` - -
-![Browser showing a new Magento store](/img/magento-store.png "Magento store.") -
- -To access the admin section of the store navigate to `http://localhost.magento-store.com/admin/` where you can login using the details set up during the installation. - -
-![Browser showing the Admin login page for a Magento store](/img/magento-store-admin.png "Magento store Admin login page.") -
- -##Conclusion. - -Hopefully you had no trouble in following this very lengthy post. I welcome any thoughts or opinions via the comments below. - diff --git a/_site_build/_posts/2012-08-01-installing-the-android-sdk-on-ubuntu.markdown b/_site_build/_posts/2012-08-01-installing-the-android-sdk-on-ubuntu.markdown deleted file mode 100644 index 19d5c3a..0000000 --- a/_site_build/_posts/2012-08-01-installing-the-android-sdk-on-ubuntu.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: post -title: Installing the Android SDK on Ubuntu -author: David T. Sadler -description: This guide will show you how to install the Android SDK and the Eclipse IDE on Ubuntu. -categories: ["Android","Ubuntu"] -robots: follow, noodp, noydir, noarchive -comments: false -google_plus: false -twitter_share: false -facebook_like: false -published: true -licensed: true ---- -This guide will take you through the nessecary steps for installing the Android SDK on Ubuntu. You will also install the Eclipse IDE which you will use to develop a simple "Hello world" application that will then be ran on either the Android emulator or an actual Android device. - -As this guide is quite long I have broken it down into the following sections. - -* [Getting started.](#start) -* [The Android SDK.](#sdk) -* [The Eclipse IDE.](#ide) -* [The Android Development Toolkit (ADT) plugin for Eclipse.](#adt) -* [Creating an application.](#application) -* [Running the application on the Emulator.](#emulator) -* [Running the application on an Android device.](#device) - -

Getting started.

- -For this guide I used Ubuntu 12.04 (Precise Pangolin). The instructions should work on other versions of Ubuntu but keep in mind that I won't have tested this. - -Before getting down to the business of installing the SDK you must ensure that the following have been installed on your system. - -
-
Java Development Kit (JDK)
-

Provides tools such as the Java compiler that allow us to develop Java applications.

-
Java Runtime Enviroment (JRE)
-

Provides an enviroment so that Java programs, such as Eclipse, can run on your system.

-
Apache Ant
-

A Java tool for automating software build processes. Allows you to build Android applications outside of an IDE. While it won't be used in this guide you will find it useful if you move onto developing large Android applications.

-
- -Installation is as simple as entering the following commands. - -{% highlight bash %} -sudo apt-get update -sudo apt-get install ant default-jdk default-jre -y -{% endhighlight %} - -If you are developing on a 64-bit system there is an extra step that you will need to do. According to the SDK website you must be capable of running 32-bit applications. On 64-bit versions of Ubuntu 12.04 this is done with the command below. - -{% highlight bash %} -sudo apt-get install ia32-libs-multiarch -{% endhighlight %} - -

The Android SDK.

- -Installing the SDK is done by downloading the archived Android SDK Starter Package that Google provides. This is not the complete SDK enviroment as it only includes the core SDK tools. You will use these tools to download the rest of the SDK. Since it is very likely that the package has been updated since this guide was written you should check the website for the current version number. - -For this guide I will show you how to install the SDK for a single user on your system. There are other ways of installing but for this guide I want to keep things simple. We will do this by downloading and installing the SDK into your home directory. - -The first thing we need to do is to get the starter package and unpack it. - -{% highlight bash %} -cd ~ -wget http://dl.google.com/android/android-sdk_r20.0.1-linux.tgz -tar -xzvf android-sdk_r20.0.1-linux.tgz -rm android-sdk_r20.0.1-linux.tgz -{% endhighlight %} - -You will now have a directory called `android-sdk-linux` located within your home directory. The core SDK tools are located in sub-directories called `tools` and `platform-tools`. To make it easier to access these tools from the command line you can add their locations to your PATH environment variable. - -{% highlight bash %} -echo 'PATH=$PATH:$HOME/android-sdk-linux/tools:$HOME/android-sdk-linux/platform-tools' >> $HOME/.bashrc -source ~/.bashrc -{% endhighlight %} - -

The Eclipse IDE.

-

The Android Development Toolkit (ADT) plugin for Eclipse.

-

Creating an application.

-

Running the application on the Emulator.

-

Running the application on an Android device.

diff --git a/_site_build/about/index.html b/_site_build/about/index.html deleted file mode 100644 index 7b5656b..0000000 --- a/_site_build/about/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: About ---- -
-

About this site and me.

-

So who am I?

-

My name is David T. Sadler and this is my website.

-

I have been programming in one language or another ever since being given an Acorn Electron as my first computer, and over the years I had mainly been developing in C++ before moving into web development.

-

Oh god, not another blog?

-

Yes I'm afraid so. It's always been in the back of my mind to produce a blog site as a way of developing new skills by writing about programming.

-

Disclaimer

-

I'm going to be honest and say that I hope this site generates enough traffic so that it can pay for itself. Whether it does remains to be seen though, but I won't know unless I try.

-

I'm also not claiming to be some programming genius. The articles that I write will be about my own opinions and experiences. I hope that readers will leave comments if they feel I need correcting on some technical point or opinion.

-

In case you was wondering, the T. stands for Terence, my father's name.

-
diff --git a/_site_build/apple-touch-icon-114x114.png b/_site_build/apple-touch-icon-114x114.png deleted file mode 100755 index cbd94f1..0000000 Binary files a/_site_build/apple-touch-icon-114x114.png and /dev/null differ diff --git a/_site_build/apple-touch-icon-57x57.png b/_site_build/apple-touch-icon-57x57.png deleted file mode 100755 index c683bf9..0000000 Binary files a/_site_build/apple-touch-icon-57x57.png and /dev/null differ diff --git a/_site_build/apple-touch-icon-72x72.png b/_site_build/apple-touch-icon-72x72.png deleted file mode 100755 index 7498dfa..0000000 Binary files a/_site_build/apple-touch-icon-72x72.png and /dev/null differ diff --git a/_site_build/apple-touch-icon.png b/_site_build/apple-touch-icon.png deleted file mode 100755 index c683bf9..0000000 Binary files a/_site_build/apple-touch-icon.png and /dev/null differ diff --git a/_site_build/archives/index.html b/_site_build/archives/index.html deleted file mode 100644 index 9c4644f..0000000 --- a/_site_build/archives/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: Archives -robots: follow, noindex, noodp, noydir, noarchive ---- -
-

Archives

- {% assign show_year = true %} - {% assign show_month = true %} - {% for post in site.posts %} - {% if show_year %} -

{{ post.date | date: '%Y' }}

- {% endif %} - {% if show_year or show_month %} -

{{ post.date | date: '%B' }}

-
    - {% endif %} -
  1. - {{ post.title }} -
  2. - {% capture year %}{{ post.date | date: '%Y' }}{% endcapture %} - {% capture pyear %}{{ post.previous.date | date: '%Y' }}{% endcapture %} - {% capture month %}{{ post.date | date: '%B' }}{% endcapture %} - {% capture pmonth %}{{ post.previous.date | date: '%B' }}{% endcapture %} - {% if year != pyear %}{% assign show_year = true %}{% else %}{% assign show_year = false %}{% endif %} - {% if month != pmonth %}{% assign show_month = true %}{% else %}{% assign show_month = false %}{% endif %} - {% if show_year or show_month %} -
- {% endif %} - {% endfor %} -
- diff --git a/_site_build/css/style.css b/_site_build/css/style.css deleted file mode 100644 index 3c74375..0000000 --- a/_site_build/css/style.css +++ /dev/null @@ -1,444 +0,0 @@ -/* HTML5 ✰ Boilerplate - * ==|== normalize ========================================================== - */ - -article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } -audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } -audio:not([controls]) { display: none; } -[hidden] { display: none; } - -html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } -html, button, input, select, textarea { font-family: sans-serif; color: #222; } -body { margin: 0; font-size: 1em; line-height: 1.4; } - -::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; } -::selection { background: #fe57a1; color: #fff; text-shadow: none; } - -a { color: #00e; } -a:visited { color: #551a8b; } -a:hover { color: #06e; } -a:focus { outline: thin dotted; } -a:hover, a:active { outline: 0; } -abbr[title] { border-bottom: 1px dotted; } -b, strong { font-weight: bold; } -blockquote { margin: 1em 40px; } -dfn { font-style: italic; } -hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } -ins { background: #ff9; color: #000; text-decoration: none; } -mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; } -pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; } -pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } - -q { quotes: none; } -q:before, q:after { content: ""; content: none; } -small { font-size: 85%; } -sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } -sup { top: -0.5em; } -sub { bottom: -0.25em; } - -ul, ol { margin: 1em 0; padding: 0 0 0 40px; } -dd { margin: 0 0 0 40px; } -nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; } - -img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; } -svg:not(:root) { overflow: hidden; } -figure { margin: 0; } - -form { margin: 0; } -fieldset { border: 0; margin: 0; padding: 0; } - -label { cursor: pointer; } -legend { border: 0; *margin-left: -7px; padding: 0; white-space: normal; } -button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; } -button, input { line-height: normal; } -button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; *overflow: visible; } -button[disabled], input[disabled] { cursor: default; } -input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; *width: 13px; *height: 13px; } -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-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } -button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } -textarea { overflow: auto; vertical-align: top; resize: vertical; } -input:valid, textarea:valid { } -input:invalid, textarea:invalid { background-color: #f0dddd; } - -table { border-collapse: collapse; border-spacing: 0; } -td { vertical-align: top; } - -.chromeframe { margin: 0.2em 0; background: #ccc; color: black; padding: 0.2em 0; } - -/* -------------------------------------------------- - :: Grid - - This is the mobile-friendly, responsive grid that - lets Foundation work much of its magic. - --------------------------------------------------- */ -.container { padding: 0px 20px; } - -.row { width: 100%; max-width: 980px; min-width: 727px; margin: 0 auto; } -/* To fix the grid into a certain size, set max-width to width */ -.row .row { min-width: 0px; } - -.column, .columns { margin-left: 4.4%; float: left; min-height: 1px; position: relative; } -.column:first-child, .columns:first-child { margin-left: 0px; } - -.row .one.columns { width: 4.3%; } -.row .two.columns { width: 13%; } -.row .three.columns { width: 21.68%; } -.row .four.columns { width: 30.4%; } -.row .five.columns { width: 39.1%; } -.row .six.columns { width: 47.8%; } -.row .seven.columns { width: 56.5%; } -.row .eight.columns { width: 65.2%; } -.row .nine.columns { width: 73.9%; } -.row .ten.columns { width: 82.6%; } -.row .eleven.columns { width: 91.3%; } -.row .twelve.columns { width: 100%; } - -.row .offset-by-one { margin-left: 13.1%; } -.row .offset-by-two { margin-left: 21.8%; } -.row .offset-by-three { margin-left: 30.5%; } -.row .offset-by-four { margin-left: 39.2%; } -.row .offset-by-five { margin-left: 47.9%; } -.row .offset-by-six { margin-left: 56.6%; } -.row .offset-by-seven { margin-left: 65.3%; } -.row .offset-by-eight { margin-left: 74.0%; } -.row .offset-by-nine { margin-left: 82.7%; } -.row .offset-by-ten { margin-left: 91.4%; } -/*.row .offset-by-eleven { margin-left: 95.7%; }*/ - -.row .one.centered { margin-left: 47.9%; } -.row .two.centered { margin-left: 43.5%; } -.row .three.centered { margin-left: 39.2%; } -.row .four.centered { margin-left: 34.8%; } -.row .five.centered { margin-left: 30.5%; } -.row .six.centered { margin-left: 26.1%; } -.row .seven.centered { margin-left: 21.8%; } -.row .eight.centered { margin-left: 17.4%; } -.row .nine.centered { margin-left: 13.1%; } -.row .ten.centered { margin-left: 8.7%; } -.row .eleven.centered { margin-left: 4.3%; } - -.row .offset-by-one:first-child { margin-left: 8.7%; } -.row .offset-by-two:first-child { margin-left: 17.4%; } -.row .offset-by-three:first-child { margin-left: 26.1%; } -.row .offset-by-four:first-child { margin-left: 34.8%; } -.row .offset-by-five:first-child { margin-left: 43.5%; } -.row .offset-by-six:first-child { margin-left: 52.2%; } -.row .offset-by-seven:first-child { margin-left: 60.9%; } -.row .offset-by-eight:first-child { margin-left: 69.6%; } -.row .offset-by-nine:first-child { margin-left: 78.3%; } -.row .offset-by-ten:first-child { margin-left: 87%; } -.row .offset-by-eleven:first-child { margin-left: 95.7%; } - -img, object, embed { max-width: 100%; height: auto; } -img { -ms-interpolation-mode: bicubic; } - - /* Nicolas Gallagher's micro clearfix */ - .row:before, .row:after, .clearfix:before, .clearfix:after { content:""; display:table; } - .row:after, .clearfix:after { clear: both; } - .row, .clearfix { *zoom: 1; } - -/* ==|== primary styles ===================================================== - Author: David T. Sadler - ========================================================================== */ -body { - font-family: "Helvetica Neue", "Helvetica", Arial, sans-serif; -} - -a, a:visited { - text-decoration: none; - color: #2A85E8; -} - -a:hover { - color: #11639D; -} - -a:focus { - color: #CC4714 -} - -h1, h2, h3, h4, h5, h6 { - margin: 0; - padding: 0; -} - -article h1, section#about h1, section#archives h1, section#category > h1 { - font-size: 1.461538462em; /* 19 / 13 */ -} - -section#about h1, section#archives h1, section#category > h1 { - margin-bottom: 1em; -} - -article h2, section#about h2, section#archives h2 { - font-size: 1.1538461538em; /* 15 / 13 */ -} - -section#archives h2 { - margin-bottom: 1em; -} - -#header { - margin-bottom: 3em; /* 39 / 13 */ - border-bottom: 1px solid #CCCCCC; -} - -#header h1 { - font-size: 3em; /* 39 / 13 */ -} - -#header h1 a { - color: #000000; -} - -#header h2 { - margin-bottom: 0.5em; - font-size: 2em; /* 26 / 13 */ - font-style: italic; - font-weight: lighter; - color: #777777; -} - -#site-navigation h2, #social h2 { - font-size: 1.461538462em; /* 19 / 13 */ -} - -#site-navigation ul, #social ul { - margin: 0.5em 0 1em 1em; - padding: 0; - list-style: none; - font-size: 1.1538461538em; /* 15 / 13 */ -} - -#social ul span { - display: inline-block; - width: 4.5em; - color: #999999; - text-transform: lowercase; -} - -article header time, article .categories, article .comment-count { - color: #999999; -} - -article header .social-buttons { - margin-top: 0.5em; -} - -article .google-plus, article .twitter-share, article .fb-like { - font-size: 1px; - display: inline; -} - -article div .fb_reset { - display: inline; -} - -article .categories a { - font-style: italic -} - -article.excerpt { - margin-bottom: 2em; -} - -article li.prev-article a, article li.next-article a { - display: block; -} - -article li.prev-article { - float: left; - width: 50%; -} - -article li.next-article { - float: right; - text-align: right; - width: 50%; -} - -article footer nav { - margin-top: 1em; -} - -article footer nav ul:after { - clear: both; - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -section#archives ol { - list-style-type: disc; -} - -#license { - text-align: center; -} - -/* ==|== non-semantic helper classes ======================================== */ - -.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; *line-height: 0; } -.ir br { display: none; } -.hidden { display: none !important; visibility: hidden; } -.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } -.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } -.invisible { visibility: hidden; } - -./* -------------------------------------------------- - :: Mobile Visibility Affordances ----------------------------------------------------*/ -.show-on-phones { display: none !important; } -.show-on-tablets { display: none !important; } -.show-on-desktops { display: block; } - -.hide-on-phones { display: block !important; } -.hide-on-tablets { display: block !important; } -.hide-on-desktops { display: none; } - -/* ==|== media queries ====================================================== */ -/* -------------------------------------------------- - :: Grid - -------------------------------------------------- */ -/* Mobile */ -@media only screen and (max-width: 767px) { - body { -webkit-text-size-adjust: none; } - - .row, body, .container { width: 100%; min-width: 0; margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; } - .row .row .column, .row .row .columns { padding: 0; } - .column, .columns { width: auto !important; float: none; margin-left: 0px; margin-right: 0px; padding-left: 20px; padding-right: 20px; } - .column:last-child, .columns:last-child { margin-right: 0px; } - .offset-by-one, .offset-by-two, .offset-by-three, .offset-by-four, .offset-by-five, .offset-by-six, .offset-by-seven, .offset-by-eight, .offset-by-nine, .offset-by-ten, .offset-by-eleven, .centered { margin-left: 0% !important; } - .hide-on-phones { display: none !important; } - .hide-on-tablets { display: block !important; } - .hide-on-desktops { display: block !important; } - - .show-on-phones { display: block !important; } - .show-on-tablets { display: none !important; } - .show-on-desktops { display: none !important; } - - #site-navigation h2, #social h2 { - margin: 0 -20px; - padding: 0.5em 20px 0.5em 20px; - background-color: #CCCCCC; - color: #ffffff; - font-size: 1.461538462em; /* 19 / 13 */ - } - - #site-navigation ul, #social ul { - margin: 0 -20px; - border-bottom: 1px solid #CCCCCC; - font-size: 1.461538462em; /* 19 / 13 */ - } - - #site-navigation li, #social li { - border-top: 1px solid #CCCCCC; - } - - #site-navigation a, #social a { - display: block; - padding: 0.5em 20px 0.5em 20px; - } - - article footer nav ul - { - padding: 1.5em 0; - } -} - -@media only screen and (max-device-width: 800px), only screen and (device-width: 800px) { - .hide-on-phones { display: block !important; } - .hide-on-tablets { display: none !important; } - .hide-on-desktops { display: block !important; } - - .show-on-phones { display: none !important; } - .show-on-tablets { display: block !important; } - .show-on-desktops { display: none !important; } -} - -/* ==|== print styles ======================================================= */ - -@media print { - * { background: transparent !important; color: black !important; box-shadow:none !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } - a, a:visited { text-decoration: underline; } - a[href]:after { content: " (" attr(href) ")"; } - abbr[title]:after { content: " (" attr(title) ")"; } - .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } - pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } - thead { display: table-header-group; } - tr, img { page-break-inside: avoid; } - img { max-width: 100% !important; } - @page { margin: 0.5cm; } - p, h2, h3 { orphans: 3; widows: 3; } - h2, h3 { page-break-after: avoid; } -} - -/* ==|== pygments styles ======================================================= */ - -.highlight pre { padding: 0.5em; white-space: pre; overflow: auto } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #f8f8f8; } -.highlight .c { color: #408080; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #008000; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ -.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #808080 } /* Generic.Output */ -.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0040D0 } /* Generic.Traceback */ -.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #008000 } /* Keyword.Pseudo */ -.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #B00040 } /* Keyword.Type */ -.highlight .m { color: #666666 } /* Literal.Number */ -.highlight .s { color: #BA2121 } /* Literal.String */ -.highlight .na { color: #7D9029 } /* Name.Attribute */ -.highlight .nb { color: #008000 } /* Name.Builtin */ -.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ -.highlight .no { color: #880000 } /* Name.Constant */ -.highlight .nd { color: #AA22FF } /* Name.Decorator */ -.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #0000FF } /* Name.Function */ -.highlight .nl { color: #A0A000 } /* Name.Label */ -.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #19177C } /* Name.Variable */ -.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #666666 } /* Literal.Number.Float */ -.highlight .mh { color: #666666 } /* Literal.Number.Hex */ -.highlight .mi { color: #666666 } /* Literal.Number.Integer */ -.highlight .mo { color: #666666 } /* Literal.Number.Oct */ -.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ -.highlight .sc { color: #BA2121 } /* Literal.String.Char */ -.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ -.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ -.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ -.highlight .sx { color: #008000 } /* Literal.String.Other */ -.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ -.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ -.highlight .ss { color: #19177C } /* Literal.String.Symbol */ -.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #19177C } /* Name.Variable.Class */ -.highlight .vg { color: #19177C } /* Name.Variable.Global */ -.highlight .vi { color: #19177C } /* Name.Variable.Instance */ -.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ diff --git a/_site_build/favicon.ico b/_site_build/favicon.ico deleted file mode 100755 index 43dd5df..0000000 Binary files a/_site_build/favicon.ico and /dev/null differ diff --git a/_site_build/feed/index.html b/_site_build/feed/index.html deleted file mode 100644 index 6ee5a54..0000000 --- a/_site_build/feed/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: nil ---- - - - - {{ site.title }} - {{ site.url }} - - {{ site.description }} - Copyright {{ site.copyright_year }} by {{ site.author }}. All Rights Reserved. - {% if site.email %} - {{ site.email }} ({{ site.author }}) - {{ site.email }} ({{ site.author }}) - {% else %} - {{ site.author }} - {% endif %} - {{ site.time | date: "%a, %d %b %Y %H:%M:%S %z"}} - {{ site.time | date: "%a, %d %b %Y %H:%M:%S %z" }} - 1440 - {% for post in site.posts limit:site.max_recent_posts %} - - {{ post.title }} - {{ site.url }}{{ post.url }} - {{ site.url}}{{ post.url}} - {{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }} - {% if site.email %} - {{ site.email }} ({{ site.author }}) - {% else %} - {{ site.author }} - {% endif %} - {{ post.content | truncate | xml_escape }} - {% for category in post.categories %} - {{ category }} - {% endfor %} - - {% endfor %} - - diff --git a/_site_build/img/localhost.magento-store.com.png b/_site_build/img/localhost.magento-store.com.png deleted file mode 100644 index 872ccb8..0000000 Binary files a/_site_build/img/localhost.magento-store.com.png and /dev/null differ diff --git a/_site_build/img/magento-setup-wizard-step-1.png b/_site_build/img/magento-setup-wizard-step-1.png deleted file mode 100644 index bed2e9c..0000000 Binary files a/_site_build/img/magento-setup-wizard-step-1.png and /dev/null differ diff --git a/_site_build/img/magento-store-admin.png b/_site_build/img/magento-store-admin.png deleted file mode 100644 index e612538..0000000 Binary files a/_site_build/img/magento-store-admin.png and /dev/null differ diff --git a/_site_build/img/magento-store.png b/_site_build/img/magento-store.png deleted file mode 100644 index 923d0bf..0000000 Binary files a/_site_build/img/magento-store.png and /dev/null differ diff --git a/_site_build/index.html b/_site_build/index.html deleted file mode 100644 index 3a57bab..0000000 --- a/_site_build/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -title: Home -robots: follow, noindex, noodp, noydir, noarchive -show_comment_counts: true ---- -
-{% for post in site.posts limit:site.max_recent_posts %} - {% include post_excerpt.html %} -{% endfor %} -
diff --git a/_site_build/js/libs/modernizr-2.5.3.min.js b/_site_build/js/libs/modernizr-2.5.3.min.js deleted file mode 100644 index 27fcdae..0000000 --- a/_site_build/js/libs/modernizr-2.5.3.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.5.3 (Custom Build) | MIT & BSD - * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load - */ -;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d",a,""].join(""),k.id=h,m.innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f - - - {{ site.url}}/ - {{ site.time | date: "%Y-%m-%d" }} - daily - 1.0 - - - {{ site.url}}/about/ - {{ site.time | date: "%Y-%m-%d" }} - monthly - 0.6 - - {% for post in site.posts %} - - {{ site.url}}{{ post.url }} - {{ post.date | date: "%Y-%m-%d" }} - weekly - 0.8 - - {% endfor %} - diff --git a/lib/random.rb b/lib/random.rb deleted file mode 100644 index ecefd93..0000000 --- a/lib/random.rb +++ /dev/null @@ -1,31 +0,0 @@ -module TestPosts - module Random - APPLICATIONS = ['Apache 2', 'MySQL', 'Sqlite', 'Magento'] - - DISTROS = ['Ubuntu', 'Fedora', 'Kubuntu', 'Mythbuntu', 'SUSE Linux', 'Debian'] - - FRAMEWORKS = ['Ruby on Rails', 'CakePHP', 'Wordpress', 'Sinatra', 'Drupal'] - - LANGUAGES = ['Actionscript', 'Ada', 'Assembly', 'C', 'C#', 'C++', 'Cobol', 'ColdFusion', 'D', 'Delphi', 'Erlang', 'Forth', 'Fortran', 'Haskell', 'Java', 'JavaScript', 'Lisp', 'Lua', 'OCaml', 'Objective C', 'PHP', 'Pascal', 'Perl', 'Python', 'Rexx', 'Ruby', 'SQL', 'Scala', 'Scheme', 'Shell', 'Smalltalk', 'Tcl', 'Visual Basic'] - - TITLES = [ - [['Getting started with', 'A tutorial on', 'Why I like', "Why I don't like", 'Developing applications with'], LANGUAGES + FRAMEWORKS], - [['Getting started with', 'How to install', 'How to upgrade'], DISTROS + APPLICATIONS + FRAMEWORKS], - [['Developing a plugin for'], FRAMEWORKS] - ] - - def self.generate - topics, subjects = TITLES[rand(TITLES.size)] - topic = topics[rand(topics.size)] - subject = subjects[rand(subjects.size)] - [date, topic + ' ' + subject, subject] - end - - private - def self.date - jdFrom = Date.today.prev_year.jd - jdTo = Date.today.jd - Date.jd(rand((jdTo + 1) - jdFrom) + jdFrom).strftime('%Y-%m-%d') - end - end -end diff --git a/lib/templates/post.markdown b/lib/templates/post.markdown deleted file mode 100644 index 213fb54..0000000 --- a/lib/templates/post.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: post -title: :title -author: :author -description: :description -categories: :categories -robots: follow, noodp, noydir, noarchive -comments: true -google_plus: true -twitter_share: true -facebook_like: true ---- -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et tellus ac sem vestibulum tristique ac at magna. Proin eros ipsum, egestas sit amet rutrum non, fringilla ut tellus. Sed facilisis rhoncus libero ornare interdum. Morbi a dui id quam dignissim mollis at sit amet purus. Ut pretium malesuada dolor, eu luctus lorem bibendum id. Mauris cursus cursus est sit amet lobortis. Quisque sit amet dui quis sapien fringilla tempus et convallis lectus. Integer pretium tristique sollicitudin. Fusce at ante et tellus vulputate congue. Aliquam nec ligula est. Vestibulum aliquet scelerisque neque, ut elementum neque mattis id. Sed non mauris quam. Vivamus id augue felis. Etiam eleifend, erat sit amet tempor tempor, nibh neque tristique lorem, pretium adipiscing nulla lorem sit amet lacus. Vestibulum odio mauris, hendrerit non dictum sit amet, consequat in mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est nulla, pulvinar eget volutpat quis, placerat nec metus. Vivamus tristique elit ac lectus vestibulum bibendum. Phasellus ac diam purus, cursus imperdiet lorem. Sed a nulla nec velit placerat tempus. - -## Post subheader - -Nullam convallis commodo tellus ut iaculis. Suspendisse at purus eget est pharetra vehicula. Integer a mi non odio vulputate ultricies. Cras nisi metus, mattis id suscipit in, accumsan eu nisl. Duis eu est sed libero posuere ullamcorper. Quisque venenatis dignissim malesuada. Ut pretium, justo vitae auctor lacinia, eros ante condimentum sem, ut auctor massa ligula vel risus. Etiam congue gravida mollis. Fusce mollis eleifend nibh, ut lacinia diam pellentesque nec. Sed lobortis tincidunt facilisis. Cras sit amet sapien risus. Pellentesque pretium consectetur vulputate. Vestibulum faucibus lorem eu sapien faucibus dignissim. Donec vel sapien a mauris pretium mattis ac eu nisi. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus congue posuere turpis eget ullamcorper. Pellentesque dui risus, pharetra sed pellentesque nec, facilisis id est. Nunc ut purus nec lacus sagittis lacinia ut vel velit. Vestibulum dui velit, facilisis eu consectetur quis, laoreet id turpis. Nam odio orci, pretium in cursus a, varius sit amet metus. - -## Post subheader - -* Nullam convallis commodo -* Tellus ut iaculis -* Tellus ut iaculis -* Nullam convallis commodo - -*Mauris pellentesque mollis sapien vehicula aliquam. Proin luctus suscipit gravida.* - Nullam convallis commodo tellus ut iaculis. Suspendisse at purus eget est pharetra vehicula. Integer a mi non odio vulputate ultricies. Cras nisi metus, mattis id suscipit in, accumsan eu nisl. Suspendisse at purus eget est pharetra - Nullam convallis commodo tellus ut iaculis. Suspendisse at purus eget est pharetra vehicula. Integer a mi non odio vulputate ultricies. Cras nisi metus, mattis id suscipit in, accumsan eu nisl. Suspendisse at purus eget est pharetra - -Duis consectetur lorem eu eros gravida bibendum. Praesent eget quam interdum urna condimentum convallis ac non magna. Nullam imperdiet iaculis mi, non convallis nibh facilisis in. Fusce magna ante, luctus sit amet tempus eget, laoreet eu tortor. Praesent pellentesque, dolor at tempus volutpat, elit leo varius diam, non laoreet purus nisl nec nunc. Mauris vitae quam sit amet lacus mattis tempus. Maecenas dui metus, porta ac tincidunt at, scelerisque nec massa. Proin nec augue vel urna faucibus consequat. Nunc elementum pharetra turpis, sit amet congue lorem varius vel. In hac habitasse platea dictumst. Vestibulum lacinia, nisl non luctus euismod, erat diam fermentum arcu, nec imperdiet velit eros eu orci. Pellentesque volutpat, erat at aliquet porta, magna diam blandit velit, at consequat est eros sed eros. Nullam sit amet dolor eget dui feugiat eleifend at eget ligula. Proin venenatis nisl quis dui tempor commodo. Nunc pretium leo non lectus egestas id ultricies lacus malesuada. Curabitur luctus ligula quis lorem tincidunt volutpat. Maecenas et diam sit amet velit molestie vulputate. Maecenas dapibus elit ante, ac sagittis turpis. Donec ut mi turpis, et egestas metus. Sed facilisis mi ut dolor lacinia hendrerit. diff --git a/public/css/main.css b/public/css/main.css new file mode 100644 index 0000000..b86e508 --- /dev/null +++ b/public/css/main.css @@ -0,0 +1,295 @@ +/*! HTML5 Boilerplate v7.1.0 | MIT License | https://html5boilerplate.com/ */ + +/* main.css 1.0.0 | MIT License | https://github.com/h5bp/main.css#readme */ +/* + * What follows is the result of much research on cross-browser styling. + * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, + * Kroc Camen, and the H5BP dev community and team. + */ + + +/* ========================================================================== + Base styles: opinionated defaults + ========================================================================== */ + + html { + color: #222; + font-size: 1em; + line-height: 1.4; +} + +/* + * Remove text-shadow in selection highlight: + * https://twitter.com/miketaylr/status/12228805301 + * + * Vendor-prefixed and regular ::selection selectors cannot be combined: + * https://stackoverflow.com/a/16982510/7133471 + * + * Customize the background color to match your design. + */ + +::-moz-selection { + background: #b3d4fc; + text-shadow: none; +} + +::selection { + background: #b3d4fc; + text-shadow: none; +} + +/* + * A better looking default horizontal rule + */ + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +/* + * Remove the gap between audio, canvas, iframes, + * images, videos and the bottom of their containers: + * https://github.com/h5bp/html5-boilerplate/issues/440 + */ + +audio, +canvas, +iframe, +img, +svg, +video { + vertical-align: middle; +} + +/* + * Remove default fieldset styles. + */ + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +/* + * Allow only vertical resizing of textareas. + */ + +textarea { + resize: vertical; +} + +/* ========================================================================== + Browser Upgrade Prompt + ========================================================================== */ + +.browserupgrade { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; +} + + + + + /* ========================================================================== + Author's custom styles + ========================================================================== */ + + + + + + + + + + + + + + + + + /* ========================================================================== + Helper classes + ========================================================================== */ + +/* + * Hide visually and from screen readers + */ + + .hidden { + display: none !important; +} + +/* +* Hide only visually, but have it available for screen readers: +* https://snook.ca/archives/html_and_css/hiding-content-for-accessibility +* +* 1. For long content, line feeds are not interpreted as spaces and small width +* causes content to wrap 1 word per line: +* https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe +*/ + +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + white-space: nowrap; /* 1 */ +} + +/* +* Extends the .visuallyhidden class to allow the element +* to be focusable when navigated to via the keyboard: +* https://www.drupal.org/node/897638 +*/ + +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; + white-space: inherit; +} + +/* +* Hide visually and from screen readers, but maintain layout +*/ + +.invisible { + visibility: hidden; +} + +/* +* Clearfix: contain floats +* +* For modern browsers +* 1. The space content is one way to avoid an Opera bug when the +* `contenteditable` attribute is included anywhere else in the document. +* Otherwise it causes space to appear at the top and bottom of elements +* that receive the `clearfix` class. +* 2. The use of `table` rather than `block` is only necessary if using +* `:before` to contain the top-margins of child elements. +*/ + +.clearfix:before, +.clearfix:after { + content: " "; /* 1 */ + display: table; /* 2 */ +} + +.clearfix:after { + clear: both; +} + + +/* ========================================================================== + EXAMPLE Media Queries for Responsive Design. + These examples override the primary ('mobile first') styles. + Modify as content requires. + ========================================================================== */ + + @media only screen and (min-width: 35em) { + /* Style adjustments for viewports that meet the condition */ +} + +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 1.25dppx), + (min-resolution: 120dpi) { + /* Style adjustments for high resolution devices */ +} + + +/* ========================================================================== + Print styles. + Inlined to avoid the additional HTTP request: + https://www.phpied.com/delay-loading-your-print-css/ + ========================================================================== */ + + @media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; /* Black prints faster */ + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + /* + * Don't show links that are fragment identifiers, + * or use the `javascript:` pseudo protocol + */ + + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + /* + * Printing Tables: + * http://css-discuss.incutio.com/wiki/Printing_Tables + */ + + thead { + display: table-header-group; + } + + tr, + img { + page-break-inside: avoid; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } +} + + diff --git a/public/css/normalize.css b/public/css/normalize.css new file mode 100644 index 0000000..192eb9c --- /dev/null +++ b/public/css/normalize.css @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100755 index 0000000..43dd5df Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..76daffc --- /dev/null +++ b/public/index.html @@ -0,0 +1,19 @@ + + + + + + davidtsadler.com + + + + + + + + +

Coming Soon

+ + + + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..d0e5f1b --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,5 @@ +# www.robotstxt.org/ + +# Allow crawling of all content +User-agent: * +Disallow: -- cgit v1.2.3-13-gbd6f