From cf1ede0ba8c687d9bfadf1c372546657968f1dd8 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 26 Feb 2021 17:35:58 +0300 Subject: pull latest readability-php via composer --- .../readability.php/test/ConfigurationTest.php | 92 + .../readability.php/test/ReadabilityTest.php | 148 + .../andreskrey/readability.php/test/TestPage.php | 61 + .../test/test-pages/001/config.json | 3 + .../test/test-pages/001/expected-images.json | 3 + .../test/test-pages/001/expected-metadata.json | 8 + .../test/test-pages/001/expected.html | 128 + .../test/test-pages/001/source.html | 233 + .../test/test-pages/002/expected-images.json | 1 + .../test/test-pages/002/expected-metadata.json | 8 + .../test/test-pages/002/expected.html | 415 + .../test/test-pages/002/source.html | 1131 + .../003-metadata-preferred/expected-images.json | 1 + .../003-metadata-preferred/expected-metadata.json | 8 + .../003-metadata-preferred/expected.html | 18 + .../test-pages/003-metadata-preferred/source.html | 45 + .../expected-images.json | 3 + .../expected-metadata.json | 8 + .../expected.html | 18 + .../source.html | 36 + .../test/test-pages/aclu/config.json | 3 + .../test/test-pages/aclu/expected-images.json | 3 + .../test/test-pages/aclu/expected-metadata.json | 8 + .../test/test-pages/aclu/expected.html | 124 + .../test/test-pages/aclu/source.html | 1264 + .../test/test-pages/ars-1/config.json | 3 + .../test/test-pages/ars-1/expected-images.json | 3 + .../test/test-pages/ars-1/expected-metadata.json | 8 + .../test/test-pages/ars-1/expected.html | 44 + .../test/test-pages/ars-1/source.html | 765 + .../expected-images.json | 6 + .../expected-metadata.json | 8 + .../base-url-base-element-relative/expected.html | 33 + .../base-url-base-element-relative/source.html | 44 + .../base-url-base-element/expected-images.json | 5 + .../base-url-base-element/expected-metadata.json | 8 + .../test-pages/base-url-base-element/expected.html | 33 + .../test-pages/base-url-base-element/source.html | 44 + .../test/test-pages/base-url/expected-images.json | 6 + .../test-pages/base-url/expected-metadata.json | 8 + .../test/test-pages/base-url/expected.html | 33 + .../test/test-pages/base-url/source.html | 43 + .../basic-tags-cleaning/expected-images.json | 1 + .../basic-tags-cleaning/expected-metadata.json | 8 + .../test-pages/basic-tags-cleaning/expected.html | 18 + .../test-pages/basic-tags-cleaning/source.html | 36 + .../test/test-pages/bbc-1/expected-images.json | 7 + .../test/test-pages/bbc-1/expected-metadata.json | 8 + .../test/test-pages/bbc-1/expected.html | 17 + .../test/test-pages/bbc-1/source.html | 2557 ++ .../test/test-pages/blogger/expected-images.json | 6 + .../test/test-pages/blogger/expected-metadata.json | 8 + .../test/test-pages/blogger/expected.html | 57 + .../test/test-pages/blogger/source.html | 2064 + .../test/test-pages/breitbart/config.json | 3 + .../test/test-pages/breitbart/expected-images.json | 4 + .../test-pages/breitbart/expected-metadata.json | 8 + .../test/test-pages/breitbart/expected.html | 41 + .../test/test-pages/breitbart/source.html | 19848 +++++++++ .../test-pages/bug-1255978/expected-images.json | 9 + .../test-pages/bug-1255978/expected-metadata.json | 8 + .../test/test-pages/bug-1255978/expected.html | 136 + .../test/test-pages/bug-1255978/source.html | 40907 +++++++++++++++++++ .../test-pages/buzzfeed-1/expected-images.json | 5 + .../test-pages/buzzfeed-1/expected-metadata.json | 8 + .../test/test-pages/buzzfeed-1/expected.html | 42 + .../test/test-pages/buzzfeed-1/source.html | 5294 +++ .../test-pages/challenges/expected-images.json | 3 + .../test-pages/challenges/expected-metadata.json | 8 + .../test/test-pages/challenges/expected.html | 35 + .../test/test-pages/challenges/source.html | 1744 + .../test-pages/clean-links/expected-images.json | 3 + .../test-pages/clean-links/expected-metadata.json | 8 + .../test/test-pages/clean-links/expected.html | 1386 + .../test/test-pages/clean-links/source.html | 1863 + .../cnet-svg-classes/expected-images.json | 5 + .../cnet-svg-classes/expected-metadata.json | 8 + .../test/test-pages/cnet-svg-classes/expected.html | 23 + .../test/test-pages/cnet-svg-classes/source.html | 662 + .../test/test-pages/cnet/expected-images.json | 4 + .../test/test-pages/cnet/expected-metadata.json | 8 + .../test/test-pages/cnet/expected.html | 43 + .../test/test-pages/cnet/source.html | 19356 +++++++++ .../test/test-pages/cnn/expected-images.json | 3 + .../test/test-pages/cnn/expected-metadata.json | 8 + .../test/test-pages/cnn/expected.html | 51 + .../test/test-pages/cnn/source.html | 4190 ++ .../expected-images.json | 1 + .../expected-metadata.json | 8 + .../comment-inside-script-parsing/expected.html | 18 + .../comment-inside-script-parsing/source.html | 34 + .../daringfireball-1/expected-images.json | 3 + .../daringfireball-1/expected-metadata.json | 8 + .../test/test-pages/daringfireball-1/expected.html | 38 + .../test/test-pages/daringfireball-1/source.html | 151 + .../expected-images.json | 7 + .../expected-metadata.json | 8 + .../different-sources-for-images/expected.html | 23 + .../different-sources-for-images/source.html | 33 + .../test/test-pages/ehow-1/config.json | 3 + .../test/test-pages/ehow-1/expected-images.json | 14 + .../test/test-pages/ehow-1/expected-metadata.json | 8 + .../test/test-pages/ehow-1/expected.html | 94 + .../test/test-pages/ehow-1/source.html | 934 + .../test/test-pages/ehow-2/expected-images.json | 13 + .../test/test-pages/ehow-2/expected-metadata.json | 8 + .../test/test-pages/ehow-2/expected.html | 124 + .../test/test-pages/ehow-2/source.html | 1621 + .../embedded-videos/expected-images.json | 1 + .../embedded-videos/expected-metadata.json | 8 + .../test/test-pages/embedded-videos/expected.html | 25 + .../test/test-pages/embedded-videos/source.html | 43 + .../test/test-pages/engadget/expected-images.json | 14 + .../test-pages/engadget/expected-metadata.json | 8 + .../test/test-pages/engadget/expected.html | 479 + .../test/test-pages/engadget/source.html | 3513 ++ .../test/test-pages/fortressofsolitude/config.json | 3 + .../fortressofsolitude/expected-images.json | 4 + .../fortressofsolitude/expected-metadata.json | 8 + .../test-pages/fortressofsolitude/expected.html | 1 + .../test/test-pages/fortressofsolitude/source.html | 141 + .../test/test-pages/gmw/expected-images.json | 6 + .../test/test-pages/gmw/expected-metadata.json | 8 + .../test/test-pages/gmw/expected.html | 58 + .../test/test-pages/gmw/source.html | 2103 + .../test/test-pages/heise/expected-images.json | 4 + .../test/test-pages/heise/expected-metadata.json | 8 + .../test/test-pages/heise/expected.html | 20 + .../test/test-pages/heise/source.html | 887 + .../test-pages/herald-sun-1/expected-images.json | 3 + .../test-pages/herald-sun-1/expected-metadata.json | 8 + .../test/test-pages/herald-sun-1/expected.html | 26 + .../test/test-pages/herald-sun-1/source.html | 1193 + .../test-pages/hidden-nodes/expected-images.json | 1 + .../test-pages/hidden-nodes/expected-metadata.json | 8 + .../test/test-pages/hidden-nodes/expected.html | 14 + .../test/test-pages/hidden-nodes/source.html | 29 + .../test-pages/hukumusume/expected-images.json | 7 + .../test-pages/hukumusume/expected-metadata.json | 8 + .../test/test-pages/hukumusume/expected.html | 39 + .../test/test-pages/hukumusume/source.html | 356 + .../test/test-pages/iab-1/expected-images.json | 4 + .../test/test-pages/iab-1/expected-metadata.json | 8 + .../test/test-pages/iab-1/expected.html | 30 + .../test/test-pages/iab-1/source.html | 1103 + .../test/test-pages/ietf-1/expected-images.json | 1 + .../test/test-pages/ietf-1/expected-metadata.json | 8 + .../test/test-pages/ietf-1/expected.html | 1110 + .../test/test-pages/ietf-1/source.html | 1269 + .../test/test-pages/infobae/expected-images.json | 7 + .../test/test-pages/infobae/expected-metadata.json | 8 + .../test/test-pages/infobae/expected.html | 1 + .../test/test-pages/infobae/source.html | 35 + .../test-pages/keep-images/expected-images.json | 17 + .../test-pages/keep-images/expected-metadata.json | 8 + .../test/test-pages/keep-images/expected.html | 381 + .../test/test-pages/keep-images/source.html | 833 + .../test/test-pages/la-nacion/expected-images.json | 4 + .../test-pages/la-nacion/expected-metadata.json | 8 + .../test/test-pages/la-nacion/expected.html | 85 + .../test/test-pages/la-nacion/source.html | 700 + .../test/test-pages/lemonde-1/expected-images.json | 3 + .../test-pages/lemonde-1/expected-metadata.json | 8 + .../test/test-pages/lemonde-1/expected.html | 46 + .../test/test-pages/lemonde-1/source.html | 1117 + .../test/test-pages/lemonde-2/expected-images.json | 3 + .../test-pages/lemonde-2/expected-metadata.json | 8 + .../test/test-pages/lemonde-2/expected.html | 13 + .../test/test-pages/lemonde-2/source.html | 1353 + .../test-pages/liberation-1/expected-images.json | 3 + .../test-pages/liberation-1/expected-metadata.json | 8 + .../test/test-pages/liberation-1/expected.html | 13 + .../test/test-pages/liberation-1/source.html | 1803 + .../expected-images.json | 11 + .../expected-metadata.json | 8 + .../lifehacker-post-comment-load/expected.html | 484 + .../lifehacker-post-comment-load/source.html | 1305 + .../lifehacker-working/expected-images.json | 11 + .../lifehacker-working/expected-metadata.json | 8 + .../test-pages/lifehacker-working/expected.html | 484 + .../test/test-pages/lifehacker-working/source.html | 1241 + .../links-in-tables/expected-images.json | 5 + .../links-in-tables/expected-metadata.json | 8 + .../test/test-pages/links-in-tables/expected.html | 174 + .../test/test-pages/links-in-tables/source.html | 3165 ++ .../test/test-pages/lwn-1/config.json | 3 + .../test/test-pages/lwn-1/expected-images.json | 6 + .../test/test-pages/lwn-1/expected-metadata.json | 8 + .../test/test-pages/lwn-1/expected.html | 373 + .../test/test-pages/lwn-1/source.html | 820 + .../test/test-pages/marketwatch/config.json | 4 + .../test-pages/marketwatch/expected-images.json | 3 + .../test-pages/marketwatch/expected-metadata.json | 8 + .../test/test-pages/marketwatch/expected.html | 47 + .../test/test-pages/marketwatch/source.html | 1453 + .../test/test-pages/medium-1/expected-images.json | 10 + .../test-pages/medium-1/expected-metadata.json | 8 + .../test/test-pages/medium-1/expected.html | 286 + .../test/test-pages/medium-1/source.html | 705 + .../test/test-pages/medium-2/expected-images.json | 3 + .../test-pages/medium-2/expected-metadata.json | 8 + .../test/test-pages/medium-2/expected.html | 1 + .../test/test-pages/medium-2/source.html | 14 + .../test/test-pages/medium-3/expected-images.json | 3 + .../test-pages/medium-3/expected-metadata.json | 8 + .../test/test-pages/medium-3/expected.html | 226 + .../test/test-pages/medium-3/source.html | 4815 +++ .../missing-paragraphs/expected-images.json | 1 + .../missing-paragraphs/expected-metadata.json | 8 + .../test-pages/missing-paragraphs/expected.html | 50 + .../test/test-pages/missing-paragraphs/source.html | 64 + .../test/test-pages/mozilla-1/expected-images.json | 9 + .../test-pages/mozilla-1/expected-metadata.json | 8 + .../test/test-pages/mozilla-1/expected.html | 67 + .../test/test-pages/mozilla-1/source.html | 1348 + .../test/test-pages/mozilla-2/expected-images.json | 11 + .../test-pages/mozilla-2/expected-metadata.json | 8 + .../test/test-pages/mozilla-2/expected.html | 77 + .../test/test-pages/mozilla-2/source.html | 408 + .../test/test-pages/msn/expected-images.json | 4 + .../test/test-pages/msn/expected-metadata.json | 8 + .../test/test-pages/msn/expected.html | 18 + .../test/test-pages/msn/source.html | 13010 ++++++ .../test/test-pages/nytimes-1/expected-images.json | 4 + .../test-pages/nytimes-1/expected-metadata.json | 8 + .../test/test-pages/nytimes-1/expected.html | 37 + .../test/test-pages/nytimes-1/source.html | 5530 +++ .../test/test-pages/nytimes-2/expected-images.json | 4 + .../test-pages/nytimes-2/expected-metadata.json | 8 + .../test/test-pages/nytimes-2/expected.html | 41 + .../test/test-pages/nytimes-2/source.html | 5236 +++ .../test/test-pages/pixnet/expected-images.json | 48 + .../test/test-pages/pixnet/expected-metadata.json | 8 + .../test/test-pages/pixnet/expected.html | 280 + .../test/test-pages/pixnet/source.html | 4372 ++ .../remove-extra-brs/expected-images.json | 1 + .../remove-extra-brs/expected-metadata.json | 8 + .../test/test-pages/remove-extra-brs/expected.html | 16 + .../test/test-pages/remove-extra-brs/source.html | 32 + .../remove-extra-paragraphs/expected-images.json | 1 + .../remove-extra-paragraphs/expected-metadata.json | 8 + .../remove-extra-paragraphs/expected.html | 23 + .../test-pages/remove-extra-paragraphs/source.html | 41 + .../remove-script-tags/expected-images.json | 1 + .../remove-script-tags/expected-metadata.json | 8 + .../test-pages/remove-script-tags/expected.html | 19 + .../test/test-pages/remove-script-tags/source.html | 43 + .../reordering-paragraphs/expected-images.json | 1 + .../reordering-paragraphs/expected-metadata.json | 8 + .../test-pages/reordering-paragraphs/expected.html | 26 + .../test-pages/reordering-paragraphs/source.html | 34 + .../test-pages/replace-brs/expected-images.json | 1 + .../test-pages/replace-brs/expected-metadata.json | 8 + .../test/test-pages/replace-brs/expected.html | 14 + .../test/test-pages/replace-brs/source.html | 28 + .../replace-font-tags/expected-images.json | 1 + .../replace-font-tags/expected-metadata.json | 8 + .../test-pages/replace-font-tags/expected.html | 17 + .../test/test-pages/replace-font-tags/source.html | 28 + .../test/test-pages/rtl-1/expected-images.json | 1 + .../test/test-pages/rtl-1/expected-metadata.json | 8 + .../test/test-pages/rtl-1/expected.html | 11 + .../test/test-pages/rtl-1/source.html | 26 + .../test/test-pages/rtl-2/expected-images.json | 1 + .../test/test-pages/rtl-2/expected-metadata.json | 8 + .../test/test-pages/rtl-2/expected.html | 11 + .../test/test-pages/rtl-2/source.html | 26 + .../test/test-pages/rtl-3/expected-images.json | 1 + .../test/test-pages/rtl-3/expected-metadata.json | 8 + .../test/test-pages/rtl-3/expected.html | 11 + .../test/test-pages/rtl-3/source.html | 26 + .../test/test-pages/rtl-4/expected-images.json | 1 + .../test/test-pages/rtl-4/expected-metadata.json | 8 + .../test/test-pages/rtl-4/expected.html | 11 + .../test/test-pages/rtl-4/source.html | 26 + .../test/test-pages/salon-1/expected-images.json | 3 + .../test/test-pages/salon-1/expected-metadata.json | 8 + .../test/test-pages/salon-1/expected.html | 206 + .../test/test-pages/salon-1/source.html | 2513 ++ .../test-pages/simplyfound-1/expected-images.json | 3 + .../simplyfound-1/expected-metadata.json | 8 + .../test/test-pages/simplyfound-1/expected.html | 18 + .../test/test-pages/simplyfound-1/source.html | 426 + .../test-pages/social-buttons/expected-images.json | 1 + .../social-buttons/expected-metadata.json | 8 + .../test/test-pages/social-buttons/expected.html | 33 + .../test/test-pages/social-buttons/source.html | 54 + .../style-tags-removal/expected-images.json | 1 + .../style-tags-removal/expected-metadata.json | 8 + .../test-pages/style-tags-removal/expected.html | 18 + .../test/test-pages/style-tags-removal/source.html | 42 + .../test-pages/svg-parsing/expected-images.json | 1 + .../test-pages/svg-parsing/expected-metadata.json | 8 + .../test/test-pages/svg-parsing/expected.html | 32 + .../test/test-pages/svg-parsing/source.html | 44 + .../table-style-attributes/expected-images.json | 3 + .../table-style-attributes/expected-metadata.json | 8 + .../table-style-attributes/expected.html | 102 + .../test-pages/table-style-attributes/source.html | 167 + .../test/test-pages/telegraph/expected-images.json | 3 + .../test-pages/telegraph/expected-metadata.json | 8 + .../test/test-pages/telegraph/expected.html | 38 + .../test/test-pages/telegraph/source.html | 1821 + .../title-and-h1-discrepancy/expected-images.json | 1 + .../expected-metadata.json | 8 + .../title-and-h1-discrepancy/expected.html | 20 + .../title-and-h1-discrepancy/source.html | 30 + .../test/test-pages/tmz-1/expected-images.json | 6 + .../test/test-pages/tmz-1/expected-metadata.json | 8 + .../test/test-pages/tmz-1/expected.html | 34 + .../test/test-pages/tmz-1/source.html | 1528 + .../test/test-pages/tumblr/expected-images.json | 3 + .../test/test-pages/tumblr/expected-metadata.json | 8 + .../test/test-pages/tumblr/expected.html | 11 + .../test/test-pages/tumblr/source.html | 793 + .../expected-images.json | 3 + .../expected-metadata.json | 8 + .../expected.html | 115 + .../uses-getfirstelementchild-function/source.html | 421 + .../test/test-pages/wapo-1/expected-images.json | 4 + .../test/test-pages/wapo-1/expected-metadata.json | 8 + .../test/test-pages/wapo-1/expected.html | 144 + .../test/test-pages/wapo-1/source.html | 1560 + .../test/test-pages/wapo-2/expected-images.json | 5 + .../test/test-pages/wapo-2/expected-metadata.json | 8 + .../test/test-pages/wapo-2/expected.html | 101 + .../test/test-pages/wapo-2/source.html | 1038 + .../test/test-pages/webmd-1/config.json | 3 + .../test/test-pages/webmd-1/expected-images.json | 3 + .../test/test-pages/webmd-1/expected-metadata.json | 8 + .../test/test-pages/webmd-1/expected.html | 48 + .../test/test-pages/webmd-1/source.html | 2411 ++ .../test/test-pages/webmd-2/expected-images.json | 3 + .../test/test-pages/webmd-2/expected-metadata.json | 8 + .../test/test-pages/webmd-2/expected.html | 23 + .../test/test-pages/webmd-2/source.html | 1299 + .../test/test-pages/wikia/expected-images.json | 6 + .../test/test-pages/wikia/expected-metadata.json | 8 + .../test/test-pages/wikia/expected.html | 26 + .../test/test-pages/wikia/source.html | 19998 +++++++++ .../test/test-pages/wikipedia/expected-images.json | 9 + .../test-pages/wikipedia/expected-metadata.json | 8 + .../test/test-pages/wikipedia/expected.html | 427 + .../test/test-pages/wikipedia/source.html | 1652 + .../test/test-pages/wordpress/expected-images.json | 6 + .../test-pages/wordpress/expected-metadata.json | 8 + .../test/test-pages/wordpress/expected.html | 29 + .../test/test-pages/wordpress/source.html | 2228 + .../test/test-pages/yahoo-1/expected-images.json | 4 + .../test/test-pages/yahoo-1/expected-metadata.json | 8 + .../test/test-pages/yahoo-1/expected.html | 45 + .../test/test-pages/yahoo-1/source.html | 14670 +++++++ .../test/test-pages/yahoo-2/expected-images.json | 3 + .../test/test-pages/yahoo-2/expected-metadata.json | 8 + .../test/test-pages/yahoo-2/expected.html | 34 + .../test/test-pages/yahoo-2/source.html | 20539 ++++++++++ .../test/test-pages/yahoo-3/expected-images.json | 4 + .../test/test-pages/yahoo-3/expected-metadata.json | 8 + .../test/test-pages/yahoo-3/expected.html | 44 + .../test/test-pages/yahoo-3/source.html | 14949 +++++++ .../test/test-pages/yahoo-4/expected-images.json | 3 + .../test/test-pages/yahoo-4/expected-metadata.json | 8 + .../test/test-pages/yahoo-4/expected.html | 9 + .../test/test-pages/yahoo-4/source.html | 1234 + .../test/test-pages/youth/expected-images.json | 5 + .../test/test-pages/youth/expected-metadata.json | 8 + .../test/test-pages/youth/expected.html | 36 + .../test/test-pages/youth/source.html | 10982 +++++ 368 files changed, 276770 insertions(+) create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/ConfigurationTest.php create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/ReadabilityTest.php create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/TestPage.php create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/config.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/source.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-images.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-metadata.json create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected.html create mode 100644 plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/source.html (limited to 'plugins/af_readability/vendor/andreskrey/readability.php/test') diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/ConfigurationTest.php b/plugins/af_readability/vendor/andreskrey/readability.php/test/ConfigurationTest.php new file mode 100644 index 000000000..b3810ed73 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/ConfigurationTest.php @@ -0,0 +1,92 @@ +doEqualsAsserts($config, $params); + } + + /** + * @dataProvider getParams + * + * @param array $params + */ + public function testInvalidParameterIsNotInConfig(array $params) + { + $config = new Configuration($params); + $this->assertArrayNotHasKey('invalidParameter', $config->toArray(), 'Invalid param key is not present in config'); + } + + /** + * @param Configuration $config + * @param array $options + */ + private function doEqualsAsserts(Configuration $config, array $options) + { + $this->assertEquals($options['maxTopCandidates'], $config->getMaxTopCandidates()); + $this->assertEquals($options['charThreshold'], $config->getCharThreshold()); + $this->assertEquals($options['articleByLine'], $config->getArticleByLine()); + $this->assertEquals($options['stripUnlikelyCandidates'], $config->getStripUnlikelyCandidates()); + $this->assertEquals($options['cleanConditionally'], $config->getCleanConditionally()); + $this->assertEquals($options['weightClasses'], $config->getWeightClasses()); + $this->assertEquals($options['fixRelativeURLs'], $config->getFixRelativeURLs()); + $this->assertEquals($options['substituteEntities'], $config->getSubstituteEntities()); + $this->assertEquals($options['normalizeEntities'], $config->getNormalizeEntities()); + $this->assertEquals($options['originalURL'], $config->getOriginalURL()); + $this->assertEquals($options['summonCthulhu'], $config->getOriginalURL()); + } + + /** + * @return array + */ + public function getParams() + { + return [[ + 'All current parameters' => [ + 'maxTopCandidates' => 3, + 'wordThreshold' => 500, + 'charThreshold' => 500, + 'articleByLine' => true, + 'stripUnlikelyCandidates' => false, + 'cleanConditionally' => false, + 'weightClasses' => false, + 'fixRelativeURLs' => true, + 'substituteEntities' => true, + 'normalizeEntities' => true, + 'originalURL' => 'my.original.url', + 'summonCthulhu' => 'my.original.url', + 'invalidParameter' => 'invalidParameterValue' + ] + ]]; + } + + /** + * Test if a logger interface can be injected and retrieved from the Configuration object. + */ + public function testLoggerCanBeInjected() + { + $configuration = new Configuration(); + $log = new Logger('Readability'); + $log->pushHandler(new NullHandler()); + + $configuration->setLogger($log); + + $this->assertSame($log, $configuration->getLogger()); + } +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/ReadabilityTest.php b/plugins/af_readability/vendor/andreskrey/readability.php/test/ReadabilityTest.php new file mode 100644 index 000000000..ca208e894 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/ReadabilityTest.php @@ -0,0 +1,148 @@ + 'http://fakehost/test/test.html', + 'FixRelativeURLs' => true, + 'SubstituteEntities' => true, + 'ArticleByLine' => true + ]; + + $configuration = new Configuration(array_merge($testPage->getConfiguration(), $options)); + + $readability = new Readability($configuration); + $readability->parse($testPage->getSourceHTML()); + + $this->assertSame($testPage->getExpectedHTML(), $readability->getContent(), 'Parsed text does not match the expected one.'); + } + + /** + * Test that Readability parses the HTML correctly and matches the expected result. + * + * @dataProvider getSamplePages + * + * @param TestPage $testPage + * + * @throws ParseException + */ + public function testReadabilityParsesMetadata(TestPage $testPage) + { + $options = ['OriginalURL' => 'http://fakehost/test/test.html', + 'FixRelativeURLs' => true, + 'SubstituteEntities' => true, + 'ArticleByLine' => true + ]; + + $configuration = new Configuration(array_merge($testPage->getConfiguration(), $options)); + + $readability = new Readability($configuration); + $readability->parse($testPage->getSourceHTML()); + + $this->assertSame($testPage->getExpectedMetadata()->Author, $readability->getAuthor(), 'Parsed Author does not match expected value.'); + $this->assertSame($testPage->getExpectedMetadata()->Direction, $readability->getDirection(), 'Parsed Direction does not match expected value.'); + $this->assertSame($testPage->getExpectedMetadata()->Excerpt, $readability->getExcerpt(), 'Parsed Excerpt does not match expected value.'); + $this->assertSame($testPage->getExpectedMetadata()->Image, $readability->getImage(), 'Parsed Image does not match expected value.'); + $this->assertSame($testPage->getExpectedMetadata()->Title, $readability->getTitle(), 'Parsed Title does not match expected value.'); + } + + /** + * Test that Readability returns all the expected images from the test page. + * + * @param TestPage $testPage + * @dataProvider getSamplePages + * + * @throws ParseException + */ + public function testHTMLParserParsesImages(TestPage $testPage) + { + $options = ['OriginalURL' => 'http://fakehost/test/test.html', + 'fixRelativeURLs' => true, + 'substituteEntities' => true, + ]; + + $configuration = new Configuration(array_merge($testPage->getConfiguration(), $options)); + + $readability = new Readability($configuration); + $readability->parse($testPage->getSourceHTML()); + + $this->assertSame($testPage->getExpectedImages(), $readability->getImages()); + } + + /** + * Main data provider. + * + * @return \Generator + */ + public function getSamplePages() + { + $path = pathinfo(__FILE__, PATHINFO_DIRNAME) . DIRECTORY_SEPARATOR . 'test-pages'; + $testPages = scandir($path); + + foreach (array_slice($testPages, 2) as $testPage) { + $testCasePath = $path . DIRECTORY_SEPARATOR . $testPage . DIRECTORY_SEPARATOR; + + $source = file_get_contents($testCasePath . 'source.html'); + $expectedHTML = file_get_contents($testCasePath . 'expected.html'); + $expectedImages = json_decode(file_get_contents($testCasePath . 'expected-images.json'), true); + $expectedMetadata = json_decode(file_get_contents($testCasePath . 'expected-metadata.json')); + $configuration = file_exists($testCasePath . 'config.json') ? json_decode(file_get_contents($testCasePath . 'config.json'), true) : []; + + yield $testPage => [new TestPage($configuration, $source, $expectedHTML, $expectedImages, $expectedMetadata)]; + } + } + + /** + * Test that Readability throws an exception with malformed HTML. + * + * @throws ParseException + */ + public function testReadabilityThrowsExceptionWithMalformedHTML() + { + $parser = new Readability(new Configuration()); + $this->expectException(ParseException::class); + $this->expectExceptionMessage('Invalid or incomplete HTML.'); + $parser->parse(''); + } + + /** + * Test that Readability throws an exception with incomplete or short HTML. + * + * @throws ParseException + */ + public function testReadabilityThrowsExceptionWithUnparseableHTML() + { + $parser = new Readability(new Configuration()); + $this->expectException(ParseException::class); + $this->expectExceptionMessage('Could not parse text.'); + $parser->parse('

'); + } + + /** + * Test that the Readability object has no content as soon as it is instantiated. + */ + public function testReadabilityCallGetContentWithNoContent() + { + $parser = new Readability(new Configuration()); + $this->assertNull($parser->getContent()); + } +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/TestPage.php b/plugins/af_readability/vendor/andreskrey/readability.php/test/TestPage.php new file mode 100644 index 000000000..ed6f92e7c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/TestPage.php @@ -0,0 +1,61 @@ +configuration = $configuration; + $this->sourceHTML = $sourceHTML; + $this->expectedHTML = $expectedHTML; + $this->expectedImages = $expectedImages; + $this->expectedMetadata = $expectedMetadata; + } + + /** + * @return array + */ + public function getConfiguration() + { + return $this->configuration; + } + + /** + * @return null + */ + public function getSourceHTML() + { + return $this->sourceHTML; + } + + /** + * @return null + */ + public function getExpectedHTML() + { + return $this->expectedHTML; + } + + /** + * @return mixed + */ + public function getExpectedImages() + { + return $this->expectedImages; + } + + /** + * @return \stdClass + */ + public function getExpectedMetadata() + { + return $this->expectedMetadata; + } +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/config.json new file mode 100644 index 000000000..0ac6816ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/config.json @@ -0,0 +1,3 @@ +{ + "ArticleByLine": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-images.json new file mode 100644 index 000000000..5bed34dc9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/fakehost\/static\/code\/2013\/blanket-coverage.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-metadata.json new file mode 100644 index 000000000..52dafa149 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Nicolas Perriault —", + "Direction": null, + "Excerpt": "Nicolas Perriault's homepage.", + "Image": null, + "Title": "Get your Frontend JavaScript Code Covered | Code", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected.html new file mode 100644 index 000000000..e05810ff7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected.html @@ -0,0 +1,128 @@ +

So finally you're testing your frontend JavaScript code? Great! The more you +write tests, the more confident you are with your code… but how much precisely? +That's where code coverage might +help. +

+

The idea behind code coverage is to record which parts of your code (functions, + statements, conditionals and so on) have been executed by your test suite, + to compute metrics out of these data and usually to provide tools for navigating + and inspecting them.

+

Not a lot of frontend developers I know actually test their frontend code, + and I can barely imagine how many of them have ever setup code coverage… + Mostly because there are not many frontend-oriented tools in this area + I guess.

+

Actually I've only found one which provides an adapter for Mocha and + actually works…

+
+

Drinking game for web devs: +

(1) Think of a noun +

(2) Google "<noun>.js" +

(3) If a library with that name exists - drink

— Shay Friedman (@ironshay) + August 22, 2013 +
+

Blanket.js is an easy to install, easy to configure, +and easy to use JavaScript code coverage library that works both in-browser and +with nodejs. +

+

Its use is dead easy, adding Blanket support to your Mocha test suite + is just matter of adding this simple line to your HTML test file:

+
<script src="vendor/blanket.js"
+        data-cover-adapter="vendor/mocha-blanket.js"></script>
+
+ +

Source files: blanket.js, + mocha-blanket.js +

+

As an example, let's reuse the silly Cow example we used + in a previous episode:

+
// cow.js
+(function(exports) {
+  "use strict";
+
+  function Cow(name) {
+    this.name = name || "Anon cow";
+  }
+  exports.Cow = Cow;
+
+  Cow.prototype = {
+    greets: function(target) {
+      if (!target)
+        throw new Error("missing target");
+      return this.name + " greets " + target;
+    }
+  };
+})(this);
+
+ +

And its test suite, powered by Mocha and Chai:

+
var expect = chai.expect;
+
+describe("Cow", function() {
+  describe("constructor", function() {
+    it("should have a default name", function() {
+      var cow = new Cow();
+      expect(cow.name).to.equal("Anon cow");
+    });
+
+    it("should set cow's name if provided", function() {
+      var cow = new Cow("Kate");
+      expect(cow.name).to.equal("Kate");
+    });
+  });
+
+  describe("#greets", function() {
+    it("should greet passed target", function() {
+      var greetings = (new Cow("Kate")).greets("Baby");
+      expect(greetings).to.equal("Kate greets Baby");
+    });
+  });
+});
+
+ +

Let's create the HTML test file for it, featuring Blanket and its adapter + for Mocha:

+
<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Test</title>
+  <link rel="stylesheet" media="all" href="vendor/mocha.css">
+</head>
+<body>
+  <div id="mocha"></div>
+  <div id="messages"></div>
+  <div id="fixtures"></div>
+  <script src="vendor/mocha.js"></script>
+  <script src="vendor/chai.js"></script>
+  <script src="vendor/blanket.js"
+          data-cover-adapter="vendor/mocha-blanket.js"></script>
+  <script>mocha.setup('bdd');</script>
+  <script src="cow.js" data-cover></script>
+  <script src="cow_test.js"></script>
+  <script>mocha.run();</script>
+</body>
+</html>
+
+ +

Notes:

+

Running the tests now gives us something like this:

+

+ screenshot

+

As you can see, the report at the bottom highlights that we haven't actually + tested the case where an error is raised in case a target name is missing. + We've been informed of that, nothing more, nothing less. We simply know + we're missing a test here. Isn't this cool? I think so!

+

Just remember that code coverage will only bring you numbers and + raw information, not actual proofs that the whole of your code logic has + been actually covered. If you ask me, the best inputs you can get about + your code logic and implementation ever are the ones issued out of pair programming +sessions + and code reviews — + but that's another story.

+

So is code coverage silver bullet? No. Is it useful? Definitely. Happy testing! +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/source.html new file mode 100644 index 000000000..951e8745d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/source.html @@ -0,0 +1,233 @@ + + + + + + + Get your Frontend JavaScript Code Covered | Code | Nicolas Perriault + + + + + + + + + + + + + + +
+
+

Hi, I'm Nicolas.

+ I code stuff. I take photos. I write rants. + +
+
+
+ +
+

Get your Frontend JavaScript Code Covered

+
+
+

So finally you're testing your frontend JavaScript code? Great! The more you +write tests, the more confident you are with your code… but how much precisely? +That's where code coverage might +help. +

+

The idea behind code coverage is to record which parts of your code (functions, + statements, conditionals and so on) have been executed by your test suite, + to compute metrics out of these data and usually to provide tools for navigating + and inspecting them.

+

Not a lot of frontend developers I know actually test their frontend code, + and I can barely imagine how many of them have ever setup code coverage… + Mostly because there are not many frontend-oriented tools in this area + I guess.

+

Actually I've only found one which provides an adapter for Mocha and + actually works…

+ +

Blanket.js is an easy to install, easy to configure, +and easy to use JavaScript code coverage library that works both in-browser and +with nodejs. +

+

Its use is dead easy, adding Blanket support to your Mocha test suite + is just matter of adding this simple line to your HTML test file:

+
<script src="vendor/blanket.js"
+        data-cover-adapter="vendor/mocha-blanket.js"></script>
+
+ +

Source files: blanket.js, + mocha-blanket.js +

+

As an example, let's reuse the silly Cow example we used + in a previous episode:

+
// cow.js
+(function(exports) {
+  "use strict";
+
+  function Cow(name) {
+    this.name = name || "Anon cow";
+  }
+  exports.Cow = Cow;
+
+  Cow.prototype = {
+    greets: function(target) {
+      if (!target)
+        throw new Error("missing target");
+      return this.name + " greets " + target;
+    }
+  };
+})(this);
+
+ +

And its test suite, powered by Mocha and Chai:

+
var expect = chai.expect;
+
+describe("Cow", function() {
+  describe("constructor", function() {
+    it("should have a default name", function() {
+      var cow = new Cow();
+      expect(cow.name).to.equal("Anon cow");
+    });
+
+    it("should set cow's name if provided", function() {
+      var cow = new Cow("Kate");
+      expect(cow.name).to.equal("Kate");
+    });
+  });
+
+  describe("#greets", function() {
+    it("should greet passed target", function() {
+      var greetings = (new Cow("Kate")).greets("Baby");
+      expect(greetings).to.equal("Kate greets Baby");
+    });
+  });
+});
+
+ +

Let's create the HTML test file for it, featuring Blanket and its adapter + for Mocha:

+
<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Test</title>
+  <link rel="stylesheet" media="all" href="vendor/mocha.css">
+</head>
+<body>
+  <div id="mocha"></div>
+  <div id="messages"></div>
+  <div id="fixtures"></div>
+  <script src="vendor/mocha.js"></script>
+  <script src="vendor/chai.js"></script>
+  <script src="vendor/blanket.js"
+          data-cover-adapter="vendor/mocha-blanket.js"></script>
+  <script>mocha.setup('bdd');</script>
+  <script src="cow.js" data-cover></script>
+  <script src="cow_test.js"></script>
+  <script>mocha.run();</script>
+</body>
+</html>
+
+ +

Notes:

+
    +
  • Notice the data-cover attribute we added to the script tag + loading the source of our library;
  • +
  • The HTML test file must be served over HTTP for the adapter to + be loaded.
  • +
+

Running the tests now gives us something like this:

+

+ screenshot +

+

As you can see, the report at the bottom highlights that we haven't actually + tested the case where an error is raised in case a target name is missing. + We've been informed of that, nothing more, nothing less. We simply know + we're missing a test here. Isn't this cool? I think so!

+

Just remember that code coverage will only bring you numbers and + raw information, not actual proofs that the whole of your code logic has + been actually covered. If you ask me, the best inputs you can get about + your code logic and implementation ever are the ones issued out of pair programming +sessions + and code reviews — + but that's another story.

+

So is code coverage silver bullet? No. Is it useful? Definitely. Happy testing! +

+
+ +
+ +
+
+ + +
+ + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-metadata.json new file mode 100644 index 000000000..74c3859ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Nikhil Marathe", + "Direction": null, + "Excerpt": "For more than a decade the Web has used XMLHttpRequest (XHR) to achieve asynchronous requests in JavaScript. While very useful, XHR is not a very ...", + "Image": null, + "Title": "This API is so Fetching!", + "SiteName": "Mozilla Hacks – the Web developer blog" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected.html new file mode 100644 index 000000000..0525100d6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected.html @@ -0,0 +1,415 @@ +

For more than a decade the Web has used XMLHttpRequest (XHR) to achieve + asynchronous requests in JavaScript. While very useful, XHR is not a very + nice API. It suffers from lack of separation of concerns. The input, output + and state are all managed by interacting with one object, and state is + tracked using events. Also, the event-based model doesn’t play well with + JavaScript’s recent focus on Promise- and generator-based asynchronous + programming.

+

The Fetch API intends + to fix most of these problems. It does this by introducing the same primitives + to JS that are used in the HTTP protocol. In addition, it introduces a + utility function fetch() that succinctly captures the intention + of retrieving a resource from the network.

+

The Fetch specification, which + defines the API, nails down the semantics of a user agent fetching a resource. + This, combined with ServiceWorkers, is an attempt to:

+
  1. Improve the offline experience.
  2. +
  3. Expose the building blocks of the Web to the platform as part of the + extensible web movement.
  4. +

As of this writing, the Fetch API is available in Firefox 39 (currently + Nightly) and Chrome 42 (currently dev). Github has a Fetch polyfill.

+ +

Feature detection

+ +

Fetch API support can be detected by checking for Headers,Request, Response or fetch on + the window or worker scope.

+ +

Simple fetching

+ +

The most useful, high-level part of the Fetch API is the fetch() function. + In its simplest form it takes a URL and returns a promise that resolves + to the response. The response is captured as a Response object.

+
+
fetch("/data.json").then(function(res) {
+  // res instanceof Response == true.
+  if (res.ok) {
+    res.json().then(function(data) {
+      console.log(data.entries);
+    });
+  } else {
+    console.log("Looks like the response wasn't perfect, got status", res.status);
+  }
+}, function(e) {
+  console.log("Fetch failed!", e);
+});
+
+

Submitting some parameters, it would look like this:

+
+
fetch("http://www.example.org/submit.php", {
+  method: "POST",
+  headers: {
+    "Content-Type": "application/x-www-form-urlencoded"
+  },
+  body: "firstName=Nikhil&favColor=blue&password=easytoguess"
+}).then(function(res) {
+  if (res.ok) {
+    alert("Perfect! Your settings are saved.");
+  } else if (res.status == 401) {
+    alert("Oops! You are not authorized.");
+  }
+}, function(e) {
+  alert("Error submitting form!");
+});
+
+

The fetch() function’s arguments are the same as those passed + to the +

Request() constructor, so you may directly pass arbitrarily + complex requests to fetch() as discussed below.

+ +

Headers

+ +

Fetch introduces 3 interfaces. These are Headers, Request and +

Response. They map directly to the underlying HTTP concepts, + but have +

certain visibility filters in place for privacy and security reasons, + such as +

supporting CORS rules and ensuring cookies aren’t readable by third parties.

+

The Headers interface is + a simple multi-map of names to values:

+
+
var content = "Hello World";
+var reqHeaders = new Headers();
+reqHeaders.append("Content-Type", "text/plain"
+reqHeaders.append("Content-Length", content.length.toString());
+reqHeaders.append("X-Custom-Header", "ProcessThisImmediately");
+
+

The same can be achieved by passing an array of arrays or a JS object + literal +

to the constructor:

+
+
reqHeaders = new Headers({
+  "Content-Type": "text/plain",
+  "Content-Length": content.length.toString(),
+  "X-Custom-Header": "ProcessThisImmediately",
+});
+
+

The contents can be queried and retrieved:

+
+
console.log(reqHeaders.has("Content-Type")); // true
+console.log(reqHeaders.has("Set-Cookie")); // false
+reqHeaders.set("Content-Type", "text/html");
+reqHeaders.append("X-Custom-Header", "AnotherValue");
+ 
+console.log(reqHeaders.get("Content-Length")); // 11
+console.log(reqHeaders.getAll("X-Custom-Header")); // ["ProcessThisImmediately", "AnotherValue"]
+ 
+reqHeaders.delete("X-Custom-Header");
+console.log(reqHeaders.getAll("X-Custom-Header")); // []
+
+

Some of these operations are only useful in ServiceWorkers, but they provide +

a much nicer API to Headers.

+

Since Headers can be sent in requests, or received in responses, and have + various limitations about what information can and should be mutable, Headers objects + have a guard property. This is not exposed to the Web, but + it affects which mutation operations are allowed on the Headers object. +

Possible values are:

+
  • “none”: default.
  • +
  • “request”: guard for a Headers object obtained from a Request (Request.headers).
  • +
  • “request-no-cors”: guard for a Headers object obtained from a Request + created +

    with mode “no-cors”.
  • +
  • “response”: naturally, for Headers obtained from Response (Response.headers).
  • +
  • “immutable”: Mostly used for ServiceWorkers, renders a Headers object +

    read-only.
  • +

The details of how each guard affects the behaviors of the Headers object + are +

in the specification. For example, + you may not append or set a “request” guarded Headers’ “Content-Length” + header. Similarly, inserting “Set-Cookie” into a Response header is not + allowed so that ServiceWorkers may not set cookies via synthesized Responses.

+

All of the Headers methods throw TypeError if name is not a + valid HTTP Header name. The mutation operations will throw TypeError + if there is an immutable guard. Otherwise they fail silently. For example:

+
+
var res = Response.error();
+try {
+  res.headers.set("Origin", "http://mybank.com");
+} catch(e) {
+  console.log("Cannot pretend to be a bank!");
+}
+
+ +

Request

+ +

The Request interface defines a request to fetch a resource over HTTP. + URL, method and headers are expected, but the Request also allows specifying + a body, a request mode, credentials and cache hints.

+

The simplest Request is of course, just a URL, as you may do to GET a + resource.

+
+
var req = new Request("/index.html");
+console.log(req.method); // "GET"
+console.log(req.url); // "http://example.com/index.html"
+
+

You may also pass a Request to the Request() constructor to + create a copy. +

(This is not the same as calling the clone() method, which + is covered in +

the “Reading bodies” section.).

+
+
var copy = new Request(req);
+console.log(copy.method); // "GET"
+console.log(copy.url); // "http://example.com/index.html"
+
+

Again, this form is probably only useful in ServiceWorkers.

+

The non-URL attributes of the Request can only be set by passing + initial +

values as a second argument to the constructor. This argument is a dictionary.

+
+
var uploadReq = new Request("/uploadImage", {
+  method: "POST",
+  headers: {
+    "Content-Type": "image/png",
+  },
+  body: "image data"
+});
+
+

The Request’s mode is used to determine if cross-origin requests lead + to valid responses, and which properties on the response are readable. + Legal mode values are "same-origin", "no-cors" (default) + and "cors".

+

The "same-origin" mode is simple, if a request is made to another + origin with this mode set, the result is simply an error. You could use + this to ensure that +

a request is always being made to your origin.

+
+
var arbitraryUrl = document.getElementById("url-input").value;
+fetch(arbitraryUrl, { mode: "same-origin" }).then(function(res) {
+  console.log("Response succeeded?", res.ok);
+}, function(e) {
+  console.log("Please enter a same-origin URL!");
+});
+
+

The "no-cors" mode captures what the web platform does by default + for scripts you import from CDNs, images hosted on other domains, and so + on. First, it prevents the method from being anything other than “HEAD”, + “GET” or “POST”. Second, if any ServiceWorkers intercept these requests, + they may not add or override any headers except for these. + Third, JavaScript may not access any properties of the resulting Response. + This ensures that ServiceWorkers do not affect the semantics of the Web + and prevents security and privacy issues that could arise from leaking + data across domains.

+

"cors" mode is what you’ll usually use to make known cross-origin + requests to access various APIs offered by other vendors. These are expected + to adhere to +

the CORS protocol. + Only a limited set of + headers is exposed in the Response, but the body is readable. For example, + you could get a list of Flickr’s most interesting photos + today like this:

+
+
var u = new URLSearchParams();
+u.append('method', 'flickr.interestingness.getList');
+u.append('api_key', '<insert api key here>');
+u.append('format', 'json');
+u.append('nojsoncallback', '1');
+ 
+var apiCall = fetch('https://api.flickr.com/services/rest?' + u);
+ 
+apiCall.then(function(response) {
+  return response.json().then(function(json) {
+    // photo is a list of photos.
+    return json.photos.photo;
+  });
+}).then(function(photos) {
+  photos.forEach(function(photo) {
+    console.log(photo.title);
+  });
+});
+
+

You may not read out the “Date” header since Flickr does not allow it + via +

Access-Control-Expose-Headers.

+
+
response.headers.get("Date"); // null
+
+

The credentials enumeration determines if cookies for the other + domain are +

sent to cross-origin requests. This is similar to XHR’s withCredentials +

flag, but tri-valued as "omit" (default), "same-origin" and "include".

+

The Request object will also give the ability to offer caching hints to + the user-agent. This is currently undergoing some security review. + Firefox exposes the attribute, but it has no effect.

+

Requests have two read-only attributes that are relevant to ServiceWorkers +

intercepting them. There is the string referrer, which is + set by the UA to be +

the referrer of the Request. This may be an empty string. The other is +

context which is a rather large enumeration defining + what sort of resource is being fetched. This could be “image” if the request + is from an + <img>tag in the controlled document, “worker” if it is an attempt to load a + worker script, and so on. When used with the fetch() function, + it is “fetch”.

+ +

Response

+ +

Response instances are returned by calls to fetch(). + They can also be created by JS, but this is only useful in ServiceWorkers.

+

We have already seen some attributes of Response when we looked at fetch(). + The most obvious candidates are status, an integer (default + value 200) and statusText (default value “OK”), which correspond + to the HTTP status code and reason. The ok attribute is just + a shorthand for checking that status is in the range 200-299 + inclusive.

+

headers is the Response’s Headers object, with guard “response”. + The url attribute reflects the URL of the corresponding request.

+

Response also has a type, which is “basic”, “cors”, “default”, + “error” or +

“opaque”.

+
  • "basic": normal, same origin response, with all headers exposed + except +

    “Set-Cookie” and “Set-Cookie2″.
  • +
  • "cors": response was received from a valid cross-origin request. + Certain headers and the bodymay be accessed.
  • +
  • "error": network error. No useful information describing + the error is available. The Response’s status is 0, headers are empty and + immutable. This is the type for a Response obtained from Response.error().
  • +
  • "opaque": response for “no-cors” request to cross-origin + resource. Severely

    + restricted
    +
  • +

The “error” type results in the fetch() Promise rejecting with + TypeError.

+

There are certain attributes that are useful only in a ServiceWorker scope. + The +

idiomatic way to return a Response to an intercepted request in ServiceWorkers + is:

+
+
addEventListener('fetch', function(event) {
+  event.respondWith(new Response("Response body", {
+    headers: { "Content-Type" : "text/plain" }
+  });
+});
+
+

As you can see, Response has a two argument constructor, where both arguments + are optional. The first argument is a body initializer, and the second + is a dictionary to set the status, statusText and headers.

+

The static method Response.error() simply returns an error + response. Similarly, Response.redirect(url, status) returns + a Response resulting in +

a redirect to url.

+ +

Dealing with bodies

+ +

Both Requests and Responses may contain body data. We’ve been glossing + over it because of the various data types body may contain, but we will + cover it in detail now.

+

A body is an instance of any of the following types.

+

In addition, Request and Response both offer the following methods to + extract their body. These all return a Promise that is eventually resolved + with the actual content.

+
  • arrayBuffer() +
  • +
  • blob() +
  • +
  • json() +
  • +
  • text() +
  • +
  • formData() +
  • +

This is a significant improvement over XHR in terms of ease of use of + non-text data!

+

Request bodies can be set by passing body parameters:

+
+
var form = new FormData(document.getElementById('login-form'));
+fetch("/login", {
+  method: "POST",
+  body: form
+})
+
+

Responses take the first argument as the body.

+
+
var res = new Response(new File(["chunk", "chunk"], "archive.zip",
+                       { type: "application/zip" }));
+
+

Both Request and Response (and by extension the fetch() function), + will try to intelligently determine the content type. + Request will also automatically set a “Content-Type” header if none is + set in the dictionary.

+ +

Streams and cloning

+ +

It is important to realise that Request and Response bodies can only be + read once! Both interfaces have a boolean attribute bodyUsed to + determine if it is safe to read or not.

+
+
var res = new Response("one time use");
+console.log(res.bodyUsed); // false
+res.text().then(function(v) {
+  console.log(res.bodyUsed); // true
+});
+console.log(res.bodyUsed); // true
+ 
+res.text().catch(function(e) {
+  console.log("Tried to read already consumed Response");
+});
+
+

This decision allows easing the transition to an eventual stream-based Fetch + API. The intention is to let applications consume data as it arrives, allowing + for JavaScript to deal with larger files like videos, and perform things + like compression and editing on the fly.

+

Often, you’ll want access to the body multiple times. For example, you + can use the upcoming Cache API to + store Requests and Responses for offline use, and Cache requires bodies + to be available for reading.

+

So how do you read out the body multiple times within such constraints? + The API provides a clone() method on the two interfaces. This + will return a clone of the object, with a ‘new’ body. clone() MUST + be called before the body of the corresponding object has been used. That + is, clone() first, read later.

+
+
addEventListener('fetch', function(evt) {
+  var sheep = new Response("Dolly");
+  console.log(sheep.bodyUsed); // false
+  var clone = sheep.clone();
+  console.log(clone.bodyUsed); // false
+ 
+  clone.text();
+  console.log(sheep.bodyUsed); // false
+  console.log(clone.bodyUsed); // true
+ 
+  evt.respondWith(cache.add(sheep.clone()).then(function(e) {
+    return sheep;
+  });
+});
+
+ +

Future improvements

+ +

Along with the transition to streams, Fetch will eventually have the ability + to abort running fetch()es and some way to report the progress + of a fetch. These are provided by XHR, but are a little tricky to fit in + the Promise-based nature of the Fetch API.

+

You can contribute to the evolution of this API by participating in discussions + on the WHATWG mailing list and + in the issues in the Fetch and + ServiceWorkerspecifications.

+

For a better web!

+

The author would like to thank Andrea Marchesini, Anne van Kesteren and Ben

+Kelly for helping with the specification and implementation.
+

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/source.html new file mode 100644 index 000000000..48befba5d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/source.html @@ -0,0 +1,1131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + This API is so Fetching! ✩ Mozilla Hacks – the Web developer blog + + + + + + + + + + + + + + + + + + +
+ +
+ + + + Mozilla + +
+ +
+
+ +

This API is so Fetching!

+ + +
+ + +
+
+ +
+
+

For more than a decade the Web has used XMLHttpRequest (XHR) to achieve + asynchronous requests in JavaScript. While very useful, XHR is not a very + nice API. It suffers from lack of separation of concerns. The input, output + and state are all managed by interacting with one object, and state is + tracked using events. Also, the event-based model doesn’t play well with + JavaScript’s recent focus on Promise- and generator-based asynchronous + programming.

+

The Fetch API intends + to fix most of these problems. It does this by introducing the same primitives + to JS that are used in the HTTP protocol. In addition, it introduces a + utility function fetch() that succinctly captures the intention + of retrieving a resource from the network.

+

The Fetch specification, which + defines the API, nails down the semantics of a user agent fetching a resource. + This, combined with ServiceWorkers, is an attempt to:

+
    +
  1. Improve the offline experience.
  2. +
  3. Expose the building blocks of the Web to the platform as part of the + extensible web movement.
  4. +
+

As of this writing, the Fetch API is available in Firefox 39 (currently + Nightly) and Chrome 42 (currently dev). Github has a Fetch polyfill.

+ +

Feature detection

+ +

Fetch API support can be detected by checking for Headers,Request, Response or fetch on + the window or worker scope.

+ +

Simple fetching

+ +

The most useful, high-level part of the Fetch API is the fetch() function. + In its simplest form it takes a URL and returns a promise that resolves + to the response. The response is captured as a Response object.

+
+ + + + + + +
fetch("/data.json").then(function(res) {
+  // res instanceof Response == true.
+  if (res.ok) {
+    res.json().then(function(data) {
+      console.log(data.entries);
+    });
+  } else {
+    console.log("Looks like the response wasn't perfect, got status", res.status);
+  }
+}, function(e) {
+  console.log("Fetch failed!", e);
+});
+
+
+

Submitting some parameters, it would look like this:

+
+ + + + + + +
fetch("http://www.example.org/submit.php", {
+  method: "POST",
+  headers: {
+    "Content-Type": "application/x-www-form-urlencoded"
+  },
+  body: "firstName=Nikhil&favColor=blue&password=easytoguess"
+}).then(function(res) {
+  if (res.ok) {
+    alert("Perfect! Your settings are saved.");
+  } else if (res.status == 401) {
+    alert("Oops! You are not authorized.");
+  }
+}, function(e) {
+  alert("Error submitting form!");
+});
+
+
+

The fetch() function’s arguments are the same as those passed + to the +
+Request() constructor, so you may directly pass arbitrarily + complex requests to fetch() as discussed below.

+ +

Headers

+ +

Fetch introduces 3 interfaces. These are Headers, Request and +
+Response. They map directly to the underlying HTTP concepts, + but have +
certain visibility filters in place for privacy and security reasons, + such as +
supporting CORS rules and ensuring cookies aren’t readable by third parties.

+

The Headers interface is + a simple multi-map of names to values:

+
+ + + + + + +
var content = "Hello World";
+var reqHeaders = new Headers();
+reqHeaders.append("Content-Type", "text/plain"
+reqHeaders.append("Content-Length", content.length.toString());
+reqHeaders.append("X-Custom-Header", "ProcessThisImmediately");
+
+
+

The same can be achieved by passing an array of arrays or a JS object + literal +
to the constructor:

+
+ + + + + + +
reqHeaders = new Headers({
+  "Content-Type": "text/plain",
+  "Content-Length": content.length.toString(),
+  "X-Custom-Header": "ProcessThisImmediately",
+});
+
+
+

The contents can be queried and retrieved:

+
+ + + + + + +
console.log(reqHeaders.has("Content-Type")); // true
+console.log(reqHeaders.has("Set-Cookie")); // false
+reqHeaders.set("Content-Type", "text/html");
+reqHeaders.append("X-Custom-Header", "AnotherValue");
+ 
+console.log(reqHeaders.get("Content-Length")); // 11
+console.log(reqHeaders.getAll("X-Custom-Header")); // ["ProcessThisImmediately", "AnotherValue"]
+ 
+reqHeaders.delete("X-Custom-Header");
+console.log(reqHeaders.getAll("X-Custom-Header")); // []
+
+
+

Some of these operations are only useful in ServiceWorkers, but they provide +
a much nicer API to Headers.

+

Since Headers can be sent in requests, or received in responses, and have + various limitations about what information can and should be mutable, Headers objects + have a guard property. This is not exposed to the Web, but + it affects which mutation operations are allowed on the Headers object. +
Possible values are:

+
    +
  • “none”: default.
  • +
  • “request”: guard for a Headers object obtained from a Request (Request.headers).
  • +
  • “request-no-cors”: guard for a Headers object obtained from a Request + created +
    with mode “no-cors”.
  • +
  • “response”: naturally, for Headers obtained from Response (Response.headers).
  • +
  • “immutable”: Mostly used for ServiceWorkers, renders a Headers object +
    read-only.
  • +
+

The details of how each guard affects the behaviors of the Headers object + are +
in the specification. For example, + you may not append or set a “request” guarded Headers’ “Content-Length” + header. Similarly, inserting “Set-Cookie” into a Response header is not + allowed so that ServiceWorkers may not set cookies via synthesized Responses.

+

All of the Headers methods throw TypeError if name is not a + valid HTTP Header name. The mutation operations will throw TypeError + if there is an immutable guard. Otherwise they fail silently. For example:

+
+ + + + + + +
var res = Response.error();
+try {
+  res.headers.set("Origin", "http://mybank.com");
+} catch(e) {
+  console.log("Cannot pretend to be a bank!");
+}
+
+
+ +

Request

+ +

The Request interface defines a request to fetch a resource over HTTP. + URL, method and headers are expected, but the Request also allows specifying + a body, a request mode, credentials and cache hints.

+

The simplest Request is of course, just a URL, as you may do to GET a + resource.

+
+ + + + + + +
var req = new Request("/index.html");
+console.log(req.method); // "GET"
+console.log(req.url); // "http://example.com/index.html"
+
+
+

You may also pass a Request to the Request() constructor to + create a copy. +
(This is not the same as calling the clone() method, which + is covered in +
the “Reading bodies” section.).

+
+ + + + + + +
var copy = new Request(req);
+console.log(copy.method); // "GET"
+console.log(copy.url); // "http://example.com/index.html"
+
+
+

Again, this form is probably only useful in ServiceWorkers.

+

The non-URL attributes of the Request can only be set by passing + initial +
values as a second argument to the constructor. This argument is a dictionary.

+
+ + + + + + +
var uploadReq = new Request("/uploadImage", {
+  method: "POST",
+  headers: {
+    "Content-Type": "image/png",
+  },
+  body: "image data"
+});
+
+
+

The Request’s mode is used to determine if cross-origin requests lead + to valid responses, and which properties on the response are readable. + Legal mode values are "same-origin", "no-cors" (default) + and "cors".

+

The "same-origin" mode is simple, if a request is made to another + origin with this mode set, the result is simply an error. You could use + this to ensure that +
a request is always being made to your origin.

+
+ + + + + + +
var arbitraryUrl = document.getElementById("url-input").value;
+fetch(arbitraryUrl, { mode: "same-origin" }).then(function(res) {
+  console.log("Response succeeded?", res.ok);
+}, function(e) {
+  console.log("Please enter a same-origin URL!");
+});
+
+
+

The "no-cors" mode captures what the web platform does by default + for scripts you import from CDNs, images hosted on other domains, and so + on. First, it prevents the method from being anything other than “HEAD”, + “GET” or “POST”. Second, if any ServiceWorkers intercept these requests, + they may not add or override any headers except for these. + Third, JavaScript may not access any properties of the resulting Response. + This ensures that ServiceWorkers do not affect the semantics of the Web + and prevents security and privacy issues that could arise from leaking + data across domains.

+

"cors" mode is what you’ll usually use to make known cross-origin + requests to access various APIs offered by other vendors. These are expected + to adhere to +
the CORS protocol. + Only a limited set of + headers is exposed in the Response, but the body is readable. For example, + you could get a list of Flickr’s most interesting photos + today like this:

+
+ + + + + + +
var u = new URLSearchParams();
+u.append('method', 'flickr.interestingness.getList');
+u.append('api_key', '<insert api key here>');
+u.append('format', 'json');
+u.append('nojsoncallback', '1');
+ 
+var apiCall = fetch('https://api.flickr.com/services/rest?' + u);
+ 
+apiCall.then(function(response) {
+  return response.json().then(function(json) {
+    // photo is a list of photos.
+    return json.photos.photo;
+  });
+}).then(function(photos) {
+  photos.forEach(function(photo) {
+    console.log(photo.title);
+  });
+});
+
+
+

You may not read out the “Date” header since Flickr does not allow it + via +
+Access-Control-Expose-Headers.

+
+ + + + + + +
response.headers.get("Date"); // null
+
+
+

The credentials enumeration determines if cookies for the other + domain are +
sent to cross-origin requests. This is similar to XHR’s withCredentials +
flag, but tri-valued as "omit" (default), "same-origin" and "include".

+

The Request object will also give the ability to offer caching hints to + the user-agent. This is currently undergoing some security review. + Firefox exposes the attribute, but it has no effect.

+

Requests have two read-only attributes that are relevant to ServiceWorkers +
intercepting them. There is the string referrer, which is + set by the UA to be +
the referrer of the Request. This may be an empty string. The other is +
+context which is a rather large enumeration defining + what sort of resource is being fetched. This could be “image” if the request + is from an + <img>tag in the controlled document, “worker” if it is an attempt to load a + worker script, and so on. When used with the fetch() function, + it is “fetch”.

+ +

Response

+ +

Response instances are returned by calls to fetch(). + They can also be created by JS, but this is only useful in ServiceWorkers.

+

We have already seen some attributes of Response when we looked at fetch(). + The most obvious candidates are status, an integer (default + value 200) and statusText (default value “OK”), which correspond + to the HTTP status code and reason. The ok attribute is just + a shorthand for checking that status is in the range 200-299 + inclusive.

+

headers is the Response’s Headers object, with guard “response”. + The url attribute reflects the URL of the corresponding request.

+

Response also has a type, which is “basic”, “cors”, “default”, + “error” or +
“opaque”.

+
    +
  • "basic": normal, same origin response, with all headers exposed + except +
    “Set-Cookie” and “Set-Cookie2″.
  • +
  • "cors": response was received from a valid cross-origin request. + Certain headers and the bodymay be accessed.
  • +
  • "error": network error. No useful information describing + the error is available. The Response’s status is 0, headers are empty and + immutable. This is the type for a Response obtained from Response.error().
  • +
  • "opaque": response for “no-cors” request to cross-origin + resource. Severely
    + restricted
    +
  • +
+

The “error” type results in the fetch() Promise rejecting with + TypeError.

+

There are certain attributes that are useful only in a ServiceWorker scope. + The +
idiomatic way to return a Response to an intercepted request in ServiceWorkers + is:

+
+ + + + + + +
addEventListener('fetch', function(event) {
+  event.respondWith(new Response("Response body", {
+    headers: { "Content-Type" : "text/plain" }
+  });
+});
+
+
+

As you can see, Response has a two argument constructor, where both arguments + are optional. The first argument is a body initializer, and the second + is a dictionary to set the status, statusText and headers.

+

The static method Response.error() simply returns an error + response. Similarly, Response.redirect(url, status) returns + a Response resulting in +
a redirect to url.

+ +

Dealing with bodies

+ +

Both Requests and Responses may contain body data. We’ve been glossing + over it because of the various data types body may contain, but we will + cover it in detail now.

+

A body is an instance of any of the following types.

+ +

In addition, Request and Response both offer the following methods to + extract their body. These all return a Promise that is eventually resolved + with the actual content.

+
    +
  • arrayBuffer() +
  • +
  • blob() +
  • +
  • json() +
  • +
  • text() +
  • +
  • formData() +
  • +
+

This is a significant improvement over XHR in terms of ease of use of + non-text data!

+

Request bodies can be set by passing body parameters:

+
+ + + + + + +
var form = new FormData(document.getElementById('login-form'));
+fetch("/login", {
+  method: "POST",
+  body: form
+})
+
+
+

Responses take the first argument as the body.

+
+ + + + + + +
var res = new Response(new File(["chunk", "chunk"], "archive.zip",
+                       { type: "application/zip" }));
+
+
+

Both Request and Response (and by extension the fetch() function), + will try to intelligently determine the content type. + Request will also automatically set a “Content-Type” header if none is + set in the dictionary.

+ +

Streams and cloning

+ +

It is important to realise that Request and Response bodies can only be + read once! Both interfaces have a boolean attribute bodyUsed to + determine if it is safe to read or not.

+
+ + + + + + +
var res = new Response("one time use");
+console.log(res.bodyUsed); // false
+res.text().then(function(v) {
+  console.log(res.bodyUsed); // true
+});
+console.log(res.bodyUsed); // true
+ 
+res.text().catch(function(e) {
+  console.log("Tried to read already consumed Response");
+});
+
+
+

This decision allows easing the transition to an eventual stream-based Fetch + API. The intention is to let applications consume data as it arrives, allowing + for JavaScript to deal with larger files like videos, and perform things + like compression and editing on the fly.

+

Often, you’ll want access to the body multiple times. For example, you + can use the upcoming Cache API to + store Requests and Responses for offline use, and Cache requires bodies + to be available for reading.

+

So how do you read out the body multiple times within such constraints? + The API provides a clone() method on the two interfaces. This + will return a clone of the object, with a ‘new’ body. clone() MUST + be called before the body of the corresponding object has been used. That + is, clone() first, read later.

+
+ + + + + + +
addEventListener('fetch', function(evt) {
+  var sheep = new Response("Dolly");
+  console.log(sheep.bodyUsed); // false
+  var clone = sheep.clone();
+  console.log(clone.bodyUsed); // false
+ 
+  clone.text();
+  console.log(sheep.bodyUsed); // false
+  console.log(clone.bodyUsed); // true
+ 
+  evt.respondWith(cache.add(sheep.clone()).then(function(e) {
+    return sheep;
+  });
+});
+
+
+ +

Future improvements

+ +

Along with the transition to streams, Fetch will eventually have the ability + to abort running fetch()es and some way to report the progress + of a fetch. These are provided by XHR, but are a little tricky to fit in + the Promise-based nature of the Fetch API.

+

You can contribute to the evolution of this API by participating in discussions + on the WHATWG mailing list and + in the issues in the Fetch and + ServiceWorkerspecifications.

+

For a better web!

+

The author would like to thank Andrea Marchesini, Anne van Kesteren and Ben
+Kelly for helping with the specification and implementation.
+

+ +
+
+
+
+

2 comments

+ +

Post a comment +

+
+
    +
  1. +

    + Alexander Petrov wrote on March 11th, 2015 at 02:57: + +

    +
    +

    how do you abort a fetch?

    +
    +

    Reply +

    +
      +
    1. +

      + Nikhil Marathe + + wrote on March 11th, 2015 at 08:00: + +

      +
      +

      At this point there is no way to do so. As mentioned in the future improvements + sections, there are ongoing attempts to find a nice way to plug abort() + into Promise based APIs.

      +
      +

      Reply +

      +
    2. + +
    + +
  2. + +
+
+
+
+
+ Post Your Comment + +

+

+
    +
  1. + + +
  2. +
  3. + + +
  4. +
  5. + + +
  6. +
  7. + + +
  8. +
  9. + + +
  10. +
  11. + + + +

    + +

    + +

    + +

    + +

    + +

    +
  12. +
+
+
+
+
+ +
+ +
+ +
+ +
+ + + + + + +
+ + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json new file mode 100644 index 000000000..7c31c2296 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Dublin Core property author", + "Direction": null, + "Excerpt": "Dublin Core property description", + "Image": null, + "Title": "Dublin Core property title", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected.html new file mode 100644 index 000000000..6b03dd384 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected.html @@ -0,0 +1,18 @@ +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/source.html new file mode 100644 index 000000000..c7275b3b2 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/source.html @@ -0,0 +1,45 @@ + + + + + Title Element + + + + + + + + + + + + + + + + + + + +
+

Test document title

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
+ + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json new file mode 100644 index 000000000..3a4190bfc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/fakehost.com\/image.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json new file mode 100644 index 000000000..a30d0971b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Creator Name", + "Direction": null, + "Excerpt": "Preferred description", + "Image": "http:\/\/fakehost.com\/image.jpg", + "Title": "Preferred title", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html new file mode 100644 index 000000000..6b03dd384 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html @@ -0,0 +1,18 @@ +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html new file mode 100644 index 000000000..dd9dc87b6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html @@ -0,0 +1,36 @@ + + + + + Title Element + + + + + + + + + + +
+

Test document title

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
+ + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/config.json new file mode 100644 index 000000000..0ac6816ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/config.json @@ -0,0 +1,3 @@ +{ + "ArticleByLine": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-images.json new file mode 100644 index 000000000..5a24660bb --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-images.json @@ -0,0 +1,3 @@ +[ + "https:\/\/www.aclu.org\/sites\/default\/files\/styles\/metatag_og_image_1200x630\/public\/field_share_image\/web18-facebook-socialshare-1200x628-v02.png?itok=p77cQjOm" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-metadata.json new file mode 100644 index 000000000..9b2070388 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By Daniel Kahn Gillmor, Senior Staff Technologist, ACLU Speech, Privacy, and Technology Project", + "Direction": "ltr", + "Excerpt": "I don't use Facebook. I'm not technophobic — I'm a geek. I've been using email since the early 1990s, I have accounts on hundreds of services around the net, and I do software development and internet protocol design both for work and for fun. I believe that a globe-spanning communications network like the internet can be a positive social force, and I publish much of my own work on the open web.", + "Image": "https:\/\/www.aclu.org\/sites\/default\/files\/styles\/metatag_og_image_1200x630\/public\/field_share_image\/web18-facebook-socialshare-1200x628-v02.png?itok=p77cQjOm", + "Title": "Facebook Is Tracking Me Even Though I’m Not on Facebook", + "SiteName": "American Civil Liberties Union" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected.html new file mode 100644 index 000000000..15801438e --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected.html @@ -0,0 +1,124 @@ +
+

+ I don't use Facebook. I'm not technophobic — I'm a geek. I've been using email since the early 1990s, I have accounts on hundreds of services around the net, and I do software development and internet protocol design both for work and for fun. I believe that a globe-spanning communications network like the internet can be a positive social force, and I publish much of my own work on the open web. +

+

+ But Facebook and other massive web companies represent a strong push toward unaccountable centralized social control, which I think makes our society more unequal and more unjust. The Cambridge Analytica scandal is one instance of this long-running problem with what I call the "surveillance economy." I don't want to submit to these power structures, and I don’t want my presence on such platforms to serve as bait that lures other people into the digital panopticon. +

+

+ But while I've never "opted in" to Facebook or any of the other big social networks, Facebook still has a detailed profile that can be used to target me. I've never consented to having Facebook collect my data, which can be used to draw very detailed inferences about my life, my habits, and my relationships. As we aim to take Facebook to task for its breach of user trust, we need to think about what its capabilities imply for society overall. After all, if you do #deleteFacebook, you'll find yourself in my shoes: non-consenting, but still subject to Facebook’s globe-spanning surveillance and targeting network. +

+

+ There are at least two major categories of information available to Facebook about non-participants like me: information from other Facebook users, and information from sites on the open web. +

+

+ Information from other Facebook users +

+

+ When you sign up for Facebook, it encourages you to upload your list of contacts so that the site can "find your friends." Facebook uses this contact information to learn about people, even if those people don't agree to participate. It also links people together based on who they know, even if the shared contact hasn't agreed to this use. +

+

+ For example, I received an email from Facebook that lists the people who have all invited me to join Facebook: my aunt, an old co-worker, a friend from elementary school, etc. This email includes names and email addresses — including my own name — and at least one web bug designed to identify me to Facebook’s web servers when I open the email. Facebook records this group of people as my contacts, even though I've never agreed to this kind of data collection. +

+

+ Similarly, I'm sure that I'm in some photographs that someone has uploaded to Facebook — and I'm probably tagged in some of them. I've never agreed to this, but Facebook could still be keeping track. +

+

+ So even if you decide you need to join Facebook, remember that you might be giving the company information about someone else who didn't agree to be part of its surveillance platform. +

+

+ Information from sites on the open Web +

+

+ Nearly every website that you visit that has a "Like" button is actually encouraging your browser to tell Facebook about your browsing habits. Even if you don't click on the "Like" button, displaying it requires your browser to send a request to Facebook's servers for the "Like" button itself. That request includes information mentioning the name of the page you are visiting and any Facebook-specific cookies your browser might have collected. (See Facebook's own description of this process.) This is called a "third-party request." +

+

+ This makes it possible for Facebook to create a detailed picture of your browsing history — even if you've never even visited Facebook directly, let alone signed up for a Facebook account. +

+

+ Think about most of the web pages you've visited — how many of them don't have a "Like" button? If you administer a website and you include a "Like" button on every page, you're helping Facebook to build profiles of your visitors, even those who have opted out of the social network. Facebook’s “Share” buttons on other sites — along with other tools — work a bit differently from the “Like” button, but do effectively the same thing. +

+

+ The profiles that Facebook builds on non-users don't necessarily include so-called "personally identifiable information" (PII) like names or email addresses. But they do include fairly unique patterns. Using Chromium's NetLog dumping, I performed a simple five-minute browsing test last week that included visits to various sites — but not Facebook. In that test, the PII-free data that was sent to Facebook included information about which news articles I was reading, my dietary preferences, and my hobbies. +

+

+ Given the precision of this kind of mapping and targeting, "PII" isn’t necessary to reveal my identity. How many vegans examine specifications for computer hardware from the ACLU's offices while reading about Cambridge Analytica? Anyway, if Facebook combined that information with the "web bug" from the email mentioned above — which is clearly linked to my name and e-mail address — no guesswork would be required. +

+

+ I'd be shocked if Facebook were not connecting those dots given the goals they claim for data collection: +

+
+

+ We use the information we have to improve our advertising and measurement systems so we can show you relevant ads on and off our Services and measure the effectiveness and reach of ads and services. +

+
+

+ This is, in essence, exactly what Cambridge Analytica did. +

+

+ Consent +

+

+ Facebook and other tech companies often deflect accusations against excessive data collection by arguing "consent" — that they harvest and use data with the consent of the users involved. +

+

+ But even if we accept that clicking through a "Terms of Service" that no one reads can actually constitute true consent, even if we ignore the fact that these terms are overwhelmingly one-sided and non-negotiable, and even if we accept that it's meaningful for people to give consent when sharing data about other people who may have also opted in — what is the recourse for someone who has not opted into these systems at all? +

+

+ Are those of us who have explicitly avoided agreeing to the Facebook terms of service simply fair game for an industry-wide surveillance and targeting network? +

+

+ Privilege +

+

+ I don’t mean to critique people who have created a Facebook profile or suggest they deserve whatever they get. +

+

+ My ability to avoid Facebook comes from privilege — I have existing social contacts with whom I know how to stay in touch without using Facebook's network. My job does not require that I use Facebook. I can afford the time and expense to communicate with my electoral representatives and political allies via other channels. +

+

+ Many people do not have these privileges and are compelled to "opt in" on Facebook's non-negotiable terms. +

+

+ Many journalists, organizers, schools, politicians, and others who have good reasons to oppose Facebook's centralized social control feel compelled by Facebook's reach and scale to participate in their practices, even those we know to be harmful. That includes the ACLU. +

+

+ Privacy should not be a luxury good, and while I'm happy to encourage people to opt out of these subtle and socially fraught arrangements, I do not argue that anyone who has signed up has somehow relinquished concerns about their privacy. We need to evaluate privacy concerns in their full social contexts. These are not problems that can be resolved on an individual level, because of the interpersonal nature of much of this data and the complexities of the tradeoffs involved. +

+

+ Technical countermeasures +

+

+ While they may not solve the problem, there are some technical steps people can take to limit the scope of these surveillance practices. For example, some web browsers do not send "third-party cookies" by default, or they scope cookies so that centralized surveillance doesn't get a single view of one user. The most privacy-preserving modern browser is the Tor Browser, which everyone should have installed and available, even if it's not the browser they choose to use every day. It limits the surveillance ability of systems that you have not signed up for to track you as you move around the web. +

+

+ You can also modify some browsers — for example, with plug-ins for Firefox and Chrome — so that they do not send third-party requests at all. Firefox is also exploring even more privacy-preserving techniques. +

+

+ It can’t be denied, though, that these tools are harder to use than the web browsers most people are accustomed to, and they create barriers to some online activities. (For example, logging in to some sites and accessing some web applications is impossible without third-party cookies.) +

+

+ Some website operators take their visitors' privacy more seriously than others, by reducing the amount of third-party requests. For example, it's possible to display "share on Facebook" or "Like" buttons without sending user requests to Facebook in the first place. The ACLU's own website does this because we believe that the right to read with privacy is a fundamental protection for civic discourse. +

+

+ If you are responsible for running a website, try browsing it with a third-party-blocking extension turned on. Think about how much information you're requiring your users to send to third parties as a condition for using your site. If you care about being a good steward of your visitors' data, you can re-design your website to reduce this kind of leakage. +

+

+ Opting out? +

+

+ Some advertisers claim that you can "opt out" of their targeted advertising, and even offer a centralized place meant to help you do so. However, my experience with these tools isn't a positive one. They don't appear to work all of the time. (In a recent experiment I conducted, two advertisers’ opt-out mechanisms failed to take effect.) And while advertisers claim to allow the user to opt out of "interest-based ads," it's not clear that the opt-outs govern data collection itself, rather than just the use of the collected data for displaying ads. Moreover, opting out on their terms requires the use of third-party cookies, thereby enabling another mechanism that other advertisers can then exploit. +

+

+ It's also not clear how they function over time: How frequently do I need to take these steps? Do they expire? How often should I check back to make sure I’m still opted out? I'd much prefer an approach requiring me to opt in to surveillance and targeting. +

+

+ Fix the surveillance economy, not just Facebook +

+

+ These are just a few of the mechanisms that enable online tracking. Facebook is just one culprit in this online "surveillance economy," albeit a massive one — the company owns Instagram, Atlas, WhatsApp, and dozens of other internet and technology companies and services. But it’s not the only player in this space. Google’s business model also relies on this kind of surveillance, and there are dozens of smaller players as well. +

+

+ As we work to address the fallout from the current storm around Facebook and Cambridge Analytica, we can't afford to lose sight of these larger mechanisms at play. Cambridge Analytica's failures and mistakes are inherent to Facebook's business model. We need to seriously challenge the social structures that encourage people to opt in to this kind of surveillance. At the same time, we also need to protect those of us who manage to opt out. +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/source.html new file mode 100644 index 000000000..d8e99bbb1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/source.html @@ -0,0 +1,1264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Facebook Is Tracking Me Even Though I’m Not on Facebook | American Civil Liberties Union + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+

+ Facebook Is Tracking Me Even Though I’m Not on Facebook +

+
+ + + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

+ I don't use Facebook. I'm not technophobic — I'm a geek. I've been using email since the early 1990s, I have accounts on hundreds of services around the net, and I do software development and internet protocol design both for work and for fun. I believe that a globe-spanning communications network like the internet can be a positive social force, and I publish much of my own work on the open web. +

+

+ But Facebook and other massive web companies represent a strong push toward unaccountable centralized social control, which I think makes our society more unequal and more unjust. The Cambridge Analytica scandal is one instance of this long-running problem with what I call the "surveillance economy." I don't want to submit to these power structures, and I don’t want my presence on such platforms to serve as bait that lures other people into the digital panopticon. +

+

+ But while I've never "opted in" to Facebook or any of the other big social networks, Facebook still has a detailed profile that can be used to target me. I've never consented to having Facebook collect my data, which can be used to draw very detailed inferences about my life, my habits, and my relationships. As we aim to take Facebook to task for its breach of user trust, we need to think about what its capabilities imply for society overall. After all, if you do #deleteFacebook, you'll find yourself in my shoes: non-consenting, but still subject to Facebook’s globe-spanning surveillance and targeting network. +

+

+ There are at least two major categories of information available to Facebook about non-participants like me: information from other Facebook users, and information from sites on the open web. +

+

+ Information from other Facebook users +

+

+ When you sign up for Facebook, it encourages you to upload your list of contacts so that the site can "find your friends." Facebook uses this contact information to learn about people, even if those people don't agree to participate. It also links people together based on who they know, even if the shared contact hasn't agreed to this use. +

+

+ For example, I received an email from Facebook that lists the people who have all invited me to join Facebook: my aunt, an old co-worker, a friend from elementary school, etc. This email includes names and email addresses — including my own name — and at least one web bug designed to identify me to Facebook’s web servers when I open the email. Facebook records this group of people as my contacts, even though I've never agreed to this kind of data collection. +

+

+ Similarly, I'm sure that I'm in some photographs that someone has uploaded to Facebook — and I'm probably tagged in some of them. I've never agreed to this, but Facebook could still be keeping track. +

+

+ So even if you decide you need to join Facebook, remember that you might be giving the company information about someone else who didn't agree to be part of its surveillance platform. +

+

+ Information from sites on the open Web +

+

+ Nearly every website that you visit that has a "Like" button is actually encouraging your browser to tell Facebook about your browsing habits. Even if you don't click on the "Like" button, displaying it requires your browser to send a request to Facebook's servers for the "Like" button itself. That request includes information mentioning the name of the page you are visiting and any Facebook-specific cookies your browser might have collected. (See Facebook's own description of this process.) This is called a "third-party request." +

+

+ This makes it possible for Facebook to create a detailed picture of your browsing history — even if you've never even visited Facebook directly, let alone signed up for a Facebook account. +

+

+ Think about most of the web pages you've visited — how many of them don't have a "Like" button? If you administer a website and you include a "Like" button on every page, you're helping Facebook to build profiles of your visitors, even those who have opted out of the social network. Facebook’s “Share” buttons on other sites — along with other tools — work a bit differently from the “Like” button, but do effectively the same thing. +

+

+ The profiles that Facebook builds on non-users don't necessarily include so-called "personally identifiable information" (PII) like names or email addresses. But they do include fairly unique patterns. Using Chromium's NetLog dumping, I performed a simple five-minute browsing test last week that included visits to various sites — but not Facebook. In that test, the PII-free data that was sent to Facebook included information about which news articles I was reading, my dietary preferences, and my hobbies. +

+

+ Given the precision of this kind of mapping and targeting, "PII" isn’t necessary to reveal my identity. How many vegans examine specifications for computer hardware from the ACLU's offices while reading about Cambridge Analytica? Anyway, if Facebook combined that information with the "web bug" from the email mentioned above — which is clearly linked to my name and e-mail address — no guesswork would be required. +

+

+ I'd be shocked if Facebook were not connecting those dots given the goals they claim for data collection: +

+
+

+ We use the information we have to improve our advertising and measurement systems so we can show you relevant ads on and off our Services and measure the effectiveness and reach of ads and services. +

+
+

+ This is, in essence, exactly what Cambridge Analytica did. +

+

+ Consent +

+

+ Facebook and other tech companies often deflect accusations against excessive data collection by arguing "consent" — that they harvest and use data with the consent of the users involved. +

+

+ But even if we accept that clicking through a "Terms of Service" that no one reads can actually constitute true consent, even if we ignore the fact that these terms are overwhelmingly one-sided and non-negotiable, and even if we accept that it's meaningful for people to give consent when sharing data about other people who may have also opted in — what is the recourse for someone who has not opted into these systems at all? +

+

+ Are those of us who have explicitly avoided agreeing to the Facebook terms of service simply fair game for an industry-wide surveillance and targeting network? +

+

+ Privilege +

+

+ I don’t mean to critique people who have created a Facebook profile or suggest they deserve whatever they get. +

+

+ My ability to avoid Facebook comes from privilege — I have existing social contacts with whom I know how to stay in touch without using Facebook's network. My job does not require that I use Facebook. I can afford the time and expense to communicate with my electoral representatives and political allies via other channels. +

+

+ Many people do not have these privileges and are compelled to "opt in" on Facebook's non-negotiable terms. +

+

+ Many journalists, organizers, schools, politicians, and others who have good reasons to oppose Facebook's centralized social control feel compelled by Facebook's reach and scale to participate in their practices, even those we know to be harmful. That includes the ACLU. +

+

+ Privacy should not be a luxury good, and while I'm happy to encourage people to opt out of these subtle and socially fraught arrangements, I do not argue that anyone who has signed up has somehow relinquished concerns about their privacy. We need to evaluate privacy concerns in their full social contexts. These are not problems that can be resolved on an individual level, because of the interpersonal nature of much of this data and the complexities of the tradeoffs involved. +

+

+ Technical countermeasures +

+

+ While they may not solve the problem, there are some technical steps people can take to limit the scope of these surveillance practices. For example, some web browsers do not send "third-party cookies" by default, or they scope cookies so that centralized surveillance doesn't get a single view of one user. The most privacy-preserving modern browser is the Tor Browser, which everyone should have installed and available, even if it's not the browser they choose to use every day. It limits the surveillance ability of systems that you have not signed up for to track you as you move around the web. +

+

+ You can also modify some browsers — for example, with plug-ins for Firefox and Chrome — so that they do not send third-party requests at all. Firefox is also exploring even more privacy-preserving techniques. +

+

+ It can’t be denied, though, that these tools are harder to use than the web browsers most people are accustomed to, and they create barriers to some online activities. (For example, logging in to some sites and accessing some web applications is impossible without third-party cookies.) +

+

+ Some website operators take their visitors' privacy more seriously than others, by reducing the amount of third-party requests. For example, it's possible to display "share on Facebook" or "Like" buttons without sending user requests to Facebook in the first place. The ACLU's own website does this because we believe that the right to read with privacy is a fundamental protection for civic discourse. +

+

+ If you are responsible for running a website, try browsing it with a third-party-blocking extension turned on. Think about how much information you're requiring your users to send to third parties as a condition for using your site. If you care about being a good steward of your visitors' data, you can re-design your website to reduce this kind of leakage. +

+

+ Opting out? +

+

+ Some advertisers claim that you can "opt out" of their targeted advertising, and even offer a centralized place meant to help you do so. However, my experience with these tools isn't a positive one. They don't appear to work all of the time. (In a recent experiment I conducted, two advertisers’ opt-out mechanisms failed to take effect.) And while advertisers claim to allow the user to opt out of "interest-based ads," it's not clear that the opt-outs govern data collection itself, rather than just the use of the collected data for displaying ads. Moreover, opting out on their terms requires the use of third-party cookies, thereby enabling another mechanism that other advertisers can then exploit. +

+

+ It's also not clear how they function over time: How frequently do I need to take these steps? Do they expire? How often should I check back to make sure I’m still opted out? I'd much prefer an approach requiring me to opt in to surveillance and targeting. +

+

+ Fix the surveillance economy, not just Facebook +

+

+ These are just a few of the mechanisms that enable online tracking. Facebook is just one culprit in this online "surveillance economy," albeit a massive one — the company owns Instagram, Atlas, WhatsApp, and dozens of other internet and technology companies and services. But it’s not the only player in this space. Google’s business model also relies on this kind of surveillance, and there are dozens of smaller players as well. +

+

+ As we work to address the fallout from the current storm around Facebook and Cambridge Analytica, we can't afford to lose sight of these larger mechanisms at play. Cambridge Analytica's failures and mistakes are inherent to Facebook's business model. We need to seriously challenge the social structures that encourage people to opt in to this kind of surveillance. At the same time, we also need to protect those of us who manage to opt out. +

+
+
+
+
+ View comments (27) +
+
+
+
+ Read the Terms of Use +
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+

+ Anonymous +

+
+

+ One valuable reform would be to mandate, under penalty of felony, that anyone that searches your information has to notify you - to include private investigotors screening potential employers to police officers trolling your online profile. It would be a great consumer protection. +

+

+ For example: if you lost the job offer due to your Facebook post, the employer should be required to tell you that. If you got pulled over and ticketed because you "Liked" police body cameras on FB you should know that also. +

+

+ The real danger is allowing punitive actions, in retaliation of your Free Speech to be hidden from us. If someone is spying on us, bypassing privacy filters, without a judicial warrant - we should know that. +

+
+
+
+
+ +
+
+
+
+
+

+ Lars +

+
+

+ Couldn’t I just bloc facebook in my private filer (squid filter)? +

+
+
+
+
+ +
+
+
+
+
+

+ Anonymous +

+
+

+ privacy badger is also a good plugin to mention +

+
+
+
+
+ +
+
+
+
+
+

+ Anonymous +

+
+

+ The U.S. Justice Department and U.S. Congress - more than a decade behind schedule - still haven't reconciled the "Joseph Nacchio" case. Nacchio's telecommunications company, Qwest Communications, was apparently the one and only telecommunications company that refused to participate in the felony crime of Warrantless Wire-tapping around February of 2001 (roughly 6 months BEFORE 9/11 when no wartime emergency existed)., being pressured by the Bush Administration to commit a felony under federal law. +

+

+ Congress then passed an ex post facto law - illegal under Article I of the U.S. Constitution - making those past felonies legal. Congress has no such authority under Article VI. +

+

+ Joseph Nacchio claims he was then indicted by the U.S. Department of Justice - on trumped up charges - and served a few years in federal prison. A CEO of a large American corporation was sent to prison for COMPLYING with federal wiretaping laws. The Washington Post ran a story after Nacchio was released from prison, he still claims to this day that he went to prison for not participating in Bush felony crimes. +

+

+ What is to prevent a future lawless Executive Branch from pressuring Facebook or other social media networks to also bypass Judicial Warrants? If an honest U.S. Attorney or state prosecutor started indicting the former Bush folks, it would create a powerful "deterrent effect" to lawless officials in the future. +

+
+
+
+
+ +
+
+
+
+
+

+ Anonymous +

+
+

+ There is strong circumstantial evidence that "Post 9/11 Blacklisting" of U.S. citizens is still alive and well. Maybe the most dangerous blacklisting tactic is "Employment Tampering". It basically means if you were blacklisted after 9/11, you may not be allowed to work in certain occupations. The Government essentially decides where you are allowed work, without an official hearing by judge - blacklistees are never informed of their 2nd Class status as Americans - not entitled to the same rights as other Americans. +

+

+ "Employment Tampering" by government officials/contractors - which violates Title 18 US Code 242 - is one of the hardest blacklisting tactics for federal prosecutors to police. We may even need a new federal watchdog agency to properly police this felony crime by officials. +

+

+ Maybe the most famous case, was exposed by a federal appeals court that severely reprimanded former Attorney General John Ashcroft (although he was never criminally indicted). Ashcroft grossly and fraudulently exploited the federal "Material Witness Statute" to be used as a quasi form of imprisonment and involntary servitude. The 13th Amendment makes this practice totally illegal without an official and overt constitutional due process. +

+

+ This tactic has a long history in authoritarian regimes. It was originally called "Zersetzung" and was first used in 1940's Germany during World War Two to silence dissent. During the Cold War, this tactic was adopted by then Communist East Germany. The FBI started using it in the 1950's commonly called Cointelpro tactics. Ashcroft then exploited the Material Witness Statute to be used as a Zersetzung tactic. Employment Tampering was probably the most potent tactic. +

+
+
+
+
+ +
+
+
+
+
+

+ Anonymous +

+
+

+ This was the most elightening piece on Facebook Ive seen of late. +

+

+ Hate their format, so don't use it. +

+
+
+
+
+ +
+
+
+ +
+
+
+

+ Anonymous +

+
+

+ Didn't you read the article? You might not use it, but they still know all about you, even including name, address, phone number, etc. if you are in someone's contacts. +

+

+ Ironically, by refusing to register with them as a user, you have no control at all over the collection and usage of your data and information. At least users have some little control over it. +

+
+
+
+
+ +
+
+
+
+
+
+

+ Ed B. -Netherlands +

+
+

+ Well written, well-thought article. I agree with the content. Although I hate regulation in general, it seems about time that website should be required to offer a cookie free, traceless version at all times. +

+
+
+
+
+ +
+
+
+ +
+
+
+

+ Anonymous +

+
+

+ HTTP is stateless. That means that when you click on a link to another page, the second page doesn't know that you were the person on page 1. Cookies, or some form of tracking, are needed for things like eCommerce and shopping carts. You need a cookie to associate *you* with your cart. Anything where you log in needs a cookie in order to know you are you, such as subscriptions. +

+

+ However, those cookies can easily be "session cookies". That is, cookies that don't persist after you log out or close your web browser. They exists solely for the duration of your session, and do not persist. +

+

+ Cookies are only an association mechanism. The heart of the problem is the harvesting of every click and everything on a page -- the over-collection of data to begin with. +

+
+
+
+
+ +
+
+
+
+
+
+

+ Anonymous +

+
+

+ Great article. +

+
+
+
+
+ +
+
+

+ Pages +

+
+ +
+
+
+
+
+
+ +
+
+ +
+
+
+
+

+ Stay Informed +

+
+
+ + +
+
+
+
+
+
+
+ +
+ +
+
+ + + + + +
+
+ + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/config.json new file mode 100644 index 000000000..0ac6816ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/config.json @@ -0,0 +1,3 @@ +{ + "ArticleByLine": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-images.json new file mode 100644 index 000000000..b55555167 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2015\/04\/server-crash-640x426.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-metadata.json new file mode 100644 index 000000000..0594bf203 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "by Dan Goodin - Apr 16, 2015 8:02 pm UTC", + "Direction": null, + "Excerpt": "Two-year-old bug exposes thousands of servers to crippling attack.", + "Image": "http:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2015\/04\/server-crash-640x426.jpg", + "Title": "Just-released Minecraft exploit makes it easy to crash game servers", + "SiteName": "Ars Technica" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected.html new file mode 100644 index 000000000..0aecf6e9f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected.html @@ -0,0 +1,44 @@ +
+
+

A flaw in the wildly popular online game Minecraft makes it easy for just about anyone to crash the server hosting the game, according to a computer programmer who has released proof-of-concept code that exploits the vulnerability.

+

"I thought a lot before writing this post," Pakistan-based developer Ammar Askar wrote in a blog post published Thursday, 21 months, he said, after privately reporting the bug to Minecraft developer Mojang. "On the one hand I don't want to expose thousands of servers to a major vulnerability, yet on the other hand Mojang has failed to act on it."

+

The bug resides in the networking internals of the Minecraft protocol. It allows the contents of inventory slots to be exchanged, so that, among other things, items in players' hotbars are displayed automatically after logging in. Minecraft items can also store arbitrary metadata in a file format known as Named Binary Tag (NBT), which allows complex data structures to be kept in hierarchical nests. Askar has released proof-of-concept attack code he said exploits the vulnerability to crash any server hosting the game. Here's how it works.

+
+

The vulnerability stems from the fact that the client is allowed to send the server information about certain slots. This, coupled with the NBT format’s nesting allows us to craft a packet that is incredibly complex for the server to deserialize but trivial for us to generate.

+

In my case, I chose to create lists within lists, down to five levels. This is a json representation of what it looks like.

+
rekt: {
+    list: [
+        list: [
+            list: [
+                list: [
+                    list: [
+                        list: [
+                        ]
+                        list: [
+                        ]
+                        list: [
+                        ]
+                        list: [
+                        ]
+                        ...
+                    ]
+                    ...
+                ]
+                ...
+            ]
+            ...
+        ]
+        ...
+    ]
+    ...
+}
+

The root of the object, rekt, contains 300 lists. Each list has a list with 10 sublists, and each of those sublists has 10 of their own, up until 5 levels of recursion. That’s a total of 10^5 * 300 = 30,000,000 lists.

+

And this isn’t even the theoretical maximum for this attack. Just the nbt data for this payload is 26.6 megabytes. But luckily Minecraft implements a way to compress large packets, lucky us! zlib shrinks down our evil data to a mere 39 kilobytes.

+

Note: in previous versions of Minecraft, there was no protocol wide compression for big packets. Previously, NBT was sent compressed with gzip and prefixed with a signed short of its length, which reduced our maximum payload size to 2^15 - 1. Now that the length is a varint capable of storing integers up to 2^28, our potential for attack has increased significantly.

+

When the server will decompress our data, it’ll have 27 megs in a buffer somewhere in memory, but that isn’t the bit that’ll kill it. When it attempts to parse it into NBT, it’ll create java representations of the objects meaning suddenly, the sever is having to create several million java objects including ArrayLists. This runs the server out of memory and causes tremendous CPU load.

+

This vulnerability exists on almost all previous and current Minecraft versions as of 1.8.3, the packets used as attack vectors are the 0x08: Block Placement Packet and 0x10: Creative Inventory Action.

+

The fix for this vulnerability isn’t exactly that hard, the client should never really send a data structure as complex as NBT of arbitrary size and if it must, some form of recursion and size limits should be implemented.

+

These were the fixes that I recommended to Mojang 2 years ago.

+
+

Ars is asking Mojang for comment and will update this post if company officials respond.

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/source.html new file mode 100644 index 000000000..cd6aed112 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/source.html @@ -0,0 +1,765 @@ + + + + + + + + + + + Just-released Minecraft exploit makes it easy to crash game servers | Ars Technica + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

ArsTechnica

+ + +
+
+ +

+ Risk Assessment + / + Security & Hacktivism +

+ +
+
+

Just-released Minecraft exploit makes it easy to crash game servers

+

Two-year-old bug exposes thousands of servers to crippling attack.

+ +
+
+
+
+
+ +
+
+ + +

A flaw in the wildly popular online game Minecraft makes it easy for just about anyone to crash the server hosting the game, according to a computer programmer who has released proof-of-concept code that exploits the vulnerability.

+

"I thought a lot before writing this post," Pakistan-based developer Ammar Askar wrote in a blog post published Thursday, 21 months, he said, after privately reporting the bug to Minecraft developer Mojang. "On the one hand I don't want to expose thousands of servers to a major vulnerability, yet on the other hand Mojang has failed to act on it."

+

The bug resides in the networking internals of the Minecraft protocol. It allows the contents of inventory slots to be exchanged, so that, among other things, items in players' hotbars are displayed automatically after logging in. Minecraft items can also store arbitrary metadata in a file format known as Named Binary Tag (NBT), which allows complex data structures to be kept in hierarchical nests. Askar has released proof-of-concept attack code he said exploits the vulnerability to crash any server hosting the game. Here's how it works.

+
+

The vulnerability stems from the fact that the client is allowed to send the server information about certain slots. This, coupled with the NBT format’s nesting allows us to craft a packet that is incredibly complex for the server to deserialize but trivial for us to generate.

+

In my case, I chose to create lists within lists, down to five levels. This is a json representation of what it looks like.

+
rekt: {
+    list: [
+        list: [
+            list: [
+                list: [
+                    list: [
+                        list: [
+                        ]
+                        list: [
+                        ]
+                        list: [
+                        ]
+                        list: [
+                        ]
+                        ...
+                    ]
+                    ...
+                ]
+                ...
+            ]
+            ...
+        ]
+        ...
+    ]
+    ...
+}
+

The root of the object, rekt, contains 300 lists. Each list has a list with 10 sublists, and each of those sublists has 10 of their own, up until 5 levels of recursion. That’s a total of 10^5 * 300 = 30,000,000 lists.

+

And this isn’t even the theoretical maximum for this attack. Just the nbt data for this payload is 26.6 megabytes. But luckily Minecraft implements a way to compress large packets, lucky us! zlib shrinks down our evil data to a mere 39 kilobytes.

+

Note: in previous versions of Minecraft, there was no protocol wide compression for big packets. Previously, NBT was sent compressed with gzip and prefixed with a signed short of its length, which reduced our maximum payload size to 2^15 - 1. Now that the length is a varint capable of storing integers up to 2^28, our potential for attack has increased significantly.

+

When the server will decompress our data, it’ll have 27 megs in a buffer somewhere in memory, but that isn’t the bit that’ll kill it. When it attempts to parse it into NBT, it’ll create java representations of the objects meaning suddenly, the sever is having to create several million java objects including ArrayLists. This runs the server out of memory and causes tremendous CPU load.

+

This vulnerability exists on almost all previous and current Minecraft versions as of 1.8.3, the packets used as attack vectors are the 0x08: Block Placement Packet and 0x10: Creative Inventory Action.

+

The fix for this vulnerability isn’t exactly that hard, the client should never really send a data structure as complex as NBT of arbitrary size and if it must, some form of recursion and size limits should be implemented.

+

These were the fixes that I recommended to Mojang 2 years ago.

+
+

Ars is asking Mojang for comment and will update this post if company officials respond.

+
+
+

Expand full story

+
+
+
+
+ + +
+
+

You must to comment.

+
+
+ + + + + + + + + + +
+
+
+ +

You May Also Like

+
    + +
+
+
+
+
+ + + + +
+
+
+ +

+ +

+ +
+
+ + + + + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json new file mode 100644 index 000000000..5e3fa4120 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json @@ -0,0 +1,6 @@ +{ + "0": "http:\/\/fakehost\/test\/base\/foo\/bar\/baz.png", + "2": "http:\/\/fakehost\/foo\/bar\/baz.png", + "3": "http:\/\/test\/foo\/bar\/baz.png", + "4": "https:\/\/test\/foo\/bar\/baz.png" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json new file mode 100644 index 000000000..e58519c37 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Base URL with base relative test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected.html new file mode 100644 index 000000000..14d23f672 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected.html @@ -0,0 +1,33 @@ +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+

Links

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

Images

+

+

+

+

+

+

Foo

+

+ Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/source.html new file mode 100644 index 000000000..bb0f7df01 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/source.html @@ -0,0 +1,44 @@ + + + + + + Base URL with base relative test + + +
+

Lorem

+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+

Links

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

Images

+

+

+

+

+

+

Foo

+
+ Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+
+ + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-images.json new file mode 100644 index 000000000..c4a597eea --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-images.json @@ -0,0 +1,5 @@ +{ + "0": "http:\/\/fakehost\/foo\/bar\/baz.png", + "3": "http:\/\/test\/foo\/bar\/baz.png", + "4": "https:\/\/test\/foo\/bar\/baz.png" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-metadata.json new file mode 100644 index 000000000..e7a86a752 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Base URL with base test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected.html new file mode 100644 index 000000000..5037eb265 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected.html @@ -0,0 +1,33 @@ +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+

Links

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

Images

+

+

+

+

+

+

Foo

+

+ Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/source.html new file mode 100644 index 000000000..4b3c63c8e --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/source.html @@ -0,0 +1,44 @@ + + + + + + Base URL with base test + + +
+

Lorem

+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+

Links

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

Images

+

+

+

+

+

+

Foo

+
+ Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+
+ + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-images.json new file mode 100644 index 000000000..1c28ae60c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-images.json @@ -0,0 +1,6 @@ +{ + "0": "http:\/\/fakehost\/test\/foo\/bar\/baz.png", + "2": "http:\/\/fakehost\/foo\/bar\/baz.png", + "3": "http:\/\/test\/foo\/bar\/baz.png", + "4": "https:\/\/test\/foo\/bar\/baz.png" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-metadata.json new file mode 100644 index 000000000..291ff94bc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Base URL test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected.html new file mode 100644 index 000000000..36981e1e7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected.html @@ -0,0 +1,33 @@ +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+

Links

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

Images

+

+

+

+

+

+

Foo

+

+ Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/source.html new file mode 100644 index 000000000..748b8be7d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/source.html @@ -0,0 +1,43 @@ + + + + + Base URL test + + +
+

Lorem

+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+

Links

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

link

+

Images

+

+

+

+

+

+

Foo

+
+ Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+
+ + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json new file mode 100644 index 000000000..a31ae0ba7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua.", + "Image": null, + "Title": "Basic tag cleaning test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected.html new file mode 100644 index 000000000..c66b95c70 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected.html @@ -0,0 +1,18 @@ +
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

+

Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

+ +

Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+

Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

+

Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/source.html new file mode 100644 index 000000000..d00f4cc27 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/source.html @@ -0,0 +1,36 @@ + + + + + Basic tag cleaning test + + +
+

Lorem

+
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

+

Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

+ +

Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+

Foo

+
+

Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

+ + + + +

Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+ + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-images.json new file mode 100644 index 000000000..44bca8dce --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-images.json @@ -0,0 +1,7 @@ +{ + "0": "http:\/\/ichef.bbci.co.uk\/news\/1024\/cpsprodpb\/3D8B\/production\/_84455751_84455749.jpg", + "1": "http:\/\/ichef.bbci.co.uk\/news\/555\/cpsprodpb\/462D\/production\/_84456971_gettyimages-167501087.jpg", + "2": "http:\/\/ichef.bbci.co.uk\/news\/555\/media\/images\/76020000\/jpg\/_76020974_line976.jpg", + "3": "http:\/\/ichef-1.bbci.co.uk\/news\/555\/cpsprodpb\/6D3D\/production\/_84456972_p072315al-0500.jpg", + "5": "http:\/\/ichef-1.bbci.co.uk\/news\/555\/cpsprodpb\/142FD\/production\/_84458628_shirtreuters.jpg" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-metadata.json new file mode 100644 index 000000000..6af682f84 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "President Barack Obama tells the BBC his failure to pass \"common sense gun safety laws\" is the greatest frustration of his presidency.", + "Image": "http:\/\/ichef.bbci.co.uk\/news\/1024\/cpsprodpb\/3D8B\/production\/_84455751_84455749.jpg", + "Title": "Obama admits US gun laws are his 'biggest frustration' - BBC News", + "SiteName": "BBC News" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected.html new file mode 100644 index 000000000..ca646fe80 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected.html @@ -0,0 +1,17 @@ +
+

President Barack Obama has admitted that his failure to pass "common sense gun safety laws" in the US is the greatest frustration of his presidency.

In an interview with the BBC, Mr Obama said it was "distressing" not to have made progress on the issue "even in the face of repeated mass killings".

He vowed to keep trying, but the BBC's North America editor Jon Sopel said the president did not sound very confident.

However, Mr Obama said race relations had improved during his presidency.

Hours after the interview, a gunman opened fire at a cinema in the US state of Louisiana, killing two people and injuring several others before shooting himself.

In a wide-ranging interview, President Obama also said:

Read the full transcript of his interview

Mr Obama lands in Kenya later on Friday for his first visit since becoming president.

But with just 18 months left in power, he said gun control was the area where he has been "most frustrated and most stymied" since coming to power in 2009.

"If you look at the number of Americans killed since 9/11 by terrorism, it's less than 100. If you look at the number that have been killed by gun violence, it's in the tens of thousands," Mr Obama said.

Gun control campaigners protest in McPhearson Square in Washington DC - 25 April 2013
+ The president said he would continue fighting for greater gun control laws + +

"For us not to be able to resolve that issue has been something that is distressing," he added.

Mr Obama has pushed for stricter gun control throughout his presidency but has been unable to secure any significant changes to the laws.

After nine African-American churchgoers were killed in South Carolina in June, he admitted "politics in this town" meant there were few options available.

line

Analysis: Jon Sopel, BBC News, Washington

President Barack Obama participates in an interview with Jon Sopel of BBC in the Roosevelt Room of the White House - 23 July 2015

Nine months ago, the president seemed like a spent force, after taking a beating in the midterm elections, during which members of his own party were reluctant to campaign on his record.

But the man sat before me today was relaxed and confident, buoyed by a string of "wins" on healthcare, Cuba and Iran, after bitter and ongoing battles with his many critics.

The only body swerve the president performed was when I asked him how many minds he had changed on the Iran nuclear deal after an intense sell aimed at Gulf allies and members of US Congress who remain implacably opposed.

There was a momentary flicker across the president's face as if to say "You think you got me?" before his smile returned and he proceeded to talk about how Congress would come round.

But notably, he did not give a direct answer to that question, which leaves me with the impression that he has persuaded precisely zero.

Five things we learned from Obama interview

The presidential body swerve

line

On race relations, Mr Obama said recent concerns around policing and mass incarcerations were "legitimate and deserve intense attention" but insisted progress had been made.

Children growing up during the eight years of his presidency "will have a different view of race relations in this country and what's possible," he said.

"There are going to be tensions that arise. But if you look at my daughters' generation, they have an attitude about race that's entirely different than even my generation."

Talking about how he was feeling after his recent successes, he said "every president, every leader has strengths and weaknesses".

"One of my strengths is I have a pretty even temperament. I don't get too high when it's high and I don't get too low when it's low," he said.

Customer looks at Obama shirts at a stall in Nairobi's Kibera slums, 23 July 2015
+ Kenya is getting ready to welcome the US president + +

Kenya trip

Mr Obama was speaking to the BBC at the White House before departing for Kenya.

His father was Kenyan and the president is expected to meet relatives in Nairobi.

Mr Obama has faced criticism in the country after the US legalised gay marriage. However, in his interview, the president said he would not fall silent on the issue.

"I am not a fan of discrimination and bullying of anybody on the basis of race, on the basis of religion, on the basis of sexual orientation or gender," he said.

The president also admitted that some African governments, including Kenya's, needed to improve their records on human rights and democracy. However, he defended his decision to engage with and visit those governments.

"Well, they're not ideal institutions. But what we found is, is that when we combined blunt talk with engagement, that gives us the best opportunity to influence and open up space for civil society."

Mr Obama will become the first US president to address the African Union when he travels on to Ethiopia on Sunday.

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/source.html new file mode 100644 index 000000000..876c893f6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/source.html @@ -0,0 +1,2557 @@ + + + + Obama admits US gun laws are his 'biggest frustration' - BBC News + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + +
+ + + + +
+ +
+ + + + US & Canada + + + + +
+ +
+ + + US & Canada + + + + +
+
+

Obama admits US gun laws are his 'biggest frustration'

+ + +
+
    +
  • 24 July 2015
    +
  • +
  • From the section US & Canada
  • +
  • 941 comments
  • +
+
+ +
+
Media caption Mr Obama told the BBC that gun control was his biggest frustration

President Barack Obama has admitted that his failure to pass "common sense gun safety laws" in the US is the greatest frustration of his presidency.

In an interview with the BBC, Mr Obama said it was "distressing" not to have made progress on the issue "even in the face of repeated mass killings".

He vowed to keep trying, but the BBC's North America editor Jon Sopel said the president did not sound very confident.

However, Mr Obama said race relations had improved during his presidency.

Hours after the interview, a gunman opened fire at a cinema in the US state of Louisiana, killing two people and injuring several others before shooting himself.

In a wide-ranging interview, President Obama also said:

    +
  • +The UK must stay in the EU to have influence on the world stage
  • +
  • He is confident the Iran nuclear deal will be passed by Congress
  • +
  • Syria needs a political solution in order to defeat the Islamic State group
  • +
  • He would speak "bluntly" against corruption and human rights violations in Kenya +
  • +
  • He would defend his advocacy of gay rights following protests in Kenya
  • +
  • Despite racial tensions, the US is becoming more diverse and more tolerant
  • +

Read the full transcript of his interview

Mr Obama lands in Kenya later on Friday for his first visit since becoming president.

But with just 18 months left in power, he said gun control was the area where he has been "most frustrated and most stymied" since coming to power in 2009.

"If you look at the number of Americans killed since 9/11 by terrorism, it's less than 100. If you look at the number that have been killed by gun violence, it's in the tens of thousands," Mr Obama said.

Media caption Barack Obama: "Great Britain has always been our best partner"
Gun control campaigners protest in McPhearson Square in Washington DC - 25 April 2013 +
+ + The president said he would continue fighting for greater gun control laws + +

"For us not to be able to resolve that issue has been something that is distressing," he added.

Mr Obama has pushed for stricter gun control throughout his presidency but has been unable to secure any significant changes to the laws.

After nine African-American churchgoers were killed in South Carolina in June, he admitted "politics in this town" meant there were few options available.

line

Analysis: Jon Sopel, BBC News, Washington

President Barack Obama participates in an interview with Jon Sopel of BBC in the Roosevelt Room of the White House - 23 July 2015

Nine months ago, the president seemed like a spent force, after taking a beating in the midterm elections, during which members of his own party were reluctant to campaign on his record.

But the man sat before me today was relaxed and confident, buoyed by a string of "wins" on healthcare, Cuba and Iran, after bitter and ongoing battles with his many critics.

The only body swerve the president performed was when I asked him how many minds he had changed on the Iran nuclear deal after an intense sell aimed at Gulf allies and members of US Congress who remain implacably opposed.

There was a momentary flicker across the president's face as if to say "You think you got me?" before his smile returned and he proceeded to talk about how Congress would come round.

But notably, he did not give a direct answer to that question, which leaves me with the impression that he has persuaded precisely zero.

Five things we learned from Obama interview

The presidential body swerve

line
Media caption The BBC contrasts President Obama's reactions after mass shootings, with the levels of US gun ownership during his terms in office. (Video by David Botti)

On race relations, Mr Obama said recent concerns around policing and mass incarcerations were "legitimate and deserve intense attention" but insisted progress had been made.

Children growing up during the eight years of his presidency "will have a different view of race relations in this country and what's possible," he said.

"There are going to be tensions that arise. But if you look at my daughters' generation, they have an attitude about race that's entirely different than even my generation."

Talking about how he was feeling after his recent successes, he said "every president, every leader has strengths and weaknesses".

"One of my strengths is I have a pretty even temperament. I don't get too high when it's high and I don't get too low when it's low," he said.

Customer looks at Obama shirts at a stall in Nairobi's Kibera slums, 23 July 2015 +
+ + Kenya is getting ready to welcome the US president + +

Kenya trip

Mr Obama was speaking to the BBC at the White House before departing for Kenya.

His father was Kenyan and the president is expected to meet relatives in Nairobi.

Mr Obama has faced criticism in the country after the US legalised gay marriage. However, in his interview, the president said he would not fall silent on the issue.

Media caption President Obama told the BBC he would deliver a blunt message on gay rights when he travelled to Africa

"I am not a fan of discrimination and bullying of anybody on the basis of race, on the basis of religion, on the basis of sexual orientation or gender," he said.

The president also admitted that some African governments, including Kenya's, needed to improve their records on human rights and democracy. However, he defended his decision to engage with and visit those governments.

"Well, they're not ideal institutions. But what we found is, is that when we combined blunt talk with engagement, that gives us the best opportunity to influence and open up space for civil society."

Mr Obama will become the first US president to address the African Union when he travels on to Ethiopia on Sunday.

+
+
+ + + +
+

More on this story

+ + + +
+ +

+ US & Canada + +

+
+
+ + + +
+
+ + +
+ + + + +
+ +
+ + + + +
+ + + + + + + + + + + + + + + +
Krux('scrape', { 'page_attr_description': {meta_name: 'Description'}});
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-images.json new file mode 100644 index 000000000..1b254aaf2 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-images.json @@ -0,0 +1,6 @@ +[ + "https:\/\/1.bp.blogspot.com\/-YIPC5jkXkDE\/Vy7YPSqFKWI\/AAAAAAAAAxI\/a7D6Ji2GxoUvcrwUkI4RLZcr2LFQEJCTACLcB\/w1200-h630-p-nu\/block-diagram.png", + "https:\/\/1.bp.blogspot.com\/-YIPC5jkXkDE\/Vy7YPSqFKWI\/AAAAAAAAAxI\/a7D6Ji2GxoUvcrwUkI4RLZcr2LFQEJCTACLcB\/s640\/block-diagram.png", + "https:\/\/1.bp.blogspot.com\/-k3naUT3uXao\/Vy7WFac246I\/AAAAAAAAAw8\/mePy_ostO8QJra5ZJrbP2WGhTlJ0B_r8gCLcB\/s640\/schematic-from-hell.png", + "https:\/\/2.bp.blogspot.com\/-kIekczO693g\/Vy7dBqYifXI\/AAAAAAAAAxc\/hMNJBs5bedIQOrBzzkhq4gbmhR-n58EQwCLcB\/s400\/graph-labels.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-metadata.json new file mode 100644 index 000000000..a081c8829 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "I've written a couple of posts in the past few months but they were all for the blog at work so I figured I'm long overdue for one on Silic...", + "Image": "https:\/\/1.bp.blogspot.com\/-YIPC5jkXkDE\/Vy7YPSqFKWI\/AAAAAAAAAxI\/a7D6Ji2GxoUvcrwUkI4RLZcr2LFQEJCTACLcB\/w1200-h630-p-nu\/block-diagram.png", + "Title": "Open Verilog flow for Silego GreenPak4 programmable logic devices", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected.html new file mode 100644 index 000000000..ec3a02a43 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected.html @@ -0,0 +1,57 @@ +

+ I've written a couple of posts in the past few months but they were all for the blog at work so I figured I'm long overdue for one on Silicon Exposed.

+ So what's a GreenPak?

+

Silego Technology is a fabless semiconductor company located in the SF Bay area, which makes (among other things) a line of programmable logic devices known as GreenPak. Their 5th generation parts were just announced, but I started this project before that happened so I'm still targeting the 4th generation.

GreenPak devices are kind of like itty bitty PSoCs - they have a mixed signal fabric with an ADC, DACs, comparators, voltage references, plus a digital LUT/FF fabric and some typical digital MCU peripherals like counters and oscillators (but no CPU).

It's actually an interesting architecture - FPGAs (including some devices marketed as CPLDs) are a 2D array of LUTs connected via wires to adjacent cells, and true (product term) CPLDs are a star topology of AND-OR arrays connected by a crossbar. GreenPak, on the other hand, is a star topology of LUTs, flipflops, and analog/digital hard IP connected to a crossbar.

Without further ado, here's a block diagram showing all the cool stuff you get in the SLG46620V:

+ +
+ +
SLG46620V block diagram (from device datasheet)

+ They're also tiny (the SLG46620V is a 20-pin 0.4mm pitch STQFN measuring 2x3 mm, and the lower gate count SLG46140V is a mere 1.6x2 mm) and probably the cheapest programmable logic device on the market - $0.50 in low volume and less than $0.40 in larger quantities.

The Vdd range of GreenPak4 is huge, more like what you'd expect from an MCU than an FPGA! It can run on anything from 1.8 to 5V, although performance is only specified at 1.8, 3.3, and 5V nominal voltages. There's also a dual-rail version that trades one of the GPIO pins for a second power supply pin, allowing you to interface to logic at two different voltage levels.

To support low-cost/space-constrained applications, they even have the configuration memory on die. It's one-time programmable and needs external Vpp to program (presumably Silego didn't want to waste die area on charge pumps that would only be used once) but has a SRAM programming mode for prototyping.

The best part is that the development software (GreenPak Designer) is free of charge and provided for all major operating systems including Linux! Unfortunately, the only supported design entry method is schematic entry and there's no way to write your design in a HDL.

While schematics may be fine for quick tinkering on really simple designs, they quickly get unwieldy. The nightmare of a circuit shown below is just a bunch of counters hooked up to LEDs that blink at various rates.

+ +
+ +
Schematic from hell!

+ As if this wasn't enough of a problem, the largest GreenPak4 device (the SLG46620V) is split into two halves with limited routing between them, and the GUI doesn't help the user manage this complexity at all - you have to draw your schematic in two halves and add "cross connections" between them.

The icing on the cake is that schematics are a pain to diff and collaborate on. Although GreenPak schematics are XML based, which is a touch better than binary, who wants to read a giant XML diff and try to figure out what's going on in the circuit?

This isn't going to be a post on the quirks of Silego's software, though - that would be boring. As it turns out, there's one more exciting feature of these chips that I didn't mention earlier: the configuration bitstream is 100% documented in the device datasheet! This is unheard of in the programmable logic world. As Nick of Arachnid Labs says, the chip is "just dying for someone to write a VHDL or Verilog compiler for it". As you can probably guess by from the title of this post, I've been busy doing exactly that.

+ Great! How does it work?

+

Rather than wasting time writing a synthesizer, I decided to write a GreenPak technology library for Clifford Wolf's excellent open source synthesis tool, Yosys, and then make a place-and-route tool to turn that into a final netlist. The post-PAR netlist can then be loaded into GreenPak Designer in order to program the device.

The first step of the process is to run the "synth_greenpak4" Yosys flow on the Verilog source. This runs a generic RTL synthesis pass, then some coarse-grained extraction passes to infer shift register and counter cells from behavioral logic, and finally maps the remaining logic to LUT/FF cells and outputs a JSON-formatted netlist.

Once the design has been synthesized, my tool (named, surprisingly, gp4par) is then launched on the netlist. It begins by parsing the JSON and constructing a directed graph of cell objects in memory. A second graph, containing all of the primitives in the device and the legal connections between them, is then created based on the device specified on the command line. (As of now only the SLG46620V is supported; the SLG46621V can be added fairly easily but the SLG46140V has a slightly different microarchitecture which will require a bit more work to support.)

After the graphs are generated, each node in the netlist graph is assigned a numeric label identifying the type of cell and each node in the device graph is assigned a list of legal labels: for example, an I/O buffer site is legal for an input buffer, output buffer, or bidirectional buffer.

+ +
+ +
Example labeling for a subset of the netlist and device graphs

+ The labeled nodes now need to be placed. The initial placement uses a simple greedy algorithm to create a valid (although not necessarily optimal or even routable) placement:

  1. Loop over the cells in the netlist. If any cell has a LOC constraint, which locks the cell to a specific physical site, attempt to assign the node to the specified site. If the specified node is the wrong type, doesn't exist, or is already used by another constrained node, the constraint is invalid so fail with an error.
  2. +
  3. Loop over all of the unconstrained cells in the netlist and assign them to the first unused site with the right label. If none are available, the design is too big for the device so fail with an error.
  4. +

+ Once the design is placed, the placement optimizer then loops over the design and attempts to improve it. A simulated annealing algorithm is used, where changes to the design are accepted unconditionally if they make the placement better, and with a random, gradually decreasing probability if they make it worse. The optimizer terminates when the design receives a perfect score (indicating an optimal placement) or if it stops making progress for several iterations. Each iteration does the following:

  1. Compute a score for the current design based on the number of unroutable nets, the amount of routing congestion (number of nets crossing between halves of the device), and static timing analysis (not yet implemented, always zero).
  2. +
  3. Make a list of nodes that contributed to this score in some way (having some attached nets unroutable, crossing to the other half of the device, or failing timing).
  4. +
  5. Remove nodes from the list that are LOC'd to a specific location since we're not allowed to move them.
  6. +
  7. Remove nodes from the list that have only one legal placement in the device (for example, oscillator hard IP) since there's nowhere else for them to go.
  8. +
  9. Pick a node from the remainder of the list at random. Call this our pivot.
  10. +
  11. Find a list of candidate placements for the pivot:
  12. +
    1. Consider all routable placements in the other half of the device.
    2. +
    3. If none were found, consider all routable placements anywhere in the device.
    4. +
    5. If none were found, consider all placements anywhere in the device even if they're not routable.
    6. +
  13. Pick one of the candidates at random and move the pivot to that location. If another cell in the netlist is already there, put it in the vacant site left by the pivot.
  14. +
  15. Re-compute the score for the design. If it's better, accept this change and start the next iteration.
  16. +
  17. If the score is worse, accept it with a random probability which decreases as the iteration number goes up. If the change is not accepted, restore the previous placement.
  18. +

+ After optimization, the design is checked for routability. If any edges in the netlist graph don't correspond to edges in the device graph, the user probably asked for something impossible (for example, trying to hook a flipflop's output to a comparator's reference voltage input) so fail with an error.

The design is then routed. This is quite simple due to the crossbar structure of the device. For each edge in the netlist:

  1. If dedicated (non-fabric) routing is used for this path, configure the destination's input mux appropriately and stop.
  2. +
  3. If the source and destination are in the same half of the device, configure the destination's input mux appropriately and stop.
  4. +
  5. A cross-connection must be used. Check if we already used one to bring the source signal to the other half of the device. If found, configure the destination to route from that cross-connection and stop.
  6. +
  7. Check if we have any cross-connections left going in this direction. If they're all used, the design is unroutable due to congestion so fail with an error.
  8. +
  9. Pick the next unused cross-connection and configure it to route from the source. Configure the destination to route from the cross-connection and stop.
  10. +

+ Once routing is finished, run a series of post-PAR design rule checks. These currently include the following:

+ If DRC passes with no errors, configure all of the individual cells in the netlist based on the HDL parameters. Fail with an error if an invalid configuration was requested.

Finally, generate the bitstream from all of the per-cell configuration and write it to a file.

+ Great, let's get started!

+ If you don't already have one, you'll need to buy a GreenPak4 development kit. The kit includes samples of the SLG46620V (among other devices) and a programmer/emulation board. While you're waiting for it to arrive, install GreenPak Designer.

Download and install Yosys. Although Clifford is pretty good at merging my pull requests, only my fork on Github is guaranteed to have the most up-to-date support for GreenPak devices so don't be surprised if you can't use a bleeding-edge feature with mainline Yosys.

Download and install gp4par. You can get it from the Github repository.

Write your HDL, compile with Yosys, P&R with gp4par, and import the bitstream into GreenPak Designer to program the target device. The most current gp4par manual is included in LaTeX source form in the source tree and is automatically built as part of the compile process. If you're just browsing, there's a relatively recent PDF version on my web server.

If you'd like to see the Verilog that produced the nightmare of a schematic I showed above, here it is.

Be advised that this project is still very much a work in progress and there are still a number of SLG46620V features I don't support (see the manual for exact details).

+ I love it / it segfaulted / there's a problem in the manual!

+ Hop in our IRC channel (##openfpga on Freenode) and let me know. Feedback is great, pull requests are even better,

+ You're competing with Silego's IDE. Have they found out and sued you yet?

+ Nope. They're fully aware of what I'm doing and are rolling out the red carpet for me. They love the idea of a HDL flow as an alternative to schematic entry and are pretty amazed at how fast it's coming together.

After I reported a few bugs in their datasheets they decided to skip the middleman and give me direct access to the engineer who writes their documentation so that I can get faster responses. The last time I found a problem (two different parts of the datasheet contradicted each other) an updated datasheet was in my inbox and on their website by the next day. I only wish Xilinx gave me that kind of treatment!

They've even offered me free hardware to help me add support for their latest product family, although I plan to get GreenPak4 support to a more stable state before taking them up on the offer.

+ So what's next?

+

Better testing, for starters. I have to verify functionality by hand with a DMM and oscilloscope, which is time consuming.

My contact at Silego says they're going to be giving me documentation on the SRAM emulation interface soon, so I'm going to make a hardware-in-loop test platform that connects to my desktop and the Silego ZIF socket, and lets me load new bitstreams via a scriptable interface. It'll have FPGA-based digital I/O as well as an ADC and DAC on every device pin, plus an adjustable voltage regulator for power, so I can feed in arbitrary mixed-signal test waveforms and write PC-based unit tests to verify correct behavior.

Other than that, I want to finish support for the SLG46620V in the next month or two. The SLG46621V will be an easy addition since only one pin and the relevant configuration bits have changed from the 46620 (I suspect they're the same die, just bonded out differently).

Once that's done I'll have to do some more extensive work to add the SLG46140V since the architecture is a bit different (a lot of the combinatorial logic is merged into multi-function blocks). Luckily, the 46140 has a lot in common architecturally with the GreenPak5 family, so once that's done GreenPak5 will probably be a lot easier to add support for.

My thanks go out to Clifford Wolf, whitequark, the IRC users in ##openfpga, and everyone at Silego I've worked with to help make this possible. I hope that one day this project will become mature enough that Silego will ship it as an officially supported extension to GreenPak Designer, making history by becoming the first modern programmable logic vendor to ship a fully open source synthesis and P&R suite. +

+
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/source.html new file mode 100644 index 000000000..0c23844f6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/source.html @@ -0,0 +1,2064 @@ + + + + + + + + + + + + + + + + + + + + + + Silicon Exposed: Open Verilog flow for Silego GreenPak4 programmable logic devices + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ +

Sunday, May 8, 2016

+ +
+ +
+
+ + + + +

+ Open Verilog flow for Silego GreenPak4 programmable logic devices +

+
+
+
+
+ I've written a couple of posts in the past few months but they were all for the blog at work so I figured I'm long overdue for one on Silicon Exposed.
+
+

+ So what's a GreenPak?

+
Silego Technology is a fabless semiconductor company located in the SF Bay area, which makes (among other things) a line of programmable logic devices known as GreenPak. Their 5th generation parts were just announced, but I started this project before that happened so I'm still targeting the 4th generation.
+
GreenPak devices are kind of like itty bitty PSoCs - they have a mixed signal fabric with an ADC, DACs, comparators, voltage references, plus a digital LUT/FF fabric and some typical digital MCU peripherals like counters and oscillators (but no CPU).
+
It's actually an interesting architecture - FPGAs (including some devices marketed as CPLDs) are a 2D array of LUTs connected via wires to adjacent cells, and true (product term) CPLDs are a star topology of AND-OR arrays connected by a crossbar. GreenPak, on the other hand, is a star topology of LUTs, flipflops, and analog/digital hard IP connected to a crossbar.
+
Without further ado, here's a block diagram showing all the cool stuff you get in the SLG46620V:
+
+ + + + + + + + + +
+ +
SLG46620V block diagram (from device datasheet)
+ They're also tiny (the SLG46620V is a 20-pin 0.4mm pitch STQFN measuring 2x3 mm, and the lower gate count SLG46140V is a mere 1.6x2 mm) and probably the cheapest programmable logic device on the market - $0.50 in low volume and less than $0.40 in larger quantities.
+
The Vdd range of GreenPak4 is huge, more like what you'd expect from an MCU than an FPGA! It can run on anything from 1.8 to 5V, although performance is only specified at 1.8, 3.3, and 5V nominal voltages. There's also a dual-rail version that trades one of the GPIO pins for a second power supply pin, allowing you to interface to logic at two different voltage levels.
+
To support low-cost/space-constrained applications, they even have the configuration memory on die. It's one-time programmable and needs external Vpp to program (presumably Silego didn't want to waste die area on charge pumps that would only be used once) but has a SRAM programming mode for prototyping.
+
The best part is that the development software (GreenPak Designer) is free of charge and provided for all major operating systems including Linux! Unfortunately, the only supported design entry method is schematic entry and there's no way to write your design in a HDL.
+
While schematics may be fine for quick tinkering on really simple designs, they quickly get unwieldy. The nightmare of a circuit shown below is just a bunch of counters hooked up to LEDs that blink at various rates.
+
+ + + + + + + + + +
+ +
Schematic from hell!
+ As if this wasn't enough of a problem, the largest GreenPak4 device (the SLG46620V) is split into two halves with limited routing between them, and the GUI doesn't help the user manage this complexity at all - you have to draw your schematic in two halves and add "cross connections" between them.
+
The icing on the cake is that schematics are a pain to diff and collaborate on. Although GreenPak schematics are XML based, which is a touch better than binary, who wants to read a giant XML diff and try to figure out what's going on in the circuit?
+
This isn't going to be a post on the quirks of Silego's software, though - that would be boring. As it turns out, there's one more exciting feature of these chips that I didn't mention earlier: the configuration bitstream is 100% documented in the device datasheet! This is unheard of in the programmable logic world. As Nick of Arachnid Labs says, the chip is "just dying for someone to write a VHDL or Verilog compiler for it". As you can probably guess by from the title of this post, I've been busy doing exactly that.
+
+

+ Great! How does it work?

+
Rather than wasting time writing a synthesizer, I decided to write a GreenPak technology library for Clifford Wolf's excellent open source synthesis tool, Yosys, and then make a place-and-route tool to turn that into a final netlist. The post-PAR netlist can then be loaded into GreenPak Designer in order to program the device.
+
The first step of the process is to run the "synth_greenpak4" Yosys flow on the Verilog source. This runs a generic RTL synthesis pass, then some coarse-grained extraction passes to infer shift register and counter cells from behavioral logic, and finally maps the remaining logic to LUT/FF cells and outputs a JSON-formatted netlist.
+
Once the design has been synthesized, my tool (named, surprisingly, gp4par) is then launched on the netlist. It begins by parsing the JSON and constructing a directed graph of cell objects in memory. A second graph, containing all of the primitives in the device and the legal connections between them, is then created based on the device specified on the command line. (As of now only the SLG46620V is supported; the SLG46621V can be added fairly easily but the SLG46140V has a slightly different microarchitecture which will require a bit more work to support.)
+
After the graphs are generated, each node in the netlist graph is assigned a numeric label identifying the type of cell and each node in the device graph is assigned a list of legal labels: for example, an I/O buffer site is legal for an input buffer, output buffer, or bidirectional buffer.
+
+ + + + + + + + + +
+ +
Example labeling for a subset of the netlist and device graphs
+ The labeled nodes now need to be placed. The initial placement uses a simple greedy algorithm to create a valid (although not necessarily optimal or even routable) placement:
+
    +
  1. Loop over the cells in the netlist. If any cell has a LOC constraint, which locks the cell to a specific physical site, attempt to assign the node to the specified site. If the specified node is the wrong type, doesn't exist, or is already used by another constrained node, the constraint is invalid so fail with an error.
  2. +
  3. Loop over all of the unconstrained cells in the netlist and assign them to the first unused site with the right label. If none are available, the design is too big for the device so fail with an error.
  4. +
+ Once the design is placed, the placement optimizer then loops over the design and attempts to improve it. A simulated annealing algorithm is used, where changes to the design are accepted unconditionally if they make the placement better, and with a random, gradually decreasing probability if they make it worse. The optimizer terminates when the design receives a perfect score (indicating an optimal placement) or if it stops making progress for several iterations. Each iteration does the following:
+
    +
  1. Compute a score for the current design based on the number of unroutable nets, the amount of routing congestion (number of nets crossing between halves of the device), and static timing analysis (not yet implemented, always zero).
  2. +
  3. Make a list of nodes that contributed to this score in some way (having some attached nets unroutable, crossing to the other half of the device, or failing timing).
  4. +
  5. Remove nodes from the list that are LOC'd to a specific location since we're not allowed to move them.
  6. +
  7. Remove nodes from the list that have only one legal placement in the device (for example, oscillator hard IP) since there's nowhere else for them to go.
  8. +
  9. Pick a node from the remainder of the list at random. Call this our pivot.
  10. +
  11. Find a list of candidate placements for the pivot:
  12. +
      +
    1. Consider all routable placements in the other half of the device.
    2. +
    3. If none were found, consider all routable placements anywhere in the device.
    4. +
    5. If none were found, consider all placements anywhere in the device even if they're not routable.
    6. +
    +
  13. Pick one of the candidates at random and move the pivot to that location. If another cell in the netlist is already there, put it in the vacant site left by the pivot.
  14. +
  15. Re-compute the score for the design. If it's better, accept this change and start the next iteration.
  16. +
  17. If the score is worse, accept it with a random probability which decreases as the iteration number goes up. If the change is not accepted, restore the previous placement.
  18. +
+ After optimization, the design is checked for routability. If any edges in the netlist graph don't correspond to edges in the device graph, the user probably asked for something impossible (for example, trying to hook a flipflop's output to a comparator's reference voltage input) so fail with an error.
+
The design is then routed. This is quite simple due to the crossbar structure of the device. For each edge in the netlist:
+
    +
  1. If dedicated (non-fabric) routing is used for this path, configure the destination's input mux appropriately and stop.
  2. +
  3. If the source and destination are in the same half of the device, configure the destination's input mux appropriately and stop.
  4. +
  5. A cross-connection must be used. Check if we already used one to bring the source signal to the other half of the device. If found, configure the destination to route from that cross-connection and stop.
  6. +
  7. Check if we have any cross-connections left going in this direction. If they're all used, the design is unroutable due to congestion so fail with an error.
  8. +
  9. Pick the next unused cross-connection and configure it to route from the source. Configure the destination to route from the cross-connection and stop.
  10. +
+ Once routing is finished, run a series of post-PAR design rule checks. These currently include the following:
+
    +
  • If any node has no loads, generate a warning
  • +
  • If an I/O buffer is connected to analog hard IP, fail with an error if it's not configured in analog mode.
  • +
  • Some signals (such as comparator inputs and oscillator power-down controls) are generated by a shared mux and fed to many loads. If different loads require conflicting settings for the shared mux, fail with an error.
  • +
+ If DRC passes with no errors, configure all of the individual cells in the netlist based on the HDL parameters. Fail with an error if an invalid configuration was requested.
+
Finally, generate the bitstream from all of the per-cell configuration and write it to a file.
+
+

+ Great, let's get started!

+ If you don't already have one, you'll need to buy a GreenPak4 development kit. The kit includes samples of the SLG46620V (among other devices) and a programmer/emulation board. While you're waiting for it to arrive, install GreenPak Designer.
+
Download and install Yosys. Although Clifford is pretty good at merging my pull requests, only my fork on Github is guaranteed to have the most up-to-date support for GreenPak devices so don't be surprised if you can't use a bleeding-edge feature with mainline Yosys.
+
Download and install gp4par. You can get it from the Github repository.
+
Write your HDL, compile with Yosys, P&R with gp4par, and import the bitstream into GreenPak Designer to program the target device. The most current gp4par manual is included in LaTeX source form in the source tree and is automatically built as part of the compile process. If you're just browsing, there's a relatively recent PDF version on my web server.
+
If you'd like to see the Verilog that produced the nightmare of a schematic I showed above, here it is.
+
Be advised that this project is still very much a work in progress and there are still a number of SLG46620V features I don't support (see the manual for exact details).
+
+

+ I love it / it segfaulted / there's a problem in the manual!

+ Hop in our IRC channel (##openfpga on Freenode) and let me know. Feedback is great, pull requests are even better,
+
+

+ You're competing with Silego's IDE. Have they found out and sued you yet?

+ Nope. They're fully aware of what I'm doing and are rolling out the red carpet for me. They love the idea of a HDL flow as an alternative to schematic entry and are pretty amazed at how fast it's coming together.
+
After I reported a few bugs in their datasheets they decided to skip the middleman and give me direct access to the engineer who writes their documentation so that I can get faster responses. The last time I found a problem (two different parts of the datasheet contradicted each other) an updated datasheet was in my inbox and on their website by the next day. I only wish Xilinx gave me that kind of treatment!
+
They've even offered me free hardware to help me add support for their latest product family, although I plan to get GreenPak4 support to a more stable state before taking them up on the offer.
+
+

+ So what's next?

+
Better testing, for starters. I have to verify functionality by hand with a DMM and oscilloscope, which is time consuming.
+
My contact at Silego says they're going to be giving me documentation on the SRAM emulation interface soon, so I'm going to make a hardware-in-loop test platform that connects to my desktop and the Silego ZIF socket, and lets me load new bitstreams via a scriptable interface. It'll have FPGA-based digital I/O as well as an ADC and DAC on every device pin, plus an adjustable voltage regulator for power, so I can feed in arbitrary mixed-signal test waveforms and write PC-based unit tests to verify correct behavior.
+
Other than that, I want to finish support for the SLG46620V in the next month or two. The SLG46621V will be an easy addition since only one pin and the relevant configuration bits have changed from the 46620 (I suspect they're the same die, just bonded out differently).
+
Once that's done I'll have to do some more extensive work to add the SLG46140V since the architecture is a bit different (a lot of the combinatorial logic is merged into multi-function blocks). Luckily, the 46140 has a lot in common architecturally with the GreenPak5 family, so once that's done GreenPak5 will probably be a lot easier to add support for.
+
My thanks go out to Clifford Wolf, whitequark, the IRC users in ##openfpga, and everyone at Silego I've worked with to help make this possible. I hope that one day this project will become mature enough that Silego will ship it as an officially supported extension to GreenPak Designer, making history by becoming the first modern programmable logic vendor to ship a fully open source synthesis and P&R suite. +
+
+ +
+
+ +

No comments:

+
+
+
+
+
+ +

Post a Comment

+

+

+ + + + +
+

+ +
+
+ +
+
+ +
+
+ +Older Post + + Home +
+
+
+ +
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+ + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/config.json new file mode 100644 index 000000000..0ac6816ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/config.json @@ -0,0 +1,3 @@ +{ + "ArticleByLine": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-images.json new file mode 100644 index 000000000..77ab1dbc1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-images.json @@ -0,0 +1,4 @@ +[ + "http:\/\/media.breitbart.com\/media\/2016\/11\/GettyImages-621866810.jpg", + "http:\/\/media.breitbart.com\/media\/2016\/11\/GettyImages-621866810-640x480.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-metadata.json new file mode 100644 index 000000000..f04451323 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "by Lucas Nolan22 Dec 2016651", + "Direction": null, + "Excerpt": "Snopes fact checker and staff writer David Emery posted to Twitter asking if there were “any un-angry Trump supporters?”", + "Image": "http:\/\/media.breitbart.com\/media\/2016\/11\/GettyImages-621866810.jpg", + "Title": "'Neutral' Snopes Fact-Checker David Emery: 'Are There Any Un-Angry Trump Supporters?' - Breitbart", + "SiteName": "Breitbart" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected.html new file mode 100644 index 000000000..e2f04c74b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected.html @@ -0,0 +1,41 @@ +
+ + +

Supporters of Republican presidential nominee Donald Trump cheer during election night at the New York Hilton Midtown in New York on November 9, 2016.  / AFP / JIM WATSON        (Photo credit should read JIM WATSON/AFP/Getty Images)

JIM WATSON/AFP/Getty Images

+
+
+ +
+

SIGN UP FOR OUR NEWSLETTER

+ +
+

Snopes fact checker and staff writer David Emery posted to Twitter asking if there were “any un-angry Trump supporters?”

+

Emery, a writer for partisan “fact-checking” website Snopes.com which soon will be in charge of labelling “fake news” alongside ABC News and Politifact, retweeted an article by Vulture magazine relating to the protests of the Hamilton musical following the decision by the cast of the show to make a public announcement to Vice-president elect Mike Pence while he watched the performance with his family.

+
+

SIGN UP FOR OUR NEWSLETTER

+ +
+

The tweet from Vulture magazine reads, “#Hamilton Chicago show interrupted by angry Trump supporter.” Emery retweeted the story, saying, “Are there un-angry Trump supporters?”

+ + + + + + +

This isn’t the first time the Snopes.com writer has expressed anti-Trump sentiment on his Twitter page. In another tweet in which Emery links to an article that falsely attributes a quote to President-elect Trump, Emery states, “Incredibly, some people actually think they have to put words in Trump’s mouth to make him look bad.”

+ + +

Emery also retweeted an article by New York magazine that claimed President-elect Trump relied on lies to win during his campaign and that we now lived in a “post-truth” society. “Before long we’ll all have forgotten what it was like to live in the same universe; or maybe we already have,” Emery tweeted.

+ + + + + + +

Facebook believe that Emery, along with other Snopes writers, ABC News, and Politifact are impartial enough to label and silence what they believe to be “fake news” on social media.

+

Lucas Nolan is a reporter for Breitbart Tech covering issues of free speech and online censorship. Follow him on Twitter @LucasNolan_ or email him at lnolan@breitbart.com

+ + + + +
\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/source.html new file mode 100644 index 000000000..61ae0aa91 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/source.html @@ -0,0 +1,19848 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 'Neutral' Snopes Fact-Checker David Emery: 'Are There Any Un-Angry Trump Supporters?' - Breitbart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + Skip to content +
+
+
+
report this ad
+ +
+
+
+ + +
+
+
+
+
+ +
+
+ +
+
+ + + + +
+
+
+ + +
+
+
+ +
+ SHOP NOW > + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+

'Neutral' Snopes Fact-Checker David Emery: 'Are There Any Un-Angry Trump Supporters?'

+
+
+ +
+ +
+
+
+
+ +
+ +
+ + +
+
+
+ +
+

SIGN UP FOR OUR NEWSLETTER

+
+ +
+
+
    +
  • +
+
+
+
+
+

Snopes fact checker and staff writer David Emery posted to Twitter asking if there were “any un-angry Trump supporters?”

+

Emery, a writer for partisan “fact-checking” website Snopes.com which soon will be in charge of labelling “fake news” alongside ABC News and Politifact, retweeted an article by Vulture magazine relating to the protests of the Hamilton musical following the decision by the cast of the show to make a public announcement to Vice-president elect Mike Pence while he watched the performance with his family.

+
+

SIGN UP FOR OUR NEWSLETTER

+
+ +
+
+
    +
  • +
+
+
+
+
+

The tweet from Vulture magazine reads, “#Hamilton Chicago show interrupted by angry Trump supporter.” Emery retweeted the story, saying, “Are there un-angry Trump supporters?”

+ +

+ +

+ +
+
+
+ + +

This isn’t the first time the Snopes.com writer has expressed anti-Trump sentiment on his Twitter page. In another tweet in which Emery links to an article that falsely attributes a quote to President-elect Trump, Emery states, “Incredibly, some people actually think they have to put words in Trump’s mouth to make him look bad.”

+ +

+ +

+

Emery also retweeted an article by New York magazine that claimed President-elect Trump relied on lies to win during his campaign and that we now lived in a “post-truth” society. “Before long we’ll all have forgotten what it was like to live in the same universe; or maybe we already have,” Emery tweeted.

+ +
+
+
+ + + +

+ +

+

Facebook believe that Emery, along with other Snopes writers, ABC News, and Politifact are impartial enough to label and silence what they believe to be “fake news” on social media.

+

Lucas Nolan is a reporter for Breitbart Tech covering issues of free speech and online censorship. Follow him on Twitter @LucasNolan_ or email him at lnolan@breitbart.com

+ +
+
+
+ + +
+ +
+ +
report this ad
+ +
+ +
Trending Articles
+
+ + +
+

Gloria Steinem: Woman Felt ‘Sexually Assaulted’ by Trump’s…

+

Monday on MSNBC’s “All In,” discussing Saturday’s women’s march on Washington, feminist and…

+ +
+
+
+
+ + + + +
+
+
+ + + +
+
+ +
+
+ +
+ +
+
Around The Web Powered By ZergNet
+ +
+ +
+ + +
+


Comment count on this article reflects comments made on Breitbart.com and Facebook. Visit Breitbart's Facebook Page.

+
+ +
+ + + + +
+ + +
+
+ +
+ + +
+ + + + + + + + + + + +
+ +
+ + + + + + +
+
+
+
+
+
+
+
+ + + + + + + + + +
+
AddThis Sharing
+
+
­ + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-images.json new file mode 100644 index 000000000..7da4a8f99 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-images.json @@ -0,0 +1,9 @@ +[ + "https:\/\/static.independent.co.uk\/s3fs-public\/thumbnails\/image\/2015\/12\/06\/10\/bed-hotel-room.jpg", + "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2014\/03\/18\/10\/bandb2.jpg", + "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2015\/05\/26\/11\/hotel-door-getty.jpg", + "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2013\/07\/31\/15\/luggage-3.jpg", + "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2015\/04\/13\/11\/Lifestyle-hotels.jpg", + "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2014\/03\/13\/16\/agenda7.jpg", + "http:\/\/fakehost\/sites\/all\/themes\/ines_themes\/independent_theme\/img\/reuse.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-metadata.json new file mode 100644 index 000000000..b2b0d8659 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Hazel Sheffield", + "Direction": null, + "Excerpt": "Most people go to hotels for the pleasure of sleeping in a giant bed with clean white sheets and waking up to fresh towels in the morning. But those towels and sheets might not be as clean as they look, according to the hotel bosses that responded to an online thread about the things hotel owners don’t want you to know.", + "Image": "https:\/\/static.independent.co.uk\/s3fs-public\/thumbnails\/image\/2015\/12\/06\/10\/bed-hotel-room.jpg", + "Title": "Seven secrets that hotel owners don't want you to know", + "SiteName": "The Independent" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected.html new file mode 100644 index 000000000..c281eef90 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected.html @@ -0,0 +1,136 @@ +
+

Most people go to hotels for the pleasure of sleeping in a giant bed with clean white sheets and waking up to fresh towels in the morning.

+ +

But those towels and sheets might not be as clean as they look, according to the hotel bosses that responded to an online thread about the things hotel owners don’t want you to know.

+ +

Zeev Sharon and Michael Forrest Jones both run hotel start-ups in the US. Forrest Jones runs the start-up Beechmont Hotels Corporation, a hotel operating company that consults with hotel owners on how they can improve their business. Sharon is the CEO of Hotelied, a start-up that allows people to sign up for discounts at luxury hotels.

+ +

But even luxury hotels aren’t always cleaned as often as they should be.

+ +

Here are some of the secrets that the receptionist will never tell you when you check in, according to answers posted on Quora.

+ + + +
+
+ +

bandb2.jpg

+ +
+
+

Even posh hotels might not wash a blanket in between stays +

+
+
+ +

1. Take any blankets or duvets off the bed

+ +

Forrest Jones said that anything that comes into contact with any of the previous guest’s skin should be taken out and washed every time the room is made, but that even the fanciest hotels don’t always do so. "Hotels are getting away from comforters. Blankets are here to stay, however. But some hotels are still hesitant about washing them every day if they think they can get out of it," he said.

+ +
+ +

Video shows bed bug infestation at New York hotel

+
+ + + +
+
+ +

hotel-door-getty.jpg

+ +
+
+

Forrest Jones advised stuffing the peep hole with a strip of rolled up notepaper when not in use. +

+
+
+ +

2. Check the peep hole has not been tampered with

+ +

This is not common, but can happen, Forrest Jones said. He advised stuffing the peep hole with a strip of rolled up notepaper when not in use. When someone knocks on the door, the paper can be removed to check who is there. If no one is visible, he recommends calling the front desk immediately. “I look forward to the day when I can tell you to choose only hotels where every employee who has access to guestroom keys is subjected to a complete public records background check, prior to hire, and every year or two thereafter. But for now, I can't,” he said.

+ + + +
+
+ +

luggage-3.jpg

+ +
+ +
+ +

3. Don’t use a wooden luggage rack

+ +

Bedbugs love wood. Even though a wooden luggage rack might look nicer and more expensive than a metal one, it’s a breeding ground for bugs. Forrest Jones says guests should put the items they plan to take from bags on other pieces of furniture and leave the bag on the floor.

+ + + +
+
+ +

Lifestyle-hotels.jpg

+ +
+
+

The old rule of thumb is that for every 00 invested in a room, the hotel should charge in average daily rate +

+
+
+ +

4. Hotel rooms are priced according to how expensive they were to build

+ +

Zeev Sharon said that the old rule of thumb is that for every $1000 invested in a room, the hotel should charge $1 in average daily rate. So a room that cost $300,000 to build, should sell on average for $300/night.

+ + + +

5. Beware the wall-mounted hairdryer

+ +

It contains the most germs of anything in the room. Other studies have said the TV remote and bedside lamp switches are the most unhygienic. “Perhaps because it's something that's easy for the housekeepers to forget to check or to squirt down with disinfectant,” Forrest Jones said.

+ + + +
+
+ +
+ +

Business news in pictures

+ +
+ + + +
+
+ +

6. Mini bars almost always lose money

+ +

Despite the snacks in the minibar seeming like the most overpriced food you have ever seen, hotel owners are still struggling to make a profit from those snacks. "Minibars almost always lose money, even when they charge $10 for a Diet Coke,” Sharon said.

+ + + +
+
+ +

agenda7.jpg

+ +
+
+

Towels should always be cleaned between stays +

+
+
+ +

7. Always made sure the hand towels are clean when you arrive

+ +

Forrest Jones made a discovery when he was helping out with the housekeepers. “You know where you almost always find a hand towel in any recently-vacated hotel room that was occupied by a guy? On the floor, next to the bed, about halfway down, maybe a little toward the foot of the bed. Same spot in the floor, next to almost every bed occupied by a man, in every room. I'll leave the rest to your imagination,” he said.

+ +

Reuse content +

\ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/source.html new file mode 100644 index 000000000..08840dc24 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/source.html @@ -0,0 +1,40907 @@ + + + + + + + + + The seven secrets that hotel owners don't want you to know | The Independent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
    + +
  1. + + +
  2. + +
  3. + +
  4. +
+ + +
+
+
+
+
+
+
+
+ +
+
+ + +
+ +
+ + + +
+ + + +
+ + +

The seven secrets that hotel owners don't want you to know

+ + +
+

Hotel bosses spill the beans on cost cutting and horrible hygiene

+
+ +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + +
+
+
+
+
+
+ + + + + + + + +
+
+
+
+
+
+ + + + + + + + +
+
+
+
+
+
+ + + + + + + + +
+
+
+
+
+ + + + + + + +
+
+ + + + + + + + +
+
+
+ +
+
+
+
+
+
+ + + + + + + +
+
+
+

Most people go to hotels for the pleasure of sleeping in a giant bed with clean white sheets and waking up to fresh towels in the morning.

+ +

But those towels and sheets might not be as clean as they look, according to the hotel bosses that responded to an online thread about the things hotel owners don’t want you to know.

+ +

Zeev Sharon and Michael Forrest Jones both run hotel start-ups in the US. Forrest Jones runs the start-up Beechmont Hotels Corporation, a hotel operating company that consults with hotel owners on how they can improve their business. Sharon is the CEO of Hotelied, a start-up that allows people to sign up for discounts at luxury hotels.

+ +

But even luxury hotels aren’t always cleaned as often as they should be.

+ +

Here are some of the secrets that the receptionist will never tell you when you check in, according to answers posted on Quora.

+ +

+ +
+
+ +
bandb2.jpg
+ +
+
+ Even posh hotels might not wash a blanket in between stays + +
+
+ +

1. Take any blankets or duvets off the bed

+ +

Forrest Jones said that anything that comes into contact with any of the previous guest’s skin should be taken out and washed every time the room is made, but that even the fanciest hotels don’t always do so. "Hotels are getting away from comforters. Blankets are here to stay, however. But some hotels are still hesitant about washing them every day if they think they can get out of it," he said.

+ +
+
+ +
+ +
+
+
+
+
+
+
+
+
Play Video
+
+
Play
+
+
+
+
+
+
+
+
Mute
+
+
Current Time 0:00
+
+
+
/
+
+
+
Duration Time 0:00
+
+
+
+
Loaded: 0% +
+
+
Progress: 0% +
+
+
+
+
Stream TypeLIVE
+
+
+
Remaining Time -0:00
+
+
+
Share
+ + + + + + +
Fullscreen
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + + +
+ +
+ + + + + +
+ +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+
+ + +
+
+ + +
+ +
+ +
+ +
+
Video shows bed bug infestation at New York hotel
+
+ +

+ +
+
+ +
hotel-door-getty.jpg
+ +
+
+ Forrest Jones advised stuffing the peep hole with a strip of rolled up notepaper when not in use. + +
+
+ +

2. Check the peep hole has not been tampered with

+ +

This is not common, but can happen, Forrest Jones said. He advised stuffing the peep hole with a strip of rolled up notepaper when not in use. When someone knocks on the door, the paper can be removed to check who is there. If no one is visible, he recommends calling the front desk immediately. “I look forward to the day when I can tell you to choose only hotels where every employee who has access to guestroom keys is subjected to a complete public records background check, prior to hire, and every year or two thereafter. But for now, I can't,” he said.

+ +

+ +
+
+ +
luggage-3.jpg
+ +
+
+ Put luggage on the floor + +
+
+ +

3. Don’t use a wooden luggage rack

+ +

Bedbugs love wood. Even though a wooden luggage rack might look nicer and more expensive than a metal one, it’s a breeding ground for bugs. Forrest Jones says guests should put the items they plan to take from bags on other pieces of furniture and leave the bag on the floor.

+ +

+ +
+
+ +
Lifestyle-hotels.jpg
+ +
+
+ The old rule of thumb is that for every 00 invested in a room, the hotel should charge in average daily rate + +
+
+ +

4. Hotel rooms are priced according to how expensive they were to build

+ +

Zeev Sharon said that the old rule of thumb is that for every $1000 invested in a room, the hotel should charge $1 in average daily rate. So a room that cost $300,000 to build, should sell on average for $300/night.

+ + + +

5. Beware the wall-mounted hairdryer

+ +

It contains the most germs of anything in the room. Other studies have said the TV remote and bedside lamp switches are the most unhygienic. “Perhaps because it's something that's easy for the housekeepers to forget to check or to squirt down with disinfectant,” Forrest Jones said.

+ +

+ + + +

6. Mini bars almost always lose money

+ +

Despite the snacks in the minibar seeming like the most overpriced food you have ever seen, hotel owners are still struggling to make a profit from those snacks. "Minibars almost always lose money, even when they charge $10 for a Diet Coke,” Sharon said.

+ +

+ +
+
+ +
agenda7.jpg
+ +
+
+ Towels should always be cleaned between stays + +
+
+ +

7. Always made sure the hand towels are clean when you arrive

+ +

Forrest Jones made a discovery when he was helping out with the housekeepers. “You know where you almost always find a hand towel in any recently-vacated hotel room that was occupied by a guy? On the floor, next to the bed, about halfway down, maybe a little toward the foot of the bed. Same spot in the floor, next to almost every bed occupied by a man, in every room. I'll leave the rest to your imagination,” he said.

+ + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + +
+
+
+
+
+
+ + + + + + + + +
+
+
+
+
+
+ + + + + + + + +
+
+
+
+
+
+ + + + + + + + +
+
+
+
+
+ + + + + + + +
+
+ + + + + + + + +
+
+
+ +
+
+
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+

Comments

+
+
+
+
+ +
+ +
+
+
+ + + +
+
+
+
+ +
+
    +
    +

    +
    +
    + +
    +
    +
    +
    +
    0 Comments
    +
    + +
    +
    +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    + + + + +
    + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-images.json new file mode 100644 index 000000000..f44cbe4a1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-images.json @@ -0,0 +1,5 @@ +[ + "http:\/\/s3-static-ak.buzzfed.com\/static\/2015-04\/22\/5\/campaign_images\/webdr03\/student-dies-after-diet-pills-she-bought-online-b-2-28712-1429696299-24_dblbig.jpg", + "http:\/\/ak-hdl.buzzfed.com\/static\/2015-04\/21\/5\/enhanced\/webdr12\/grid-cell-2501-1429608056-15.jpg", + "http:\/\/ak-hdl.buzzfed.com\/static\/2015-04\/21\/5\/enhanced\/webdr12\/grid-cell-2501-1429608057-18.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json new file mode 100644 index 000000000..c332ef4f0 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "An inquest into Eloise Parry's death has been adjourned until July.", + "Image": "http:\/\/s3-static-ak.buzzfed.com\/static\/2015-04\/22\/5\/campaign_images\/webdr03\/student-dies-after-diet-pills-she-bought-online-b-2-28712-1429696299-24_dblbig.jpg", + "Title": "Student Dies After Diet Pills She Bought Online \"Burned Her Up From Within\"", + "SiteName": "BuzzFeed" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected.html new file mode 100644 index 000000000..46a3f3212 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected.html @@ -0,0 +1,42 @@ +
    +
    +

    The mother of a woman who took suspected diet pills bought online has described how her daughter was “literally burning up from within” moments before her death.

    + +

    West Merica Police

    +
    +
    +

    Eloise Parry, 21, was taken to Royal Shrewsbury hospital on 12 April after taking a lethal dose of highly toxic “slimming tablets”.

    +

    “The drug was in her system, there was no anti-dote, two tablets was a lethal dose – and she had taken eight,” her mother, Fiona, said in a statement yesterday.

    +

    “As Eloise deteriorated, the staff in A&E did all they could to stabilise her. As the drug kicked in and started to make her metabolism soar, they attempted to cool her down, but they were fighting an uphill battle.

    +

    “She was literally burning up from within.”

    +

    She added: “They never stood a chance of saving her. She burned and crashed.”

    +
    +
    +
    +
    +
    +

    +
    +

    Facebook

    +
    +
    +
    +

    +
    +

    Facebook

    +
    + +
    +
    +
    +

    West Mercia police said the tablets were believed to contain dinitrophenol, known as DNP, which is a highly toxic industrial chemical.

    +

    “We are undoubtedly concerned over the origin and sale of these pills and are working with partner agencies to establish where they were bought from and how they were advertised,” said chief inspector Jennifer Mattinson from the West Mercia police.

    +

    The Food Standards Agency warned people to stay away from slimming products that contained DNP.

    +

    “We advise the public not to take any tablets or powders containing DNP, as it is an industrial chemical and not fit for human consumption,” it said in a statement.

    +
    +
    +

    Fiona Parry issued a plea for people to stay away from pills containing the chemical.

    +

    “[Eloise] just never really understood how dangerous the tablets that she took were,” she said. “Most of us don’t believe that a slimming tablet could possibly kill us.

    +

    “DNP is not a miracle slimming pill. It is a deadly toxin.”

    +
    +
    \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/source.html new file mode 100644 index 000000000..f51556a34 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/source.html @@ -0,0 +1,5294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Student Dies After Diet Pills She Bought Online "Burned Her Up From Within" - BuzzFeed News + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    + +
    +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + + +
    Sponsorisé
    +
    + + + + + + + + + +
    +
    + + + + + + + + + + +
    + + +
    + + + +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    + +

    Student Dies After Diet Pills She Bought Online “Burned Her Up From Within”

    +

    + An inquest into Eloise Parry’s death has been adjourned until July. +

    + +
    +
    + +
    +
    +
    + +
    + + +
    +
    +
    +
    +

    The mother of a woman who took suspected diet pills bought online has described how her daughter was “literally burning up from within” moments before her death.

    + +

    West Merica Police

    +
    +
    +

    Eloise Parry, 21, was taken to Royal Shrewsbury hospital on 12 April after taking a lethal dose of highly toxic “slimming tablets”.

    +

    “The drug was in her system, there was no anti-dote, two tablets was a lethal dose – and she had taken eight,” her mother, Fiona, said in a statement yesterday.

    +

    “As Eloise deteriorated, the staff in A&E did all they could to stabilise her. As the drug kicked in and started to make her metabolism soar, they attempted to cool her down, but they were fighting an uphill battle.

    +

    “She was literally burning up from within.”

    +

    She added: “They never stood a chance of saving her. She burned and crashed.”

    +
    +
    +
    +
    +
    + +
    + + + +
    +
    +
    +

    Facebook

    +
    +
    +
    +
    + +
    + + + +
    +
    +
    +

    Facebook

    +
    +
    +
    +
    +
    +
    +
    +

    West Mercia police said the tablets were believed to contain dinitrophenol, known as DNP, which is a highly toxic industrial chemical.

    +

    “We are undoubtedly concerned over the origin and sale of these pills and are working with partner agencies to establish where they were bought from and how they were advertised,” said chief inspector Jennifer Mattinson from the West Mercia police.

    +

    The Food Standards Agency warned people to stay away from slimming products that contained DNP.

    +

    “We advise the public not to take any tablets or powders containing DNP, as it is an industrial chemical and not fit for human consumption,” it said in a statement.

    +
    +
    +

    Fiona Parry issued a plea for people to stay away from pills containing the chemical.

    +
    +

    “[Eloise] just never really understood how dangerous the tablets that she took were,” she said. “Most of us don’t believe that a slimming tablet could possibly kill us.

    +

    “DNP is not a miracle slimming pill. It is a deadly toxin.”

    +
    +
    +

    Check out more articles on BuzzFeed.com!

    +
    +
    +
    Mark di Stefano is a breaking news reporter for BuzzFeed News and is based in Sydney, Australia.
    +
    + Contact Mark Di Stefano at mark.distefano@buzzfeed.com +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    + More + +
    +
    +
    +
    +
     
    + + + + + +
    +
    + + + +
    + +
     
    + +
    +
    +
    + + + + + + +
    +
    +

    + + Connect With + + + + + News + + +

    + + +
    +
    + + + +
    +
    + More News +
    +
    +
    +
      + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + + +
    + +
    +
    + Le buzz du moment +
    +
    +
    +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
      +
      +
      +
      +
      +
      + +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + +
      +
      + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-images.json new file mode 100644 index 000000000..c9eb0acac --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/fakehost\/img\/cha\/placeholders\/placeholder_1000x750.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-metadata.json new file mode 100644 index 000000000..363110945 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "par Alexandria Sage et Lisa Girion", + "Image": "http:\/\/fakehost\/img\/cha\/placeholders\/placeholder_1000x750.jpg", + "Title": "Les motivations du tueur de Las Vegas demeurent floues", + "SiteName": "Challenges" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected.html new file mode 100644 index 000000000..195bdd271 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected.html @@ -0,0 +1,35 @@ +
      +

      par Alexandria Sage et Lisa Girion

      +

      LAS VEGAS, Nevada (Reuters) - La police américaine peinait mardi à établir les motivations qui ont poussé un retraité de 64 ans à tirer sur la foule depuis une chambre d'hôtel de Las Vegas, faisant 59 morts et 527 blessés dans la plus meurtrière fusillade de l'histoire des Etats-Unis.

      +

      Le tireur, qui s'est donné la mort peu avant l'arrivée de police, a été identifié comme Stephen Paddock, un individu apparemment sans histoire, inconnu des services de police et vivant dans un lotissement en périphérie de la ville. Le seul fait notable le concernant était une infraction au code de la route.

      +

      Paddock n'avait pas de passé militaire et n'était pas fiché pour d'éventuels troubles psychologiques, des comportements antisociaux ou l'expression d'opinions politiques et religieuses extrémistes sur les réseaux sociaux.

      +

      L'homme, qui était semble-t-il un pratiquant assidu des jeux de hasards, avait amassé 42 armes à feu et s'est servi de certaines d'entre elles pour tirer depuis la fenêtre de sa chambre, au 32e étage de l'hôtel Mandalay Bay, sur une foule de 22.000 personnes qui assistaient à un concert de country dimanche soir.

      +

      Vingt-trois armes ont été retrouvées dans sa chambre du Mandalay Bay, dont des fusils d'assaut et des armes altérées pour opérer de manière automatique. Un stock de nitrate d'ammonium, un engrais susceptible d'être utilisé dans l'élaboration d'explosifs, a été retrouvé dans sa voiture.

      +

      "C'était un homme malade, un type dément", a déclaré Donald Trump devant la presse, sans fournir de précisions. "Beaucoup de problèmes, j'imagine. On examine son cas de manière très attentive parce qu'on a affaire à un individu très très malade", a ajouté le président américain.

      +

      Interrogé sur un éventuel lien entre le meurtrier et une organisation terroriste, Donald Trump n'a pas répondu. La police estime, en l'état de l'enquête, que l'homme a agi seul.

      +

      "On n'a aucune idée de la nature de ses croyances religieuses", a déclaré Joseph Lombardo, shérif du comté de Clark. "On ne peut pas comprendre ce qui se passe dans la tête d'un psychopathe", a-t-il ajouté.

      + +

      PISTE D'UN INDIVIDU ISOLE

      +

      Le groupe djihadiste Etat islamique a revendiqué l'attaque dans un communiqué qui affirme que le suspect s'était récemment converti à l'islam, mais un responsable américain s'est dit très sceptique sur cette revendication et a évoqué des "antécédents psychiatriques".

      +

      Aucun lien avec une organisation terroriste internationale n'a été établi pour le moment, a indiqué de son côté le FBI, tandis que la CIA a invité à la prudence.

      +

      Si la piste d'un individu isolé semble s'imposer, les enquêteurs souhaitent entendre la petite amie de Stephen Paddock avec laquelle il vivait, Marilou Danley, actuellement en voyage à l'étranger, sans doute au Japon.

      +

      La police s'intéresse également "à d'autres individus" qui seraient impliqués dans la vente des armes que possédait Stephen Paddock.

      +

      Le massacre commis dimanche soir est le plus meurtrier de l'histoire des Etats-Unis, dépassant celui perpétré par un homme lié à l'EI l'an passé dans une boîte de nuit homosexuelle d'Orlando en Floride. L'assaillant avait tué 49 personnes.

      +

      Stephen Paddock ne présentait aucune des caractéristiques habituelles de ce genre de tueur de masse, qui sont le plus souvent des hommes jeunes en proie à des troubles psychologiques, disent les experts.

      +

      L'homme a mené une existence paisible, occupant des emplois de concierge et d'employé de l'industrie aéronautique et ayant résidé dans plusieurs régions du sud-est et de l'ouest des Etats-Unis.

      +

      Il s'était installé, il y a quelques années, dans un lotissement pour retraités du Nevada, à environ une heure de voiture de Las Vegas où il pouvait s'adonner à sa passion pour le jeu et pour les casinos.

      +

      Dix-neuf armes, des explosifs et quantité de munitions y ont été retrouvés, a annoncé lundi soir le shérif du comté.

      + +

      PAS L'HEURE D'UN DÉBAT SUR LES ARMES

      +

      Un mandat a été émis pour fouiller une seconde maison située à Reno, une ville du Nevada à plus de 600 km au nord-ouest de Las Vegas, a annoncé lundi soir l'adjoint au shérif Todd Fasulo.

      +

      A Mesquite, l'armurier local Chris Sullivan a confirmé dans un communiqué que Paddock comptait parmi ses clients et qu'il avait passé toutes les "vérifications et procédures" nécessaires à l'achat d'armes à feu.

      +

      Contacté par Reuters, le frère de l'assaillant présumé, Eric Paddock, s'est dit "horrifié" et a présenté ses condoléances aux victimes. Son frère n'appartenait à aucun mouvement religieux ou politique, a-t-il ajouté, précisant qu'il n'avait pas à sa connaissance d'antécédents psychiatriques.

      +

      Le père des deux hommes avait commis plusieurs braquages de banque et a un temps fait partie des fugitifs les plus recherchés par le FBI.

      +

      Depuis sa maison d'Orlando, en Floride, devant laquelle se sont pressés des journalistes, Eric Paddock a décrit en outre son frère comme un "type riche" qui aimait jouer au poker en ligne, partir en croisière et qui coulait une retraite "paisible" dans le Nevada après des années passées en Floride.

      +

      Cette nouvelle tuerie a ranimé le débat sur le contrôle des armes à feu aux Etats-Unis, une mesure contre laquelle le président Trump s'était fermement opposé lors de la campagne présidentielle l'an passé.

      +

      "Nous discuterons d'une loi sur les armes en temps voulu", a commenté l'ancien homme d'affaires devant des journalistes à la Maison blanche. La présidence avait indiqué dès lundi que le débat sur ce sujet était, selon elle, "prématuré", répondant ainsi aux demandes d'élus démocrates.

      + +

      (Avec Jonathan Allen, Chris Michaud et Frank McGurty à New York, Susan Cornwell et Mark Hosenball à Washington, Ali Abdelaty au Caire, Tangi Salaün, Julie Carriat et Pierre Sérisier pour le service français)

      + + +
      \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/source.html new file mode 100644 index 000000000..b6f0267e8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/source.html @@ -0,0 +1,1744 @@ + + + + + Les motivations du tueur de Las Vegas demeurent floues - Challenges.fr + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      +
      +
      +
      +
      + + +
      +
      +
      +
      + +
      + + + +
      +
      +
      +
      + +
      +
      +
      + + +
      + + + +
      + +
      + + + +
      +
      +
      +
      + + +
      + + + +
      + + + + + + + + + + + + + + + + + +
      +
      + + + 50 Masters + + + 500 FORTUNES 2017 + + + TOP 30 des Global MBA + + + Les clés de demain + + + Revolution@work + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + +
      + +
      + +
      +
      + + + +
      + + + + +
      + +
      + + +
      + + + + + + + +
      + + + + + + + +
      + + + + +
      + + + + Monde + + + + + +
      + + + + + + + +

      Les motivations du tueur de Las Vegas demeurent floues

      + + +
      + +
      + + + + + +
      + +
      + + + + + + + + +

      + + + +
      + + 0 réactions + + +
      + + + + + + +
      + + + + + +
      + + 0 réactions + + +
      + + + + + + + + +
      + + + + + + +
      +

      par Alexandria Sage et Lisa Girion

      +

      LAS VEGAS, Nevada (Reuters) - La police américaine peinait mardi à établir les motivations qui ont poussé un retraité de 64 ans à tirer sur la foule depuis une chambre d'hôtel de Las Vegas, faisant 59 morts et 527 blessés dans la plus meurtrière fusillade de l'histoire des Etats-Unis.

      +

      Le tireur, qui s'est donné la mort peu avant l'arrivée de police, a été identifié comme Stephen Paddock, un individu apparemment sans histoire, inconnu des services de police et vivant dans un lotissement en périphérie de la ville. Le seul fait notable le concernant était une infraction au code de la route.

      +

      Paddock n'avait pas de passé militaire et n'était pas fiché pour d'éventuels troubles psychologiques, des comportements antisociaux ou l'expression d'opinions politiques et religieuses extrémistes sur les réseaux sociaux.

      +

      L'homme, qui était semble-t-il un pratiquant assidu des jeux de hasards, avait amassé 42 armes à feu et s'est servi de certaines d'entre elles pour tirer depuis la fenêtre de sa chambre, au 32e étage de l'hôtel Mandalay Bay, sur une foule de 22.000 personnes qui assistaient à un concert de country dimanche soir.

      +

      Vingt-trois armes ont été retrouvées dans sa chambre du Mandalay Bay, dont des fusils d'assaut et des armes altérées pour opérer de manière automatique. Un stock de nitrate d'ammonium, un engrais susceptible d'être utilisé dans l'élaboration d'explosifs, a été retrouvé dans sa voiture.

      +

      "C'était un homme malade, un type dément", a déclaré Donald Trump devant la presse, sans fournir de précisions. "Beaucoup de problèmes, j'imagine. On examine son cas de manière très attentive parce qu'on a affaire à un individu très très malade", a ajouté le président américain.

      +

      Interrogé sur un éventuel lien entre le meurtrier et une organisation terroriste, Donald Trump n'a pas répondu. La police estime, en l'état de l'enquête, que l'homme a agi seul.

      +

      "On n'a aucune idée de la nature de ses croyances religieuses", a déclaré Joseph Lombardo, shérif du comté de Clark. "On ne peut pas comprendre ce qui se passe dans la tête d'un psychopathe", a-t-il ajouté.

      +

      +

      PISTE D'UN INDIVIDU ISOLE

      +

      Le groupe djihadiste Etat islamique a revendiqué l'attaque dans un communiqué qui affirme que le suspect s'était récemment converti à l'islam, mais un responsable américain s'est dit très sceptique sur cette revendication et a évoqué des "antécédents psychiatriques".

      +

      Aucun lien avec une organisation terroriste internationale n'a été établi pour le moment, a indiqué de son côté le FBI, tandis que la CIA a invité à la prudence.

      +

      Si la piste d'un individu isolé semble s'imposer, les enquêteurs souhaitent entendre la petite amie de Stephen Paddock avec laquelle il vivait, Marilou Danley, actuellement en voyage à l'étranger, sans doute au Japon.

      +

      La police s'intéresse également "à d'autres individus" qui seraient impliqués dans la vente des armes que possédait Stephen Paddock.

      +

      Le massacre commis dimanche soir est le plus meurtrier de l'histoire des Etats-Unis, dépassant celui perpétré par un homme lié à l'EI l'an passé dans une boîte de nuit homosexuelle d'Orlando en Floride. L'assaillant avait tué 49 personnes.

      +

      Stephen Paddock ne présentait aucune des caractéristiques habituelles de ce genre de tueur de masse, qui sont le plus souvent des hommes jeunes en proie à des troubles psychologiques, disent les experts.

      +

      L'homme a mené une existence paisible, occupant des emplois de concierge et d'employé de l'industrie aéronautique et ayant résidé dans plusieurs régions du sud-est et de l'ouest des Etats-Unis.

      +

      Il s'était installé, il y a quelques années, dans un lotissement pour retraités du Nevada, à environ une heure de voiture de Las Vegas où il pouvait s'adonner à sa passion pour le jeu et pour les casinos.

      +

      Dix-neuf armes, des explosifs et quantité de munitions y ont été retrouvés, a annoncé lundi soir le shérif du comté.

      +

      +

      PAS L'HEURE D'UN DÉBAT SUR LES ARMES

      +

      Un mandat a été émis pour fouiller une seconde maison située à Reno, une ville du Nevada à plus de 600 km au nord-ouest de Las Vegas, a annoncé lundi soir l'adjoint au shérif Todd Fasulo.

      +

      A Mesquite, l'armurier local Chris Sullivan a confirmé dans un communiqué que Paddock comptait parmi ses clients et qu'il avait passé toutes les "vérifications et procédures" nécessaires à l'achat d'armes à feu.

      +

      Contacté par Reuters, le frère de l'assaillant présumé, Eric Paddock, s'est dit "horrifié" et a présenté ses condoléances aux victimes. Son frère n'appartenait à aucun mouvement religieux ou politique, a-t-il ajouté, précisant qu'il n'avait pas à sa connaissance d'antécédents psychiatriques.

      +

      Le père des deux hommes avait commis plusieurs braquages de banque et a un temps fait partie des fugitifs les plus recherchés par le FBI.

      +

      Depuis sa maison d'Orlando, en Floride, devant laquelle se sont pressés des journalistes, Eric Paddock a décrit en outre son frère comme un "type riche" qui aimait jouer au poker en ligne, partir en croisière et qui coulait une retraite "paisible" dans le Nevada après des années passées en Floride.

      +

      Cette nouvelle tuerie a ranimé le débat sur le contrôle des armes à feu aux Etats-Unis, une mesure contre laquelle le président Trump s'était fermement opposé lors de la campagne présidentielle l'an passé.

      +

      "Nous discuterons d'une loi sur les armes en temps voulu", a commenté l'ancien homme d'affaires devant des journalistes à la Maison blanche. La présidence avait indiqué dès lundi que le débat sur ce sujet était, selon elle, "prématuré", répondant ainsi aux demandes d'élus démocrates.

      +

      +

      (Avec Jonathan Allen, Chris Michaud et Frank McGurty à New York, Susan Cornwell et Mark Hosenball à Washington, Ali Abdelaty au Caire, Tangi Salaün, Julie Carriat et Pierre Sérisier pour le service français)

      + + +
      + + + + + + + 0 réactions + + + + + + + + + + + 0 réactions + + + + +
      + + + + + + + + + + +
      + + + + + +
      + + + +
      + + + + +
      + + + + + +
      + + 0 réactions + + + + Pour réagir, veuillez vous connecter en cliquant ici + + +
        + + + + +
        + + + +
        + + + + +
        + + +
        + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        +
        + + + + + + + + + + + + + + +
        + à la une cette semaine + +
        + + + + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + +
        + Galeries Photo +
        +
        + + + + +
        +
        +
        +
        + + Aston Martin Vantage + +
        +
        +
        +
        + En images : Aston Martin Vantage +
        + + +
        + Les dernières galeries photo + + + +
        + +
        +
        +
        + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + +
        + Vidéos + +
        +
        + + +
        +
        +
        +
        + + Esclavage en Libye: Macron parle de &quot;crime contre l'Humanité&quot; + +
        +
        +
        +
        +

        Esclavage en Libye: Macron parle de "crime contre l'Humanité"

        +
        +
        + Dernières vidéos + + + +
        +
        +
        + +
        + + + + + + + + + + + + + +
        + + + Notre rubrique Monde + + + +
        + + + + + + + + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-images.json new file mode 100644 index 000000000..be86a5838 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/fakehost\/test\/hmhome.gif " +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-metadata.json new file mode 100644 index 000000000..c5166f58c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Ere introducing the scrivener, as he first appeared to me, it is fit \n I make some mention of myself, my employees, my business, my chambers, \n and general surroundings; because some such description is indispensable \n to an adequate understanding of the chief character about to be presented.", + "Image": null, + "Title": "Bartleby the Scrivener Web Study Text", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected.html new file mode 100644 index 000000000..8c1b8b121 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected.html @@ -0,0 +1,1386 @@ +
        +
        +

        Study Webtext

        +

        "Bartleby the Scrivener: A Story of Wall-Street " (1853) 

        + Herman Melville

        +

        To the story text without notes
        +

        +

        Prepared by Ann + Woodlief, Virginia Commonwealth University

        +
        Click on text in red for hypertext notes and questions
        + I + am a rather elderly man. The nature of my avocations + for the last thirty years has brought me into more than ordinary contact + with what would seem an interesting and somewhat singular set of men of whom as yet + nothing that I know of has ever been written:-- I mean the law-copyists + or scriveners. + I have known very many of them, professionally and privately, and if I + pleased, could relate divers histories, at which good-natured gentlemen + might smile, and sentimental souls might weep. But I waive the biographies + of all other scriveners for a few passages + in the life of Bartleby, who was a scrivener the strangest + I ever saw or heard of. While of other law-copyists I might write the + complete life, of Bartleby nothing of that sort can be done. I believe that + no materials exist for a full and satisfactory biography of this man. It is an irreparable loss to literature. Bartleby + was one of those beings of whom nothing is ascertainable, except from + the original sources, and in his case those are very small. What my own + astonished eyes saw of Bartleby, that is all I know of him, except, indeed, + one vague report which will appear in the sequel. +

        Ere introducing the scrivener, as he first appeared to me, it is fit + I make some mention of myself, my employees, my business, my chambers, + and general surroundings; because some such description is indispensable + to an adequate understanding of the chief character about to be presented. +

        Imprimis: I am a man who, from his youth upwards, has been + filled with a profound conviction that the easiest way of life is the best.. Hence, though I belong to a profession + proverbially energetic and nervous, even to turbulence, at times, yet + nothing of that sort have I ever suffered to invade + my peace. I am one of those unambitious lawyers who never addresses + a jury, or in any way draws down public applause; but in the cool tranquillity + of a snug retreat, do a snug business among rich men's bonds and mortgages and title-deeds. The late John Jacob Astor, a personage little given to poetic enthusiasm, had + no hesitation in pronouncing my first + grand point to be prudence; my next, method. I do not speak + it in vanity, but simply record the fact, that I was not + unemployed in my profession by the last John Jacob Astor; a name which, + I admit, I love to repeat, for it hath a rounded and orbicular sound to + it, and rings + like unto bullion. I will freely add, that I was not + insensible to the late John Jacob Astor's good opinion.

        +

        Some time prior to the period at which this little history begins, my + avocations had been largely increased. The good old office, now + extinct in the State of New York, of a Master in Chancery, + had been conferred upon me. It was not a very arduous office, but very + pleasantly remunerative. I + seldom lose my temper; much more seldom indulge in dangerous + indignation at wrongs and outrages; but I must be permitted to be rash + here and declare, that I consider the sudden and violent abrogation of + the office of Master of Chancery, by the new Constitution, as a----premature + act; inasmuch as I had counted upon a life-lease of the + profits, whereas I only received those of a few short years. But this is + by the way.

        +

        My chambers were up stairs at No.--Wall-street. At one end they looked + upon the white wall of the interior of a spacious sky-light shaft, penetrating + the building from top to bottom. This view might have been considered rather + tame than otherwise, deficient + in what landscape painters call "life." But if so, the view + from the other end of my chambers offered, at least, a contrast, if nothing + more. In that direction my windows commanded an unobstructed view of a + lofty brick wall,black by age and everlasting shade; which wall required + no spy-glass to bring out its lurking beauties, but for the benefit of + all near-sighted spectators, was pushed up to within ten feet of my window + panes. Owing to the great height of the surrounding buildings, and my chambers + being on the second floor, the interval between this wall and mine not + a little resembled a huge square cistern.

        +

        At the period just preceding the advent of Bartleby, I had two persons + as copyists in my employment, and a promising lad as an office-boy. First, + Turkey; second, Nippers; third, Ginger Nut.These may seem names, the like + of which are not usually found in the Directory. In truth they were nicknames, mutually conferred upon + each other by my three clerks, and were deemed expressive of their respective + persons or characters. Turkey was a short, pursy Englishman of about my + own age, that is, somewhere not far from sixty. In the morning, one might + say, his face was of a fine florid hue, but after twelve o'clock, meridian-- + his dinner hour-- it blazed like a grate full of Christmas coals; + and continued blazing--but, as it were, with a gradual wane--till 6 o'clock, + P.M. or thereabouts, after which I saw no more of the proprietor of the + face, which gaining its meridian with the sun, seemed to set with it, to + rise, culminate, and decline the following day, with the like regularity + and undiminished glory. There are many singular coincidences I have known + in the course of my life, not the least among which was the fact that exactly + when Turkey displayed his fullest beams from his red and radiant countenance, + just then, too, at the critical moment, began the daily period when I considered + his business capacities as seriously disturbed for the remainder of the + twenty-four hours. Not that he was absolutely idle, or averse to business + then; far from it. The difficulty was, he was apt to be altogether too + energetic. There was a strange, inflamed, flurried, flighty + recklessness of activity about him. He would be incautious in dipping his + pen into his inkstand. All his blots upon my documents, were dropped there + after twelve o'clock, meridian. Indeed, not only would he be reckless and + sadly given to making blots in the afternoon, but some days he went further, + and was rather noisy. At such times, too, his face + flamed with augmented blazonry, as if cannel + coal had been heaped on anthracite. He made an unpleasant + racket with his chair; spilled his sand-box; in mending his pens, impatiently + split them all to pieces, and threw them on the floor in a sudden passion; + stood up and leaned over his table, boxing his papers about in a most + indecorous manner, very sad to behold in an elderly manlike him. Nevertheless, + as he was in many ways a most valuable person to me, and all the time before + twelve o'clock, meridian, was the quickest, steadiest creature too, accomplishing + a great deal of work in a style not easy to be matched--for these reasons, + I was willingto overlook his eccentricities, though indeed, occasionally, + I remonstrated with him. I did this very gently, however, because, though + the civilest, nay, the blandest and most reverential of men in the morning, + yet in the afternoon he was disposed, upon provocation, to be slightly + rash with his tongue, in fact, insolent. Now, valuing his morning services + as I did, and resolved not to lose them; yet, at the same time made uncomfortable + by his inflamed ways after twelve o'clock; and being a man + of peace, unwilling by my admonitions to call forth unseemingly + retorts from him; I took upon me, one Saturday noon (he was always worse + on Saturdays), to hint to him, very kindly, that perhaps now that he was + growing old, it might be well to abridge his labors; in short, he need + not come to my chambers after twelve o'clock, but, dinner over, had best + go home to his lodgings and rest himself till tea-time. But no; he insisted + upon his afternoon devotions. His countenance became + intolerably fervid, as he oratorically assured me--gesticulating with a + long ruler at the other end of the room--that if his services in the morning + were useful, how indispensible, then, in the afternoon?

        +

        "With + submission, sir," said Turkey on this occasion, "I consider + myself your right-hand man. In the morning I but marshal and deploy my + columns; but in the afternoon I + put myself at their head, and gallantly charge the foe, + thus!"--and he made a violent + thrust with the ruler.

        +

        "But the blots, Turkey," intimated I.

        +

        "True,--but, with submission, sir, behold these hairs! I am getting old. + Surely, sir, a blot or two of a warm afternoon is not the page--is honorable. + With submission, sir, we both are getting old."

        +

        This + appeal to my fellow-feeling was hardly to be resisted. At + all events, I saw that go he would not. So I made up my mind to let him + stay, resolving, nevertheless, to see to it, that during the afternoon + he had to do with my less important papers.

        +

        Nippers, the second on my list, was a whiskered, sallow, and, upon the + whole, rather piratical-looking young man of about + five and twenty. I always deemed him the victim of two evil powers-- ambition + and indigestion. The ambition was evinced by a certain impatience of the + duties of a mere + copyist, an unwarrantable usurpation of strictly profession + affairs, such as the original + drawing up of legal documents. The indigestion seemed betokened + in an occasional nervous testiness and grinning irritability, causing the + teeth to audibly grind together over mistakes committed in copying; unnecessary + maledictions, hissed, rather than spoken, in the heat of business; and + especially by a continual + discontent with the height of the table where he worked. + Though of a very ingenious mechanical turn, Nippers could never get this + table to suit him. He put chips under it, blocks of various sorts, bits + of pasteboard, and at last went so far as to attempt an exquisite adjustment + by final pieces of folded blotting-paper. But no invention would answer. + If, for the sake of easing his back, he brought the table lid at a sharp + angle well up towards his chin, and wrote there like a man using the steep + roof of a Dutch house for his desk:--then he declared that it stopped the + circulation in his arms. If now he lowered the table to his waistbands, + and stooped over it in writing, then there was a sore aching in his back. + In short, the truth of the matter was, Nippers knew not what he wanted. + Or, if + he wanted anything, it was to be rid of a scrivener's table + altogether. Among the manifestations of his diseased ambition was a fondness + he had for receiving visits from certain ambiguous-looking fellows in seedy + coats, whom he called his clients. Indeed I was aware that not only was + he, at times, considerable of a ward-politician, but he occasionally did + a little businessat the Justices' courts, and was not unknown on the + steps of the Tombs. I have good reason to believe, however, that one individual + who called upon him at my chambers, and who, with a grand air, he insisted + was his client, was no other than a dun, and the alleged title-deed, a + bill. But with all his failings, and the annoyances he caused me, Nippers, + like his compatriot Turkey, was a very useful + man to me; wrote a neat, swift hand; and, when he chose, + was not deficient in a gentlemanly sort of deportment. Added to this, he + always dressedin a gentlemanly sort of way; and so, incidentally, + reflected credit upon my chambers. Whereas with respect to Turkey, I had + much ado to keep him from being a reproach to me. His clothes were apt + to look oily and smell of eating-houses. He wore his pantaloons very loose + and baggy in summer. His coats were execrable; his hat not to be handled. + But while the hat was a thing of indifference to + me, inasmuch as his natural civility and deference, as a dependent Englishman, + always led him to doff it the moment he entered the room, yet his coat + was another matter. Concerning his coats, I reasoned with him; but with + no effect. The truth was, I suppose, that a man with so small an income, + could not afford to sport such a lustrous face and a lustrous coat at one + and the same time. As Nippers once observed, Turkey's money went chiefly + for red ink. One winter day + I presented Turkey with a highly-respectable looking coat + of my own, a padded gray coat, of a most comfortable warmth, and which + buttoned straight up from the knee to the neck. I thought Turkey would + appreciate the favor, and abate his rashness and obstreperousness of afternoons. + But no. I verily believe that buttoning himself up in so downy and blanket-like + a coat had a pernicious effect upon him; upon the same principle that too + much oats are bad for horses. In fact, precisely as a rash, restive horse + is said to feel his oats, so Turkey felt his coat. It made + him insolent. He was a man whom prosperity harmed.

        +

        Though concerning the self-indulgent habits of Turkey I had my own private + surmises, yet touching Nippers I was well persuaded that whatever might + be his faults in other respects, he was, at least, a temperate young man. + But indeed, nature herself seemed to have been his vintner, and at his birth charged + him so thoroughly with an irritable, brandy-like disposition, that all + subsequent potations were needless. When I consider how, amid the stillness + of my chambers, Nippers would sometimes impatiently rise from his seat, + and stooping over his table, spread his arms wide apart, seize the whole + desk, and move it, and jerk it, with a grim, grinding motion on the floor, + as if the table were a perverse + voluntary agent, intent on thwarting and vexing him; I plainly + perceive that for Nippers, brandy and water were altogether superfluous.

        +

        It was fortunate for me that, owing to its course--indigestion--the irritability + and consequent nervousness of Nippers, were mainly observable in the morning, + while in the afternoon he was comparatively mild. So that Turkey's paroxysms + only coming on about twelve o'clock, I never had to do with their eccentricities + at one time. Their fits relieved each other like guards. When Nippers' + was on, Turkey's was off, and vice versa. This was a good + natural arrangement under the circumstances.

        +

        Ginger Nut, the third on my list, was a lad some twelve years old. His + father was a carman, ambitious of seeing his son on the bench instead of + a cart, before he died. So he sent him to my office as a student at law, + errand boy, and cleaner and sweeper, at the rate of one dollar a week. + He had a little desk to himself, but he did not use it much. Upon inspection, + the drawer exhibited a great array of the shells of various sorts of nuts. + Indeed, to this quick-witted youth the whole noble science of the law was + contained in a nut-shell. Not the least among the employments of Ginger + Nut, as well as one which he discharged with the most alacrity, was his + duty as cake and apple purveyor for Turkey and Nippers. Copying law papers + being proverbially a dry, + husky sort of business, my two scriveners were fain to moisten + their mouths very often with Spitzenbergs to be had at the numerous stalls + nigh the Custom House and Post Office. Also, they sent Ginger Nut very + frequently for that peculiar cake--small, flat, round, and very spicy--after + which he had been named by them. Of a cold morning when business was but + dull, Turkey would gobble up scores of these cakes, as if they were mere + wafers--indeed they sell them at the rate of six or eight for a penny--the + scrape of his pen blending with the crunching of the crisp particles in + his mouth. Of all the fiery afternoon blunders and flurried rashnesses + of Turkey, was his once moistening a ginger-cake between his lips, and + clapping it on to a mortgage for a seal. I + came within an ace of dismissing him then. But he mollified + me by making an oriental bow, and saying--"With submission, sir, it was + generous of me to + find you in stationery on my own account."

        +

        Now my original business--that of a conveyancer + and title hunter, and drawer-up of recondite documents of + all sorts--was considerably increased by receiving the master's office. + There was now great work for scriveners. Not only must I push the clerks + already with me, but I must have additional help. In answer to my advertisement, + a motionless young man one morning, stood upon my office threshold, the + door being open, for it was summer. I can see that figure now--pallidly + neat, pitiably respectable, incurably forlorn! It was Bartleby.

        +

        After a few words touching his qualifications, I engaged him, glad to + have among my + corps of copyists a man of so singularly + sedate an aspect, which I thought might operate beneficially + upon the flighty temper of Turkey, and the fiery one of Nippers.

        +

        I should have stated before that ground glass folding-doors divided my + premises into two parts, one of which was occupied by my scriveners, the + other by myself. According + to my humor I threw open these doors, or closed them. I resolved + to assign Bartleby a corner by the folding-doors, but on my side of them, + so as to have this quiet man within easy call, in case any trifling + thing was to be done. I placed his desk close up to a small + side window in that part of the room, a window which originally had afforded + a lateral view of certain grimy back-yards and bricks, but which, owing + to subsequent + erections, commanded at present no view at all, though it + gave some light. Within three feet of the panes was a wall, and the light + came down from far above, between two lofty buildings, as from a very small + opening in a dome. Still further to a satisfactory arrangement, I procured + a high green folding screen, which might entirely isolate Bartleby + from my sight, though not remove him from my + voice. And thus, in a manner, privacy and society were + conjoined. +

        +

        At first Bartleby did an extraordinary quantity of writing. As if long + famishingfor something to copy, he seemed to gorge himself on my documents. There + was no pause for digestion. He ran a day and night line, copying by sun-light + and by candle-light. I should have been quite delighted with his application, + had be been cheerfully + industrious. But he wrote on silently, palely, mechanically. +

        +

        It is, of course, an indispensable part of a scrivener's business to verify + the accuracy of his copy, word by word. Where there are two or more scriveners + in an office, they assist each other in this examination, one reading from + the copy, the other holding the original. It is a very + dull, wearisome, and lethargic affair. I can readily imagine + that to some sanguine temperaments it would be altogether + intolerable. For example, I cannot credit that the mettlesome + poet Byron would have contentedly sat down with Bartleby + to examine a law document of, say five hundred pages, closely written in + a crimpy hand.

        +

        Now and then, in the haste of business, it had been my habit to assist + in comparing some brief document myself, calling Turkey or Nippers for + this purpose. One object I had in placing Bartleby so handy to me behind + the screen, was to avail myself of his services on such trivial + occasions. It was on the third day, I think, of his being + with me, and before any necessity had arisen for having his own writing + examined, that, being much hurried to complete a small affair I had in + hand, I abruptly called to Bartleby. In my haste and natural + expectancy of instant compliance, I sat with my head bent + over the original on my desk, and my right hand sideways, and somewhat + nervously extended with the copy, so that immediately upon emerging from + his retreat, Bartleby might snatch it and proceed to business without + the least delay.

        +

        In this very attitude did I sit when I called to him, rapidly stating + what it was I wanted him to do--namely, to examine a small paper with me. + Imagine my surprise, nay, my consternation, when without moving from his + privacy, Bartleby in a singularly mild, + firm voice, replied,"I + would prefer not to." +

        +

        I sat awhile in perfect silence, rallying my stunned faculties. Immediately + it occurred to me that my ears had deceived me, or Bartleby had entirely + misunderstood my meaning. I repeated my request in the clearest tone I + could assume. But in quite as clear a one came the previous reply, "I would + prefer not to."

        +

        "Prefer not to," echoed I, rising in high excitement, and crossing the + room with a stride, "What do you mean? Are you moon-struck? I want you to help me + compare this sheet here--take it," and I thrust it towards him.

        +

        "I would prefer not to," said he.

        +

        I looked at him steadfastly. His face was leanly composed; his gray eye + dimly calm. Not a wrinkle of agitation rippled him. Had there been the + least uneasiness, anger, impatience or impertinence in his manner; in other + words, had there been any thing ordinarily + human about him, doubtless I + should have violently dismissed him from the premises. But + as it was, I should have as soon thought of turning my pale plaster-of-paris + bust of Cicero out of doors. I stood gazing at him awhile, + as he went on with his own writing, and then reseated myself at my desk. + This is very strange, thought I. What had one best do? But my business hurried + me. I concluded to forget the matter for the present, reserving it for + my future leisure. So calling Nippers from the other room, the paper was + speedily examined.

        +

        A few days after this, Bartleby concluded four lengthy documents, being + quadruplicates of a week's testimony taken before me in my High Court of + Chancery. It became necessary to examine them. It was an important suit, + and great accuracy was imperative. Having all things arranged I called + Turkey, Nippers and Ginger Nut from the next room, meaning to place the + four copies in the hands of my four clerks, while I should read from the + original. Accordingly Turkey, Nippers and Ginger Nut had taken their seats + in a row, each with his document in hand, when I called to Bartleby to + join this interesting + group.

        +

        "Bartleby! quick, I am waiting."

        +

        I heard a low scrape of his chair legs on the unscraped floor, and soon + he appeared standing at the entrance of his hermitage. +

        +

        "What is wanted?" said he mildly.

        +

        "The copies, the copies," said I hurriedly. "We are going to examine them. + There"--and I held towards him the fourth quadruplicate.

        +

        "I would prefer not to," he said, and gently disappeared behind the screen.

        +

        For a few moments I was turned into a + pillar of salt, standing at the head of my seated column + of clerks. Recovering myself, I advanced towards the screen, and demanded + the reason for such extraordinary conduct.

        +

        "Why do you refuse?"

        +

        "I would prefer not to."

        +

        With any other man I should have flown + outright into a dreadful passion, scorned all further words, + and thrust him ignominiously from my presence. But there was something + about Bartleby that not only strangely disarmed me, but in a wonderful + manner touched and disconcerted me. I began to reason with him.

        +

        "These are your own copies we are about to examine. It is labor saving + to you, because one examination will answer for your four papers. It + is common usage. Every copyist is bound to help examine his + copy. Is it not so? Will you not speak? Answer!"

        +

        "I prefer not to," he replied in a flute-like tone. It seemed to me that + while I had been addressing him, he carefully revolved every statement + that I made; fully comprehended the meaning; could not gainsay the irresistible + conclusion; but, at the same time, some paramount consideration prevailed + with him to reply as he did.

        +

        "You are decided, then, not to comply with my request--a request made + according to common usage and common sense?"

        +

        He briefly gave me to understand that on that point my + judgment was sound. Yes: his decision was irreversible.

        +

        It is not seldom the case that when a man is browbeaten in some unprecedented and + violently unreasonable way, he + begins to stagger in his own plainest faith. He begins, as + it were, vaguely to surmise that, wonderful as it may be, all the justice + and all the reason is on the other side. Accordingly, if any disinterested + persons are present, he turns to them for some reinforcement for his own + faltering mind. +

        +

        "Turkey," said I, "what do you think of this? Am I not right?"

        +

        "With submission, sir," said Turkey, with his blandest tone, "I think + that you are."

        +

        "Nippers," said I, "what do you think of it?"

        +

        "I think I should kick him out of the office."

        +

        (The reader of nice perceptions will here perceive that, it being morning, + Turkey's answer is couched in polite and tranquil terms, but Nippers replies + in ill-tempered ones. Or, to repeat a previous sentence, Nipper's ugly + mood was on duty, and Turkey's off.)

        +

        "Ginger Nut," said I, willing to enlist the smallest suffrage in my behalf, + "what do you think of it?"

        +

        "I think, sir, he's a little luny," replied Ginger Nut, with a + grin.

        +

        "You hear what they say," said I, turning towards the screen, "come forth + and do + your duty."

        +

        But he vouchsafed no reply. I pondered a moment in sore perplexity. But + once more business hurried me. I determined again to postpone the consideration + of this dilemma to my future leisure. With a little trouble we made out + to examine the papers without Bartleby, though at every page or two, Turkey + deferentially dropped his opinion that this proceeding was quite out of + the common; while Nippers, twitching in his chair with a dyspeptic nervousness, + ground out between his set teeth occasional hissing maledictions against + the stubborn oaf behind the screen. And for his (Nipper's) part, this was + the first and the last time he would do another man's business without + pay.

        +

        Meanwhile Bartleby sat in his hermitage, oblivious to every thing but + his own peculiar business there.

        +

        Some days passed, the scrivener being employed upon another lengthy work. + His late remarkable conduct led me to regard his way narrowly. I observed + that he never went to dinner; indeed that he never went any where. As yet + I had never of my personal knowledge known him to be outside of my office. + He was a perpetual + sentry in the corner. At about eleven o'clock though, in + the morning, I noticed that Ginger Nut would advance toward the opening + in Bartleby's screen, as if silently beckoned thither by a gesture invisible + to me where I sat. That boy would then leave the office jingling a few + pence, and reappear with a handful of ginger-nuts which he delivered in + the hermitage, receiving two of the cakes for his trouble.

        +

        He lives, then, on ginger-nuts, thought I; never eats a dinner, properly + speaking; he must be a vegetarian then, but no; he never eats even vegetables, + he eats + nothing but ginger-nuts. My mind then ran on in reveries + concerning the probable effects upon the human constitution of living entirely + on ginger-nuts. Ginger-nuts are so called because they contain ginger as + one of their peculiar constituents, and the final flavoring one. Now what + was ginger? A hot, spicy thing. Was Bartleby hot and spicy? Not at all. + Ginger, then, had no effect upon Bartleby. Probably + he preferred it should have none. +

        +

        Nothing so aggravates an earnest person as a passive + resistance. If the individual so resisted be of a not inhumane + temper, and the resisting one perfectly harmless in his passivity; then, + in the better moods of the former, he will endeavor charitably to construe + to his imagination what proves impossible to be solved by + his judgment. Even so, for the most part, I regarded Bartleby and his ways. + Poor fellow! thought I, he means no mischief; it is plain he intends no + insolence; his aspect sufficiently evinces that his eccentricities are + involuntary. He + is useful to me. I can get along with him. If I turn him + away, the chances are he will fall in with some less indulgent employer, + and then he will be rudely treated, and perhaps driven forth miserably + to starve. Yes. Here I + can cheaply purchase a delicious self-approval. To befriend + Bartleby; to humor him in his strange willfulness, will cost me little + or nothing, while I lay up in my soul what will eventually prove a sweet + morsel for my conscience. But this mood was not invariable + with me. The passiveness of Bartleby sometimes irritated me. I felt strangely + goaded on to encounter him in new opposition, to elicit some angry spark + from him answerable to my own. But indeed I might as well have essayed + to strike fire with my knuckles against a bit of Windsor + soap. But one afternoon the evil impulse in me mastered + me, and the following little scene ensued:

        +

        "Bartleby," said I, "when those papers are all copied, I will compare + them with you."

        +

        "I would prefer not to."

        +

        "How? Surely you do not mean to persist in that mulish + vagary?"

        +

        No answer.

        +

        I threw open the folding-doors near by, and turning upon Turkey and Nippers, + exclaimed in an excited manner--

        +

        "He says, a second time, he won't examine his papers. What do you think + of it, Turkey?"

        +

        It was afternoon, be it remembered. Turkey sat glowing like a brass boiler, + his bald head steaming, his hands reeling among his blotted papers.

        +

        "Think of it?" roared Turkey; "I think I'll just step behind his screen, + and black his eyes for him!"

        +

        So saying, Turkey rose to his feet and threw his arms into a pugilistic + position. He was hurrying away to make good his promise, + when I detained him, alarmed at the effect of incautiously rousing Turkey's + combativeness after dinner.

        +

        "Sit down, Turkey," said I, "and hear what Nippers has to say. What do + you think of it, Nippers? Would I not be justified in immediately dismissing + Bartleby?"

        +

        "Excuse me, that is for you to decide, sir. I think his conduct quite + unusual, and indeed unjust, as regards Turkey and myself. But it may only + be a passing whim."

        +

        "Ah," exclaimed I, "you have strangely changed your mind then--you speak + very gently of him now."

        +

        "All beer," cried Turkey; "gentleness is effects of beer--Nippers and + I dined together to-day. You see how gentle I am, sir. Shall I go and black + his eyes?"

        +

        "You refer to Bartleby, I suppose. No, not to-day, Turkey," I replied; + "pray, put up your fists."

        +

        I closed the doors, and again advanced towards Bartleby. I felt additional + incentives tempting me to my fate. I + burned to be rebelled against again. I remembered that Bartleby + never left the office.

        +

        "Bartleby," said I, "Ginger Nut is away; just step round to the Post + Office, won't you? (it was but a three minutes walk,) and + see if there is any thing for me."

        +

        "I would prefer not to."

        +

        "You will not?"

        +

        "I prefer not."

        +

        I staggered to my desk, and sat there + in a deep study. My blind + inveteracy returned. Was there any other thing in which I + could procure myself to be ignominiously repulsed by this lean, + penniless with?--my + hired clerk? What added thing is there, perfectly reasonable, + that he will be sure to refuse to do?

        +

        "Bartleby!"

        +

        No answer.

        +

        "Bartleby," in a louder tone.

        +

        No answer.

        +

        "Bartleby," I roared.

        +

        Like a + very ghost, agreeably to the laws of magical invocation, + at the third summons, he appeared at the entrance of his hermitage.

        +

        "Go to the next room, and tell Nippers to come to me."

        +

        "I prefer not to," he respectfully + and slowly said, and mildly disappeared.

        +

        "Very good, Bartleby," said I, in a quiet sort of serenely severe self-possessed + tone, intimating the unalterable purpose of some terrible + retribution very close at hand. At the moment I half intended + something of the kind. But upon the whole, as it was drawing towards my + dinner-hour, I thought it best to put on my hat and walk home for the day, + suffering much from perplexity and distress of mind.

        +

        Shall + I acknowledge it? The conclusion of this whole business was + that it soon became a fixed fact of my chambers, that a pale young scrivener, + by the name of Bartleby, had a desk there; that he copied for me at the + usual rate of four + cents a folio (one hundred words); but he was permanently + exempt from examining the work done by him, that duty being transferred + to Turkey and Nippers, one of compliment doubtless to their superior acuteness; + moreover, said Bartleby was never on any account to be dispatched on the + most trivial errand of any sort; and that even if entreated to take upon + him such a matter, it was generally understood that he would prefer not + to--in other words, that he would refuse point-blank. +

        +

        32 As days passed on, I became considerably reconciled to Bartleby. His + steadiness, his freedom from all dissipation, his incessant industry (except + when he chose to throw himself into a standing revery behind his screen), + his great stillness, his unalterableness of demeanor under all circumstances, + made him a + valuable acquisition. One prime thing was this,--he was + always there;--first in the morning, continually through the day, and the + last at night. I had a singular confidence in his honesty. I felt my most + precious papers perfectly safe in his hands. Sometimes to be sure I could + not, for + the very soul of me, avoid falling into sudden spasmodic + passions with him. For it was exceeding difficult to bear in mind all the + time those strange peculiarities, privileges, and unheard of exemptions, + forming the tacit stipulations on Bartleby's part under which he remained + in my office. Now and then, in the eagerness of dispatching pressing business, + I would inadvertently summon Bartleby, in a short, rapid tone, to put his + finger, say, on the incipient tie of a bit of red tape with which I was + about compressing some papers. Of course, from behind the screen the usual + answer, "I prefer not to," was sure to come; and then, how + could a human creature with the common infirmities of our + nature, refrain from bitterly exclaiming upon such perverseness--such unreasonableness. + However, every added repulse of this sort which I received only tended + to lessen the probability of my repeating the inadvertence.

        +

        Here is must be said, that according to the custom of most legal gentlemen + occupying chambers in densely-populated law buildings, there were several + keys to my door. One was kept by a woman residing in the attic, which person + weekly scrubbed and daily swept and dusted my apartments. Another was kept + by Turkey for convenience sake. The third I sometimes carried in my own + pocket. The fourth I knew not who had.

        +

        Now, one Sunday morning I happened to go to Trinity Church, to + hear a celebrated preacher, and finding myself rather early + on the ground, I thought I would walk round to my chambers for a while. + Luckily I had my key with me; but upon applying it to the lock, I found + it resisted by something inserted from the inside. Quite surprised, I called + out; when to my consternation a key was turned from within; and thrusting + his lean visage at me, and holding the door ajar, the + apparition of Bartleby appeared, in his shirt sleeves, and + otherwise in a strangely tattered dishabille, saying quietly that he was + sorry, but he was deeply engaged just then, and--preferred not admitting + me at present. In a brief word or two, he moreover added, that perhaps + I had better walk round the block two or three times, and by that time + he would probably have concluded his affairs. Now, the utterly unsurmised + appearance of Bartleby, tenanting my law-chambers of a Sunday + morning, with his cadaverously gentlemanly nonchalance, + yet withal firm and self-possessed, had such a strange effect upon me, + that incontinently I slunk away from my own door, and did as desired. But + not without sundry twinges of impotent rebellion against the mild effrontery + of this unaccountable scrivener. Indeed, it was his wonderful mildness + chiefly, which not only disarmed me, but unmanned me, as it were. For I consider + that one, for the time, is a sort of unmanned when he tranquilly permits + his hired clerk to dictate to him, and order + him away from his own premises. Furthermore, I was full of + uneasiness as to what Bartleby could possibly be doing in my office in + his shirt sleeves, and in an otherwise dismantled condition of a Sunday + morning. Was any thing amiss going on? Nay, that was out of the question. + It was not to be thought of for a moment that Bartleby was an immoral person. + But what could he be doing there?--copying? Nay again, whatever might be + his eccentricities, Bartleby was an eminently decorous person. He would + be the last man to sit down to his desk in any state approaching to nudity. + Besides, it was Sunday; and there was something about Bartleby that forbade + the supposition that we would by any secular occupation violate the + proprieties of the day.

        +

        Nevertheless, my mind was not pacified; and full of a restless curiosity, + at last I returned to the door. Without hindrance I inserted my key, opened + it, and entered. Bartleby was not to be seen. I looked round anxiously, + peeped behind his screen; but it was very plain that he was gone. Upon + more closely examining the place, I surmised that for an indefinite period + Bartleby must have ate, dressed, and slept in my office, and that too without + plate, mirror, or bed. The cushioned seat of a rickety old sofa in one + corner bore t faint impress of a lean, reclining form. Rolled away under + his desk, I found a blanket; under the empty grate, a blacking box and + brush; on a chair, a tin basin, with soap and a ragged towel; in a newspaper + a few crumbs of ginger-nuts and a morsel of cheese. Yet, thought I, it + is evident enough that Bartleby has been making his home here, keeping + bachelor's hallall by himself. Immediately then the thought came sweeping + across me, What miserable friendlessness and loneliness are here revealed! + His poverty is great; but his solitude, how + horrible! Think of it. Of a Sunday, Wall-street is deserted + as Petra; and every night of every day + it is an emptiness. This building too, which of week-days hums with industry + and life, at nightfall echoes with sheer vacancy, and all through Sunday + is forlorn. And here Bartleby makes his home; sole spectator of a solitude + which he has seen all populous--a sort of innocent and transformed Marius + brooding among the ruins of Carthage! +

        +

        For the first + time in my life a feeling of overpowering stinging melancholy + seized me. Before, I had never experienced aught but a not-unpleasing sadness. + The bond of a common humanity now drew me irresistibly to gloom. A fraternal + melancholy! For both I and Bartleby were sons + of Adam. I remembered the bright silks and sparkling faces + I had seen that day in gala trim, swan-like sailing down the Mississippi + of Broadway; and I contrasted them with the pallid copyist, and thought + to myself, Ah, happiness courts the light, so we deem the world is gay; + but misery hides aloof, so we deem that misery there is none. These sad + fancyings-- chimeras, doubtless, of a sick and + silly brain--led on to other and more special thoughts, concerning the + eccentricities of Bartleby. Presentiments of strange discoveries hovered + round me. The scrivener's pale form appeared to me laid + out, among uncaring strangers, in its shivering winding + sheet.

        +

        Suddenly I was attracted by Bartleby's closed desk, the key in open sight + left in the lock.

        +

        I + mean no mischief, seek the gratification of no heartless + curiosity, thought I; besides, the desk is mine, and its contents too, + so I will make bold to look within. Every thing was methodically arranged, + the papers smoothly placed. The pigeon holes were deep, and removing the + files of documents, I groped into their recesses. Presently I felt something + there, and dragged it out. It was an old bandanna handkerchief, heavy and + knotted. I opened it, and saw it was a savings' bank.

        +

        I now recalled all the quiet mysteries which I had noted in the man. I + remembered that he never spoke but to answer; that though at intervals + he had considerable time to himself, yet I had never seen him reading--no, + not even a newspaper; that for long periods he would stand looking out, + at his pale window behind the screen, upon the dead brick wall; I was quite + sure he never visited any refectory or eating house; while his pale face + clearly indicated that he never drank beer like Turkey, or tea and coffee + even, like other men; that he never went any where in particular that I + could learn; never went out for a walk, unless indeed that was the case + at present; that he had declined telling who he was, or whence he came, + or whether he had any relatives in the world; that though so thin and pale, + he never complained of ill health. And more than all, I remembered a certain + unconscious air of pallid--how shall I call it?--of pallid + haughtiness, say, or rather an austere reserve about him, + which had positively awed me into my tame compliance with his eccentricities, + when I had feared to ask him to do the slightest incidental thing for me, + even though I might know, from his long-continued motionlessness, that + behind his screen he must be standing in one of those dead-wall + reveries of his.

        +

        Revolving all these things, and coupling them with the recently discovered + fact that he made my office his constant abiding place and home, and not + forgetful of his morbid moodiness; revolving all these things, a prudential + feeling began to steal over me. My first emotions had been + those of pure melancholy and sincerest pity; but just in proportion as + the forlornness of Bartleby grew and grew to my imagination, did that same + melancholy merge into fear, that pity into repulsion. So + true it is, and so terrible too, that up to a certain point the thought + or sight of misery enlists our best affections; but, in certain special + cases, beyond that point it does not. They err who would assert that invariably + this is owing to the inherent selfishness of the human heart. It rather + proceeds from a certain hopelessness of remedying excessive and organic + ill. To a sensitive being, pity is not seldom pain. And when at last it + is perceived that such pity cannot lead to effectual succor, common sense + bids the soul be rid of it. What I saw that morning persuaded me that the + scrivener was the victim of + innate and incurable disorder. I might give alms to his body; + but his body did not pain him; it was his soul that suffered, and his + soul I could not reach. +

        +

        I did not accomplish the purpose of going to Trinity Church that morning. + Somehow, the + things I had seen disqualified me for the time from church-going. + I walked homeward, thinking what I would do with Bartleby. Finally, I + resolvedupon this;--I would put certain calm questions to him the + next morning, touching his history, &c., and if he declined to answer + then openly and reservedly (and I supposed he would prefer not), then to + give him a twenty dollar bill over and above whatever I might owe him, + and tell him his services were no longer required; but that if in any other + way I could assist him, I would be happy to do so, especially if he desired + to return to his native place, wherever that might be, I would willingly + help to defray the expenses. Moreover, if after reaching home, he found + himself at any time in want of aid, a letter from him would be sure of + a reply.

        +

        The next morning came.

        +

        "Bartleby," said I, gently calling to him behind the screen.

        +

        No reply.

        +

        "Bartleby," said I, in a still gentler tone, "come here; I am not going + to ask you to do any thing you would prefer not to do--I simply wish to + speak to you."

        +

        Upon this he noiselessly slid into view.

        +

        "Will you tell me, Bartleby, where + you were born?" +

        +

        "I would prefer not to."

        +

        "Will you tell me anything about yourself?"

        +

        "I would prefer not to."

        +

        "But what reasonable + objection can you have to speak to me? I feel friendly towards + you."

        +

        He did not look at me while I spoke, but kept his glance fixed upon my + bust of Cicero, which as I then sat, was directly behind me, some + six inches above my head. "What is your answer, Bartleby?" said I, after + waiting a considerable time for a reply, during which his countenance remained + immovable, only there was the faintest + conceivable tremor of the white attenuated mouth.

        +

        "At present I prefer to give no answer," he said, and retired into his + hermitage.

        +

        It was rather weak in me I confess, but his manner on this occasion nettled + me. Not only did there seem to lurk in it a certain disdain, but his + perverseness seemed ungrateful, considering the undeniable + good usage and indulgence he had received from me.

        +

        Again I sat ruminating what I should do.Mortified as I was at his behavior, + and resolved as I had been to dismiss him when I entered my office, nevertheless + I strangely felt something superstitious knocking at my heart, and forbidding + me to carry out my purpose, and denouncing me for a villain if I dared + to breathe one bitter word against this forlornest of mankind. At last, + familiarly drawing my chair behind his screen, I sat down and said: "Bartleby, + never mind then about revealing your history; but let me entreat you, + as a friend, to comply as far as may be with the usages of this office. + Say now you will help to examine papers tomorrow or next day: in short, + say now that in a day or two you will begin to be a little reasonable:--say + so, Bartleby."

        +

        "At present I would prefer not to be a little reasonable + was his idly cadaverous reply.,"

        +

        Just then the folding-doors opened, and Nippers approached. He seemed + suffering from an unusually bad night's rest, induced by severer indigestion + than common. He overheard those final words of Bartleby.

        +

        "Prefer not, + eh?" gritted Nippers--"I'd prefer him, if I were you, sir," addressing + me--"I'd prefer him; I'd give him preferences, the stubborn mule! + What is it, sir, pray, that he prefers not to do now?"

        +

        Bartleby moved not a limb.

        +

        "Mr. + Nippers," said I, "I'd prefer that you would withdraw for the present." +

        +

        Somehow, of late I had got into the way of involuntary using this word + "prefer" upon all sorts of not exactly suitable occasions. And I trembled + to think that my contact with the scrivener had already and seriously affected + me in a mental way. And what further and deeper aberration might it not yet produce? + This apprehension had not been without efficacy in determining me to summary + means.

        +

        As Nippers, looking very sour and sulky, was departing, Turkey blandly + and deferentially approached.

        +

        "With submission, sir," said he, "yesterday I was thinking about Bartleby + here, and I think that if he would but prefer to take a quart of good ale + every day, it would do much towards mending him, and enabling him to assist + in examining his papers."

        +

        "So you have got the word too," said I, slightly excited.

        +

        "With submission, what word, sir," asked Turkey, respectfully crowding + himself into the contracted space behind the screen, and by so doing, making + me jostle + the scrivener. "What word, sir?"

        +

        "I would prefer to be left alone here," said Bartleby, as if offended + at being mobbed + in his privacy. +

        +

        "That's the word, Turkey," said I--"that's it."

        +

        "Oh, prefer oh yes--queer word. I never use it myself. But, sir + as I was saying, if he would but prefer--"

        +

        "Turkey," interrupted I, "you will please withdraw."

        +

        "Oh, certainly, sir, if + you prefer that I should."

        +

        As he opened the folding-door to retire, Nippers at his desk caught a + glimpse of me, and asked whether I would prefer to have a certain paper + copied on blue paper or white. He did not in the least roguishly accent + the word prefer. It was plain that it involuntarily rolled from his tongue. + I thought to myself, surely I must get rid of a demented man, who already has in some + degree turned the tongues, if not the heads of myself and clerks. But I + thought it prudent not to break the dismission + at once.

        +

        The next day I noticed that Bartleby + did nothing but stand at his window in his dead-wall revery. + Upon asking him why he did not write, he said that he had decided upon + doing no more writing.

        +

        "Why, how now? what next?" exclaimed I, "do no more writing?"

        +

        "No more."

        +

        "And what is the reason?"

        +

        "Do + you not see the reason for yourself," he indifferently replied.

        +

        I looked steadfastly at him, and perceived that his eyes looked dull and + glazed. Instantly it occurred to me, that his unexampled diligence in copying + by his dim window for the first few weeks of his stay with me might have + temporarily impaired + his vision.

        +

        I was touched. I said something in condolence with him. I hinted that + of course he did wisely in abstaining from writing for a while; and urged + him to embrace that opportunity of taking wholesome exercise in the open + air. This, however, he + did not do. A few days after this, my other clerks being + absent, and being in a great hurry to dispatch certain letters by the mail, + I thought that, having nothing else earthly to do, Bartleby would surely + be less inflexible than usual, and carry these letters to + the post-office. But he blankly declined. So, much to my + inconvenience, I went myself.

        +

        Still added + days went by. Whether Bartleby's eyes improved or not, I + could not say. To all appearance, I thought they did. But when I asked + him if they did, he vouchsafed no answer. At all events, he would do no + copying. At last, in reply to my urgings, he informed me that he had permanently + given up copying.

        +

        "What!" exclaimed I; "suppose your eyes should get entirely well- better + than ever before--would you not copy then?"

        +

        "I have given up copying," he answered, and slid + aside. +

        +

        He remained as ever, a + fixture in my chamber. Nay--if that were possible--he became + still more of a fixture than before. What was to be done? He would do nothing + in the office: why should he stay there? In plain fact, he had now become + a millstone to me, not only useless as a necklace, but afflictive to bear. + Yet I was sorry for him. I speak less than truth when I say that, on his + own account, he occasioned me uneasiness. If he would but have named a + single relative or friend, I would instantly have written, and urged their + taking the poor fellow away to some convenient retreat. But he seemed alone, + absolutely alone in the universe. A + bit of wreck</font> in the mid Atlantic. At length, + necessities connected with my business tyrannized over all other considerations. + Decently as I could, I told Bartleby that in six days' time he must unconditionally + leave the office. I warned him to take measures, in the interval, for procuring + some other abode. I offered to assist him in this endeavor, if he himself + would but take the first step towards a removal. "And when you finally + quit me, Bartleby," added I, "I shall see that you go not away entirely + unprovided. Six days from this hour, remember."

        +

        At the expiration of that period, I peeped behind the screen, and lo! + Bartleby was there. +

        +

        I buttoned + up my coat, balanced myself; advanced slowly towards him, + touched his shoulder, and said, "The time has come; you must quit this + place; I am sorry for you; here is money; but you must go."

        +

        "I would prefer not," he replied, with his back still towards me.

        +

        "You must."

        +

        He remained silent.

        +

        Now I had an unbounded confidence in this man's common honesty. He had + frequently restored to me six pences and shillings carelessly dropped upon + the floor, for I am apt to be very reckless in such shirt-button + affairs. The proceeding then which followed will not be + deemed extraordinary. "Bartleby," + said I, "I owe you twelve dollars on account; here are thirty-two; the + odd twenty are yours.--Will you take it? and I handed the + bills towards him.

        +

        But he made no motion.

        +

        "I will leave them here then," putting them under a weight on the table. + Then taking my hat and cane and going to the door I tranquilly turned and + added--"After you have removed your things from these offices, Bartleby, + you will of course lock the door--since every one is now gone for the day + but you--and if you please, slip your key underneath the mat, so that I + may have it in the morning. I shall not see you again; so good-bye to you. + If hereafter in your new place of abode I can be of any service to you, + do not fail to advise me by letter. Good-bye, Bartleby, and fare you well."

        +

        But he answered not a word; like the + last column of some ruined temple, he remained standing + mute and solitary in the middle of the otherwise deserted room.

        +

        As I walked home in a pensive mood, my vanity + got the better of my pity. I could not but highly plume + myself on my masterly management in getting rid of Bartleby. Masterly I + call it, and such it must appear to any dispassionate thinker. The beauty + of my procedure seemed to consist in its perfect quietness. There was + no vulgar bullying, no bravado of any sort, no choleric hectoring + and striding to and fro across the apartment, jerking out vehement commands + for Bartleby to bundle himself off with his beggarly traps. Nothing of + the kind. Without loudly bidding Bartleby depart--as an + inferior genius might have done--I assumed the ground that + depart he must; and upon the assumption built all I had to say. The more + I thought over my procedure, the more I was charmed with it. Nevertheless, + next morning, upon awakening, I had my doubts,--I had somehow slept off + the fumes of vanity. One of the coolest and wisest hours a man has, is + just after he awakes in the morning. My procedure seemed as sagacious as + ever,--but only in theory. How it would prove in practice--there was the + rub. It was truly a beautiful thought to have assumed Bartleby's departure; + but, after all, that assumption was simply my own, and none of Bartleby's. + The great point was, not whether I had assumed that he would quit me, but + whether he would prefer so to do. He was more a man + of preferences than assumptions.

        +

        After breakfast, I walked down town, arguing the probabilities pro and + con. One moment I thought it would prove a miserable failure, and Bartleby + would be found all alive at my office as usual; the next moment it seemed + certain that I should see his chair empty. And so I kept veering about. + At the corner of Broadway and Canal- street, I saw quite an excited group + of people standing in earnest conversation.

        +

        "I'll take odds he doesn't," said a voice as I passed.

        +

        "Doesn't go?--done!" said I, "put up your money."

        +

        I was instinctively putting my hand in my pocket to produce my own, when + I remembered that this was an election day. The words I had overheard bore + no reference to Bartleby, but to the success or non-success of some candidate + for the mayoralty. In my intent frame of mind, I had, as it were, imagined + that all Broadway shared in my excitement, and were debating + the same question with me. I passed on, very thankful that the uproar of + the street screened my momentary absent-mindedness.

        +

        As I had intended, I was earlier than usual at my office door. I stood + listening for a moment. All was still. He must be gone. I tried the knob. + The door was locked. Yes, my procedure had worked to a charm; he indeed + must be vanished. Yet a certain melancholy mixed with this: I was almost + sorry for my brilliant success. I was fumbling under the + door mat for the key, which Bartleby was to have left there for me, when + accidentally my knee knocked against a panel, producing a summoning sound, + and in response a voice came to me from within--"Not yet; I am occupied."

        +

        It was Bartleby.

        +

        I was thunderstruck. For an instant I stood like + the man who, pipe in mouth, was killed one cloudless afternoon + long ago in Virginia, by summer lightning; at his own warm open window + he was killed, and remained leaning out there upon the dreamy afternoon, + till some one touched him, when he fell. "Not gone!" I murmured at last. + But again obeying that wondrous + ascendancy which the inscrutable scrivener had over me, and + from which ascendancy, for all my chafing, I could not completely escape, + I slowly went down stairs and out into the street, and while walking round + the block, considered what I should next do in this unheard-of-perplexity. + Turn the man out by an actual thrusting I could not; to drive him away + by calling him hard names would not do; calling in the police was an unpleasant + idea; and yet, permit + him to enjoy his cadaverous triumph over me,--this too I + could not think of. What was to be done? or, if nothing could be done, + was there any thing further that I could assume in the matter? Yes, as before + I had prospectively assumed that Bartleby would depart, so now I might + retrospectively assume that departed he was. In the legitimate carrying + out of this assumption, I might enter my office in a great hurry, and pretending + not to see Bartleby at all, walk straight against him as if he were air. + Such a proceeding would in a singular degree have the appearance of a + home-thrust. It was hardly possible that Bartleby could withstand + such an application of the doctrine of assumptions. But upon second thoughts + the success of the plan seemed rather dubious. I resolved to argue the + matter over with him again.

        +

        Bartleby," said I, entering the office, with a quietly severe expression. + "I am seriously displeased. I am pained, Bartleby. I had thought better + of you. I had imagined you of such a gentlemanly + organization, that in any delicate dilemma a slight hint + would suffice--in short, an assumption. But it appears I am deceived. Why," + I added, unaffectedly + starting, "you have not even touched the money yet," pointing + to it, just where I had left it the evening previous.

        +

        He answered nothing.

        +

        "Will you, or will you not, quit me?" I now demanded in a sudden + passion, advancing close to him.

        +

        "I would prefer not to quit you," he replied, gently + emphasizing the not.

        +

        "What earthly + right have you to stay here? do you pay any rent? Do you + pay my taxes? Or is this property yours?"

        +

        He answered nothing.

        +

        "Are you ready to go on and write now? Are your eyes recovered? Could + you copy a small paper for me this morning? or help examine a few lines? + or step round to the post-office? In a word, will you do any thing at all, + to give a coloring to your refusal to depart the premises?"

        +

        He silently + retired into his hermitage.

        +

        I was now in such a state of nervous resentment that I thought it but + prudentto check myself at present from further demonstrations. Bartleby + and I were alone. I + remembered the tragedy of the unfortunate Adams and the still + more unfortunate Colt in the solitary office of the latter; and how poor + Colt, being dreadfully incensed by Adams, and imprudently permitting himself + to get wildly excited, was at unawares hurried into his fatal + act--an act which certainly no + man could possibly deplore more than the actor himself. Often + it had occurred to me in my ponderings upon the subject, that had + that altercation taken place in the public street, or at a private residence, + it would not have terminated as it did. It was the circumstance of being + alone in a solitary office, up stairs, of a building entirely unhallowed + by humanizing domestic associations--an uncarpeted + office, doubtless of a dusty, haggard sort of appearance;--this + it must have been, which greatly helped to enhance the irritable desperation + of the hapless Colt.

        +

        But when this old + Adam of resentment rose in me and tempted me concerning Bartleby, + I grappled him and threw him. How? Why, simply by recalling the divine + injunction: "A new commandment give I unto you, that ye + love one another." Yes, this it was that saved me. Aside from higher considerations, + charity often operates as a + vastly wise and prudent principle--a great safeguard to its + possessor. Men have committed murder for jealousy's sake, and anger's sake, + and hatred's sake, and selfishness' sake, and spiritual pride's sake; but + no man that ever I heard of, ever committed + a diabolical murder for sweet charity's sake. Mere + self-interest, then, if no better motive can be enlisted, + should, especially with high-tempered men, prompt all beings to charity + and philanthropy. At any rate, upon the occasion in question, I strove + to drown + my exasperated feelings towards the scrivener by benevolently + construing his conduct. Poor fellow, poor fellow! thought I, he don't mean + any thing; and besides, he has seen hard times, and ought to be indulged.

        +

        I endeavored also immediately to occupy myself, and at the same time + to comfort my despondency.I tried to fancy that in the course of the + morning, at such time as might prove agreeable to him, Bartleby, of his + own free accord, would emerge from his hermitage, and take up some decided + line of march in the direction of the door. But no. Half-past twelve o'clock + came; Turkey began to glow in the face, overturn his inkstand, and become + generally obstreperous; Nippers abated down into quietude and courtesy; + Ginger Nut munched his noon apple; and Bartleby remained standing at his + window in one of his profoundest deadwall reveries. Will + it be credited? Ought I to acknowledge it? That afternoon + I left the office without saying one further word to him.

        +

        Some days now passed, during which, at leisure intervals I looked a little + into Edwards + on the Will," and "Priestly on Necessity." Under the circumstances, + those books induced a salutary feeling. Gradually I slid + into the persuasion that these troubles of mine touching + the scrivener, had been all predestinated + from eternity, and Bartleby was billeted upon me for some mysterious + purpose of an all-wise Providence, which it was not for a mere mortal like + me to fathom. Yes, Bartleby, stay there behind your screen, thought + I; I shall persecute you no more; you are harmless and noiseless + as any of these old chairs; in short, I never feel so private as when I + know you are here. At least I see it, I feel it; I penetrate to the predestinated + purpose of my life. I am content. Others may have loftier parts to enact; + but my + mission in this world, Bartleby, is to furnish you with office-room + for such period as you may see fit to remain.

        +

        I believe that this wise and blessed frame of mind would have continued + with me, had it not been for the unsolicited and uncharitable remarks obtruded + upon me by my + professional friends who visited the rooms. But thus it often + is, that the constant friction of illiberal minds wears out at last the + best resolves of the more generous. Though to be sure, when + I reflected upon it, it was not strange that people entering my office + should be struck by the peculiar aspect of the unaccountable Bartleby, + and so be tempted to throw out some sinister observations concerning him. + Sometimes an attorney having business with me, and calling at my office, + and finding no one but the scrivener there, would undertake to obtain some + sort of precise information from him touching my whereabouts; but without + heeding his idle + talk, Bartleby would remain standing immovable in the middle + of the room. So after contemplating him in that position for a time, the + attorney would depart, no wiser than he came.

        +

        Also, when a Reference was going on, and the room full of lawyers and + witnesses and business was driving fast; some deeply occupied legal gentleman + present, seeing Bartleby wholly unemployed, would request him to run round + to his (the legal gentleman's) office and fetch some papers for him. Thereupon, + Bartleby would tranquilly decline, and remain idle as before. Then the + lawyer would give a great stare, and turn to me. And what could I say? + At last I was made aware that all through the circle of my professional + acquaintance, a whisper of wonder was running round, having reference to + the strange creature I kept at my office. This worried + me very much. And as the idea came upon me of his possibly + turning out a long-lived man, and keep occupying my chambers, and denying + my authority; and perplexing my visitors; and scandalizing + my professional reputation; and casting a general gloom over the premises; + keeping soul and body together to the last upon his savings (for doubtless + he spent but half a dime a day), and in the end perhaps outlive + me, and claim possession of my office by right of his perpetual + occupancy: as all these dark anticipations crowded upon me more and more, + and my friends continually intruded their relentless remarks upon the apparition + in my room; a great change was wrought in me. I resolved to gather all + my faculties together, and for ever rid me of this intolerable + incubus.

        +

        Ere revolving any complicated project, however, adapted to this end, I + first simply suggested to Bartleby the propriety of his permanent departure. + In a calm and serious tone, I commended the idea to his careful and mature + consideration. But having taken three days to meditate upon it, he apprised + me that his original determination remained the same; in short, that he + still preferred to abide + with me.

        +

        What shall I do? I now said to myself, buttoning + up my coat to the last button. What shall I do? what ought + I to do? what does conscience say I should do with this man, or rather + ghost. Rid myself of him, I must; go, he shall. But how? You will not thrust + him, the poor, pale, passive mortal,--you will not thrust such a helpless + creature out of your door? you will not dishonor + yourself by such cruelty? No, I will not, I cannot do that. + Rather would I let him live and die here, and then mason + up his remains in the wall. What then will you do? For all + your coaxing, he will not budge. Bribes he leaves under your own paperweight + on your table; in short, it is quite plain that he prefers + to cling to you.

        +

        Then something severe, something unusual must be done. What! surely you + will not have him collared by a constable, and commit his innocent pallor + to the common jail? And upon what ground could you procure such a thing + to be done?--a vagrant, is he? What! he a vagrant, a wanderer, who + refuses to budge? It is because he will not be a vagrant, then, that you + seek to count him as a vagrant. That is too absurd. No visible means of + support: there I have him. Wrong again: for indubitably he does support + himself, and that is the only unanswerable proof that any man can show + of his possessing the means so to do. No more then. Since he will not quit + me, I must quit him. I will change my offices; I will move elsewhere; and + give him fair notice, that if I find him on my new premises I will then + proceed against him as a common trespasser.

        +

        Acting accordingly, next day I thus addressed him: "I find these chambers + too far from the City Hall; the air is unwholesome. In a word, I propose + to remove my offices next week, and shall no longer require your services. + I tell you this now, in order that you may seek another place."

        +

        He made no reply, and nothing more was said.

        +

        On the appointed day I engaged carts and men, proceeded to my chambers, + and having but little furniture, every thing was removed in a few hours. + Throughout, the scrivener remained standing behind the + screen, which I directed to be removed the last thing. It + was withdrawn; and being folded up like a huge folio, left him the motionless + occupant of a naked room. I stood in the entry watching him + a moment, while something from within me upbraided me.

        +

        I re-entered, with my hand + in my pocket--and--and my heart in my mouth. +

        +

        "Good-bye, Bartleby; I am going--good-bye, and God some way bless you; + and take that," slipping something in his hand. But it dropped to the floor, + and then,--strange + to say--I tore myself from him whom I had so longed to be + rid of.

        +

        Established in my new quarters, for a day or two I kept the door locked, + and started at every footfall in the passages. When I returned to my rooms + after any little absence, I would pause at the threshold for an instant, + and attentively listen, ere applying my key. But these fears were needless. + Bartleby never came nigh me.

        +

        I thought all was going well, when a perturbed looking stranger visited + me, inquiring whether I was the person who had recently occupied rooms + at No.--Wall-street.

        +

        Full of forebodings, I replied that I was.

        +

        "Then, sir," said the stranger, + who proved a lawyer, "you are responsible for the man you + left there. He refuses to do any copying; he refuses to do any thing; he + says he prefers not to; and he refuses to quit the premises."

        +

        "I am very sorry, sir," said I, with assumed tranquillity, but an inward + tremor, "but, really, the + man you allude to is nothing to me --he is no relation or + apprentice of mine, that you should hold me responsible for him."

        +

        "In mercy's name, who is he?"

        +

        "I certainly cannot inform you. I know nothing about him. Formerly I employed + him as a copyist; but he has done nothing for me now for some time past."

        +

        "I + shall settle him then,--good morning, sir."

        +

        Several days passed, and I heard nothing more; and though I often felt + a charitable prompting to call at the place and see poor Bartleby, yet + a certain squeamishness of I know not what withheld + me.

        +

        All is over with him, by this time, thought I at last, when through another + week no further intelligence reached me. But coming to my room the day + after, I found several persons waiting at my door in a high state of nervous + excitement.

        +

        "That's the man--here he comes," cried the foremost one, whom recognized + as the lawyer who had previously called upon me alone.

        +

        "You must take him away, sir, at once," cried a portly person among them, + advancing upon me, and whom I knew to be the landlord of No.--Wall-street. + "These gentlemen, my tenants, cannot stand it any longer; Mr. B--" pointing + to the lawyer, "has turned him out of his room, and he now persists in + haunting the buildinggenerally, sitting upon the banisters of the + stairs by day, and sleeping in the entry by night. Every body is concerned; + clients are leaving the offices; some + fears are entertained of a mob; something you must do, and + that without delay."

        +

        Aghast + at this torment, I fell back before it, and would fain have + locked myselfin my new quarters. In vain I persisted that Bartleby + was nothing to me--no more than to any one else. In vain:--I was the last + person known to have any thing to do with him, and they held me to the + terrible account. Fearful + then of being exposed in the papers (as one person present + obscurely threatened) I considered the matter, and at length said, that + if the lawyer would give me a confidential interview with the scrivener, + in his (the lawyer's) own room, I would that afternoon strive my best to + rid them of the nuisance they complained of.

        +

        Going up stairs to my old haunt, there was Bartleby silently sitting upon + the banister at the landing.

        +

        "What are you doing here, Bartleby?" said I.

        +

        "Sitting upon the banister," he mildly replied.

        +

        I motioned him into the lawyer's room, who then left us.

        +

        "Bartleby," + said I, "are you aware that you are the cause of great tribulation + to me, by persisting in occupying the entry after being dismissed from + the office?"

        +

        No answer.

        +

        "Now one of two things must take place. Either you must do something or + something must be done to you. Now what sort of business would you like + to engage in? Would you like to re-engage in copying for some one?"

        +

        "No; I would prefer not to make any change."

        +

        "Would you like a clerkship in a dry-goods store?"

        +

        "There is too much confinement about that. No, I would not like a clerkship; + but I am not particular."

        +

        "Too much confinement," I cried, "why you keep yourself confined all the + time!"

        +

        "I would prefer not to take a clerkship," he rejoined, as if to settle + that little item at once.

        +

        "How would a bar-tender's business suit you? There is no trying of the + eyesight in that."

        +

        "I would not like it at all; though, as I said before, I am not particular."

        +

        His unwonted wordiness inspirited me. I returned to the charge.

        +

        "Well then, would you like to travel through the country collecting bills + for the merchants? That would improve your health."

        +

        "No, I would prefer to be doing something else."

        +

        "How then would going as a companion to Europe, to entertain some young + gentleman with your conversation,--how would that suit you?"

        +

        "Not at all. It does not strike me that there is any thing definite about + that. I like to be stationary. But I am not particular.

        +

        "Stationary you shall be then," I cried, now losing all patience, and + for the first time in all my exasperating connection with him fairly flying + into a passion. "If you do not go away from these premises before night, + I shall feel bound--indeed I am bound--to-- to--to quit the premises + myself!" I rather absurdly concluded, knowing not with what possible + threat to try to frighten his immobility into compliance. + Despairing of all further efforts, I was precipitately leaving him, when + a final thought occurred to me--one + which had not been wholly unindulged before. +

        +

        "Bartleby," said I, in the kindest tone + I could assume under such exciting circumstances, "will you + go home with me now--not to my office, but my dwelling--and remain there + till we can conclude upon some convenient arrangement for you at our leisure? + Come, let us start now, right away."

        +

        "No: at present I would prefer not to make any change at all."

        +

        I answered nothing; but effectualy dodging every one by the suddenness + and rapidity of my flight, rushed from the building, ran + up Wall-street towards Broadway, and jumping into the first omnibus was + soon removed from pursuit. As soon as tranquility returned I distinctly + perceived that I had now done all that I possibly could, both in respect + to the demands of the landlord and his tenants, and with regard to my own + desire and sense of duty, to benefit Bartleby, and shield him from rude + persecution. I now strove to be entirely care-free and quiescent; and my + conscience justified me in the attempt; though indeed it was not so successful + as I could have wished. So fearful was I of being again hunted out by the + incensed landlord and his exasperated tenants, that, surrendering my business + to Nippers, for a few days I drove about the upper part of the town and + through the suburbs, in my rockaway; crossed over to Jersey City and Hoboken, + and paid fugitive visits to Manhattanville and Astoria. In fact I almost + lived in my rockaway for the time.

        +

        When again I entered my office, lo, a note from the landlord lay upon + desk. opened it with trembling hands. informed me that writer had sent + to police, and Bartleby removed the + Tombs as a vagrant. Moreover, since I knew more + about him than any one else, he wished me to appear at that place, and + make a suitable statement of the facts. These tidings had a conflicting + effect upon me. At first I was indignant; but at last almost approved. + The landlord's energetic, summary disposition, had led him to adopt a procedure + which I do not think I would have decided upon myself; and yet as a last + resort, under such peculiar circumstances, it seemed the only plan.

        +

        As I afterwards learned, the poor scrivener, when told that he must be + conducted to the Tombs, offered not the slightest obstacle, but in his + pale unmoving way, silently + acquiesced. +

        +

        Some of the compassionate and curious bystanders joined the party; and + headed by one of the constables arm in arm with Bartleby, the + silent procession filed its way through all the noise, and + heat, and joy of the roaring thoroughfares at noon.

        +

        The same day I received the note I went to the Tombs, or to speak more + properly, the Halls of Justice. Seeking the right officer, I stated the + purpose of my call, and was informed that the individual I described was + indeed within. I then assured the functionary that Bartleby was a perfectly + honest man, and greatly to be compassionated, however unaccountably eccentric. + I narrated all I knew,and closed by suggesting the idea of letting + him remain in as indulgent confinement as possible till something less + harsh might be done--though indeed I hardly knew what. At all events, if + nothing else could be decided upon, the alms-house must receive him. I + then begged to have an interview.

        +

        Being under no disgraceful charge, and quite serene and harmless in all + his ways, they had permitted him freely to wander about the prison, and + especially in the inclosed grass-platted yards thereof. And so I found + him there, standing all alone in the quietest of the yards, his face + towards a high wall, while all around, from the narrow slits of the + jail windows, I thought I + saw peering out upon him the eyes of murderers and thieves. +

        +

        "Bartleby!"

        +

        "I + know you," he said, without looking round,--"and I want + nothing to say to you."

        +

        "It was not I that brought you here, Bartleby," said I, keenly + pained at his implied suspicion. "And to you, this should + not be so vile a place. Nothing reproachful attaches to you by being here. + And see, it + is not so sad a place as one might think. Look, there is + the sky, and here is the grass."

        +

        "I know where I am," he replied, but would say nothing more, and so I + left him.

        +

        As I entered the corridor again, a broad meat-like + man in an apron, accosted me, and jerking his thumb over + his shoulder said--"Is that your + friend?"

        +

        "Yes."

        +

        "Does he want to starve? If he does, let him live on the prison fare, + that's all.

        +

        "Who are you?" asked I, not knowing what to make of such an unofficially + speaking person in such a place.

        +

        "I am the grub-man. Such gentlemen as have friends here, hire me to provide + them with something good to eat."

        +

        "Is this so?" said I, turning to the turnkey.

        +

        He said it was.

        +

        "Well then," said I, slipping some silver into the grub-man's hands (for + so they called him). "I want you to give particular attention to my friend + there; let him have the best dinner you can get. And you must be as polite + to him as possible."

        +

        "Introduce me, will you?" said the grub-man, looking at me with an expression + which seemed to say he was all impatience for an opportunity to give a + specimen of his breeding.

        +

        Thinking it would prove of benefit to the scrivener, I acquiesced; and + asking the grub-man his name, went up with him to Bartleby.

        +

        "Bartleby, this is a + friend; you will find him very useful to you."

        +

        "Your + sarvant, sir, your sarvant," said the grub-man, making a + low salutation behind his apron. "Hope you find it pleasant + here, sir;--spacious grounds--cool apartments, sir--hope + you'll stay with us some time--try to make it agreeable. What will you + have for dinner today?"

        +

        "I prefer not to dine to-day," said Bartleby, turning away. "It would + disagree with me; I am unused to dinners." So saying he slowly moved to + the other side of the inclosure, and took up a + position fronting the dead-wall.

        +

        "How's this?" said the grub-man, addressing me with a stare of astonishment. + "He's odd, aint he?"

        +

        "I think he is a little deranged," said I, sadly.

        +

        "Deranged? deranged is it? Well now, upon my word, I thought that friend + of yourn was a gentleman + forger; they are always pale and genteel-like, them forgers. + I can't help pity 'em--can't help it, sir. Did you know Monroe Edwards?" + he added touchingly, and paused. Then, laying his hand pityingly on my + shoulder, sighed, "he died of consumption at Sing-Sing. so you weren't + acquainted with Monroe?"

        +

        "No, I was never socially acquainted with any forgers. But I cannot stop + longer. Look to my friend yonder. You will not lose by it. I will see you + again."

        +

        Some few days after this, I again obtained admission to the Tombs, and + went through the corridors in quest of Bartleby; but without finding him.

        +

        "I saw him coming from his cell not long ago," said a turnkey, "may be + he's gone to loiter in the yards."

        +

        So I went in that direction.

        +

        "Are you looking for the silent man?" said another turnkey passing me. + "Yonder he lies--sleeping in the yard there. 'Tis not twenty minutes since + I saw him lie down."

        +

        The yard was entirely quiet. It was not accessible to the common prisoners. + The surrounding walls, of amazing thickness, kept + off all sound behind them. The Egyptian + character of the masonry weighed upon me with its gloom. + But a soft imprisoned + turf grew under foot. The heart of the eternal pyramids, + it seemed, wherein, by some strange magic, through the clefts, grass-seed, + dropped by birds, had sprung.

        +

        Strangely huddled at the base of the wall, his + knees drawn up, and lying on his side, his head touching + the cold stones, I saw the wasted Bartleby. But nothing stirred. I paused; + then went close up to him; stooped over, and saw that his dim eyes were + open; otherwise he seemed profoundly sleeping. Something prompted me + to touch him. I felt his hand, when a tingling shiver ran up my arm + and down my spine to my feet.

        +

        The round face of the grub-man peered upon me now. "His dinner is ready. + Won't he dine to-day, either? Or does he live without dining?"

        +

        "Lives without dining," said I, and closed the eyes.

        +

        "Eh!--He's asleep, aint he?"

        +

        "With + kings and counsellors," murmured I.

        +

        * * * * * * * *

        +

        There would seem little need for proceeding further in this history. Imagination + will readily supply the meagre recital of poor Bartleby's interment. But + ere parting with the reader, let me say, that if this little narrative + has sufficiently interested him, to awaken curiosity as to who Bartleby + was, and what manner of life he led prior to the present narrator's making + his acquaintance, I can only reply, that in such curiosity I fully share, + but am wholly unable to gratify it. Yet here I hardly know whether I should + divulge one + little item of rumor, which came to my ear a few months + after the scrivener's decease. Upon what basis it rested, I could never + ascertain; and hence how true it is I cannot now tell. But inasmuch as + this vague report has not been without a certain strange suggestive + interest to me, however said, it may prove the same with + some others; and so I will briefly mention it. The report was this: that + Bartleby had been a subordinate clerk in the Dead + Letter Office at Washington, from which he had been suddenly removed + by a change in the administration. When I think over this rumor, I cannot + adequately express the emotions which seize me. Dead + letters! does it not sound like dead men? Conceive a man + by nature and misfortune prone to a pallid hopelessness, can any business + seem more fitted to heighten it than that of continually handling these + dead letters and assorting them for the flames? For by the cart-load they + are annually burned. Sometimes from out the folded paper + the pale clerk takes a ring:--the bank-note sent in swiftest charity:--he + whom it would relieve, nor eats nor hungers any more; pardon for those + who died despairing; hope for those who died unhoping; good tidings for + those who died stifled by unrelieved calamities. On + errands of life, these letters speed to death. +

        +

        Ah + Bartleby! Ah humanity!

        +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/source.html new file mode 100644 index 000000000..775023e7c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/source.html @@ -0,0 +1,1863 @@ + + + + + Bartleby the Scrivener Web Study Text + + + + + + + + + + + + +   +
        + + + + + + +
        +

        Study Webtext

        +

        "Bartleby the Scrivener: A Story of Wall-Street " (1853) 
        + Herman Melville

        +

        To the story text without notes
+        +

        +

        Prepared by Ann + Woodlief, Virginia Commonwealth University

        +
        Click on text in red for hypertext notes and questions
        + I + am a rather elderly man. The nature of my avocations + for the last thirty years has brought me into more than ordinary contact + with what would seem an interesting and somewhat singular set of men of whom as yet + nothing that I know of has ever been written:-- I mean the law-copyists + or scriveners. + I have known very many of them, professionally and privately, and if I + pleased, could relate divers histories, at which good-natured gentlemen + might smile, and sentimental souls might weep. But I waive the biographies + of all other scriveners for a few passages + in the life of Bartleby, who was a scrivener the strangest + I ever saw or heard of. While of other law-copyists I might write the + complete life, of Bartleby nothing of that sort can be done. I believe that + no materials exist for a full and satisfactory biography of this man. It is an irreparable loss to literature. Bartleby + was one of those beings of whom nothing is ascertainable, except from + the original sources, and in his case those are very small. What my own + astonished eyes saw of Bartleby, that is all I know of him, except, indeed, + one vague report which will appear in the sequel. +

        Ere introducing the scrivener, as he first appeared to me, it is fit + I make some mention of myself, my employees, my business, my chambers, + and general surroundings; because some such description is indispensable + to an adequate understanding of the chief character about to be presented. +

        Imprimis: I am a man who, from his youth upwards, has been + filled with a profound conviction that the easiest way of life is the best.. Hence, though I belong to a profession + proverbially energetic and nervous, even to turbulence, at times, yet + nothing of that sort have I ever suffered to invade + my peace. I am one of those unambitious lawyers who never addresses + a jury, or in any way draws down public applause; but in the cool tranquillity + of a snug retreat, do a snug business among rich men's bonds and mortgages and title-deeds. The late John Jacob Astor, a personage little given to poetic enthusiasm, had + no hesitation in pronouncing my first + grand point to be prudence; my next, method. I do not speak + it in vanity, but simply record the fact, that I was not + unemployed in my profession by the last John Jacob Astor; a name which, + I admit, I love to repeat, for it hath a rounded and orbicular sound to + it, and rings + like unto bullion. I will freely add, that I was not + insensible to the late John Jacob Astor's good opinion.

        +

        Some time prior to the period at which this little history begins, my + avocations had been largely increased. The good old office, now + extinct in the State of New York, of a Master in Chancery, + had been conferred upon me. It was not a very arduous office, but very + pleasantly remunerative. I + seldom lose my temper; much more seldom indulge in dangerous + indignation at wrongs and outrages; but I must be permitted to be rash + here and declare, that I consider the sudden and violent abrogation of + the office of Master of Chancery, by the new Constitution, as a----premature + act; inasmuch as I had counted upon a life-lease of the + profits, whereas I only received those of a few short years. But this is + by the way.

        +

        My chambers were up stairs at No.--Wall-street. At one end they looked + upon the white wall of the interior of a spacious sky-light shaft, penetrating + the building from top to bottom. This view might have been considered rather + tame than otherwise, deficient + in what landscape painters call "life." But if so, the view + from the other end of my chambers offered, at least, a contrast, if nothing + more. In that direction my windows commanded an unobstructed view of a + lofty brick wall,black by age and everlasting shade; which wall required + no spy-glass to bring out its lurking beauties, but for the benefit of + all near-sighted spectators, was pushed up to within ten feet of my window + panes. Owing to the great height of the surrounding buildings, and my chambers + being on the second floor, the interval between this wall and mine not + a little resembled a huge square cistern.

        +

        At the period just preceding the advent of Bartleby, I had two persons + as copyists in my employment, and a promising lad as an office-boy. First, + Turkey; second, Nippers; third, Ginger Nut.These may seem names, the like + of which are not usually found in the Directory. In truth they were nicknames, mutually conferred upon + each other by my three clerks, and were deemed expressive of their respective + persons or characters. Turkey was a short, pursy Englishman of about my + own age, that is, somewhere not far from sixty. In the morning, one might + say, his face was of a fine florid hue, but after twelve o'clock, meridian-- + his dinner hour-- it blazed like a grate full of Christmas coals; + and continued blazing--but, as it were, with a gradual wane--till 6 o'clock, + P.M. or thereabouts, after which I saw no more of the proprietor of the + face, which gaining its meridian with the sun, seemed to set with it, to + rise, culminate, and decline the following day, with the like regularity + and undiminished glory. There are many singular coincidences I have known + in the course of my life, not the least among which was the fact that exactly + when Turkey displayed his fullest beams from his red and radiant countenance, + just then, too, at the critical moment, began the daily period when I considered + his business capacities as seriously disturbed for the remainder of the + twenty-four hours. Not that he was absolutely idle, or averse to business + then; far from it. The difficulty was, he was apt to be altogether too + energetic. There was a strange, inflamed, flurried, flighty + recklessness of activity about him. He would be incautious in dipping his + pen into his inkstand. All his blots upon my documents, were dropped there + after twelve o'clock, meridian. Indeed, not only would he be reckless and + sadly given to making blots in the afternoon, but some days he went further, + and was rather noisy. At such times, too, his face + flamed with augmented blazonry, as if cannel + coal had been heaped on anthracite. He made an unpleasant + racket with his chair; spilled his sand-box; in mending his pens, impatiently + split them all to pieces, and threw them on the floor in a sudden passion; + stood up and leaned over his table, boxing his papers about in a most + indecorous manner, very sad to behold in an elderly manlike him. Nevertheless, + as he was in many ways a most valuable person to me, and all the time before + twelve o'clock, meridian, was the quickest, steadiest creature too, accomplishing + a great deal of work in a style not easy to be matched--for these reasons, + I was willingto overlook his eccentricities, though indeed, occasionally, + I remonstrated with him. I did this very gently, however, because, though + the civilest, nay, the blandest and most reverential of men in the morning, + yet in the afternoon he was disposed, upon provocation, to be slightly + rash with his tongue, in fact, insolent. Now, valuing his morning services + as I did, and resolved not to lose them; yet, at the same time made uncomfortable + by his inflamed ways after twelve o'clock; and being a man + of peace, unwilling by my admonitions to call forth unseemingly + retorts from him; I took upon me, one Saturday noon (he was always worse + on Saturdays), to hint to him, very kindly, that perhaps now that he was + growing old, it might be well to abridge his labors; in short, he need + not come to my chambers after twelve o'clock, but, dinner over, had best + go home to his lodgings and rest himself till tea-time. But no; he insisted + upon his afternoon devotions. His countenance became + intolerably fervid, as he oratorically assured me--gesticulating with a + long ruler at the other end of the room--that if his services in the morning + were useful, how indispensible, then, in the afternoon?

        +

        "With + submission, sir," said Turkey on this occasion, "I consider + myself your right-hand man. In the morning I but marshal and deploy my + columns; but in the afternoon I + put myself at their head, and gallantly charge the foe, + thus!"--and he made a violent + thrust with the ruler.

        +

        "But the blots, Turkey," intimated I.

        +

        "True,--but, with submission, sir, behold these hairs! I am getting old. + Surely, sir, a blot or two of a warm afternoon is not the page--is honorable. + With submission, sir, we both are getting old."

        +

        This + appeal to my fellow-feeling was hardly to be resisted. At + all events, I saw that go he would not. So I made up my mind to let him + stay, resolving, nevertheless, to see to it, that during the afternoon + he had to do with my less important papers.

        +

        Nippers, the second on my list, was a whiskered, sallow, and, upon the + whole, rather piratical-looking young man of about + five and twenty. I always deemed him the victim of two evil powers-- ambition + and indigestion. The ambition was evinced by a certain impatience of the + duties of a mere + copyist, an unwarrantable usurpation of strictly profession + affairs, such as the original + drawing up of legal documents. The indigestion seemed betokened + in an occasional nervous testiness and grinning irritability, causing the + teeth to audibly grind together over mistakes committed in copying; unnecessary + maledictions, hissed, rather than spoken, in the heat of business; and + especially by a continual + discontent with the height of the table where he worked. + Though of a very ingenious mechanical turn, Nippers could never get this + table to suit him. He put chips under it, blocks of various sorts, bits + of pasteboard, and at last went so far as to attempt an exquisite adjustment + by final pieces of folded blotting-paper. But no invention would answer. + If, for the sake of easing his back, he brought the table lid at a sharp + angle well up towards his chin, and wrote there like a man using the steep + roof of a Dutch house for his desk:--then he declared that it stopped the + circulation in his arms. If now he lowered the table to his waistbands, + and stooped over it in writing, then there was a sore aching in his back. + In short, the truth of the matter was, Nippers knew not what he wanted. + Or, if + he wanted anything, it was to be rid of a scrivener's table + altogether. Among the manifestations of his diseased ambition was a fondness + he had for receiving visits from certain ambiguous-looking fellows in seedy + coats, whom he called his clients. Indeed I was aware that not only was + he, at times, considerable of a ward-politician, but he occasionally did + a little businessat the Justices' courts, and was not unknown on the + steps of the Tombs. I have good reason to believe, however, that one individual + who called upon him at my chambers, and who, with a grand air, he insisted + was his client, was no other than a dun, and the alleged title-deed, a + bill. But with all his failings, and the annoyances he caused me, Nippers, + like his compatriot Turkey, was a very useful + man to me; wrote a neat, swift hand; and, when he chose, + was not deficient in a gentlemanly sort of deportment. Added to this, he + always dressedin a gentlemanly sort of way; and so, incidentally, + reflected credit upon my chambers. Whereas with respect to Turkey, I had + much ado to keep him from being a reproach to me. His clothes were apt + to look oily and smell of eating-houses. He wore his pantaloons very loose + and baggy in summer. His coats were execrable; his hat not to be handled. + But while the hat was a thing of indifference to + me, inasmuch as his natural civility and deference, as a dependent Englishman, + always led him to doff it the moment he entered the room, yet his coat + was another matter. Concerning his coats, I reasoned with him; but with + no effect. The truth was, I suppose, that a man with so small an income, + could not afford to sport such a lustrous face and a lustrous coat at one + and the same time. As Nippers once observed, Turkey's money went chiefly + for red ink. One winter day + I presented Turkey with a highly-respectable looking coat + of my own, a padded gray coat, of a most comfortable warmth, and which + buttoned straight up from the knee to the neck. I thought Turkey would + appreciate the favor, and abate his rashness and obstreperousness of afternoons. + But no. I verily believe that buttoning himself up in so downy and blanket-like + a coat had a pernicious effect upon him; upon the same principle that too + much oats are bad for horses. In fact, precisely as a rash, restive horse + is said to feel his oats, so Turkey felt his coat. It made + him insolent. He was a man whom prosperity harmed.

        +

        Though concerning the self-indulgent habits of Turkey I had my own private + surmises, yet touching Nippers I was well persuaded that whatever might + be his faults in other respects, he was, at least, a temperate young man. + But indeed, nature herself seemed to have been his vintner, and at his birth charged + him so thoroughly with an irritable, brandy-like disposition, that all + subsequent potations were needless. When I consider how, amid the stillness + of my chambers, Nippers would sometimes impatiently rise from his seat, + and stooping over his table, spread his arms wide apart, seize the whole + desk, and move it, and jerk it, with a grim, grinding motion on the floor, + as if the table were a perverse + voluntary agent, intent on thwarting and vexing him; I plainly + perceive that for Nippers, brandy and water were altogether superfluous.

        +

        It was fortunate for me that, owing to its course--indigestion--the irritability + and consequent nervousness of Nippers, were mainly observable in the morning, + while in the afternoon he was comparatively mild. So that Turkey's paroxysms + only coming on about twelve o'clock, I never had to do with their eccentricities + at one time. Their fits relieved each other like guards. When Nippers' + was on, Turkey's was off, and vice versa. This was a good + natural arrangement under the circumstances.

        +

        Ginger Nut, the third on my list, was a lad some twelve years old. His + father was a carman, ambitious of seeing his son on the bench instead of + a cart, before he died. So he sent him to my office as a student at law, + errand boy, and cleaner and sweeper, at the rate of one dollar a week. + He had a little desk to himself, but he did not use it much. Upon inspection, + the drawer exhibited a great array of the shells of various sorts of nuts. + Indeed, to this quick-witted youth the whole noble science of the law was + contained in a nut-shell. Not the least among the employments of Ginger + Nut, as well as one which he discharged with the most alacrity, was his + duty as cake and apple purveyor for Turkey and Nippers. Copying law papers + being proverbially a dry, + husky sort of business, my two scriveners were fain to moisten + their mouths very often with Spitzenbergs to be had at the numerous stalls + nigh the Custom House and Post Office. Also, they sent Ginger Nut very + frequently for that peculiar cake--small, flat, round, and very spicy--after + which he had been named by them. Of a cold morning when business was but + dull, Turkey would gobble up scores of these cakes, as if they were mere + wafers--indeed they sell them at the rate of six or eight for a penny--the + scrape of his pen blending with the crunching of the crisp particles in + his mouth. Of all the fiery afternoon blunders and flurried rashnesses + of Turkey, was his once moistening a ginger-cake between his lips, and + clapping it on to a mortgage for a seal. I + came within an ace of dismissing him then. But he mollified + me by making an oriental bow, and saying--"With submission, sir, it was + generous of me to + find you in stationery on my own account."

        +

        Now my original business--that of a conveyancer + and title hunter, and drawer-up of recondite documents of + all sorts--was considerably increased by receiving the master's office. + There was now great work for scriveners. Not only must I push the clerks + already with me, but I must have additional help. In answer to my advertisement, + a motionless young man one morning, stood upon my office threshold, the + door being open, for it was summer. I can see that figure now--pallidly + neat, pitiably respectable, incurably forlorn! It was Bartleby.

        +

        After a few words touching his qualifications, I engaged him, glad to + have among my + corps of copyists a man of so singularly + sedate an aspect, which I thought might operate beneficially + upon the flighty temper of Turkey, and the fiery one of Nippers.

        +

        I should have stated before that ground glass folding-doors divided my + premises into two parts, one of which was occupied by my scriveners, the + other by myself. According + to my humor I threw open these doors, or closed them. I resolved + to assign Bartleby a corner by the folding-doors, but on my side of them, + so as to have this quiet man within easy call, in case any trifling + thing was to be done. I placed his desk close up to a small + side window in that part of the room, a window which originally had afforded + a lateral view of certain grimy back-yards and bricks, but which, owing + to subsequent + erections, commanded at present no view at all, though it + gave some light. Within three feet of the panes was a wall, and the light + came down from far above, between two lofty buildings, as from a very small + opening in a dome. Still further to a satisfactory arrangement, I procured + a high green folding screen, which might entirely isolate Bartleby + from my sight, though not remove him from my + voice. And thus, in a manner, privacy and society were + conjoined. +

        +

        At first Bartleby did an extraordinary quantity of writing. As if long + famishingfor something to copy, he seemed to gorge himself on my documents. There + was no pause for digestion. He ran a day and night line, copying by sun-light + and by candle-light. I should have been quite delighted with his application, + had be been cheerfully + industrious. But he wrote on silently, palely, mechanically. +

        +

        It is, of course, an indispensable part of a scrivener's business to verify + the accuracy of his copy, word by word. Where there are two or more scriveners + in an office, they assist each other in this examination, one reading from + the copy, the other holding the original. It is a very + dull, wearisome, and lethargic affair. I can readily imagine + that to some sanguine temperaments it would be altogether + intolerable. For example, I cannot credit that the mettlesome + poet Byron would have contentedly sat down with Bartleby + to examine a law document of, say five hundred pages, closely written in + a crimpy hand.

        +

        Now and then, in the haste of business, it had been my habit to assist + in comparing some brief document myself, calling Turkey or Nippers for + this purpose. One object I had in placing Bartleby so handy to me behind + the screen, was to avail myself of his services on such trivial + occasions. It was on the third day, I think, of his being + with me, and before any necessity had arisen for having his own writing + examined, that, being much hurried to complete a small affair I had in + hand, I abruptly called to Bartleby. In my haste and natural + expectancy of instant compliance, I sat with my head bent + over the original on my desk, and my right hand sideways, and somewhat + nervously extended with the copy, so that immediately upon emerging from + his retreat, Bartleby might snatch it and proceed to business without + the least delay.

        +

        In this very attitude did I sit when I called to him, rapidly stating + what it was I wanted him to do--namely, to examine a small paper with me. + Imagine my surprise, nay, my consternation, when without moving from his + privacy, Bartleby in a singularly mild, + firm voice, replied,"I + would prefer not to." +

        +

        I sat awhile in perfect silence, rallying my stunned faculties. Immediately + it occurred to me that my ears had deceived me, or Bartleby had entirely + misunderstood my meaning. I repeated my request in the clearest tone I + could assume. But in quite as clear a one came the previous reply, "I would + prefer not to."

        +

        "Prefer not to," echoed I, rising in high excitement, and crossing the + room with a stride, "What do you mean? Are you moon-struck? I want you to help me + compare this sheet here--take it," and I thrust it towards him.

        +

        "I would prefer not to," said he.

        +

        I looked at him steadfastly. His face was leanly composed; his gray eye + dimly calm. Not a wrinkle of agitation rippled him. Had there been the + least uneasiness, anger, impatience or impertinence in his manner; in other + words, had there been any thing ordinarily + human about him, doubtless I + should have violently dismissed him from the premises. But + as it was, I should have as soon thought of turning my pale plaster-of-paris + bust of Cicero out of doors. I stood gazing at him awhile, + as he went on with his own writing, and then reseated myself at my desk. + This is very strange, thought I. What had one best do? But my business hurried + me. I concluded to forget the matter for the present, reserving it for + my future leisure. So calling Nippers from the other room, the paper was + speedily examined.

        +

        A few days after this, Bartleby concluded four lengthy documents, being + quadruplicates of a week's testimony taken before me in my High Court of + Chancery. It became necessary to examine them. It was an important suit, + and great accuracy was imperative. Having all things arranged I called + Turkey, Nippers and Ginger Nut from the next room, meaning to place the + four copies in the hands of my four clerks, while I should read from the + original. Accordingly Turkey, Nippers and Ginger Nut had taken their seats + in a row, each with his document in hand, when I called to Bartleby to + join this interesting + group.

        +

        "Bartleby! quick, I am waiting."

        +

        I heard a low scrape of his chair legs on the unscraped floor, and soon + he appeared standing at the entrance of his hermitage. +

        +

        "What is wanted?" said he mildly.

        +

        "The copies, the copies," said I hurriedly. "We are going to examine them. + There"--and I held towards him the fourth quadruplicate.

        +

        "I would prefer not to," he said, and gently disappeared behind the screen.

        +

        For a few moments I was turned into a + pillar of salt, standing at the head of my seated column + of clerks. Recovering myself, I advanced towards the screen, and demanded + the reason for such extraordinary conduct.

        +

        "Why do you refuse?"

        +

        "I would prefer not to."

        +

        With any other man I should have flown + outright into a dreadful passion, scorned all further words, + and thrust him ignominiously from my presence. But there was something + about Bartleby that not only strangely disarmed me, but in a wonderful + manner touched and disconcerted me. I began to reason with him.

        +

        "These are your own copies we are about to examine. It is labor saving + to you, because one examination will answer for your four papers. It + is common usage. Every copyist is bound to help examine his + copy. Is it not so? Will you not speak? Answer!"

        +

        "I prefer not to," he replied in a flute-like tone. It seemed to me that + while I had been addressing him, he carefully revolved every statement + that I made; fully comprehended the meaning; could not gainsay the irresistible + conclusion; but, at the same time, some paramount consideration prevailed + with him to reply as he did.

        +

        "You are decided, then, not to comply with my request--a request made + according to common usage and common sense?"

        +

        He briefly gave me to understand that on that point my + judgment was sound. Yes: his decision was irreversible.

        +

        It is not seldom the case that when a man is browbeaten in some unprecedented and + violently unreasonable way, he + begins to stagger in his own plainest faith. He begins, as + it were, vaguely to surmise that, wonderful as it may be, all the justice + and all the reason is on the other side. Accordingly, if any disinterested + persons are present, he turns to them for some reinforcement for his own + faltering mind. +

        +

        "Turkey," said I, "what do you think of this? Am I not right?"

        +

        "With submission, sir," said Turkey, with his blandest tone, "I think + that you are."

        +

        "Nippers," said I, "what do you think of it?"

        +

        "I think I should kick him out of the office."

        +

        (The reader of nice perceptions will here perceive that, it being morning, + Turkey's answer is couched in polite and tranquil terms, but Nippers replies + in ill-tempered ones. Or, to repeat a previous sentence, Nipper's ugly + mood was on duty, and Turkey's off.)

        +

        "Ginger Nut," said I, willing to enlist the smallest suffrage in my behalf, + "what do you think of it?"

        +

        "I think, sir, he's a little luny," replied Ginger Nut, with a + grin.

        +

        "You hear what they say," said I, turning towards the screen, "come forth + and do + your duty."

        +

        But he vouchsafed no reply. I pondered a moment in sore perplexity. But + once more business hurried me. I determined again to postpone the consideration + of this dilemma to my future leisure. With a little trouble we made out + to examine the papers without Bartleby, though at every page or two, Turkey + deferentially dropped his opinion that this proceeding was quite out of + the common; while Nippers, twitching in his chair with a dyspeptic nervousness, + ground out between his set teeth occasional hissing maledictions against + the stubborn oaf behind the screen. And for his (Nipper's) part, this was + the first and the last time he would do another man's business without + pay.

        +

        Meanwhile Bartleby sat in his hermitage, oblivious to every thing but + his own peculiar business there.

        +

        Some days passed, the scrivener being employed upon another lengthy work. + His late remarkable conduct led me to regard his way narrowly. I observed + that he never went to dinner; indeed that he never went any where. As yet + I had never of my personal knowledge known him to be outside of my office. + He was a perpetual + sentry in the corner. At about eleven o'clock though, in + the morning, I noticed that Ginger Nut would advance toward the opening + in Bartleby's screen, as if silently beckoned thither by a gesture invisible + to me where I sat. That boy would then leave the office jingling a few + pence, and reappear with a handful of ginger-nuts which he delivered in + the hermitage, receiving two of the cakes for his trouble.

        +

        He lives, then, on ginger-nuts, thought I; never eats a dinner, properly + speaking; he must be a vegetarian then, but no; he never eats even vegetables, + he eats + nothing but ginger-nuts. My mind then ran on in reveries + concerning the probable effects upon the human constitution of living entirely + on ginger-nuts. Ginger-nuts are so called because they contain ginger as + one of their peculiar constituents, and the final flavoring one. Now what + was ginger? A hot, spicy thing. Was Bartleby hot and spicy? Not at all. + Ginger, then, had no effect upon Bartleby. Probably + he preferred it should have none. +

        +

        Nothing so aggravates an earnest person as a passive + resistance. If the individual so resisted be of a not inhumane + temper, and the resisting one perfectly harmless in his passivity; then, + in the better moods of the former, he will endeavor charitably to construe + to his imagination what proves impossible to be solved by + his judgment. Even so, for the most part, I regarded Bartleby and his ways. + Poor fellow! thought I, he means no mischief; it is plain he intends no + insolence; his aspect sufficiently evinces that his eccentricities are + involuntary. He + is useful to me. I can get along with him. If I turn him + away, the chances are he will fall in with some less indulgent employer, + and then he will be rudely treated, and perhaps driven forth miserably + to starve. Yes. Here I + can cheaply purchase a delicious self-approval. To befriend + Bartleby; to humor him in his strange willfulness, will cost me little + or nothing, while I lay up in my soul what will eventually prove a sweet + morsel for my conscience. But this mood was not invariable + with me. The passiveness of Bartleby sometimes irritated me. I felt strangely + goaded on to encounter him in new opposition, to elicit some angry spark + from him answerable to my own. But indeed I might as well have essayed + to strike fire with my knuckles against a bit of Windsor + soap. But one afternoon the evil impulse in me mastered + me, and the following little scene ensued:

        +

        "Bartleby," said I, "when those papers are all copied, I will compare + them with you."

        +

        "I would prefer not to."

        +

        "How? Surely you do not mean to persist in that mulish + vagary?"

        +

        No answer.

        +

        I threw open the folding-doors near by, and turning upon Turkey and Nippers, + exclaimed in an excited manner--

        +

        "He says, a second time, he won't examine his papers. What do you think + of it, Turkey?"

        +

        It was afternoon, be it remembered. Turkey sat glowing like a brass boiler, + his bald head steaming, his hands reeling among his blotted papers.

        +

        "Think of it?" roared Turkey; "I think I'll just step behind his screen, + and black his eyes for him!"

        +

        So saying, Turkey rose to his feet and threw his arms into a pugilistic + position. He was hurrying away to make good his promise, + when I detained him, alarmed at the effect of incautiously rousing Turkey's + combativeness after dinner.

        +

        "Sit down, Turkey," said I, "and hear what Nippers has to say. What do + you think of it, Nippers? Would I not be justified in immediately dismissing + Bartleby?"

        +

        "Excuse me, that is for you to decide, sir. I think his conduct quite + unusual, and indeed unjust, as regards Turkey and myself. But it may only + be a passing whim."

        +

        "Ah," exclaimed I, "you have strangely changed your mind then--you speak + very gently of him now."

        +

        "All beer," cried Turkey; "gentleness is effects of beer--Nippers and + I dined together to-day. You see how gentle I am, sir. Shall I go and black + his eyes?"

        +

        "You refer to Bartleby, I suppose. No, not to-day, Turkey," I replied; + "pray, put up your fists."

        +

        I closed the doors, and again advanced towards Bartleby. I felt additional + incentives tempting me to my fate. I + burned to be rebelled against again. I remembered that Bartleby + never left the office.

        +

        "Bartleby," said I, "Ginger Nut is away; just step round to the Post + Office, won't you? (it was but a three minutes walk,) and + see if there is any thing for me."

        +

        "I would prefer not to."

        +

        "You will not?"

        +

        "I prefer not."

        +

        I staggered to my desk, and sat there + in a deep study. My blind + inveteracy returned. Was there any other thing in which I + could procure myself to be ignominiously repulsed by this lean, + penniless with?--my + hired clerk? What added thing is there, perfectly reasonable, + that he will be sure to refuse to do?

        +

        "Bartleby!"

        +

        No answer.

        +

        "Bartleby," in a louder tone.

        +

        No answer.

        +

        "Bartleby," I roared.

        +

        Like a + very ghost, agreeably to the laws of magical invocation, + at the third summons, he appeared at the entrance of his hermitage.

        +

        "Go to the next room, and tell Nippers to come to me."

        +

        "I prefer not to," he respectfully + and slowly said, and mildly disappeared.

        +

        "Very good, Bartleby," said I, in a quiet sort of serenely severe self-possessed + tone, intimating the unalterable purpose of some terrible + retribution very close at hand. At the moment I half intended + something of the kind. But upon the whole, as it was drawing towards my + dinner-hour, I thought it best to put on my hat and walk home for the day, + suffering much from perplexity and distress of mind.

        +

        Shall + I acknowledge it? The conclusion of this whole business was + that it soon became a fixed fact of my chambers, that a pale young scrivener, + by the name of Bartleby, had a desk there; that he copied for me at the + usual rate of four + cents a folio (one hundred words); but he was permanently + exempt from examining the work done by him, that duty being transferred + to Turkey and Nippers, one of compliment doubtless to their superior acuteness; + moreover, said Bartleby was never on any account to be dispatched on the + most trivial errand of any sort; and that even if entreated to take upon + him such a matter, it was generally understood that he would prefer not + to--in other words, that he would refuse point-blank. +

        +

        32 As days passed on, I became considerably reconciled to Bartleby. His + steadiness, his freedom from all dissipation, his incessant industry (except + when he chose to throw himself into a standing revery behind his screen), + his great stillness, his unalterableness of demeanor under all circumstances, + made him a + valuable acquisition. One prime thing was this,--he was + always there;--first in the morning, continually through the day, and the + last at night. I had a singular confidence in his honesty. I felt my most + precious papers perfectly safe in his hands. Sometimes to be sure I could + not, for + the very soul of me, avoid falling into sudden spasmodic + passions with him. For it was exceeding difficult to bear in mind all the + time those strange peculiarities, privileges, and unheard of exemptions, + forming the tacit stipulations on Bartleby's part under which he remained + in my office. Now and then, in the eagerness of dispatching pressing business, + I would inadvertently summon Bartleby, in a short, rapid tone, to put his + finger, say, on the incipient tie of a bit of red tape with which I was + about compressing some papers. Of course, from behind the screen the usual + answer, "I prefer not to," was sure to come; and then, how + could a human creature with the common infirmities of our + nature, refrain from bitterly exclaiming upon such perverseness--such unreasonableness. + However, every added repulse of this sort which I received only tended + to lessen the probability of my repeating the inadvertence.

        +

        Here is must be said, that according to the custom of most legal gentlemen + occupying chambers in densely-populated law buildings, there were several + keys to my door. One was kept by a woman residing in the attic, which person + weekly scrubbed and daily swept and dusted my apartments. Another was kept + by Turkey for convenience sake. The third I sometimes carried in my own + pocket. The fourth I knew not who had.

        +

        Now, one Sunday morning I happened to go to Trinity Church, to + hear a celebrated preacher, and finding myself rather early + on the ground, I thought I would walk round to my chambers for a while. + Luckily I had my key with me; but upon applying it to the lock, I found + it resisted by something inserted from the inside. Quite surprised, I called + out; when to my consternation a key was turned from within; and thrusting + his lean visage at me, and holding the door ajar, the + apparition of Bartleby appeared, in his shirt sleeves, and + otherwise in a strangely tattered dishabille, saying quietly that he was + sorry, but he was deeply engaged just then, and--preferred not admitting + me at present. In a brief word or two, he moreover added, that perhaps + I had better walk round the block two or three times, and by that time + he would probably have concluded his affairs. Now, the utterly unsurmised + appearance of Bartleby, tenanting my law-chambers of a Sunday + morning, with his cadaverously gentlemanly nonchalance, + yet withal firm and self-possessed, had such a strange effect upon me, + that incontinently I slunk away from my own door, and did as desired. But + not without sundry twinges of impotent rebellion against the mild effrontery + of this unaccountable scrivener. Indeed, it was his wonderful mildness + chiefly, which not only disarmed me, but unmanned me, as it were. For I consider + that one, for the time, is a sort of unmanned when he tranquilly permits + his hired clerk to dictate to him, and order + him away from his own premises. Furthermore, I was full of + uneasiness as to what Bartleby could possibly be doing in my office in + his shirt sleeves, and in an otherwise dismantled condition of a Sunday + morning. Was any thing amiss going on? Nay, that was out of the question. + It was not to be thought of for a moment that Bartleby was an immoral person. + But what could he be doing there?--copying? Nay again, whatever might be + his eccentricities, Bartleby was an eminently decorous person. He would + be the last man to sit down to his desk in any state approaching to nudity. + Besides, it was Sunday; and there was something about Bartleby that forbade + the supposition that we would by any secular occupation violate the + proprieties of the day.

        +

        Nevertheless, my mind was not pacified; and full of a restless curiosity, + at last I returned to the door. Without hindrance I inserted my key, opened + it, and entered. Bartleby was not to be seen. I looked round anxiously, + peeped behind his screen; but it was very plain that he was gone. Upon + more closely examining the place, I surmised that for an indefinite period + Bartleby must have ate, dressed, and slept in my office, and that too without + plate, mirror, or bed. The cushioned seat of a rickety old sofa in one + corner bore t faint impress of a lean, reclining form. Rolled away under + his desk, I found a blanket; under the empty grate, a blacking box and + brush; on a chair, a tin basin, with soap and a ragged towel; in a newspaper + a few crumbs of ginger-nuts and a morsel of cheese. Yet, thought I, it + is evident enough that Bartleby has been making his home here, keeping + bachelor's hallall by himself. Immediately then the thought came sweeping + across me, What miserable friendlessness and loneliness are here revealed! + His poverty is great; but his solitude, how + horrible! Think of it. Of a Sunday, Wall-street is deserted + as Petra; and every night of every day + it is an emptiness. This building too, which of week-days hums with industry + and life, at nightfall echoes with sheer vacancy, and all through Sunday + is forlorn. And here Bartleby makes his home; sole spectator of a solitude + which he has seen all populous--a sort of innocent and transformed Marius + brooding among the ruins of Carthage! +

        +

        For the first + time in my life a feeling of overpowering stinging melancholy + seized me. Before, I had never experienced aught but a not-unpleasing sadness. + The bond of a common humanity now drew me irresistibly to gloom. A fraternal + melancholy! For both I and Bartleby were sons + of Adam. I remembered the bright silks and sparkling faces + I had seen that day in gala trim, swan-like sailing down the Mississippi + of Broadway; and I contrasted them with the pallid copyist, and thought + to myself, Ah, happiness courts the light, so we deem the world is gay; + but misery hides aloof, so we deem that misery there is none. These sad + fancyings-- chimeras, doubtless, of a sick and + silly brain--led on to other and more special thoughts, concerning the + eccentricities of Bartleby. Presentiments of strange discoveries hovered + round me. The scrivener's pale form appeared to me laid + out, among uncaring strangers, in its shivering winding + sheet.

        +

        Suddenly I was attracted by Bartleby's closed desk, the key in open sight + left in the lock.

        +

        I + mean no mischief, seek the gratification of no heartless + curiosity, thought I; besides, the desk is mine, and its contents too, + so I will make bold to look within. Every thing was methodically arranged, + the papers smoothly placed. The pigeon holes were deep, and removing the + files of documents, I groped into their recesses. Presently I felt something + there, and dragged it out. It was an old bandanna handkerchief, heavy and + knotted. I opened it, and saw it was a savings' bank.

        +

        I now recalled all the quiet mysteries which I had noted in the man. I + remembered that he never spoke but to answer; that though at intervals + he had considerable time to himself, yet I had never seen him reading--no, + not even a newspaper; that for long periods he would stand looking out, + at his pale window behind the screen, upon the dead brick wall; I was quite + sure he never visited any refectory or eating house; while his pale face + clearly indicated that he never drank beer like Turkey, or tea and coffee + even, like other men; that he never went any where in particular that I + could learn; never went out for a walk, unless indeed that was the case + at present; that he had declined telling who he was, or whence he came, + or whether he had any relatives in the world; that though so thin and pale, + he never complained of ill health. And more than all, I remembered a certain + unconscious air of pallid--how shall I call it?--of pallid + haughtiness, say, or rather an austere reserve about him, + which had positively awed me into my tame compliance with his eccentricities, + when I had feared to ask him to do the slightest incidental thing for me, + even though I might know, from his long-continued motionlessness, that + behind his screen he must be standing in one of those dead-wall + reveries of his.

        +

        Revolving all these things, and coupling them with the recently discovered + fact that he made my office his constant abiding place and home, and not + forgetful of his morbid moodiness; revolving all these things, a prudential + feeling began to steal over me. My first emotions had been + those of pure melancholy and sincerest pity; but just in proportion as + the forlornness of Bartleby grew and grew to my imagination, did that same + melancholy merge into fear, that pity into repulsion. So + true it is, and so terrible too, that up to a certain point the thought + or sight of misery enlists our best affections; but, in certain special + cases, beyond that point it does not. They err who would assert that invariably + this is owing to the inherent selfishness of the human heart. It rather + proceeds from a certain hopelessness of remedying excessive and organic + ill. To a sensitive being, pity is not seldom pain. And when at last it + is perceived that such pity cannot lead to effectual succor, common sense + bids the soul be rid of it. What I saw that morning persuaded me that the + scrivener was the victim of + innate and incurable disorder. I might give alms to his body; + but his body did not pain him; it was his soul that suffered, and his + soul I could not reach. +

        +

        I did not accomplish the purpose of going to Trinity Church that morning. + Somehow, the + things I had seen disqualified me for the time from church-going. + I walked homeward, thinking what I would do with Bartleby. Finally, I + resolvedupon this;--I would put certain calm questions to him the + next morning, touching his history, &c., and if he declined to answer + then openly and reservedly (and I supposed he would prefer not), then to + give him a twenty dollar bill over and above whatever I might owe him, + and tell him his services were no longer required; but that if in any other + way I could assist him, I would be happy to do so, especially if he desired + to return to his native place, wherever that might be, I would willingly + help to defray the expenses. Moreover, if after reaching home, he found + himself at any time in want of aid, a letter from him would be sure of + a reply.

        +

        The next morning came.

        +

        "Bartleby," said I, gently calling to him behind the screen.

        +

        No reply.

        +

        "Bartleby," said I, in a still gentler tone, "come here; I am not going + to ask you to do any thing you would prefer not to do--I simply wish to + speak to you."

        +

        Upon this he noiselessly slid into view.

        +

        "Will you tell me, Bartleby, where + you were born?" +

        +

        "I would prefer not to."

        +

        "Will you tell me anything about yourself?"

        +

        "I would prefer not to."

        +

        "But what reasonable + objection can you have to speak to me? I feel friendly towards + you."

        +

        He did not look at me while I spoke, but kept his glance fixed upon my + bust of Cicero, which as I then sat, was directly behind me, some + six inches above my head. "What is your answer, Bartleby?" said I, after + waiting a considerable time for a reply, during which his countenance remained + immovable, only there was the faintest + conceivable tremor of the white attenuated mouth.

        +

        "At present I prefer to give no answer," he said, and retired into his + hermitage.

        +

        It was rather weak in me I confess, but his manner on this occasion nettled + me. Not only did there seem to lurk in it a certain disdain, but his + perverseness seemed ungrateful, considering the undeniable + good usage and indulgence he had received from me.

        +

        Again I sat ruminating what I should do.Mortified as I was at his behavior, + and resolved as I had been to dismiss him when I entered my office, nevertheless + I strangely felt something superstitious knocking at my heart, and forbidding + me to carry out my purpose, and denouncing me for a villain if I dared + to breathe one bitter word against this forlornest of mankind. At last, + familiarly drawing my chair behind his screen, I sat down and said: "Bartleby, + never mind then about revealing your history; but let me entreat you, + as a friend, to comply as far as may be with the usages of this office. + Say now you will help to examine papers tomorrow or next day: in short, + say now that in a day or two you will begin to be a little reasonable:--say + so, Bartleby."

        +

        "At present I would prefer not to be a little reasonable + was his idly cadaverous reply.,"

        +

        Just then the folding-doors opened, and Nippers approached. He seemed + suffering from an unusually bad night's rest, induced by severer indigestion + than common. He overheard those final words of Bartleby.

        +

        "Prefer not, + eh?" gritted Nippers--"I'd prefer him, if I were you, sir," addressing + me--"I'd prefer him; I'd give him preferences, the stubborn mule! + What is it, sir, pray, that he prefers not to do now?"

        +

        Bartleby moved not a limb.

        +

        "Mr. + Nippers," said I, "I'd prefer that you would withdraw for the present." +

        +

        Somehow, of late I had got into the way of involuntary using this word + "prefer" upon all sorts of not exactly suitable occasions. And I trembled + to think that my contact with the scrivener had already and seriously affected + me in a mental way. And what further and deeper aberration might it not yet produce? + This apprehension had not been without efficacy in determining me to summary + means.

        +

        As Nippers, looking very sour and sulky, was departing, Turkey blandly + and deferentially approached.

        +

        "With submission, sir," said he, "yesterday I was thinking about Bartleby + here, and I think that if he would but prefer to take a quart of good ale + every day, it would do much towards mending him, and enabling him to assist + in examining his papers."

        +

        "So you have got the word too," said I, slightly excited.

        +

        "With submission, what word, sir," asked Turkey, respectfully crowding + himself into the contracted space behind the screen, and by so doing, making + me jostle + the scrivener. "What word, sir?"

        +

        "I would prefer to be left alone here," said Bartleby, as if offended + at being mobbed + in his privacy. +

        +

        "That's the word, Turkey," said I--"that's it."

        +

        "Oh, prefer oh yes--queer word. I never use it myself. But, sir + as I was saying, if he would but prefer--"

        +

        "Turkey," interrupted I, "you will please withdraw."

        +

        "Oh, certainly, sir, if + you prefer that I should."

        +

        As he opened the folding-door to retire, Nippers at his desk caught a + glimpse of me, and asked whether I would prefer to have a certain paper + copied on blue paper or white. He did not in the least roguishly accent + the word prefer. It was plain that it involuntarily rolled from his tongue. + I thought to myself, surely I must get rid of a demented man, who already has in some + degree turned the tongues, if not the heads of myself and clerks. But I + thought it prudent not to break the dismission + at once.

        +

        The next day I noticed that Bartleby + did nothing but stand at his window in his dead-wall revery. + Upon asking him why he did not write, he said that he had decided upon + doing no more writing.

        +

        "Why, how now? what next?" exclaimed I, "do no more writing?"

        +

        "No more."

        +

        "And what is the reason?"

        +

        "Do + you not see the reason for yourself," he indifferently replied.

        +

        I looked steadfastly at him, and perceived that his eyes looked dull and + glazed. Instantly it occurred to me, that his unexampled diligence in copying + by his dim window for the first few weeks of his stay with me might have + temporarily impaired + his vision.

        +

        I was touched. I said something in condolence with him. I hinted that + of course he did wisely in abstaining from writing for a while; and urged + him to embrace that opportunity of taking wholesome exercise in the open + air. This, however, he + did not do. A few days after this, my other clerks being + absent, and being in a great hurry to dispatch certain letters by the mail, + I thought that, having nothing else earthly to do, Bartleby would surely + be less inflexible than usual, and carry these letters to + the post-office. But he blankly declined. So, much to my + inconvenience, I went myself.

        +

        Still added + days went by. Whether Bartleby's eyes improved or not, I + could not say. To all appearance, I thought they did. But when I asked + him if they did, he vouchsafed no answer. At all events, he would do no + copying. At last, in reply to my urgings, he informed me that he had permanently + given up copying.

        +

        "What!" exclaimed I; "suppose your eyes should get entirely well- better + than ever before--would you not copy then?"

        +

        "I have given up copying," he answered, and slid + aside. +

        +

        He remained as ever, a + fixture in my chamber. Nay--if that were possible--he became + still more of a fixture than before. What was to be done? He would do nothing + in the office: why should he stay there? In plain fact, he had now become + a millstone to me, not only useless as a necklace, but afflictive to bear. + Yet I was sorry for him. I speak less than truth when I say that, on his + own account, he occasioned me uneasiness. If he would but have named a + single relative or friend, I would instantly have written, and urged their + taking the poor fellow away to some convenient retreat. But he seemed alone, + absolutely alone in the universe. A + bit of wreck</font> in the mid Atlantic. At length, + necessities connected with my business tyrannized over all other considerations. + Decently as I could, I told Bartleby that in six days' time he must unconditionally + leave the office. I warned him to take measures, in the interval, for procuring + some other abode. I offered to assist him in this endeavor, if he himself + would but take the first step towards a removal. "And when you finally + quit me, Bartleby," added I, "I shall see that you go not away entirely + unprovided. Six days from this hour, remember."

        +

        At the expiration of that period, I peeped behind the screen, and lo! + Bartleby was there. +

        +

        I buttoned + up my coat, balanced myself; advanced slowly towards him, + touched his shoulder, and said, "The time has come; you must quit this + place; I am sorry for you; here is money; but you must go."

        +

        "I would prefer not," he replied, with his back still towards me.

        +

        "You must."

        +

        He remained silent.

        +

        Now I had an unbounded confidence in this man's common honesty. He had + frequently restored to me six pences and shillings carelessly dropped upon + the floor, for I am apt to be very reckless in such shirt-button + affairs. The proceeding then which followed will not be + deemed extraordinary. "Bartleby," + said I, "I owe you twelve dollars on account; here are thirty-two; the + odd twenty are yours.--Will you take it? and I handed the + bills towards him.

        +

        But he made no motion.

        +

        "I will leave them here then," putting them under a weight on the table. + Then taking my hat and cane and going to the door I tranquilly turned and + added--"After you have removed your things from these offices, Bartleby, + you will of course lock the door--since every one is now gone for the day + but you--and if you please, slip your key underneath the mat, so that I + may have it in the morning. I shall not see you again; so good-bye to you. + If hereafter in your new place of abode I can be of any service to you, + do not fail to advise me by letter. Good-bye, Bartleby, and fare you well."

        +

        But he answered not a word; like the + last column of some ruined temple, he remained standing + mute and solitary in the middle of the otherwise deserted room.

        +

        As I walked home in a pensive mood, my vanity + got the better of my pity. I could not but highly plume + myself on my masterly management in getting rid of Bartleby. Masterly I + call it, and such it must appear to any dispassionate thinker. The beauty + of my procedure seemed to consist in its perfect quietness. There was + no vulgar bullying, no bravado of any sort, no choleric hectoring + and striding to and fro across the apartment, jerking out vehement commands + for Bartleby to bundle himself off with his beggarly traps. Nothing of + the kind. Without loudly bidding Bartleby depart--as an + inferior genius might have done--I assumed the ground that + depart he must; and upon the assumption built all I had to say. The more + I thought over my procedure, the more I was charmed with it. Nevertheless, + next morning, upon awakening, I had my doubts,--I had somehow slept off + the fumes of vanity. One of the coolest and wisest hours a man has, is + just after he awakes in the morning. My procedure seemed as sagacious as + ever,--but only in theory. How it would prove in practice--there was the + rub. It was truly a beautiful thought to have assumed Bartleby's departure; + but, after all, that assumption was simply my own, and none of Bartleby's. + The great point was, not whether I had assumed that he would quit me, but + whether he would prefer so to do. He was more a man + of preferences than assumptions.

        +

        After breakfast, I walked down town, arguing the probabilities pro and + con. One moment I thought it would prove a miserable failure, and Bartleby + would be found all alive at my office as usual; the next moment it seemed + certain that I should see his chair empty. And so I kept veering about. + At the corner of Broadway and Canal- street, I saw quite an excited group + of people standing in earnest conversation.

        +

        "I'll take odds he doesn't," said a voice as I passed.

        +

        "Doesn't go?--done!" said I, "put up your money."

        +

        I was instinctively putting my hand in my pocket to produce my own, when + I remembered that this was an election day. The words I had overheard bore + no reference to Bartleby, but to the success or non-success of some candidate + for the mayoralty. In my intent frame of mind, I had, as it were, imagined + that all Broadway shared in my excitement, and were debating + the same question with me. I passed on, very thankful that the uproar of + the street screened my momentary absent-mindedness.

        +

        As I had intended, I was earlier than usual at my office door. I stood + listening for a moment. All was still. He must be gone. I tried the knob. + The door was locked. Yes, my procedure had worked to a charm; he indeed + must be vanished. Yet a certain melancholy mixed with this: I was almost + sorry for my brilliant success. I was fumbling under the + door mat for the key, which Bartleby was to have left there for me, when + accidentally my knee knocked against a panel, producing a summoning sound, + and in response a voice came to me from within--"Not yet; I am occupied."

        +

        It was Bartleby.

        +

        I was thunderstruck. For an instant I stood like + the man who, pipe in mouth, was killed one cloudless afternoon + long ago in Virginia, by summer lightning; at his own warm open window + he was killed, and remained leaning out there upon the dreamy afternoon, + till some one touched him, when he fell. "Not gone!" I murmured at last. + But again obeying that wondrous + ascendancy which the inscrutable scrivener had over me, and + from which ascendancy, for all my chafing, I could not completely escape, + I slowly went down stairs and out into the street, and while walking round + the block, considered what I should next do in this unheard-of-perplexity. + Turn the man out by an actual thrusting I could not; to drive him away + by calling him hard names would not do; calling in the police was an unpleasant + idea; and yet, permit + him to enjoy his cadaverous triumph over me,--this too I + could not think of. What was to be done? or, if nothing could be done, + was there any thing further that I could assume in the matter? Yes, as before + I had prospectively assumed that Bartleby would depart, so now I might + retrospectively assume that departed he was. In the legitimate carrying + out of this assumption, I might enter my office in a great hurry, and pretending + not to see Bartleby at all, walk straight against him as if he were air. + Such a proceeding would in a singular degree have the appearance of a + home-thrust. It was hardly possible that Bartleby could withstand + such an application of the doctrine of assumptions. But upon second thoughts + the success of the plan seemed rather dubious. I resolved to argue the + matter over with him again.

        +

        Bartleby," said I, entering the office, with a quietly severe expression. + "I am seriously displeased. I am pained, Bartleby. I had thought better + of you. I had imagined you of such a gentlemanly + organization, that in any delicate dilemma a slight hint + would suffice--in short, an assumption. But it appears I am deceived. Why," + I added, unaffectedly + starting, "you have not even touched the money yet," pointing + to it, just where I had left it the evening previous.

        +

        He answered nothing.

        +

        "Will you, or will you not, quit me?" I now demanded in a sudden + passion, advancing close to him.

        +

        "I would prefer not to quit you," he replied, gently + emphasizing the not.

        +

        "What earthly + right have you to stay here? do you pay any rent? Do you + pay my taxes? Or is this property yours?"

        +

        He answered nothing.

        +

        "Are you ready to go on and write now? Are your eyes recovered? Could + you copy a small paper for me this morning? or help examine a few lines? + or step round to the post-office? In a word, will you do any thing at all, + to give a coloring to your refusal to depart the premises?"

        +

        He silently + retired into his hermitage.

        +

        I was now in such a state of nervous resentment that I thought it but + prudentto check myself at present from further demonstrations. Bartleby + and I were alone. I + remembered the tragedy of the unfortunate Adams and the still + more unfortunate Colt in the solitary office of the latter; and how poor + Colt, being dreadfully incensed by Adams, and imprudently permitting himself + to get wildly excited, was at unawares hurried into his fatal + act--an act which certainly no + man could possibly deplore more than the actor himself. Often + it had occurred to me in my ponderings upon the subject, that had + that altercation taken place in the public street, or at a private residence, + it would not have terminated as it did. It was the circumstance of being + alone in a solitary office, up stairs, of a building entirely unhallowed + by humanizing domestic associations--an uncarpeted + office, doubtless of a dusty, haggard sort of appearance;--this + it must have been, which greatly helped to enhance the irritable desperation + of the hapless Colt.

        +

        But when this old + Adam of resentment rose in me and tempted me concerning Bartleby, + I grappled him and threw him. How? Why, simply by recalling the divine + injunction: "A new commandment give I unto you, that ye + love one another." Yes, this it was that saved me. Aside from higher considerations, + charity often operates as a + vastly wise and prudent principle--a great safeguard to its + possessor. Men have committed murder for jealousy's sake, and anger's sake, + and hatred's sake, and selfishness' sake, and spiritual pride's sake; but + no man that ever I heard of, ever committed + a diabolical murder for sweet charity's sake. Mere + self-interest, then, if no better motive can be enlisted, + should, especially with high-tempered men, prompt all beings to charity + and philanthropy. At any rate, upon the occasion in question, I strove + to drown + my exasperated feelings towards the scrivener by benevolently + construing his conduct. Poor fellow, poor fellow! thought I, he don't mean + any thing; and besides, he has seen hard times, and ought to be indulged.

        +

        I endeavored also immediately to occupy myself, and at the same time + to comfort my despondency.I tried to fancy that in the course of the + morning, at such time as might prove agreeable to him, Bartleby, of his + own free accord, would emerge from his hermitage, and take up some decided + line of march in the direction of the door. But no. Half-past twelve o'clock + came; Turkey began to glow in the face, overturn his inkstand, and become + generally obstreperous; Nippers abated down into quietude and courtesy; + Ginger Nut munched his noon apple; and Bartleby remained standing at his + window in one of his profoundest deadwall reveries. Will + it be credited? Ought I to acknowledge it? That afternoon + I left the office without saying one further word to him.

        +

        Some days now passed, during which, at leisure intervals I looked a little + into Edwards + on the Will," and "Priestly on Necessity." Under the circumstances, + those books induced a salutary feeling. Gradually I slid + into the persuasion that these troubles of mine touching + the scrivener, had been all predestinated + from eternity, and Bartleby was billeted upon me for some mysterious + purpose of an all-wise Providence, which it was not for a mere mortal like + me to fathom. Yes, Bartleby, stay there behind your screen, thought + I; I shall persecute you no more; you are harmless and noiseless + as any of these old chairs; in short, I never feel so private as when I + know you are here. At least I see it, I feel it; I penetrate to the predestinated + purpose of my life. I am content. Others may have loftier parts to enact; + but my + mission in this world, Bartleby, is to furnish you with office-room + for such period as you may see fit to remain.

        +

        I believe that this wise and blessed frame of mind would have continued + with me, had it not been for the unsolicited and uncharitable remarks obtruded + upon me by my + professional friends who visited the rooms. But thus it often + is, that the constant friction of illiberal minds wears out at last the + best resolves of the more generous. Though to be sure, when + I reflected upon it, it was not strange that people entering my office + should be struck by the peculiar aspect of the unaccountable Bartleby, + and so be tempted to throw out some sinister observations concerning him. + Sometimes an attorney having business with me, and calling at my office, + and finding no one but the scrivener there, would undertake to obtain some + sort of precise information from him touching my whereabouts; but without + heeding his idle + talk, Bartleby would remain standing immovable in the middle + of the room. So after contemplating him in that position for a time, the + attorney would depart, no wiser than he came.

        +

        Also, when a Reference was going on, and the room full of lawyers and + witnesses and business was driving fast; some deeply occupied legal gentleman + present, seeing Bartleby wholly unemployed, would request him to run round + to his (the legal gentleman's) office and fetch some papers for him. Thereupon, + Bartleby would tranquilly decline, and remain idle as before. Then the + lawyer would give a great stare, and turn to me. And what could I say? + At last I was made aware that all through the circle of my professional + acquaintance, a whisper of wonder was running round, having reference to + the strange creature I kept at my office. This worried + me very much. And as the idea came upon me of his possibly + turning out a long-lived man, and keep occupying my chambers, and denying + my authority; and perplexing my visitors; and scandalizing + my professional reputation; and casting a general gloom over the premises; + keeping soul and body together to the last upon his savings (for doubtless + he spent but half a dime a day), and in the end perhaps outlive + me, and claim possession of my office by right of his perpetual + occupancy: as all these dark anticipations crowded upon me more and more, + and my friends continually intruded their relentless remarks upon the apparition + in my room; a great change was wrought in me. I resolved to gather all + my faculties together, and for ever rid me of this intolerable + incubus.

        +

        Ere revolving any complicated project, however, adapted to this end, I + first simply suggested to Bartleby the propriety of his permanent departure. + In a calm and serious tone, I commended the idea to his careful and mature + consideration. But having taken three days to meditate upon it, he apprised + me that his original determination remained the same; in short, that he + still preferred to abide + with me.

        +

        What shall I do? I now said to myself, buttoning + up my coat to the last button. What shall I do? what ought + I to do? what does conscience say I should do with this man, or rather + ghost. Rid myself of him, I must; go, he shall. But how? You will not thrust + him, the poor, pale, passive mortal,--you will not thrust such a helpless + creature out of your door? you will not dishonor + yourself by such cruelty? No, I will not, I cannot do that. + Rather would I let him live and die here, and then mason + up his remains in the wall. What then will you do? For all + your coaxing, he will not budge. Bribes he leaves under your own paperweight + on your table; in short, it is quite plain that he prefers + to cling to you.

        +

        Then something severe, something unusual must be done. What! surely you + will not have him collared by a constable, and commit his innocent pallor + to the common jail? And upon what ground could you procure such a thing + to be done?--a vagrant, is he? What! he a vagrant, a wanderer, who + refuses to budge? It is because he will not be a vagrant, then, that you + seek to count him as a vagrant. That is too absurd. No visible means of + support: there I have him. Wrong again: for indubitably he does support + himself, and that is the only unanswerable proof that any man can show + of his possessing the means so to do. No more then. Since he will not quit + me, I must quit him. I will change my offices; I will move elsewhere; and + give him fair notice, that if I find him on my new premises I will then + proceed against him as a common trespasser.

        +

        Acting accordingly, next day I thus addressed him: "I find these chambers + too far from the City Hall; the air is unwholesome. In a word, I propose + to remove my offices next week, and shall no longer require your services. + I tell you this now, in order that you may seek another place."

        +

        He made no reply, and nothing more was said.

        +

        On the appointed day I engaged carts and men, proceeded to my chambers, + and having but little furniture, every thing was removed in a few hours. + Throughout, the scrivener remained standing behind the + screen, which I directed to be removed the last thing. It + was withdrawn; and being folded up like a huge folio, left him the motionless + occupant of a naked room. I stood in the entry watching him + a moment, while something from within me upbraided me.

        +

        I re-entered, with my hand + in my pocket--and--and my heart in my mouth. +

        +

        "Good-bye, Bartleby; I am going--good-bye, and God some way bless you; + and take that," slipping something in his hand. But it dropped to the floor, + and then,--strange + to say--I tore myself from him whom I had so longed to be + rid of.

        +

        Established in my new quarters, for a day or two I kept the door locked, + and started at every footfall in the passages. When I returned to my rooms + after any little absence, I would pause at the threshold for an instant, + and attentively listen, ere applying my key. But these fears were needless. + Bartleby never came nigh me.

        +

        I thought all was going well, when a perturbed looking stranger visited + me, inquiring whether I was the person who had recently occupied rooms + at No.--Wall-street.

        +

        Full of forebodings, I replied that I was.

        +

        "Then, sir," said the stranger, + who proved a lawyer, "you are responsible for the man you + left there. He refuses to do any copying; he refuses to do any thing; he + says he prefers not to; and he refuses to quit the premises."

        +

        "I am very sorry, sir," said I, with assumed tranquillity, but an inward + tremor, "but, really, the + man you allude to is nothing to me --he is no relation or + apprentice of mine, that you should hold me responsible for him."

        +

        "In mercy's name, who is he?"

        +

        "I certainly cannot inform you. I know nothing about him. Formerly I employed + him as a copyist; but he has done nothing for me now for some time past."

        +

        "I + shall settle him then,--good morning, sir."

        +

        Several days passed, and I heard nothing more; and though I often felt + a charitable prompting to call at the place and see poor Bartleby, yet + a certain squeamishness of I know not what withheld + me.

        +

        All is over with him, by this time, thought I at last, when through another + week no further intelligence reached me. But coming to my room the day + after, I found several persons waiting at my door in a high state of nervous + excitement.

        +

        "That's the man--here he comes," cried the foremost one, whom recognized + as the lawyer who had previously called upon me alone.

        +

        "You must take him away, sir, at once," cried a portly person among them, + advancing upon me, and whom I knew to be the landlord of No.--Wall-street. + "These gentlemen, my tenants, cannot stand it any longer; Mr. B--" pointing + to the lawyer, "has turned him out of his room, and he now persists in + haunting the buildinggenerally, sitting upon the banisters of the + stairs by day, and sleeping in the entry by night. Every body is concerned; + clients are leaving the offices; some + fears are entertained of a mob; something you must do, and + that without delay."

        +

        Aghast + at this torment, I fell back before it, and would fain have + locked myselfin my new quarters. In vain I persisted that Bartleby + was nothing to me--no more than to any one else. In vain:--I was the last + person known to have any thing to do with him, and they held me to the + terrible account. Fearful + then of being exposed in the papers (as one person present + obscurely threatened) I considered the matter, and at length said, that + if the lawyer would give me a confidential interview with the scrivener, + in his (the lawyer's) own room, I would that afternoon strive my best to + rid them of the nuisance they complained of.

        +

        Going up stairs to my old haunt, there was Bartleby silently sitting upon + the banister at the landing.

        +

        "What are you doing here, Bartleby?" said I.

        +

        "Sitting upon the banister," he mildly replied.

        +

        I motioned him into the lawyer's room, who then left us.

        +

        "Bartleby," + said I, "are you aware that you are the cause of great tribulation + to me, by persisting in occupying the entry after being dismissed from + the office?"

        +

        No answer.

        +

        "Now one of two things must take place. Either you must do something or + something must be done to you. Now what sort of business would you like + to engage in? Would you like to re-engage in copying for some one?"

        +

        "No; I would prefer not to make any change."

        +

        "Would you like a clerkship in a dry-goods store?"

        +

        "There is too much confinement about that. No, I would not like a clerkship; + but I am not particular."

        +

        "Too much confinement," I cried, "why you keep yourself confined all the + time!"

        +

        "I would prefer not to take a clerkship," he rejoined, as if to settle + that little item at once.

        +

        "How would a bar-tender's business suit you? There is no trying of the + eyesight in that."

        +

        "I would not like it at all; though, as I said before, I am not particular."

        +

        His unwonted wordiness inspirited me. I returned to the charge.

        +

        "Well then, would you like to travel through the country collecting bills + for the merchants? That would improve your health."

        +

        "No, I would prefer to be doing something else."

        +

        "How then would going as a companion to Europe, to entertain some young + gentleman with your conversation,--how would that suit you?"

        +

        "Not at all. It does not strike me that there is any thing definite about + that. I like to be stationary. But I am not particular.

        +

        "Stationary you shall be then," I cried, now losing all patience, and + for the first time in all my exasperating connection with him fairly flying + into a passion. "If you do not go away from these premises before night, + I shall feel bound--indeed I am bound--to-- to--to quit the premises + myself!" I rather absurdly concluded, knowing not with what possible + threat to try to frighten his immobility into compliance. + Despairing of all further efforts, I was precipitately leaving him, when + a final thought occurred to me--one + which had not been wholly unindulged before. +

        +

        "Bartleby," said I, in the kindest tone + I could assume under such exciting circumstances, "will you + go home with me now--not to my office, but my dwelling--and remain there + till we can conclude upon some convenient arrangement for you at our leisure? + Come, let us start now, right away."

        +

        "No: at present I would prefer not to make any change at all."

        +

        I answered nothing; but effectualy dodging every one by the suddenness + and rapidity of my flight, rushed from the building, ran + up Wall-street towards Broadway, and jumping into the first omnibus was + soon removed from pursuit. As soon as tranquility returned I distinctly + perceived that I had now done all that I possibly could, both in respect + to the demands of the landlord and his tenants, and with regard to my own + desire and sense of duty, to benefit Bartleby, and shield him from rude + persecution. I now strove to be entirely care-free and quiescent; and my + conscience justified me in the attempt; though indeed it was not so successful + as I could have wished. So fearful was I of being again hunted out by the + incensed landlord and his exasperated tenants, that, surrendering my business + to Nippers, for a few days I drove about the upper part of the town and + through the suburbs, in my rockaway; crossed over to Jersey City and Hoboken, + and paid fugitive visits to Manhattanville and Astoria. In fact I almost + lived in my rockaway for the time.

        +

        When again I entered my office, lo, a note from the landlord lay upon + desk. opened it with trembling hands. informed me that writer had sent + to police, and Bartleby removed the + Tombs as a vagrant. Moreover, since I knew more + about him than any one else, he wished me to appear at that place, and + make a suitable statement of the facts. These tidings had a conflicting + effect upon me. At first I was indignant; but at last almost approved. + The landlord's energetic, summary disposition, had led him to adopt a procedure + which I do not think I would have decided upon myself; and yet as a last + resort, under such peculiar circumstances, it seemed the only plan.

        +

        As I afterwards learned, the poor scrivener, when told that he must be + conducted to the Tombs, offered not the slightest obstacle, but in his + pale unmoving way, silently + acquiesced. +

        +

        Some of the compassionate and curious bystanders joined the party; and + headed by one of the constables arm in arm with Bartleby, the + silent procession filed its way through all the noise, and + heat, and joy of the roaring thoroughfares at noon.

        +

        The same day I received the note I went to the Tombs, or to speak more + properly, the Halls of Justice. Seeking the right officer, I stated the + purpose of my call, and was informed that the individual I described was + indeed within. I then assured the functionary that Bartleby was a perfectly + honest man, and greatly to be compassionated, however unaccountably eccentric. + I narrated all I knew,and closed by suggesting the idea of letting + him remain in as indulgent confinement as possible till something less + harsh might be done--though indeed I hardly knew what. At all events, if + nothing else could be decided upon, the alms-house must receive him. I + then begged to have an interview.

        +

        Being under no disgraceful charge, and quite serene and harmless in all + his ways, they had permitted him freely to wander about the prison, and + especially in the inclosed grass-platted yards thereof. And so I found + him there, standing all alone in the quietest of the yards, his face + towards a high wall, while all around, from the narrow slits of the + jail windows, I thought I + saw peering out upon him the eyes of murderers and thieves. +

        +

        "Bartleby!"

        +

        "I + know you," he said, without looking round,--"and I want + nothing to say to you."

        +

        "It was not I that brought you here, Bartleby," said I, keenly + pained at his implied suspicion. "And to you, this should + not be so vile a place. Nothing reproachful attaches to you by being here. + And see, it + is not so sad a place as one might think. Look, there is + the sky, and here is the grass."

        +

        "I know where I am," he replied, but would say nothing more, and so I + left him.

        +

        As I entered the corridor again, a broad meat-like + man in an apron, accosted me, and jerking his thumb over + his shoulder said--"Is that your + friend?"

        +

        "Yes."

        +

        "Does he want to starve? If he does, let him live on the prison fare, + that's all.

        +

        "Who are you?" asked I, not knowing what to make of such an unofficially + speaking person in such a place.

        +

        "I am the grub-man. Such gentlemen as have friends here, hire me to provide + them with something good to eat."

        +

        "Is this so?" said I, turning to the turnkey.

        +

        He said it was.

        +

        "Well then," said I, slipping some silver into the grub-man's hands (for + so they called him). "I want you to give particular attention to my friend + there; let him have the best dinner you can get. And you must be as polite + to him as possible."

        +

        "Introduce me, will you?" said the grub-man, looking at me with an expression + which seemed to say he was all impatience for an opportunity to give a + specimen of his breeding.

        +

        Thinking it would prove of benefit to the scrivener, I acquiesced; and + asking the grub-man his name, went up with him to Bartleby.

        +

        "Bartleby, this is a + friend; you will find him very useful to you."

        +

        "Your + sarvant, sir, your sarvant," said the grub-man, making a + low salutation behind his apron. "Hope you find it pleasant + here, sir;--spacious grounds--cool apartments, sir--hope + you'll stay with us some time--try to make it agreeable. What will you + have for dinner today?"

        +

        "I prefer not to dine to-day," said Bartleby, turning away. "It would + disagree with me; I am unused to dinners." So saying he slowly moved to + the other side of the inclosure, and took up a + position fronting the dead-wall.

        +

        "How's this?" said the grub-man, addressing me with a stare of astonishment. + "He's odd, aint he?"

        +

        "I think he is a little deranged," said I, sadly.

        +

        "Deranged? deranged is it? Well now, upon my word, I thought that friend + of yourn was a gentleman + forger; they are always pale and genteel-like, them forgers. + I can't help pity 'em--can't help it, sir. Did you know Monroe Edwards?" + he added touchingly, and paused. Then, laying his hand pityingly on my + shoulder, sighed, "he died of consumption at Sing-Sing. so you weren't + acquainted with Monroe?"

        +

        "No, I was never socially acquainted with any forgers. But I cannot stop + longer. Look to my friend yonder. You will not lose by it. I will see you + again."

        +

        Some few days after this, I again obtained admission to the Tombs, and + went through the corridors in quest of Bartleby; but without finding him.

        +

        "I saw him coming from his cell not long ago," said a turnkey, "may be + he's gone to loiter in the yards."

        +

        So I went in that direction.

        +

        "Are you looking for the silent man?" said another turnkey passing me. + "Yonder he lies--sleeping in the yard there. 'Tis not twenty minutes since + I saw him lie down."

        +

        The yard was entirely quiet. It was not accessible to the common prisoners. + The surrounding walls, of amazing thickness, kept + off all sound behind them. The Egyptian + character of the masonry weighed upon me with its gloom. + But a soft imprisoned + turf grew under foot. The heart of the eternal pyramids, + it seemed, wherein, by some strange magic, through the clefts, grass-seed, + dropped by birds, had sprung.

        +

        Strangely huddled at the base of the wall, his + knees drawn up, and lying on his side, his head touching + the cold stones, I saw the wasted Bartleby. But nothing stirred. I paused; + then went close up to him; stooped over, and saw that his dim eyes were + open; otherwise he seemed profoundly sleeping. Something prompted me + to touch him. I felt his hand, when a tingling shiver ran up my arm + and down my spine to my feet.

        +

        The round face of the grub-man peered upon me now. "His dinner is ready. + Won't he dine to-day, either? Or does he live without dining?"

        +

        "Lives without dining," said I, and closed the eyes.

        +

        "Eh!--He's asleep, aint he?"

        +

        "With + kings and counsellors," murmured I.

        +

        * * * * * * * *

        +

        There would seem little need for proceeding further in this history. Imagination + will readily supply the meagre recital of poor Bartleby's interment. But + ere parting with the reader, let me say, that if this little narrative + has sufficiently interested him, to awaken curiosity as to who Bartleby + was, and what manner of life he led prior to the present narrator's making + his acquaintance, I can only reply, that in such curiosity I fully share, + but am wholly unable to gratify it. Yet here I hardly know whether I should + divulge one + little item of rumor, which came to my ear a few months + after the scrivener's decease. Upon what basis it rested, I could never + ascertain; and hence how true it is I cannot now tell. But inasmuch as + this vague report has not been without a certain strange suggestive + interest to me, however said, it may prove the same with + some others; and so I will briefly mention it. The report was this: that + Bartleby had been a subordinate clerk in the Dead + Letter Office at Washington, from which he had been suddenly removed + by a change in the administration. When I think over this rumor, I cannot + adequately express the emotions which seize me. Dead + letters! does it not sound like dead men? Conceive a man + by nature and misfortune prone to a pallid hopelessness, can any business + seem more fitted to heighten it than that of continually handling these + dead letters and assorting them for the flames? For by the cart-load they + are annually burned. Sometimes from out the folded paper + the pale clerk takes a ring:--the bank-note sent in swiftest charity:--he + whom it would relieve, nor eats nor hungers any more; pardon for those + who died despairing; hope for those who died unhoping; good tidings for + those who died stifled by unrelieved calamities. On + errands of life, these letters speed to death. +

        +

        Ah + Bartleby! Ah humanity!

        +
        +
        +

        +
        + +

        +Text Without Notes +
        Melville Web Links +

        +

        + +

        +

        +

        +
        + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-images.json new file mode 100644 index 000000000..f83aea18c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-images.json @@ -0,0 +1,5 @@ +[ + "https:\/\/cdn1.cnet.com\/img\/JumVcu1ZSLtPP8ui0UWaSlgi5RU=\/670x503\/2017\/12\/01\/b36ce794-e0b8-495c-a198-184923a8f4e9\/twitter-lite.jpg", + "https:\/\/cdn2.cnet.com\/img\/LI8y19stcvIQUdzbYdH4-DAigtc=\/fit-in\/570x0\/2017\/12\/01\/b36ce794-e0b8-495c-a198-184923a8f4e9\/twitter-lite.jpg", + "https:\/\/cdn1.cnet.com\/img\/mWcZaiA8Ngv61OQcpdoh6Ra9nY0=\/170x96\/2017\/11\/13\/70540d7a-cbc5-4563-ab86-b5549ef68168\/oneplus-5t-product-21.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json new file mode 100644 index 000000000..be68e3164 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Twitter Lite llega a 11 países de América Latina, para ayudar a los usuarios con mala señal de sus redes móviles.", + "Image": "https:\/\/cdn1.cnet.com\/img\/JumVcu1ZSLtPP8ui0UWaSlgi5RU=\/670x503\/2017\/12\/01\/b36ce794-e0b8-495c-a198-184923a8f4e9\/twitter-lite.jpg", + "Title": "Twitter Lite se estrena en México, Venezuela y otros nueve países", + "SiteName": "CNET en Español" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected.html new file mode 100644 index 000000000..1b6351245 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected.html @@ -0,0 +1,23 @@ +
        +
        twitter-lite +

        Twitter Lite estará disponible en Google Play Store en 11 países de América Latina.

        + Twitter +

        Twitter ha dado a conocer que Twitter Lite llegará a un total de 24 nuevos países a partir de hoy, 11 de ellos de América Latina.

        +

        Según explicó en un comunicado Twitter Lite ahora estará disponible en Bolivia, Brasil, Chile, Colombia, Costa Rica, Ecuador, México, Panamá, Perú, El Salvador y Venezuela.

        +

        Twitter Lite es la versión ligera de la aplicación de la red social para Android, disponible en la Google Play Store. Con este app los usuarios que experimentan fallos de red o que viven en países con redes con poca velocidad de conexión como Venezuela podrán descargar los tuits de forma más rápida.

        + +

        Entre sus novedades, Twitter Lite permite la carga rápida de tuits en redes 2G y 3G, y ofrece ayuda offline en caso de que pierdas tu conexión; a eso debemos sumar que minimiza el uso de datos y ofrece un modo de ahorro, en el que únicamente se descargan las fotos o videos de los tuits que quieres ver.

        + + +

        Además, el app ocupa menos espacio en tu teléfono móvil, al reducir a 3MB su peso.

        +

        Twitter dio a conocer Twitter Lite en abril en India, y desde entonces ha estado trabajando para llevarlo a más países. La empresa en los últimos meses también se ha involucrado de forma definitiva en la eliminación de los abusos en la red social, tomando medidas incluso en la verificación de cuentas.

        +
        +
        +

        + Reproduciendo: Mira esto: Google Assistant mejora, hay más cambios en Twitter y...

        +

        + 8:09

        +
        +
        + +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/source.html new file mode 100644 index 000000000..c71419fe9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/source.html @@ -0,0 +1,662 @@ + + + + + + + + + + + + Twitter Lite se estrena en México, Venezuela y otros nueve países - CNET en Español + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +

        CNET también está disponible en español.

        +
        + +
        +

        Don't show this again

        +
        + +
        +
        + +
        + guía de compras navideñas +
        +
        + +
        +
        +
        +
        +
        +
        +
        Aplicaciones móviles +

        Twitter Lite se estrena en 11 países de América Latina

        +

        La aplicación de Twitter que minimiza el uso de datos y permite la carga de tuits de forma más rápida llega a México y Venezuela.

        +
        + + +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + + + + + +
        + +
        + +
        +
        +
        +
        +
        twitter-lite +

        Twitter Lite estará disponible en Google Play Store en 11 países de América Latina.

        + Twitter +
        +
        +

        Twitter ha dado a conocer que Twitter Lite llegará a un total de 24 nuevos países a partir de hoy, 11 de ellos de América Latina.

        +

        Según explicó en un comunicado Twitter Lite ahora estará disponible en Bolivia, Brasil, Chile, Colombia, Costa Rica, Ecuador, México, Panamá, Perú, El Salvador y Venezuela.

        +

        Twitter Lite es la versión ligera de la aplicación de la red social para Android, disponible en la Google Play Store. Con este app los usuarios que experimentan fallos de red o que viven en países con redes con poca velocidad de conexión como Venezuela podrán descargar los tuits de forma más rápida.

        + +

        Entre sus novedades, Twitter Lite permite la carga rápida de tuits en redes 2G y 3G, y ofrece ayuda offline en caso de que pierdas tu conexión; a eso debemos sumar que minimiza el uso de datos y ofrece un modo de ahorro, en el que únicamente se descargan las fotos o videos de los tuits que quieres ver.

        + + +

        Además, el app ocupa menos espacio en tu teléfono móvil, al reducir a 3MB su peso.

        +

        Twitter dio a conocer Twitter Lite en abril en India, y desde entonces ha estado trabajando para llevarlo a más países. La empresa en los últimos meses también se ha involucrado de forma definitiva en la eliminación de los abusos en la red social, tomando medidas incluso en la verificación de cuentas.

        +
        +
        +
        +
        +
        +
        + Reproduciendo: Mira esto: Google Assistant mejora, hay más cambios en Twitter y...
        +
        + 8:09
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        + +
        +
        +
        +
        + +
        + +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-images.json new file mode 100644 index 000000000..e8bdae4fb --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-images.json @@ -0,0 +1,4 @@ +[ + "https:\/\/cnet3.cbsistatic.com\/img\/1JaRRjqhoGxDVkFxTRRWkZgyK2Q=\/670x503\/2014\/03\/21\/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e\/mark-zuckerberg-facebook-home-10671610x407.jpg", + "https:\/\/cnet1.cbsistatic.com\/img\/nAMdBzIE1ogVw5bOBZBaiJCt3Ro=\/570x0\/2014\/03\/21\/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e\/mark-zuckerberg-facebook-home-10671610x407.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-metadata.json new file mode 100644 index 000000000..773cbb9f0 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Steven Musil", + "Direction": null, + "Excerpt": "Facebook CEO says be a friend and have a shared vision, but scare them when you have to and move fast.", + "Image": "https:\/\/cnet3.cbsistatic.com\/img\/1JaRRjqhoGxDVkFxTRRWkZgyK2Q=\/670x503\/2014\/03\/21\/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e\/mark-zuckerberg-facebook-home-10671610x407.jpg", + "Title": "Zuckerberg offers peek at Facebook's acquisition strategies", + "SiteName": "CNET" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected.html new file mode 100644 index 000000000..4f401dad0 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected.html @@ -0,0 +1,43 @@ +
        + + + + +
        +

        Facebook CEO Mark Zuckerberg, the man with the acquisition plan.

        Photo by James Martin/CNET +

        Anyone who has ever been involved in closing a billion-dollar acquisition deal will tell you that you don't go in without a clear, well thought out plan.

        + +

        Facebook CEO Mark Zuckerberg knows a thing or two about how to seal the deal on blockbuster buys. After all, he's the man behind his company's $19 billion acquisition of WhatsApp, he personally brokered its $1 billion buyout of Instagram and closed the $3 billion deal to buy Oculus VR.

        +

        Zuckerberg offered a primer on the strategies he and his company employ when they see an attractive target during testimony Tuesday in a lawsuit with ZeniMax Media, which accuses Oculus and Facebook of "misappropriating" trade secrets and copyright infringement. At the heart of the lawsuit is technology that helped create liftoff for virtual reality, one of the hottest gadget trends today.

        +

        A key Facebook approach is building a long-term relationship with your target, Zuckerberg said at the trial. These deals don't just pop up over night, he said according to a transcript reviewed by Business Insider. They take time to cultivate.

        +
        +

        I've been building relationships, at least in Instagram and the WhatsApp cases, for years with the founders and the people that are involved in these companies, which made [it] so that when it became time or when we thought it was the right time to move, we felt like we had a good amount of context and had good relationships so that we could move quickly, which was competitively important and why a lot of these acquisitions, I think, came to us instead of our competitors and ended up being very good acquisitions over time that a lot of competitors wished they had gotten instead.

        +
        +

        He also stressed the need assure your target that you have a shared vision about how you will collaborate after the deal is put to bed. Zuckerberg said this was reason Facebook was able to acquire Oculus for less than its original $4 billion asking price.

        +
        If this [deal] is going to happen, it's not going to be because we offer a lot of money, although we're going to have to offer a fair price for the company that is more than what they felt like they could do on their own. But they also need to feel like this was actually going to help their mission.
        + + + + + + +

        When that doesn't work, Zuckerberg said scare tactics is an effective, if undesirable, way of persuading small startups that they face a better chance of survival if they have Facebook to guide their way rather than going it alone.

        +
        That's less my thing, but I think if you are trying to help convince people that they want to join you, helping them understand all the pain that they would have to go through to build it out independently is a valuable tactic.
        +

        It also pays to be weary of competing suitors for your startup, Zuckerberg said, and be willing to move fast to stave off rivals and get the deal done.

        +
        Often, if a company knows we're offering something, they will offer more. So being able to move quickly not only increases our chance of being able to get a deal done if we want to, but it makes it so we don't have end up having to pay a lot more because the process drags out.
        +

        It wasn't clear why these strategies didn't work on Snapchat CEO Evan Spiegel, who famously rebuffed a $3 billion takeover offer from Facebook in 2013.

        + + + + + + +

        Tech Enabled: CNET chronicles tech's role in providing new kinds of accessibility. Check it out here.

        +

        Technically Literate: Original works of short fiction with unique perspectives on tech, exclusively on CNET. Here.

        + + + + + + +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/source.html new file mode 100644 index 000000000..410bf3cc8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/source.html @@ -0,0 +1,19356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zuckerberg offers peek at Facebook's acquisition strategies - CNET + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        + + +
        + + +
        + + + +
        + +
        +
        + + +
        +
        + +
        +
        + + + +
        +

        Zuckerberg offers peek at Facebook's acquisition strategies

        +

        Facebook CEO says be a friend and have a shared vision, but scare them when you have to and move fast.

        +
        +
        +
        + +
        + +
        + + + + + + +
        + + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + + + + + +
        + + + + + +
        + +
        + +
        +
        + +
        + + +
        +
        Tech Industry
        + + +
        +
        + + + + + +
        +
        + +
        +
        +
        + + +
        + Up Next + + Governments suck at social media, but you deserve some blame +
        +
        +
        + +
        + + + + +
        +

        Facebook CEO Mark Zuckerberg, the man with the acquisition plan.

        Photo by James Martin/CNET +
        +
        +

        Anyone who has ever been involved in closing a billion-dollar acquisition deal will tell you that you don't go in without a clear, well thought out plan.

        +
        +
        +
        ADVERTISING
        +
        + +
        +
        +

        Facebook CEO Mark Zuckerberg knows a thing or two about how to seal the deal on blockbuster buys. After all, he's the man behind his company's $19 billion acquisition of WhatsApp, he personally brokered its $1 billion buyout of Instagram and closed the $3 billion deal to buy Oculus VR.

        +

        Zuckerberg offered a primer on the strategies he and his company employ when they see an attractive target during testimony Tuesday in a lawsuit with ZeniMax Media, which accuses Oculus and Facebook of "misappropriating" trade secrets and copyright infringement. At the heart of the lawsuit is technology that helped create liftoff for virtual reality, one of the hottest gadget trends today.

        +

        A key Facebook approach is building a long-term relationship with your target, Zuckerberg said at the trial. These deals don't just pop up over night, he said according to a transcript reviewed by Business Insider. They take time to cultivate.

        +
        +

        I've been building relationships, at least in Instagram and the WhatsApp cases, for years with the founders and the people that are involved in these companies, which made [it] so that when it became time or when we thought it was the right time to move, we felt like we had a good amount of context and had good relationships so that we could move quickly, which was competitively important and why a lot of these acquisitions, I think, came to us instead of our competitors and ended up being very good acquisitions over time that a lot of competitors wished they had gotten instead.

        +
        +

        He also stressed the need assure your target that you have a shared vision about how you will collaborate after the deal is put to bed. Zuckerberg said this was reason Facebook was able to acquire Oculus for less than its original $4 billion asking price.

        +
        If this [deal] is going to happen, it's not going to be because we offer a lot of money, although we're going to have to offer a fair price for the company that is more than what they felt like they could do on their own. But they also need to feel like this was actually going to help their mission.
        + + + + + + +

        When that doesn't work, Zuckerberg said scare tactics is an effective, if undesirable, way of persuading small startups that they face a better chance of survival if they have Facebook to guide their way rather than going it alone.

        +
        That's less my thing, but I think if you are trying to help convince people that they want to join you, helping them understand all the pain that they would have to go through to build it out independently is a valuable tactic.
        +

        It also pays to be weary of competing suitors for your startup, Zuckerberg said, and be willing to move fast to stave off rivals and get the deal done.

        +
        Often, if a company knows we're offering something, they will offer more. So being able to move quickly not only increases our chance of being able to get a deal done if we want to, but it makes it so we don't have end up having to pay a lot more because the process drags out.
        +

        It wasn't clear why these strategies didn't work on Snapchat CEO Evan Spiegel, who famously rebuffed a $3 billion takeover offer from Facebook in 2013.

        + + + + + + +

        Tech Enabled: CNET chronicles tech's role in providing new kinds of accessibility. Check it out here.

        +

        Technically Literate: Original works of short fiction with unique perspectives on tech, exclusively on CNET. Here.

        + + + +
        + +
        + + + +
        + +
        +
        + + + + + + +
        + + + + +
        + + + + + + +
        +
        +
        + + +
        + + +
        +
        +
        +
        + + + + + + +
        +
        + + +
        + + + + + +
        +
        +
        + + + + + + + + + +
        +
        +
        Close
        +
        +
        + + Battle of the CES robot baristas +
        +
        Drag
        +
        +
        +
        + +
        + Autoplay: ON + Autoplay: OFF +
        + +
        +
        +
        +
        +
        +
        x + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        player version1.7.2
        playback state1
        duration15
        current time7.00
        buffer length0.00
        average dropped (fps)0
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        +
          +
        • + +
          +
          +
        • +
        • playlist
        • +
        • +
          +
          + +
          +
          +
        • +
        • 0:07 / 0:15
        • +
        • captions
        • +
        • +
          +
          +
          + +
          +
        • + +
        • fullscreen
        • +
        +
        +
        +
        +
        +
        + + + +
        +
        + + +
        + +
        + Special feature + +

        How to build worlds for fun and profit

        + + + by + + + +
        +
        +
        + + +
        + +
        + Exclusive interview + +

        Does the Mac still matter?

        + + + by + + + +
        +
        +
        +
        +
        + +
        +
        +

        CNET Magazine

        +

        Read about tech’s impact on the worldwide refugee crisis, discover what conservationists, scientists and tech companies are doing to save the rhino, learn how Tetris conquered the world, and more in the Winter issue of CNET Magazine.

        + Grab your copy +
        + +
        +
        + +
        + +
        + + About CNET + Privacy Policy + Ad Choice + Terms of Use + Mobile User Agreement + Help Center +
        +
        + + + + + + +
        +
        +
        + + + + + + +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + Close +
        +
        BECOME A CNET MEMBER FOR FREE!
        + +
        +

        Share your ideas with the community, receive exclusive offers for sweeps and events, and get the latest news, reviews and how-tos in your inbox.

        + + No, thanks. +
        + + +
        + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-images.json new file mode 100644 index 000000000..93a8c3360 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/i2.cdn.turner.com\/money\/dam\/assets\/141103182938-income-inequality-780x439.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-metadata.json new file mode 100644 index 000000000..46a71fa8d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Ahiza Garcia", + "Direction": null, + "Excerpt": "A recently-released report on poverty and inequality found that the U.S. ranks the lowest among countries with welfare states.", + "Image": "http:\/\/i2.cdn.turner.com\/money\/dam\/assets\/141103182938-income-inequality-780x439.png", + "Title": "The 'birth lottery' and economic mobility", + "SiteName": "CNNMoney" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected.html new file mode 100644 index 000000000..552455fe8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected.html @@ -0,0 +1,51 @@ +
        + + +

        The U.S. has long been heralded as a land of opportunity -- a place where anyone can succeed regardless of the economic class they were born into.

        +

        But a new report released on Monday by Stanford University's Center on Poverty and Inequality calls that into question.

        + +

        The report assessed poverty levels, income and wealth inequality, economic mobility and unemployment levels among 10 wealthy countries with social welfare programs.

        +
        +
        +
        +
        +
        +

        + Powered by SmartAsset.com +

        + + + + + + +
        +
        +
        +
        +
        +

        Among its key findings: the class you're born into matters much more in the U.S. than many of the other countries.

        +

        As the report states: "[T]he birth lottery matters more in the U.S. than in most well-off countries."

        + +

        But this wasn't the only finding that suggests the U.S. isn't quite living up to its reputation as a country where everyone has an equal chance to get ahead through sheer will and hard work.

        +

        Related: Rich are paying more in taxes but not as much as they used to

        + +

        The report also suggested the U.S. might not be the "jobs machine" it thinks it is, when compared to other countries.

        +

        It ranked near the bottom of the pack based on the levels of unemployment among men and women of prime working age. The study determined this by taking the ratio of employed men and women between the ages of 25 and 54 compared to the total population of each country.

        +

        The overall rankings of the countries were as follows:

        1. Finland

        2. Norway

        3. Australia

        4. Canada

        5. Germany

        6. France

        7. United Kingdom

        8. Italy

        9. Spain

        10. United States
        +
        +
        +
        +
        +
        +
        +
        +
        +

        +

        The low ranking the U.S. received was due to its extreme levels of wealth and income inequality and the ineffectiveness of its "safety net" -- social programs aimed at reducing poverty.

        +

        Related: Chicago is America's most segregated city

        +

        The report concluded that the American safety net was ineffective because it provides only half the financial help people need. Additionally, the levels of assistance in the U.S. are generally lower than in other countries.

        + + +

        CNNMoney (New York) First published February 1, 2016: 1:28 AM ET

        +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/source.html new file mode 100644 index 000000000..a4950a147 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/source.html @@ -0,0 +1,4190 @@ + + + + + + + + + + + + + + + + + + + + + + + The 'birth lottery' and economic mobility - Feb. 1, 2016 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + + + + + + + + + + +
        +
        +
        +
        +
        +
        +
        +
        +
        + + + + + +
        +
        +
        + +
        +
        +
        +
        +
        +
        + +

        The 'birth lottery' and economic mobility

        + +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        + +
        +
        + +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        The priest saving LA's gang members
        +
        Your video will play in 00:25
        +
        +
        +
        + +

        The U.S. has long been heralded as a land of opportunity -- a place where anyone can succeed regardless of the economic class they were born into.

        +

        But a new report released on Monday by Stanford University's Center on Poverty and Inequality calls that into question.

        +
        + +
        +

        The report assessed poverty levels, income and wealth inequality, economic mobility and unemployment levels among 10 wealthy countries with social welfare programs.

        +
        +
        +
        +
        +
        + + + + + +
        + Powered by SmartAsset.com +
        + + + + + + + + + +
        +
        +
        +
        +
        +

        Among its key findings: the class you're born into matters much more in the U.S. than many of the other countries.

        +

        As the report states: "[T]he birth lottery matters more in the U.S. than in most well-off countries."

        + +

        But this wasn't the only finding that suggests the U.S. isn't quite living up to its reputation as a country where everyone has an equal chance to get ahead through sheer will and hard work.

        +

        Related: Rich are paying more in taxes but not as much as they used to

        +
        +
        +
        ADVERTISING
        +
        + +
        +
        +

        The report also suggested the U.S. might not be the "jobs machine" it thinks it is, when compared to other countries.

        +

        It ranked near the bottom of the pack based on the levels of unemployment among men and women of prime working age. The study determined this by taking the ratio of employed men and women between the ages of 25 and 54 compared to the total population of each country.

        +

        The overall rankings of the countries were as follows:
        1. Finland
        2. Norway
        3. Australia
        4. Canada
        5. Germany
        6. France
        7. United Kingdom
        8. Italy
        9. Spain
        10. United States
        +
        +
        +
        +
        +
        +
        +
        +
        +

        +

        The low ranking the U.S. received was due to its extreme levels of wealth and income inequality and the ineffectiveness of its "safety net" -- social programs aimed at reducing poverty.

        +

        Related: Chicago is America's most segregated city

        +

        The report concluded that the American safety net was ineffective because it provides only half the financial help people need. Additionally, the levels of assistance in the U.S. are generally lower than in other countries.

        +
        +
        + +
        + +
        +
        +
        +
        +
        +
        + +
        +
        +
        + + +
        +
        + +
        +
        + +
        +
        + + + + + +
        + +

        Social Surge - What's Trending

        +
        +
        + +
        + +
        +
        + +
        +
        + + +
        +

        Mortgage & Savings + +

        +
        + +
        + + + +
        +
        + Terms & Conditions apply +

        NMLS #1136

        +
        +
        +
        +
        +
        + +
        +

        Search for Jobs + +

        + +
        +
        +
        +
        + +
        +
        +
        +
        +

        LendingTree + +

        +
        + +
        +
        +
        + + +
        +

        Newsletter

        + + +
        + + +
        +
        +

        CNNMoney Sponsors

        +
        +
          +
        • + +
        • +
        • + +
        • +
        • + +
        • +
        • + +
        • +
        • + +
        • +
        +
        +
        + + + + + +
        +

        Partner Offers + +

        +
        +
          + + +
        +
        +
        + + +
        +
        + +
        +
        +
        +
        +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + + + + + + + +
        + +
        +
        + + +
        + + + + + +
        + + + + +
        +
        +
        +

        +
        +
        +
        +
        + +
        +
        + + +
        + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json new file mode 100644 index 000000000..b1c1035b5 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua.", + "Image": null, + "Title": "Test script parsing", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected.html new file mode 100644 index 000000000..57c50c6f3 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected.html @@ -0,0 +1,18 @@ +
        +

        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

        +

        Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

        +

        Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        +
        +

        Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

        +

        Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/source.html new file mode 100644 index 000000000..59b7a02ca --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/source.html @@ -0,0 +1,34 @@ + + Test script parsing + + +
        +

        Lorem

        +
        +

        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

        +

        Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

        +

        Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        +
        +

        Foo

        +
        +

        Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

        +

        Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        +
        +
        + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-images.json new file mode 100644 index 000000000..888aa8524 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/fakehost\/graphics\/author\/addison-bw-425.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-metadata.json new file mode 100644 index 000000000..1dbda03bd --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Daring Fireball is written and produced by John Gruber.", + "Image": null, + "Title": "Daring Fireball: Colophon", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected.html new file mode 100644 index 000000000..6c3f15447 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected.html @@ -0,0 +1,38 @@ +
        + + + +
        +
        + +

        Daring Fireball is written and produced by John Gruber.

        +

        + Photograph of the author. +

        Portrait by George Del Barrio

        +

        Mac Apps

        +

        iPhone Apps

        +

        Server Software

        +

        The Daring Fireball website is hosted by Joyent.

        +

        Articles and links are published through Movable Type. In addition to my own SmartyPants and Markdown plug-ins, Daring Fireball uses several excellent Movable Type plug-ins, including Brad Choate’s MT-Regex and MT-IfEmpty, and Nat Irons’s Amputator.

        +

        Stats are tracked using Mint. Additional web nerdery, including the membership system, is fueled by Perl, PHP, and MySQL.

        +

        Web Standards

        +

        Web standards are important, and Daring Fireball adheres to them. Specifically, Daring Fireball’s HTML markup should validate as either HTML 5 or XHTML 4.01 Transitional, its layout is constructed using valid CSS, and its syndicated feed is valid Atom.

        +

        If Daring Fireball looks goofy in your browser, you’re likely using a shitty browser that doesn’t support web standards. Internet Explorer, I’m looking in your direction. If you complain about this, I will laugh at you, because I do not care. If, however, you are using a modern, standards-compliant browser and have trouble viewing or reading Daring Fireball, please do let me know.

        +
        + + + + +
        + +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/source.html new file mode 100644 index 000000000..c68f39009 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/source.html @@ -0,0 +1,151 @@ + + + + + + Daring Fireball: Colophon + + + + + + + + + + + + +
        + + + +
        +
        +

        About This Site

        +

        Daring Fireball is written and produced by John Gruber.

        +

        + Photograph of the author. +
        Portrait by George Del Barrio

        +

        Mac Apps

        + +

        iPhone Apps

        + +

        Server Software

        +

        The Daring Fireball website is hosted by Joyent.

        +

        Articles and links are published through Movable Type. In addition to my own SmartyPants and Markdown plug-ins, Daring Fireball uses several excellent Movable Type plug-ins, including Brad Choate’s MT-Regex and MT-IfEmpty, and Nat Irons’s Amputator.

        +

        Stats are tracked using Mint. Additional web nerdery, including the membership system, is fueled by Perl, PHP, and MySQL.

        +

        Web Standards

        +

        Web standards are important, and Daring Fireball adheres to them. Specifically, Daring Fireball’s HTML markup should validate as either HTML 5 or XHTML 4.01 Transitional, its layout is constructed using valid CSS, and its syndicated feed is valid Atom.

        +

        If Daring Fireball looks goofy in your browser, you’re likely using a shitty browser that doesn’t support web standards. Internet Explorer, I’m looking in your direction. If you complain about this, I will laugh at you, because I do not care. If, however, you are using a modern, standards-compliant browser and have trouble viewing or reading Daring Fireball, please do let me know.

        +
        + + +
        + +

        + Ads via The Deck Ads via The Deck +

        +
        + + + + +
        + +
        + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-images.json new file mode 100644 index 000000000..12cfc8c63 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-images.json @@ -0,0 +1,7 @@ +[ + "https:\/\/test\/foo\/bar\/src.jpg", + "https:\/\/test\/foo\/bar\/data-original.jpg", + "https:\/\/test\/foo\/bar\/data-orig.jpg", + "https:\/\/test\/foo\/bar\/data-url.jpg", + "https:\/\/test\/foo\/bar\/data-src.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json new file mode 100644 index 000000000..c442d503c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Image sources test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected.html new file mode 100644 index 000000000..93f4c92fe --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected.html @@ -0,0 +1,23 @@ +
        +

        + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

        +

        Images

        +

        +

        +

        +

        +

        +

        + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

        +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/source.html new file mode 100644 index 000000000..8727af66d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/source.html @@ -0,0 +1,33 @@ + + + + + Image sources test + + +
        +

        Lorem

        +
        + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
        +

        Images

        +

        +

        +

        +

        +

        +
        + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
        +
        + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/config.json new file mode 100644 index 000000000..4bb89904f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/config.json @@ -0,0 +1,3 @@ +{ + "summonCthulhu": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-images.json new file mode 100644 index 000000000..d0e64966f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-images.json @@ -0,0 +1,14 @@ +[ + "http:\/\/img-aws.ehowcdn.com\/200x200\/cme\/photography.prod.demandstudios.com\/16149374-814f-40bc-baf3-ca20f149f0ba.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/photography.prod.demandstudios.com\/16149374-814f-40bc-baf3-ca20f149f0ba.jpg", + "http:\/\/img-aws.ehowcdn.com\/default\/cme\/photography.prod.demandstudios.com\/fc249ef6-4d27-41b4-8c21-15f7a8512b50.jpg", + "http:\/\/img-aws.ehowcdn.com\/default\/cme\/photography.prod.demandstudios.com\/aae11d4d-a4aa-4251-a4d9-41023ebf6d84.jpg", + "http:\/\/img-aws.ehowcdn.com\/default\/cme\/photography.prod.demandstudios.com\/7afdfa1e-da74-44b5-b89c-ca8123516272.jpg", + "http:\/\/img-aws.ehowcdn.com\/default\/cme\/photography.prod.demandstudios.com\/4f6612c0-316a-4c74-bb03-cb4e778f6d72.jpg", + "http:\/\/img-aws.ehowcdn.com\/default\/cme\/photography.prod.demandstudios.com\/eeb1e0b4-e573-40a3-8db1-2c76f0b13b84.jpg", + "http:\/\/img-aws.ehowcdn.com\/default\/cme\/photography.prod.demandstudios.com\/812d4649-4152-4363-97c0-f181d02e709a.jpg", + "http:\/\/img-aws.ehowcdn.com\/default\/cme\/photography.prod.demandstudios.com\/0cb3988c-9318-47d6-bc9c-c798da1ede72.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/photography.prod.demandstudios.com\/e3e18f0b-ab2c-4ffb-9988-a1ea63faef8b.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/photography.prod.demandstudios.com\/2cd79f8d-0d16-4573-8861-e47fb74b0638.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/photography.prod.demandstudios.com\/78670312-8636-4c42-a75c-3029f7aa6c73.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-metadata.json new file mode 100644 index 000000000..4de144894 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Lucy Akins", + "Direction": null, + "Excerpt": "Glass cloche terrariums are not only appealing to the eye, but they also preserve a bit of nature in your home and serve as a simple, yet beautiful, piece of art. Closed terrariums are easy to care for, as they retain much of their own moisture and provide a warm environment with a consistent level of humidity. You won’t have to water the...", + "Image": "http:\/\/img-aws.ehowcdn.com\/200x200\/cme\/photography.prod.demandstudios.com\/16149374-814f-40bc-baf3-ca20f149f0ba.jpg", + "Title": "How to Build a Terrarium | eHow", + "SiteName": "eHow" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected.html new file mode 100644 index 000000000..397322e20 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected.html @@ -0,0 +1,94 @@ +
        +
        + + +
        +
        +

        Glass cloche terrariums are not only appealing to the eye, but they also preserve a bit of nature in your home and serve as a simple, yet beautiful, piece of art. Closed terrariums are easy to care for, as they retain much of their own moisture and provide a warm environment with a consistent level of humidity. You won’t have to water the terrariums unless you see that the walls are not misting up. Small growing plants that don’t require a lot of light work best such as succulents, ferns, moss, even orchids.

        +
        Glass cloche terrariums
        Glass cloche terrariums (Lucy Akins)
        +
        + +
        +
        +

        What You'll Need:

        • Cloche
        • +
        • Planter saucer, small shallow dish or desired platform
        • +
        • Floral foam oasis
        • +
        • Ruler
        • +
        • Spoon
        • +
        • Floral wire pins or paper clips
        • +
        • Small plants (from a florist or nursery)
        • +
        • Moss
        • +
        • Tweezers
        • +
        • Other small decorative items (optional)
        • +
        +
        +
        +
        +
        +

        Step 1

        Measure the circumference of your cloche and cut the foam oasis about 3/4 inch (2 cm) smaller. Place the foam oasis into a container full of water and allow to soak until it sinks to the bottom. Dig out a hole on the oasis large enough to fit your plant, being careful not to pierce all the way through to the bottom.

        +
        +
        Dig a hole in the oasis.
        Dig a hole in the oasis. (Lucy Akins)
        +
        + + +
        +
        +

        Step 2

        Insert your plant into the hole.

        +
        +
        Orchid in foam oasis
        Orchid in foam oasis (Lucy Akins)
        +
        +
        +
        +

        Step 3

        You can add various plants if you wish.

        +
        +
        Various foliage
        Various foliage (Lucy Akins)
        +
        +
        +
        +

        Step 4

        Using floral pins, attach enough moss around the oasis to cover it.

        +
        +
        Attach moss.
        Attach moss. (Lucy Akins)
        +
        +
        +
        +

        Step 5

        Gently place the cloche over the oasis. The glass may push some of the moss upward, exposing some of the foam.

        +
        +
        Place cloche over oasis.
        Place cloche over oasis. (Lucy Akins)
        +
        +
        +
        +

        Step 6

        Simply pull down the moss with tweezers or insert more moss to fill in the empty spaces.

        +
        +
        Rearrange moss.
        Rearrange moss. (Lucy Akins)
        +
        +
        +
        +

        Step 7

        You can use any platform you wish. In this case, a small saucer was used.

        +
        +
        Place cloche on a platform to sit on.
        Place cloche on a platform to sit on. (Lucy Akins)
        +
        +
        +
        +

        Step 8

        This particular terrarium rests on a planter saucer and features a small white pumpkin.

        +
        +
        Cloche placed on a terracotta saucer
        Cloche placed on a terracotta saucer (Lucy Akins)
        +
        +
        +
        +

        Step 9

        This particular terrarium was placed on a wood slice and a little toy squirrel was placed inside to add a little whimsy.

        +
        +
        Placed on a wooden slice
        Placed on a wooden slice (Lucy Akins)
        +
        +
        +
        +

        Finished Terrarium

        Displayed alone or in a group, these pretty arrangements allow you to add a little nature to your decor or tablescape.

        +
        +
        Cloche terrarium
        Cloche terrarium (Lucy Akins)
        +
        + + + + +

        Featured

        + +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/source.html new file mode 100644 index 000000000..f5c9afe19 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/source.html @@ -0,0 +1,934 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How to Build a Terrarium (with Pictures) | eHow + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        + +
        + +
        +
        +
        + + + +
        +
        +

        +How to Build a Terrarium

        + +
        + +
        Found This Helpful
        +
        +
        +
        +
        +
        +

        Glass cloche terrariums are not only appealing to the eye, but they also preserve a bit of nature in your home and serve as a simple, yet beautiful, piece of art. Closed terrariums are easy to care for, as they retain much of their own moisture and provide a warm environment with a consistent level of humidity. You won’t have to water the terrariums unless you see that the walls are not misting up. Small growing plants that don’t require a lot of light work best such as succulents, ferns, moss, even orchids.

        +
        +
        Glass cloche terrariums
        +
        Glass cloche terrariums (Lucy Akins)
        +
        +
        + +
        +
        +
        What You'll Need: +
          +
        • Cloche
        • +
        • Planter saucer, small shallow dish or desired platform
        • +
        • Floral foam oasis
        • +
        • Ruler
        • +
        • Spoon
        • +
        • Floral wire pins or paper clips
        • +
        • Small plants (from a florist or nursery)
        • +
        • Moss
        • +
        • Tweezers
        • +
        • Other small decorative items (optional)
        • +
        +
        +
        +
        +
        +
        +
        Step 1 +

        Measure the circumference of your cloche and cut the foam oasis about 3/4 inch (2 cm) smaller. Place the foam oasis into a container full of water and allow to soak until it sinks to the bottom. Dig out a hole on the oasis large enough to fit your plant, being careful not to pierce all the way through to the bottom.

        +
        +
        Dig a hole in the oasis.
        +
        Dig a hole in the oasis. (Lucy Akins)
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        Step 2 +

        Insert your plant into the hole.

        +
        +
        Orchid in foam oasis
        +
        Orchid in foam oasis (Lucy Akins)
        +
        +
        +
        +
        +
        Step 3 +

        You can add various plants if you wish.

        +
        +
        Various foliage
        +
        Various foliage (Lucy Akins)
        +
        +
        +
        +
        +
        Step 4 +

        Using floral pins, attach enough moss around the oasis to cover it.

        +
        +
        Attach moss.
        +
        Attach moss. (Lucy Akins)
        +
        +
        +
        +
        +
        Step 5 +

        Gently place the cloche over the oasis. The glass may push some of the moss upward, exposing some of the foam.

        +
        +
        Place cloche over oasis.
        +
        Place cloche over oasis. (Lucy Akins)
        +
        +
        +
        +
        +
        Step 6 +

        Simply pull down the moss with tweezers or insert more moss to fill in the empty spaces.

        +
        +
        Rearrange moss.
        +
        Rearrange moss. (Lucy Akins)
        +
        +
        +
        +
        +
        Step 7 +

        You can use any platform you wish. In this case, a small saucer was used.

        +
        +
        Place cloche on a platform to sit on.
        +
        Place cloche on a platform to sit on. (Lucy Akins)
        +
        +
        +
        +
        +
        Step 8 +

        This particular terrarium rests on a planter saucer and features a small white pumpkin.

        +
        +
        Cloche placed on a terracotta saucer
        +
        Cloche placed on a terracotta saucer (Lucy Akins)
        +
        +
        +
        +
        +
        Step 9 +

        This particular terrarium was placed on a wood slice and a little toy squirrel was placed inside to add a little whimsy.

        +
        +
        Placed on a wooden slice
        +
        Placed on a wooden slice (Lucy Akins)
        +
        +
        +
        +
        +
        Finished Terrarium +

        Displayed alone or in a group, these pretty arrangements allow you to add a little nature to your decor or tablescape.

        +
        +
        Cloche terrarium
        +
        Cloche terrarium (Lucy Akins)
        +
        +
        +
        +
        +
        + +
        +
        +
        Related Searches
        +
        +
        +
        + +
        + +
        +
        +
        +
        +

        Featured

        + +
        +
        +
        + +
        + +
        + +
        +

        Related Ads

        +
        +
        + +
        +
        +
        +
        Related Searches
        +
        +
        + +Read Article + +

        +How to Make Paper Sunflowers

        +
        + +
        +
        + + + + +
        + + + + + + + + + + + + + + + +
        +
        + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-images.json new file mode 100644 index 000000000..a6dcad5dc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-images.json @@ -0,0 +1,13 @@ +[ + "http:\/\/img-aws.ehowcdn.com\/200x200\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/2F\/86\/5547EF62-EAF5-4256-945D-0496F61C862F\/5547EF62-EAF5-4256-945D-0496F61C862F.jpg", + "http:\/\/img-aws.ehowcdn.com\/60x60\/cme\/cme_public_images\/www_demandstudios_com\/sitelife.studiod.com\/ver1.0\/Content\/images\/store\/9\/2\/d9dd6f61-b183-4893-927f-5b540e45be91.Small.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/2F\/86\/5547EF62-EAF5-4256-945D-0496F61C862F\/5547EF62-EAF5-4256-945D-0496F61C862F.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/FE\/CB\/121569D2-6984-4B2F-83C4-9D2D9A27CBFE\/121569D2-6984-4B2F-83C4-9D2D9A27CBFE.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/DF\/FC\/A05B0252-BD73-4BC7-A09A-96F0A504FCDF\/A05B0252-BD73-4BC7-A09A-96F0A504FCDF.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/EB\/DB\/8A04CCA7-3255-4225-B59A-C41441F8DBEB\/8A04CCA7-3255-4225-B59A-C41441F8DBEB.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/94\/10\/08035476-0167-4A03-AADC-13A7E7AA1094\/08035476-0167-4A03-AADC-13A7E7AA1094.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/06\/49\/4AD62696-FC95-4DA2-8351-42740C7B4906\/4AD62696-FC95-4DA2-8351-42740C7B4906.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/D0\/51\/B6AED06C-5E19-4A26-9AAD-0E175F6251D0\/B6AED06C-5E19-4A26-9AAD-0E175F6251D0.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/35\/B4\/DD5FD05A-B631-4AFE-BC8F-FDACAD1EB435\/DD5FD05A-B631-4AFE-BC8F-FDACAD1EB435.jpg", + "http:\/\/img-aws.ehowcdn.com\/640\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/A1\/FA\/2C368B34-8F6A-45F6-9DFC-0B0C4E33FAA1\/2C368B34-8F6A-45F6-9DFC-0B0C4E33FAA1.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-metadata.json new file mode 100644 index 000000000..756b8c1b7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Gina Roberts-Grey", + "Direction": null, + "Excerpt": "Graduation parties are a great way to commemorate the years of hard work teens and college co-eds devote to education. They’re also costly for mom and dad.The average cost of a graduation party in 2013 was a whopping $1,200, according to Graduationparty.com; $700 of that was allocated for food. However that budget was based on Midwestern...", + "Image": "http:\/\/img-aws.ehowcdn.com\/200x200\/cme\/cme_public_images\/www_ehow_com\/cdn-write.demandstudios.com\/upload\/image\/2F\/86\/5547EF62-EAF5-4256-945D-0496F61C862F\/5547EF62-EAF5-4256-945D-0496F61C862F.jpg", + "Title": "How to Throw a Graduation Party on a Budget | eHow", + "SiteName": "eHow" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected.html new file mode 100644 index 000000000..ea7d138e1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected.html @@ -0,0 +1,124 @@ +
        + +
        +
        +
        +

        +

        +
        + +

        + +
        + +
        +
        +
        +
        +

        Graduation parties are a great way to commemorate the years of hard work teens and college co-eds devote to education. They’re also costly for mom and dad.

        +

        The average cost of a graduation party in 2013 was a whopping $1,200, according to Graduationparty.com; $700 of that was allocated for food. However that budget was based on Midwestern statistics, and parties in urban areas like New York City are thought to have a much higher price tag.

        +

        Thankfully, there are plenty of creative ways to trim a little grad party fat without sacrificing any of the fun or celebratory spirit.

        +
        +
        Graduation
        + (Mike Watson Images/Moodboard/Getty) +
        +
        + + + + +
        +
        +

        Parties hosted at restaurants, clubhouses and country clubs eliminate the need to spend hours cleaning up once party guests have gone home. But that convenience comes with a price tag. A country club may charge as much as $2,000 for room rental and restaurant food and beverage will almost always cost more than food prepped and served at home.

        +
        Save money hosting the party at home.
        + Thomas Jackson/Digital Vision/Getty Images
        +
        +
        +
        + + +
        +
        +

        Instead of hiring a DJ, use your iPod or Smartphone to spin the tunes. Both easily hook up to most speakers or mp3 compatible docks to play music from your music library. Or download Pandora, the free online radio app, and play hours of music for free.

        +

        Personalize the music with a playlist of the grad’s favorite songs or songs that were big hits during his or her years in school.

        +
        Online radio can take the place of a hired DJ.
        + Spencer Platt/Getty Images News/Getty Images
        +
        +
        +
        + + +
        +
        +

        Avoid canned drinks, which guests often open, but don't finish. Serve pitchers of tap water with lemon and cucumber slices or sliced strawberries for an interesting and refreshing flavor. Opt for punches and non-alcoholic drinks for high school graduates that allow guests to dole out the exact amount they want to drink.

        +
        Serve drinks in pitchers, not in cans.
        + evgenyb/iStock/Getty Images
        +
        + +
        +
        + + +
        +
        +

        Instead of inviting everyone you – and the graduate – know or ever knew, scale back the guest list. Forgo inviting guests that you or your grad haven't seen for eons. There is no reason to provide provisions for people who are essentially out of your lives. Sticking to a small, but personal, guest list allows more time to mingle with loved ones during the party, too.

        +
        Limit guests to those close to the graduate.
        + Kane Skennar/Photodisc/Getty Images
        +
        +
        +
        + + +
        +
        +

        See if your grad and his best friend, girlfriend or close family member would consider hosting a joint party. You can split some of the expenses, especially when the two graduates share mutual friends. You'll also have another parent to bounce ideas off of and to help you stick to your budget when you're tempted to splurge.

        +
        Throw a joint bash for big savings.
        + Mike Watson Images/Moodboard/Getty
        +
        +
        +
        + + +
        +
        +

        Skip carving stations of prime rib and jumbo shrimp as appetizers, especially for high school graduation parties. Instead, serve some of the graduate's favorite side dishes that are cost effective, like a big pot of spaghetti with breadsticks. Opt for easy and simple food such as pizza, finger food and mini appetizers.

        +

        Avoid pre-packaged foods and pre-made deli platters. These can be quite costly. Instead, make your own cheese and deli platters for less than half the cost of pre-made.

        +
        Cost effective appetizers are just as satisfying as pre-made deli platters.
        + Mark Stout/iStock/Getty Images
        +
        +
        +
        + + +
        +
        +

        Instead of an evening dinner party, host a grad lunch or all appetizers party. Brunch and lunch fare or finger food costs less than dinner. Guests also tend to consume less alcohol in the middle of the day, which keeps cost down.

        +
        A brunch gathering will cost less than a dinner party.
        + Mark Stout/iStock/Getty Images
        +
        + + +
        +
        + + +
        +
        +

        Decorate your party in the graduate's current school colors or the colors of the school he or she will be headed to next. Décor that is not specifically graduation-themed may cost a bit less, and any leftovers can be re-used for future parties, picnics and events.

        +
        Theme the party by color without graduation-specific decor.
        + jethuynh/iStock/Getty Images
        +
        +
        +
        + + +

        + Related Searches +

        + + +

        Promoted By Zergnet

        +
        + + +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/source.html new file mode 100644 index 000000000..6976de340 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/source.html @@ -0,0 +1,1621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How to Throw a Graduation Party on a Budget (with Pictures) | eHow + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        + +
        + +
        + +
        +
        +
        + +
        + +
        +
        + + +
        +

        + How to Throw a Graduation Party on a Budget

        +
        + + + +
        +
        +
        + + +
        +
        + Save +
        +
        + + + +
        +
        +
        +
        + +
        +
        +
        +
        +
        +

        Graduation parties are a great way to commemorate the years of hard work teens and college co-eds devote to education. They’re also costly for mom and dad.

        +

        The average cost of a graduation party in 2013 was a whopping $1,200, according to Graduationparty.com; $700 of that was allocated for food. However that budget was based on Midwestern statistics, and parties in urban areas like New York City are thought to have a much higher price tag.

        +

        Thankfully, there are plenty of creative ways to trim a little grad party fat without sacrificing any of the fun or celebratory spirit.

        +
        +
        + Graduation +
        +
        + (Mike Watson Images/Moodboard/Getty) +
        +
        +
        + +
        + +
        + + +
        +
        +
        +

        Parties hosted at restaurants, clubhouses and country clubs eliminate the need to spend hours cleaning up once party guests have gone home. But that convenience comes with a price tag. A country club may charge as much as $2,000 for room rental and restaurant food and beverage will almost always cost more than food prepped and served at home.

        +
        + Save money hosting the party at home. +
        +
        + Thomas Jackson/Digital Vision/Getty Images
        +
        +
        +
        +
        + + +
        +
        +
        +

        Instead of hiring a DJ, use your iPod or Smartphone to spin the tunes. Both easily hook up to most speakers or mp3 compatible docks to play music from your music library. Or download Pandora, the free online radio app, and play hours of music for free.

        +

        Personalize the music with a playlist of the grad’s favorite songs or songs that were big hits during his or her years in school.

        +
        + Online radio can take the place of a hired DJ. +
        +
        + Spencer Platt/Getty Images News/Getty Images
        +
        +
        +
        +
        + + +
        +
        +
        +

        Avoid canned drinks, which guests often open, but don't finish. Serve pitchers of tap water with lemon and cucumber slices or sliced strawberries for an interesting and refreshing flavor. Opt for punches and non-alcoholic drinks for high school graduates that allow guests to dole out the exact amount they want to drink.

        +
        + Serve drinks in pitchers, not in cans. +
        +
        + evgenyb/iStock/Getty Images
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        + + +
        +
        +
        +

        Instead of inviting everyone you – and the graduate – know or ever knew, scale back the guest list. Forgo inviting guests that you or your grad haven't seen for eons. There is no reason to provide provisions for people who are essentially out of your lives. Sticking to a small, but personal, guest list allows more time to mingle with loved ones during the party, too.

        +
        + Limit guests to those close to the graduate. +
        +
        + Kane Skennar/Photodisc/Getty Images
        +
        +
        +
        +
        + + +
        +
        +
        +

        See if your grad and his best friend, girlfriend or close family member would consider hosting a joint party. You can split some of the expenses, especially when the two graduates share mutual friends. You'll also have another parent to bounce ideas off of and to help you stick to your budget when you're tempted to splurge.

        +
        + Throw a joint bash for big savings. +
        +
        + Mike Watson Images/Moodboard/Getty
        +
        +
        +
        +
        + + +
        +
        +
        +

        Skip carving stations of prime rib and jumbo shrimp as appetizers, especially for high school graduation parties. Instead, serve some of the graduate's favorite side dishes that are cost effective, like a big pot of spaghetti with breadsticks. Opt for easy and simple food such as pizza, finger food and mini appetizers.

        +

        Avoid pre-packaged foods and pre-made deli platters. These can be quite costly. Instead, make your own cheese and deli platters for less than half the cost of pre-made.

        +
        + Cost effective appetizers are just as satisfying as pre-made deli platters. +
        +
        + Mark Stout/iStock/Getty Images
        +
        +
        +
        +
        + + +
        +
        +
        +

        Instead of an evening dinner party, host a grad lunch or all appetizers party. Brunch and lunch fare or finger food costs less than dinner. Guests also tend to consume less alcohol in the middle of the day, which keeps cost down.

        +
        + A brunch gathering will cost less than a dinner party. +
        +
        + Mark Stout/iStock/Getty Images
        +
        +
        + +
        +
        +
        + + +
        +
        +
        +

        Decorate your party in the graduate's current school colors or the colors of the school he or she will be headed to next. Décor that is not specifically graduation-themed may cost a bit less, and any leftovers can be re-used for future parties, picnics and events.

        +
        + Theme the party by color without graduation-specific decor. +
        +
        + jethuynh/iStock/Getty Images
        +
        +
        +
        +
        +
        +
        +
        + +
        +

        + Related Searches +

        +
        +
        +
        +
        +
        Promoted By Zergnet
        +
        +

        Comments

        +
        + + +
        +
        +
        + +
        + +
        + +
        + +

        + Related Searches +

        +
        +
        +
        +
        + + +Check It Out + + +

        + 13 Delicious Thanksgiving Sides That'll Make Turkey Insignificant

        +
        +
        + + +
        + +
        +
        +
        +
        + +
        +
        M
        +
        +
        Is DIY in your DNA? Become part of our maker community.
        + Submit Your Work! +
        +
        + + +
        + + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-metadata.json new file mode 100644 index 000000000..e0e885940 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Embedded videos test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected.html new file mode 100644 index 000000000..327e6503c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected.html @@ -0,0 +1,25 @@ +
        +

        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        +

        Videos

        +

        At root

        + + + +

        In a paragraph

        +

        +

        In a div

        +

        +

        Foo

        +

        + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

        +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/source.html new file mode 100644 index 000000000..ff43acfa3 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/source.html @@ -0,0 +1,43 @@ + + + + + Embedded videos test + + +
        +

        Lorem

        +
        +

        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        +
        +

        Videos

        +

        At root

        + + + +

        In a paragraph

        +

        +

        In a div

        +
        +

        Foo

        +
        + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
        +
        + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-images.json new file mode 100644 index 000000000..f3993407b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-images.json @@ -0,0 +1,14 @@ +[ + "https:\/\/o.aolcdn.com\/images\/dims?crop=1600%2C943%2C0%2C0&quality=85&format=jpg&resize=1600%2C943&image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2Fd457f269d1400106a402302a310de800%2F205826071%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B1.jpg&client=a1acac3e1b3290917d92&signature=9fa7b29452763464190c6edff6822489df516d1b", + "https:\/\/o.aolcdn.com\/images\/dims?thumbnail=45%2C45&quality=80&image_uri=http%3A%2F%2Fwww.blogcdn.com%2Fwww.engadget.com%2Fmedia%2F2016%2F03%2Fdevindra-engadget-headshot-small.jpg&client=cbc79c14efcebee57402&signature=e6ffba7468c380581b6589a70ce5d7c1ec40cd1d", + "https:\/\/o.aolcdn.com\/images\/dims?thumbnail=980%2C653&quality=80&image_uri=https%3A%2F%2Fs.blogcdn.com%2Fslideshows%2Fimages%2Fslides%2F714%2F208%2F8%2FS7142088%2Fslug%2Fl%2Fxbox-one-x-review-gallery-1-1.jpg&client=cbc79c14efcebee57402&signature=9bb08b52e12de8e4060f863a52c613489529818d", + "https:\/\/o.aolcdn.com\/images\/dims?crop=1600%2C1067%2C0%2C0&quality=85&format=jpg&resize=1600%2C1067&image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F93beb86758ae1cf95721699e1e006e35%2F205826074%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B7.jpg&client=a1acac3e1b3290917d92&signature=c0f2d36259c2c1decfb60aae364527cda2560d4a", + "https:\/\/o.aolcdn.com\/images\/dims?crop=1600%2C949%2C0%2C0&quality=85&format=jpg&resize=1600%2C949&image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F9ece7fdad1e7025dec06ac9bf98688d0%2F205826075%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B5.jpg&client=a1acac3e1b3290917d92&signature=9913883753141e7df322616bfe0bc41c6ecd80c8", + "https:\/\/o.aolcdn.com\/images\/dims?resize=980%2C640&quality=100&image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1599%252C1043%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C1043%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252F8b98ec8f6649158fe7448ac2f2695ac5%252F205826072%252FXbox%252BOne%252BX%252Breview%252Bgallery%252B6.jpg%26client%3Da1acac3e1b3290917d92%26signature%3D353dad1308f98c2c9dfc82c58a540a8b2f1fe63c&client=cbc79c14efcebee57402&signature=60b7c061460d0d45f5d367b8a9c62978af6b76ce", + "https:\/\/o.aolcdn.com\/images\/dims?resize=980%2C640&quality=100&image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1600%252C900%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C900%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252F1885534bd201fc37481b806645c1fc8b%252F205828119%252FXbox%252Bone%252BX%252Bscreenshot%252Bgallery%252B8.jpg%26client%3Da1acac3e1b3290917d92%26signature%3Df63cf67c88b37fd9424855984e45f6b950c8c11a&client=cbc79c14efcebee57402&signature=0adca80fc8ee26a7353be639082881450a5ad49f", + "https:\/\/o.aolcdn.com\/images\/dims?crop=1600%2C900%2C0%2C0&quality=85&format=jpg&resize=1600%2C900&image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F8352a8a14e88e2ca2ba5be4d8381a055%2F205828115%2FXbox%2Bone%2BX%2Bscreenshot%2Bgallery%2B1.jpg&client=a1acac3e1b3290917d92&signature=d2ccb22e0eaabeb05bfe46e83dbe26fd07f01da8", + "https:\/\/o.aolcdn.com\/images\/dims?thumbnail=980%2C653&quality=80&image_uri=https%3A%2F%2Fs.blogcdn.com%2Fslideshows%2Fimages%2Fslides%2F714%2F292%2F4%2FS7142924%2Fslug%2Fl%2Fxbox-one-x-screenshot-gallery-2-1.jpg&client=cbc79c14efcebee57402&signature=38c95635c7aad58a8a48038e05589f5cf35b1e28", + "https:\/\/o.aolcdn.com\/images\/dims?crop=1600%2C900%2C0%2C0&quality=85&format=jpg&resize=1600%2C900&image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2Facb08903fbe26ad77b80db8c8e7e8fb1%2F205828118%2FXbox%2Bone%2BX%2Bscreenshot%2Bgallery%2B7.jpg&client=a1acac3e1b3290917d92&signature=21630fa5ec6d8fdce2c35f7e1f652636a2d8efe7", + "https:\/\/o.aolcdn.com\/images\/dims?resize=980%2C640&quality=100&image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1600%252C1027%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C1027%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252Fa2c8ba1caccdbb9e0559797e5141eafd%252F205826078%252FXbox%252BOne%252BX%252Breview%252Bgallery%252B11.jpg%26client%3Da1acac3e1b3290917d92%26signature%3Da11bcddced805c6e3698f8ce0494102aef057265&client=cbc79c14efcebee57402&signature=1e9bd192add2772bc842a34e67b7572cfd1b265a", + "https:\/\/o.aolcdn.com\/images\/dims?crop=1600%2C1028%2C0%2C0&quality=85&format=jpg&resize=1600%2C1028&image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F5396460ef8b6bde7fb7272d9e66a7701%2F205826076%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B9.jpg&client=a1acac3e1b3290917d92&signature=f5b5b4b986c2f8b5031a4469ae0ecec82aff65b0" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-metadata.json new file mode 100644 index 000000000..3eb49bef2 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "The Xbox One X is the most powerful gaming console ever, but it's not for everyone yet.", + "Image": "https:\/\/o.aolcdn.com\/images\/dims?crop=1600%2C943%2C0%2C0&quality=85&format=jpg&resize=1600%2C943&image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2Fd457f269d1400106a402302a310de800%2F205826071%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B1.jpg&client=a1acac3e1b3290917d92&signature=9fa7b29452763464190c6edff6822489df516d1b", + "Title": "Xbox One X review: A console that keeps up with gaming PCs", + "SiteName": "Engadget" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected.html new file mode 100644 index 000000000..44a2afe0d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected.html @@ -0,0 +1,479 @@ +
        +

        + +

        But only hardcore + gamers will appreciate it.

        +

        +
        +
        +
        + +
        +

        +

        +
        + +
        + + + +
        +
        +
        +
        + +
        +
        +
        + +
        + + +
        +
        +
        +
        +

        The Xbox + One X is the ultimate video game system. It sports + more horsepower than any system ever. And it plays more + titles in native 4K than Sony's + PlayStation 4 Pro. It's just about everything + you could want without investing in a gaming PC. The + only problem? It's now been a year since the PS4 Pro + launched, and the One X costs $500, while Sony's console + launched at $400. That high price limits the Xbox One X + to diehard Microsoft fans who don't mind paying a bit + more to play the console's exclusive titles in 4K. + Everyone else might be better off waiting, or opting for + the $279 Xbox + One S.

        + +
        +
        +
        +
        + +
        +
        +
        +

        Gallery: Xbox One + X | 14 Photos

        +

        +

        +
        +
        +
        +
        + + +
        +
        +
        + + +
        + +
        +
        + +
        • Most + powerful hardware ever in a home console +
        • +
        • Solid + selection of enhanced titles +
        • +
        • 4K Blu-ray + drive is great for movie fans +
        • +
        +
        + +
        • Expensive +
        • +
        • Not worth + it if you don’t have a 4K TV +
        • +
        • Still no VR + support +
        • +
        +
        +
        +
        + +

        As promised, the Xbox One X is the + most powerful game console ever. In practice, though, it + really just puts Microsoft on equal footing with Sony’s + PlayStation 4 Pro. 4K/HDR enhanced games look great, but + it’s lack of VR is disappointing in 2017.

        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +

        Hardware

        +

        +

        Despite all the power inside, the One X is + Microsoft's smallest console to date. It looks + similar to the Xbox One S, except it has an entirely + matte black case and is slightly slimmer. It's also + surprisingly dense -- the console weighs 8.4 pounds, + but it feels far heavier than you'd expect for its + size, thanks to all of its new hardware. The One S, + in comparison, weighs two pounds less.

        +

        The Xbox One X's real upgrades are under the hood. It + features an 8-core CPU running at 2.3Ghz, 12GB of + GDDR5 RAM, a 1 terabyte hard drive and an upgraded + AMD Polaris GPU with 6 teraflops of computing power. + The PS4 Pro has only 8GB of RAM and tops out at 4.2 + teraflops. Microsoft's console is clearly faster. + That additional horsepower means the Xbox One X can + run more games in full native 4K than the Sony's + console.

        +

        +

        Along the front, there's the slot-loading 4K Blu-ray + drive, a physical power button, a single USB port + and a controller pairing button. And around back, + there are HDMI out and in ports, the latter of which + lets you plug in your cable box. Additionally, there + are two USB ports, connections for optical audio, IR + out, and gigabit Ethernet. If you've still got a + Kinect around, you'll need to use a USB adapter to + plug it in.

        +
        +
        +
        +
        +
        +
        + + +
        +
        Devindra Hardawar/AOL +
        +
        +
        +
        +
        +
        +
        +

        The console's controller hasn't changed since its + last mini-upgrade with the Xbox One S. That revision + rounded out its seams, improved bumper performance + and added a 3.5mm headphone jack. It's still a great + controller, though I'm annoyed Microsoft is sticking + with AA batteries as their default power source. + Sure, you could just pick up some renewable + batteries, or the Play and Charge kit, but that's an + extra expense. And manually swapping batteries feels + like a bad user experience when every other console + has rechargeable controllers.

        +

        In use

        +
        +
        +
        +
        +
        +
        + + +
        +
        Devindra Hardawar/AOL +
        +
        +
        +
        +
        +
        +
        +

        You won't find any major differences between the One + X and the last Xbox at first — aside from a more + dramatic startup sequence. Navigating the Xbox + interface is fast and zippy, but mostly that's due + to a recent OS upgrade. If you're moving over from + an older Xbox One, you can use the backup tool to + transfer your games and settings to an external hard + drive. Just plug that into the new console during + setup and it'll make it feel just like your old + machine. It's also a lot faster than waiting for + everything to download from Xbox Live.

        +

        You'll still have to set aside some time if you want + to play an Xbox One X-enhanced title, though. Those + 4K textures will make games significantly larger, + but Microsoft says it's come up with a few ways to + help developers make downloading them more + efficient. For example, language packs and other + optional content won't get installed by default.

        +

        We only had a few enhanced titles to test out during + our review: Gears of War 4, Killer + Instinct and Super Lucky's Tale. + They each took advantage of the console in different + ways. Gears of War 4 runs natively in 4K at + 30 FPS with Dolby Atmos and HDR (high dynamic range + lighting) support. It looked great -- especially + with HDR, which highlighted bright elements like + lightning strikes -- but I noticed the frame rate + dip occasionally. I was also surprised that load + times were on-par with what I've seen with the game + on the Xbox One S.

        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +

        You can also play in Performance mode, which bumps + the frame rate up to 60FPS and uses higher quality + graphical effects, while rendering it lower in + 1080p. Personally, I preferred this, since it makes + the game much smoother -- as if you're playing it on + a high-end gaming PC, not a console. Some + PlayStation 4 Pro games also let you choose how you + wanted to distribute its power, so in some ways + Microsoft is just following in its footsteps.

        +

        I've been playing Gears of War 4 on my + gaming PC (which is connected to my home theater) + over the past year, and I was impressed that the + Xbox One X is able to deliver a similar experience. + It didn't quite match my rig though, which is + powered by Intel Core i7 4790k CPU running at 4GHz, + 16GB DDR3 RAM and an NVIDIA GTX 1080 GPU. Typically, + I play at 1,440p (2,560 by 1,440 pixels) with HDR + and all of the graphical settings set to their + highest level, and I can easily maintain a 60FPS + frame rate. The One X felt just as solid at 1080p, + but there were clearly plenty of graphics settings + it couldn't take advantage of, in particular higher + levels of bloom lighting and shadow detail.

        + +
        +
        +
        +
        + +
        +
        +
        +

        Gallery: Xbox + One X screenshots | 9 Photos

        +

        +

        +
        +
        +
        +
        +
        +
        +
        +
        +

        Killer Instinct and Super Lucky's + Tale run in 4K at a smooth 60FPS. They both + looked and played better than their standard + versions, though I was surprised they didn't take + advantage of HDR. As usual, I noticed the + improvement in frame rates more than the higher + resolution. Unless you're sitting very close to a TV + above 50-inches, you'd likely have a hard time + telling between 4K and 1080p.

        +

        That poses a problem for Microsoft: It's betting that + gamers will actually want true 4K rendering. In + practice, though, PlayStation 4 Pro titles running + in HDR and resolutions between 1080p and 4K often + look just as good to the naked eye. The Xbox One X's + big advantage is that its hardware could let more + games reach 60FPS compared to Sony's console.

        +

        Microsoft says over 130 Xbox One X-enhanced titles + are in the works. That includes already-released + games like Forza Motorsport 7 and Assassin's + Creed Origins, as well as upcoming titles + like Call of Duty: WW2. You'll be able to + find them easily in a special section in the Xbox + store. There is also a handful of Xbox 360 games + that'll get enhanced eventually, including Halo + 3 and Fallout 3. Some of those + titles will get bumped up to a higher resolution, + while others will get HDR support. Microsoft + describes these upgrades as a bonus for developers + who were prescient about how they built their games. + Basically, don't expect your entire 360 library to + get enhanced.

        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +

        Even if a game isn't specifically tuned for the new + console, Microsoft says you might still see some + performance improvements. The PlayStation 4 Pro, + meanwhile, has over one hundred games built for its + hardware, and its boost mode can speed up some older + games.

        +

        Microsoft is still pushing the Xbox as more than just + a game console, though. 4K Blu-rays loaded up + quickly, and I didn't notice many delays as I + skipped around films. Planet Earth II, in + particular, looked fantastic thanks to its brilliant + use of HDR. Unfortunately, the One X doesn't support + Dolby Vision, so you're stuck with the slightly less + capable HDR 10 standard. That makes sense since it's + more widely supported, but it would have been nice + to see Dolby's, too.

        +

        + +

        +

        And speaking of Dolby technology, Microsoft is also + highlighting Atmos support on the One X, just like + it did with the One S. The company's app lets you + configure the console to pass audio Atmos signals to + your audio receiver. You can also shell out $15 to + get Atmos support for headphones, which simulates + immersive surround sound. It's strange to pay money + to unlock Dolby features, but it's worth it since + it's significantly better than Microsoft's audio + virtualization technology. The Netflix app also + supports Atmos for a handful of films (something + that the Xbox One S and PlayStation 4 offer, as + well).

        +

        One thing you won't find in the new Xbox is VR + support. Microsoft has mentioned that the console + will offer some sort of mixed reality, but it hasn't + offered up any details yet. It's technically + powerful enough to work with any of the Windows + Mixed Reality headsets launching this fall. It's a + shame that Microsoft is being so wishy-washy because + Sony has had a very successful head start with the + PlayStation VR.

        +

        Pricing and the competition

        +
        +
        +
        +
        +
        +
        + + +
        +
        Devindra Hardawar/AOL +
        +
        +
        +
        +
        +
        +
        +

        The biggest knock against the Xbox One X is its $500 + price. The PS4 Pro launched at $400 last year, and + there's a good chance we'll see plenty of deals + around the holidays. If your friends are on Xbox + Live, or you're a devotee of Microsoft's first party + franchises, then the X makes more sense. If you just + want to play third-party titles that come to both + platforms, though, the PS4 Pro is clearly the better + deal.

        +

        If you're looking to upgrade from an original Xbox + One, and you have a new TV, the One X might be more + compelling. It's faster and offers more features + than the One S, and more importantly, it'll last you + much longer without needing an upgrade. There's also + plenty of wisdom in simply waiting a while before + you buy the One X, especially if you haven't moved + to a 4K TV yet. The new console can make games look + better on 1080p sets, since it'll supersample + high-res textures and have more graphical effects, + but it's simply not worth the upgrade since those + TVs don't support HDR.

        +

        If price isn't a huge concern for you, it's worth + considering investing in a gaming PC. A decent one + costs between $600 and $800, plus the price of a + monitor, but it'll easily be more powerful than the + One X. And you have the added benefit of upgrading + components down the line. Now that Microsoft and + game publishers are offering most major titles on + PC, you won't be missing out on much by ditching + consoles.

        +

        Wrap-up

        +

        +

        Ultimately, the Xbox One X offers some major + performance upgrades that gamers will notice -- + especially if you're coming from an original Xbox + One. But it's also a bit disappointing since it's + coming a year after the PS4 Pro, and it doesn't + offer VR yet. For Microsoft fans, though, none of + that will matter. It's exactly what the company + promised: the fastest game console ever made.

        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        + +

        +

        From around the web

        +

        + + +
        \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/source.html new file mode 100644 index 000000000..2bed80809 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/source.html @@ -0,0 +1,3513 @@ + + + + + + + + + + + + + + + + + Xbox One X review: A console that keeps up with gaming PCs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        + +
        +
        +
        +
        + + + +
        + + +
        + + + + + +
        +
        +
        + +
        + +
        + +
        +
        +
        +

        + Xbox One X review: A console that keeps up with gaming PCs

        +

        But only hardcore + gamers will appreciate it.

        +
        +
        +
        +
        + + + +
        + +
        + 2192 Shares
        +
        + +
        + +
        +
        +
        +
        Share
        +
        +
        +
        +
        +
        +
        +
        Tweet
        +
        +
        +
        +
        +
        +
        +
        Share
        +
        +
        +
        +
        + + + + +
        +
        +
        Save
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
          +
          +
          +
          +
          +
          +
          + +
          +
          + +
          +
          +
          + + + +
          + + +
          +
          +
          + +
          +
          +
          +
          +

          The Xbox + One X is the ultimate video game system. It sports + more horsepower than any system ever. And it plays more + titles in native 4K than Sony's + PlayStation 4 Pro. It's just about everything + you could want without investing in a gaming PC. The + only problem? It's now been a year since the PS4 Pro + launched, and the One X costs $500, while Sony's console + launched at $400. That high price limits the Xbox One X + to diehard Microsoft fans who don't mind paying a bit + more to play the console's exclusive titles in 4K. + Everyone else might be better off waiting, or opting for + the $279 Xbox + One S.

          + +
          +
          +
          +
          + +
          +
          +
          +
          +

          Gallery: Xbox One + X | 14 Photos

          +
          + + +
          + + + + 14 +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          +

          +
          +
          +
          +
          + +
          +
          +
          +

          Engadget Score +
          + +
          +
          Poor +
          +
          +
          Uninspiring +
          +
          +
          Good +
          +
          +
          Excellent +
          +
          +
          Key
          +
          +
          +

          +
          +
          +
          + +
          Xbox +
          +
          +
          +
          +
          +
          from $610.00 +
          +
          + +
          +
          +
          + +
          +
          + 87 +
          +
          +
          +
          +
          +
          + +
          +
          +
          Pros
          +
            +
          • Most + powerful hardware ever in a home console +
          • +
          • Solid + selection of enhanced titles +
          • +
          • 4K Blu-ray + drive is great for movie fans +
          • +
          +
          +
          +
          Cons
          +
            +
          • Expensive +
          • +
          • Not worth + it if you don’t have a 4K TV +
          • +
          • Still no VR + support +
          • +
          +
          +
          +
          +
          +

          Summary

          +

          As promised, the Xbox One X is the + most powerful game console ever. In practice, though, it + really just puts Microsoft on equal footing with Sony’s + PlayStation 4 Pro. 4K/HDR enhanced games look great, but + it’s lack of VR is disappointing in 2017.

          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Hardware

          +

          +

          Despite all the power inside, the One X is + Microsoft's smallest console to date. It looks + similar to the Xbox One S, except it has an entirely + matte black case and is slightly slimmer. It's also + surprisingly dense -- the console weighs 8.4 pounds, + but it feels far heavier than you'd expect for its + size, thanks to all of its new hardware. The One S, + in comparison, weighs two pounds less.

          +

          The Xbox One X's real upgrades are under the hood. It + features an 8-core CPU running at 2.3Ghz, 12GB of + GDDR5 RAM, a 1 terabyte hard drive and an upgraded + AMD Polaris GPU with 6 teraflops of computing power. + The PS4 Pro has only 8GB of RAM and tops out at 4.2 + teraflops. Microsoft's console is clearly faster. + That additional horsepower means the Xbox One X can + run more games in full native 4K than the Sony's + console.

          +

          +

          Along the front, there's the slot-loading 4K Blu-ray + drive, a physical power button, a single USB port + and a controller pairing button. And around back, + there are HDMI out and in ports, the latter of which + lets you plug in your cable box. Additionally, there + are two USB ports, connections for optical audio, IR + out, and gigabit Ethernet. If you've still got a + Kinect around, you'll need to use a USB adapter to + plug it in.

          +
          +
          +
          +
          +
          +
          + + +
          +
          +
          Devindra Hardawar/AOL +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          The console's controller hasn't changed since its + last mini-upgrade with the Xbox One S. That revision + rounded out its seams, improved bumper performance + and added a 3.5mm headphone jack. It's still a great + controller, though I'm annoyed Microsoft is sticking + with AA batteries as their default power source. + Sure, you could just pick up some renewable + batteries, or the Play and Charge kit, but that's an + extra expense. And manually swapping batteries feels + like a bad user experience when every other console + has rechargeable controllers.

          +

          In use

          +
          +
          +
          +
          +
          +
          + + +
          +
          +
          Devindra Hardawar/AOL +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          You won't find any major differences between the One + X and the last Xbox at first — aside from a more + dramatic startup sequence. Navigating the Xbox + interface is fast and zippy, but mostly that's due + to a recent OS upgrade. If you're moving over from + an older Xbox One, you can use the backup tool to + transfer your games and settings to an external hard + drive. Just plug that into the new console during + setup and it'll make it feel just like your old + machine. It's also a lot faster than waiting for + everything to download from Xbox Live.

          +

          You'll still have to set aside some time if you want + to play an Xbox One X-enhanced title, though. Those + 4K textures will make games significantly larger, + but Microsoft says it's come up with a few ways to + help developers make downloading them more + efficient. For example, language packs and other + optional content won't get installed by default.

          +

          We only had a few enhanced titles to test out during + our review: Gears of War 4, Killer + Instinct and Super Lucky's Tale. + They each took advantage of the console in different + ways. Gears of War 4 runs natively in 4K at + 30 FPS with Dolby Atmos and HDR (high dynamic range + lighting) support. It looked great -- especially + with HDR, which highlighted bright elements like + lightning strikes -- but I noticed the frame rate + dip occasionally. I was also surprised that load + times were on-par with what I've seen with the game + on the Xbox One S.

          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          You can also play in Performance mode, which bumps + the frame rate up to 60FPS and uses higher quality + graphical effects, while rendering it lower in + 1080p. Personally, I preferred this, since it makes + the game much smoother -- as if you're playing it on + a high-end gaming PC, not a console. Some + PlayStation 4 Pro games also let you choose how you + wanted to distribute its power, so in some ways + Microsoft is just following in its footsteps.

          +

          I've been playing Gears of War 4 on my + gaming PC (which is connected to my home theater) + over the past year, and I was impressed that the + Xbox One X is able to deliver a similar experience. + It didn't quite match my rig though, which is + powered by Intel Core i7 4790k CPU running at 4GHz, + 16GB DDR3 RAM and an NVIDIA GTX 1080 GPU. Typically, + I play at 1,440p (2,560 by 1,440 pixels) with HDR + and all of the graphical settings set to their + highest level, and I can easily maintain a 60FPS + frame rate. The One X felt just as solid at 1080p, + but there were clearly plenty of graphics settings + it couldn't take advantage of, in particular higher + levels of bloom lighting and shadow detail.

          + +
          +
          +
          +
          + +
          +
          +
          +
          +

          Gallery: Xbox + One X screenshots | 9 Photos

          +
          + + +
          + + + + 9 +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          Killer Instinct and Super Lucky's + Tale run in 4K at a smooth 60FPS. They both + looked and played better than their standard + versions, though I was surprised they didn't take + advantage of HDR. As usual, I noticed the + improvement in frame rates more than the higher + resolution. Unless you're sitting very close to a TV + above 50-inches, you'd likely have a hard time + telling between 4K and 1080p.

          +

          That poses a problem for Microsoft: It's betting that + gamers will actually want true 4K rendering. In + practice, though, PlayStation 4 Pro titles running + in HDR and resolutions between 1080p and 4K often + look just as good to the naked eye. The Xbox One X's + big advantage is that its hardware could let more + games reach 60FPS compared to Sony's console.

          +

          Microsoft says over 130 Xbox One X-enhanced titles + are in the works. That includes already-released + games like Forza Motorsport 7 and Assassin's + Creed Origins, as well as upcoming titles + like Call of Duty: WW2. You'll be able to + find them easily in a special section in the Xbox + store. There is also a handful of Xbox 360 games + that'll get enhanced eventually, including Halo + 3 and Fallout 3. Some of those + titles will get bumped up to a higher resolution, + while others will get HDR support. Microsoft + describes these upgrades as a bonus for developers + who were prescient about how they built their games. + Basically, don't expect your entire 360 library to + get enhanced.

          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          Even if a game isn't specifically tuned for the new + console, Microsoft says you might still see some + performance improvements. The PlayStation 4 Pro, + meanwhile, has over one hundred games built for its + hardware, and its boost mode can speed up some older + games.

          +

          Microsoft is still pushing the Xbox as more than just + a game console, though. 4K Blu-rays loaded up + quickly, and I didn't notice many delays as I + skipped around films. Planet Earth II, in + particular, looked fantastic thanks to its brilliant + use of HDR. Unfortunately, the One X doesn't support + Dolby Vision, so you're stuck with the slightly less + capable HDR 10 standard. That makes sense since it's + more widely supported, but it would have been nice + to see Dolby's, too.

          +

          + +

          +

          And speaking of Dolby technology, Microsoft is also + highlighting Atmos support on the One X, just like + it did with the One S. The company's app lets you + configure the console to pass audio Atmos signals to + your audio receiver. You can also shell out $15 to + get Atmos support for headphones, which simulates + immersive surround sound. It's strange to pay money + to unlock Dolby features, but it's worth it since + it's significantly better than Microsoft's audio + virtualization technology. The Netflix app also + supports Atmos for a handful of films (something + that the Xbox One S and PlayStation 4 offer, as + well).

          +

          One thing you won't find in the new Xbox is VR + support. Microsoft has mentioned that the console + will offer some sort of mixed reality, but it hasn't + offered up any details yet. It's technically + powerful enough to work with any of the Windows + Mixed Reality headsets launching this fall. It's a + shame that Microsoft is being so wishy-washy because + Sony has had a very successful head start with the + PlayStation VR.

          +

          Pricing and the competition

          +
          +
          +
          +
          +
          +
          + + +
          +
          +
          Devindra Hardawar/AOL +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          The biggest knock against the Xbox One X is its $500 + price. The PS4 Pro launched at $400 last year, and + there's a good chance we'll see plenty of deals + around the holidays. If your friends are on Xbox + Live, or you're a devotee of Microsoft's first party + franchises, then the X makes more sense. If you just + want to play third-party titles that come to both + platforms, though, the PS4 Pro is clearly the better + deal.

          +

          If you're looking to upgrade from an original Xbox + One, and you have a new TV, the One X might be more + compelling. It's faster and offers more features + than the One S, and more importantly, it'll last you + much longer without needing an upgrade. There's also + plenty of wisdom in simply waiting a while before + you buy the One X, especially if you haven't moved + to a 4K TV yet. The new console can make games look + better on 1080p sets, since it'll supersample + high-res textures and have more graphical effects, + but it's simply not worth the upgrade since those + TVs don't support HDR.

          +

          If price isn't a huge concern for you, it's worth + considering investing in a gaming PC. A decent one + costs between $600 and $800, plus the price of a + monitor, but it'll easily be more powerful than the + One X. And you have the added benefit of upgrading + components down the line. Now that Microsoft and + game publishers are offering most major titles on + PC, you won't be missing out on much by ditching + consoles.

          +

          Wrap-up

          +

          +

          Ultimately, the Xbox One X offers some major + performance upgrades that gamers will notice -- + especially if you're coming from an original Xbox + One. But it's also a bit disappointing since it's + coming a year after the PS4 Pro, and it doesn't + offer VR yet. For Microsoft fans, though, none of + that will matter. It's exactly what the company + promised: the fastest game console ever made.

          +
          +
          +
          +
          + + +
          +
          +
          +
          +
          +
          +
          +
          + + + +
          +

          From around the web

          +
          +
          +
          +
          +
          + +
          +
          +
          +
          + +
          + + +
          + + +
          +
          +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ear icon + + + + + + + + + + eye icon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text file + + + + + + + + + + + + + + + + + + + + + + + + vr + + + + + + + + + + + + + +
          +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/config.json new file mode 100644 index 000000000..0ac6816ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/config.json @@ -0,0 +1,3 @@ +{ + "ArticleByLine": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-images.json new file mode 100644 index 000000000..5f0cd4927 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-images.json @@ -0,0 +1,4 @@ +[ + "http:\/\/www.fortressofsolitude.co.za\/wp-content\/uploads\/2018\/05\/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack.jpg", + "http:\/\/www.fortressofsolitude.co.za\/wp-content\/uploads\/2018\/05\/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack-750x400.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json new file mode 100644 index 000000000..8405f6763 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Written by Edward Wallace", + "Direction": null, + "Excerpt": "Just when you think the marketing behind the film couldn't get any more amazing, they go and release a music video from the Deadpool 2 soundtrack starring Canadian singer Céline Dion.", + "Image": "http:\/\/www.fortressofsolitude.co.za\/wp-content\/uploads\/2018\/05\/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack.jpg", + "Title": "Céline Dion Belches Her Way Onto Deadpool 2's Soundtrack", + "SiteName": "Fortress of Solitude" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected.html new file mode 100644 index 000000000..5dc679145 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected.html @@ -0,0 +1 @@ +

          Céline Dion Belches Her Way Onto Deadpool 2's Soundtrack


          Ryan Reynolds never stops surprising fans with his Deadpool, a.k.a. the Merc with the Mouth, persona. Just when you think the marketing behind the film couldn’t get any more amazing, they go and release a music video from the Deadpool 2 soundtrack starring Canadian singer Céline Dion. Yes, the one who sang the Titanic theme song. Your eyes do not deceive you.

          Showtime, Mama. #EffortMaximal #Deadpool2 pic.twitter.com/ZKLrucXJO4

          — Ryan Reynolds (@VancityReynolds) May 3, 2018

          “What’s left to say? These prayers ain’t working anymore. Every word shot down in flames. What’s left to do with these broken pieces on the floor? I’m losing my voice calling on you,” Dion croons in the video for “Ashes”. Near the end of it, the filthy, foul-mouthed Deadpool shows up in a surprising twist mentioning that he should have gotten N’sync instead.

          Deadpool 2 opens in theatres on May 18.


          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/source.html new file mode 100644 index 000000000..af8f61a2b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/source.html @@ -0,0 +1,141 @@ + Céline Dion Belches Her Way Onto Deadpool 2's Soundtrack
          Games Festival
          diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-images.json new file mode 100644 index 000000000..79181b26b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-images.json @@ -0,0 +1,6 @@ +[ + "http:\/\/imgtech.gmw.cn\/attachement\/jpg\/site2\/20170310\/448a5bc1e2861a2c4e5929.jpg", + "http:\/\/imgtech.gmw.cn\/attachement\/jpg\/site2\/20170310\/448a5bc1e2861a2c4e592a.jpg", + "http:\/\/imgtech.gmw.cn\/attachement\/jpg\/site2\/20170310\/448a5bc1e2861a2c4e592d.jpg", + "https:\/\/img.gmw.cn\/pic\/content_logo.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-metadata.json new file mode 100644 index 000000000..65cd6ab1b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "肖春芳", + "Direction": null, + "Excerpt": "不幸的是,对于希望能喝上一杯的太空探险者,那些将他们送上太空的政府机构普遍禁止他们染指包括酒在内的含酒精饮料。", + "Image": null, + "Title": "宇航员在太空中喝酒会怎么样?后果很严重 _探索者 _光明网", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected.html new file mode 100644 index 000000000..1b69754ff --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected.html @@ -0,0 +1,58 @@ +
          +

          2017-03-10 09:58 来源:网易科学人 

          + + + +

            翱翔于距地球数千公里的太空中,进入广袤漆黑的未知领域,是一项艰苦卓绝的工作。这让人感到巨大压力和极度恐慌。那么,为什么不能让宇航员来一杯“地球末日”鸡尾酒来放松一下?

          +

            不幸的是,对于希望能喝上一杯的太空探险者,那些将他们送上太空的政府机构普遍禁止他们染指包括酒在内的含酒精饮料。

          +

            但是,很快普通人都会有机会向人类“最终的边疆”出发——以平民化旅行的形式,去探索和殖民火星。确实,火星之旅将是一次令人感到痛苦的旅行,可能一去不复返并要几年时间才能完成,但是否应该允许参与者在旅程中痛饮一番?或至少携带能在火星上发酵自制酒精饮料的设备?

          +

          (Credit: Nasa)

          +

          +   图注:巴兹?奥尔德林(Buzz Aldrin)可能是第二个在月球上行走的人,但他是第一个在月球上喝酒的人 +

          +

            事实是,历史上酒与太空探险有一种复杂的关系。让我们来看看喝了酒的航天员究竟会发生什么—— 如果我们开始给予进入太空的人类更大的自由度,又可能会发生什么。

          +

            人们普遍认为,当一个人所处的海拔越高,喝醉后会越容易感到头昏。因此,人们自然地想到,当人身处地球轨道上时,饮酒会对人体有更强烈的致眩作用。但这种说法可能不是正确的。

          +

            事实上,有证据表明,早在上世纪八十年代就澄清了这一传言。1985年,美国联邦航空管理局(UFAA)开展了一项研究,以验证人在不同的海拔高度饮酒,是否会影响执行复杂任务时的表现和酒精测定仪的读数。

          +

            在这项研究中,17名男子被要求在地面和一间模拟海拔3.7公里的房间内喝下一些伏特加。然后,他们被要求完成各种任务,包括心算口算问题、用操纵杆在示波器上跟踪灯光以及各种其它测试。研究人员发现,“酒精和海拔高度对酒精测定仪读数或完成任务的表现情况没有交互作用”。

          +

            所以,人乘坐飞机时醉得更快是个传说?纽约州立大学(State University of New York,SUNY)社会学荣誉教授戴夫·汉森(Dave Hanson)研究酒精和饮酒超过40年,他认为确实如此。他说:“我不认为它(在太空中饮酒)会有任何不同。”

          +

            他认为高原反应可能类似于宿醉,但它也可能类似于中毒。他说:“如果人们没有感受到充分的大气压力,他们也会觉得喝醉了一样。”

          +

            相反,那些声称在飞机上比在地面上醉得更快的人,可能只是经历了“自认喝醉(think-drink)”效应,这种效应多年来已被广泛研究。它表明,如果人们认为自己喝醉了,那他们的一举一动会真的像喝醉了一样—— 而不是实际上他们真的醉了。

          +

            汉森指出:“如果人们脑子里一直认为在飞机上酒精会对他们产生与平常不同的作用,那么他们乘坐飞机时真的会觉得酒精对他们产生了不同的作用。”

          +

            所以,如果酒精对人体的物理效应与海拔高度无关,那么在国际空间站上睡前小饮一杯不应该是一个大问题,对吧?错了。

          +

            美国宇航局约翰逊航天中心发言人丹尼尔·霍特(Daniel Huot)表示:“国际空间站上的宇航员不允许喝酒。在国际空间站上,酒精和其它挥发性化合物的使用受到控制,因为它们的挥发物可能对该站的水回收系统产生影响。”

          +

            为此,国际空间站上的宇航员甚至没有被提供含有酒精的产品,例如漱口水、香水或须后水。如果在国际空间站上饮酒狂欢,溢出的啤酒也可能存在损坏设备的风险。

          +

          (Credit: iStock)

          +

          +   图注:测试表明,有关人在高空中喝酒更容易醉的传言是不正确的 +

          +

            然后是责任的问题。我们不允许汽车司机或飞机飞行员喝醉后驾驶,所以并不奇怪同样的规则适用于国际空间站上的宇航员。毕竟国际空间站的造价高达1500亿美元,而且在接近真空的太空中其运行速度达到了每小时27680公里。

          +

            然而,2007年,美国宇航局(NASA)成立了一个负责调查宇航员健康状况的独立小组,称历史上该机构至少有两名宇航员在即将飞行前喝了大量的酒,但仍然被允许飞行。Nasa安全负责人随后的审查发现并没有证据支持这一指控。宇航员在飞行前12小时是严禁饮酒的,因为他们需要充分的思维能力和清醒的意识。

          +

            出台这一规则的原因很清楚。在1985年UFAA开展的关于酒精在不同海拔高度影响的研究中,研究人员得出结论,酒精的影响与海拔高度无关。无论参与测试的人员在什么海拔高度喝酒,其酒精测量仪的读数都是一样的。他们的行为表现受到的影响也相同,但如果提供给测试人员的是安慰剂,则身处高空比身处海平面的行为表现要更差一些。这表明,无论是否摄入酒精,海拔高度可能对心理表现有轻微的影响。

          +

            国际空间站禁止享用啤酒等有大量泡沫的饮料,可能有另一个原因:没有重力的帮助,液体和气体会在宇航员的胃里不停地翻滚,导致他们不断地打嗝。

          +

            然而,尽管有严格的规则,这并不意味着太空中的人类不会接触发酵液体。在国际空间站上进行了大量有关酒精的实验—— 但没有发生让众人去饮酒的情况,所以没有人真正了解太空中人体对酒精具体有怎样的反应。

          +

            NASA发言人斯蒂芬妮?席尔霍尔茨(Stephanie Schierhol)表示:“我们研究了太空中宇航员身体的各种变化,包括微生物层面的。我们有一个营养计划,以确保他们的身体获得保持健康所需要的营养。显然,在实施‘天空实验室(skylab)’项目时,他们曾将雪利酒与宇航员一起送到太空中,但宇航员在零重力飞行时使用雪利酒的测试结果不太好。”天空实验室是美国第一座空间站。

          +

            席尔霍尔茨补充说,在测试中使用雪利酒“引发呕吐反射,公众也反对”。

          +

            也许最令人惊讶的是,人类在月球表面上喝的第一种液体是葡萄酒。前NASA宇航员巴兹·奥尔德林(Buzz Aldrin)在采访和他撰写的书中表示,1969年,在和尼尔·阿姆斯特朗(Neil Armstrong)走出登月舱之前的圣餐仪式上,他喝了少量葡萄酒。举行这一仪式时与地面的通信出现了暂停,因此这一过程从来没有播出。

          +

            虽然Nasa对太空中酒精的使用有严格的规定,但在这方面俄罗斯过去似乎更为宽松。在其“和平号”空间站上,宇航员允许喝点干邑和伏特加。当他们发现国际空间站将严格禁止饮酒时,显然有不少怨言。

          +

            然而,奇怪的是,酒仍然能通过各种方式出现在国际空间站上。2015年,日本酿酒商三得利(Suntory)的全球创新中心将该公司一些获奖的威士忌运送到国际空间站,参与一项旨在验证“能否通过利用微重力环境增强酒精饮料醇厚性”的实验。换句话说,在微重力下酒的陈酿过程可能不同,导致它的陈酿进程更快、味道更好。对此,地球上的每家酿酒商都想进一步地了解。

          +

            几年前,即2011年9月至2014年9月,Nasa赞助了一个试验,研究微重力环境对威士忌中未发酵麦芽与烧焦橡木颗粒的影响,这两种物质能对威士忌的陈酿起帮助作用。在太空中逗留将近1000天后,用于测试的威士忌的单宁成分保持不变——但是太空中橡木颗粒产生了更高浓度的木质素分解产物,这种物质能赋予威士忌特别的风味。

          +

            Nasa表示:“这种试验不仅对麦芽威士忌行业有影响,而且对整个食品和饮料行业也有影响。送上太空的威士忌与对照样品之间的风味差异是如此显著,需要进一步分析以破解不同口味产生的原因。”

          +

            因此,即使宇航员自己被禁止在地球轨道上饮酒,但他们正在做的工作可以提高在地上消费的酒的质量。

          +

            相比之下,执行登陆火星任务的人将远离家乡几年,而不是几个月,因此可能会有人提出有关禁止饮酒的规定可以放松一些。

          +

            然而,像戴夫?汉森这样的专家认为,继续禁止饮酒并没有什么害处。除了实际的安全问题,饮酒还可能有其它挑战。汉森认为,地球人存在许多社会文化方面的差异,而且人连续几年时间呆在一个狭小的空间里,很容易突然发怒,这些因素都使饮酒问题变得很棘手。

          +

          (Credit: David Frohman/Peachstate Historical Consulting Inc)

          +

          +   图注:奥尔德林的圣餐杯回到了地球上 +

          +

            他说:“这是一个政治问题,也是一个文化方面的问题,但不是一个科学上的问题。这将是未来一个可能产生冲突领域,因为人们具有不同的文化背景,他们对饮酒的态度不同。”他进一步指出,如果你与穆斯林、摩门教徒或禁酒主义者分配在同一间宿舍怎么办?面对未来人们可能在一个没有期限的时间内呆在一个有限的空间里,需要“尽早解决”如何协调不同文化观点的问题。

          +

            所以,当宇航员在地球轨道上时,将还不得不满足于通过欣赏外面的景色来振作精神,而不要指望沉溺于烈酒中。我们留在地球上的人,则可以准备好适量的香槟酒,以迎接他们的归来。

          +

            原标题:他晚于阿姆斯特朗登月 却是首个敢在月球喝酒的人

          +

            出品︱网易科学人栏目组 胖胖

          +

            作者︱春春 + +

          + +

          [责任编辑:肖春芳]

          + + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/source.html new file mode 100644 index 000000000..048d101c3 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/source.html @@ -0,0 +1,2103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 宇航员在太空中喝酒会怎么样?后果很严重 _探索者 _光明网 + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + + + +
          +
          +
          + +
          + + + + + + + + + + +
          + +
          +
          +
          + 首页 + > 科技频道 + > 探索者 + > + 正文 +
          + +

          宇航员在太空中喝酒会怎么样?后果很严重

          + +
          + 2017-03-10 09:58 来源:网易科学人  +
          +
          + 2017-03-10 09:58:03来源:网易科学人作者:责任编辑:肖春芳 +
          +
          + + + +

            翱翔于距地球数千公里的太空中,进入广袤漆黑的未知领域,是一项艰苦卓绝的工作。这让人感到巨大压力和极度恐慌。那么,为什么不能让宇航员来一杯“地球末日”鸡尾酒来放松一下?

          +

            不幸的是,对于希望能喝上一杯的太空探险者,那些将他们送上太空的政府机构普遍禁止他们染指包括酒在内的含酒精饮料。

          +

            但是,很快普通人都会有机会向人类“最终的边疆”出发——以平民化旅行的形式,去探索和殖民火星。确实,火星之旅将是一次令人感到痛苦的旅行,可能一去不复返并要几年时间才能完成,但是否应该允许参与者在旅程中痛饮一番?或至少携带能在火星上发酵自制酒精饮料的设备?

          +

          (Credit: Nasa)

          +

          +   图注:巴兹?奥尔德林(Buzz Aldrin)可能是第二个在月球上行走的人,但他是第一个在月球上喝酒的人 +

          +

            事实是,历史上酒与太空探险有一种复杂的关系。让我们来看看喝了酒的航天员究竟会发生什么—— 如果我们开始给予进入太空的人类更大的自由度,又可能会发生什么。

          +

            人们普遍认为,当一个人所处的海拔越高,喝醉后会越容易感到头昏。因此,人们自然地想到,当人身处地球轨道上时,饮酒会对人体有更强烈的致眩作用。但这种说法可能不是正确的。

          +

            事实上,有证据表明,早在上世纪八十年代就澄清了这一传言。1985年,美国联邦航空管理局(UFAA)开展了一项研究,以验证人在不同的海拔高度饮酒,是否会影响执行复杂任务时的表现和酒精测定仪的读数。

          +

            在这项研究中,17名男子被要求在地面和一间模拟海拔3.7公里的房间内喝下一些伏特加。然后,他们被要求完成各种任务,包括心算口算问题、用操纵杆在示波器上跟踪灯光以及各种其它测试。研究人员发现,“酒精和海拔高度对酒精测定仪读数或完成任务的表现情况没有交互作用”。

          +

            所以,人乘坐飞机时醉得更快是个传说?纽约州立大学(State University of New York,SUNY)社会学荣誉教授戴夫·汉森(Dave Hanson)研究酒精和饮酒超过40年,他认为确实如此。他说:“我不认为它(在太空中饮酒)会有任何不同。”

          +

            他认为高原反应可能类似于宿醉,但它也可能类似于中毒。他说:“如果人们没有感受到充分的大气压力,他们也会觉得喝醉了一样。”

          +

            相反,那些声称在飞机上比在地面上醉得更快的人,可能只是经历了“自认喝醉(think-drink)”效应,这种效应多年来已被广泛研究。它表明,如果人们认为自己喝醉了,那他们的一举一动会真的像喝醉了一样—— 而不是实际上他们真的醉了。

          +

            汉森指出:“如果人们脑子里一直认为在飞机上酒精会对他们产生与平常不同的作用,那么他们乘坐飞机时真的会觉得酒精对他们产生了不同的作用。”

          +

            所以,如果酒精对人体的物理效应与海拔高度无关,那么在国际空间站上睡前小饮一杯不应该是一个大问题,对吧?错了。

          +

            美国宇航局约翰逊航天中心发言人丹尼尔·霍特(Daniel Huot)表示:“国际空间站上的宇航员不允许喝酒。在国际空间站上,酒精和其它挥发性化合物的使用受到控制,因为它们的挥发物可能对该站的水回收系统产生影响。”

          +

            为此,国际空间站上的宇航员甚至没有被提供含有酒精的产品,例如漱口水、香水或须后水。如果在国际空间站上饮酒狂欢,溢出的啤酒也可能存在损坏设备的风险。

          +

          (Credit: iStock)

          +

          +   图注:测试表明,有关人在高空中喝酒更容易醉的传言是不正确的 +

          +

            然后是责任的问题。我们不允许汽车司机或飞机飞行员喝醉后驾驶,所以并不奇怪同样的规则适用于国际空间站上的宇航员。毕竟国际空间站的造价高达1500亿美元,而且在接近真空的太空中其运行速度达到了每小时27680公里。

          +

            然而,2007年,美国宇航局(NASA)成立了一个负责调查宇航员健康状况的独立小组,称历史上该机构至少有两名宇航员在即将飞行前喝了大量的酒,但仍然被允许飞行。Nasa安全负责人随后的审查发现并没有证据支持这一指控。宇航员在飞行前12小时是严禁饮酒的,因为他们需要充分的思维能力和清醒的意识。

          +

            出台这一规则的原因很清楚。在1985年UFAA开展的关于酒精在不同海拔高度影响的研究中,研究人员得出结论,酒精的影响与海拔高度无关。无论参与测试的人员在什么海拔高度喝酒,其酒精测量仪的读数都是一样的。他们的行为表现受到的影响也相同,但如果提供给测试人员的是安慰剂,则身处高空比身处海平面的行为表现要更差一些。这表明,无论是否摄入酒精,海拔高度可能对心理表现有轻微的影响。

          +

            国际空间站禁止享用啤酒等有大量泡沫的饮料,可能有另一个原因:没有重力的帮助,液体和气体会在宇航员的胃里不停地翻滚,导致他们不断地打嗝。

          +

            然而,尽管有严格的规则,这并不意味着太空中的人类不会接触发酵液体。在国际空间站上进行了大量有关酒精的实验—— 但没有发生让众人去饮酒的情况,所以没有人真正了解太空中人体对酒精具体有怎样的反应。

          +

            NASA发言人斯蒂芬妮?席尔霍尔茨(Stephanie Schierhol)表示:“我们研究了太空中宇航员身体的各种变化,包括微生物层面的。我们有一个营养计划,以确保他们的身体获得保持健康所需要的营养。显然,在实施‘天空实验室(skylab)’项目时,他们曾将雪利酒与宇航员一起送到太空中,但宇航员在零重力飞行时使用雪利酒的测试结果不太好。”天空实验室是美国第一座空间站。

          +

            席尔霍尔茨补充说,在测试中使用雪利酒“引发呕吐反射,公众也反对”。

          +

            也许最令人惊讶的是,人类在月球表面上喝的第一种液体是葡萄酒。前NASA宇航员巴兹·奥尔德林(Buzz Aldrin)在采访和他撰写的书中表示,1969年,在和尼尔·阿姆斯特朗(Neil Armstrong)走出登月舱之前的圣餐仪式上,他喝了少量葡萄酒。举行这一仪式时与地面的通信出现了暂停,因此这一过程从来没有播出。

          +

            虽然Nasa对太空中酒精的使用有严格的规定,但在这方面俄罗斯过去似乎更为宽松。在其“和平号”空间站上,宇航员允许喝点干邑和伏特加。当他们发现国际空间站将严格禁止饮酒时,显然有不少怨言。

          +

            然而,奇怪的是,酒仍然能通过各种方式出现在国际空间站上。2015年,日本酿酒商三得利(Suntory)的全球创新中心将该公司一些获奖的威士忌运送到国际空间站,参与一项旨在验证“能否通过利用微重力环境增强酒精饮料醇厚性”的实验。换句话说,在微重力下酒的陈酿过程可能不同,导致它的陈酿进程更快、味道更好。对此,地球上的每家酿酒商都想进一步地了解。

          +

            几年前,即2011年9月至2014年9月,Nasa赞助了一个试验,研究微重力环境对威士忌中未发酵麦芽与烧焦橡木颗粒的影响,这两种物质能对威士忌的陈酿起帮助作用。在太空中逗留将近1000天后,用于测试的威士忌的单宁成分保持不变——但是太空中橡木颗粒产生了更高浓度的木质素分解产物,这种物质能赋予威士忌特别的风味。

          +

            Nasa表示:“这种试验不仅对麦芽威士忌行业有影响,而且对整个食品和饮料行业也有影响。送上太空的威士忌与对照样品之间的风味差异是如此显著,需要进一步分析以破解不同口味产生的原因。”

          +

            因此,即使宇航员自己被禁止在地球轨道上饮酒,但他们正在做的工作可以提高在地上消费的酒的质量。

          +

            相比之下,执行登陆火星任务的人将远离家乡几年,而不是几个月,因此可能会有人提出有关禁止饮酒的规定可以放松一些。

          +

            然而,像戴夫?汉森这样的专家认为,继续禁止饮酒并没有什么害处。除了实际的安全问题,饮酒还可能有其它挑战。汉森认为,地球人存在许多社会文化方面的差异,而且人连续几年时间呆在一个狭小的空间里,很容易突然发怒,这些因素都使饮酒问题变得很棘手。

          +

          (Credit: David Frohman/Peachstate Historical Consulting Inc)

          +

          +   图注:奥尔德林的圣餐杯回到了地球上 +

          +

            他说:“这是一个政治问题,也是一个文化方面的问题,但不是一个科学上的问题。这将是未来一个可能产生冲突领域,因为人们具有不同的文化背景,他们对饮酒的态度不同。”他进一步指出,如果你与穆斯林、摩门教徒或禁酒主义者分配在同一间宿舍怎么办?面对未来人们可能在一个没有期限的时间内呆在一个有限的空间里,需要“尽早解决”如何协调不同文化观点的问题。

          +

            所以,当宇航员在地球轨道上时,将还不得不满足于通过欣赏外面的景色来振作精神,而不要指望沉溺于烈酒中。我们留在地球上的人,则可以准备好适量的香槟酒,以迎接他们的归来。

          +

            原标题:他晚于阿姆斯特朗登月 却是首个敢在月球喝酒的人

          +

            出品︱网易科学人栏目组 胖胖

          +

            作者︱春春 + +

          + +
          [责任编辑:肖春芳]
          + +
          +
          + +
          + +
          + + +
          +
          +
          + + + + + + + + + +
          + + + + + + + + +
          + + + + +
          + + + +
          + +
          +
          +
          +
          +
          +
          分享
          +
          +
          +
          +
          +
          +
          0
          +
          +
          + +
          +
          +
          + + + + + + +
          + + +
          +
          +
          您此时的心情
          +
          新闻表情排行 /
          +
          +
          + +
          +
          + + + + +
          + + + + + + + + + +
          + + + + + +
          +
          +
          + +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + + + + +
          +
          +
          +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + + + + +
          +
          +
          +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + +
          +
          +
          + + + + + +
          +
          +
          +
          + + + + +
          + + + + + +
          +
          +

          [值班总编推荐] + 想想童乞的遭遇,谁都会坐立不安
          +

          +

          [值班总编推荐] + 网络慈善:珍视每一份爱心
          +

          +

          [值班总编推荐] + 被村上春树打脸,日本右翼急了
          +

          +
          +
          + +
          +
          + + +
          + + + + + +
          +
          + + + + + + +
          +
          +
          + + +
          + + + + + +
          +
          + + + + + +
          +
          + + + + + + + +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          + + + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          +
          + + +
          +

          手机光明网

          +

          光明网版权所有

          +
          +
          + +
          +
          + + + + + + + + + + + + + +
          + + +
          + +
          + 立即打开
          + +
          + + + + + + + + + + + + + + + + +
          + + + + + + + + +
          + + +
          +
          X
          +
          +
          选择其他平台 >>
          分享到
          +
          + +
          +
          +
          + +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-images.json new file mode 100644 index 000000000..07cba8ba0 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-images.json @@ -0,0 +1,4 @@ +[ + "http:\/\/www.heise.de\/imgs\/18\/1\/4\/6\/2\/3\/5\/1\/Barcode-Scanner-With-Border-f0c62350bd8d9d96.jpeg", + "http:\/\/3.f.ix.de\/scale\/geometry\/600\/q75\/imgs\/18\/1\/4\/6\/2\/3\/5\/1\/Barcode-Scanner-With-Border-fc08c913da5cea5d.jpeg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-metadata.json new file mode 100644 index 000000000..bb8e4c47f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Mac & i", + "Direction": null, + "Excerpt": "Das in der iOS-Version bereits enthaltene TOTP-Feature ist nun auch für OS X 10.10 verfügbar. Zudem gibt es neue Zusatzfelder in der Datenbank und weitere Verbesserungen.", + "Image": "http:\/\/www.heise.de\/imgs\/18\/1\/4\/6\/2\/3\/5\/1\/Barcode-Scanner-With-Border-f0c62350bd8d9d96.jpeg", + "Title": "1Password für Mac generiert Einmal-Passwörter", + "SiteName": "Mac & i" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected.html new file mode 100644 index 000000000..95ab304b5 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected.html @@ -0,0 +1,20 @@ +
          + + +

          1Password scannt auch QR-Codes.

          + + +

          (Bild: Hersteller)

          + +

          Das in der iOS-Version bereits enthaltene TOTP-Feature ist nun auch für OS X 10.10 verfügbar. Zudem gibt es neue Zusatzfelder in der Datenbank und weitere Verbesserungen.

          +

          AgileBits hat Version 5.3 seines bekannten Passwortmanagers 1Password für OS X freigegeben. Mit dem Update wird eine praktische Funktion nachgereicht, die die iOS-Version der Anwendung bereits seit längerem beherrscht: Das direkte Erstellen von Einmal-Passwörtern. Unterstützt wird dabei der TOTP-Standard (Time-Based One-Time Passwords), den unter anderem Firmen wie Evernote, Dropbox oder Google einsetzen, um ihre Zugänge besser abzusichern. Neben Account und regulärem Passwort wird dabei dann ein Zusatzcode verlangt, der nur kurze Zeit gilt.

          +

          Zur TOTP-Nutzung muss zunächst ein Startwert an 1Password übergeben werden. Das geht unter anderem per QR-Code, den die App über ein neues Scanfenster selbst einlesen kann – etwa aus dem Webbrowser. Eine Einführung in die Technik gibt ein kurzes Video. Die TOTP-Unterstützung in 1Password erlaubt es, auf ein zusätzliches Gerät (z.B. ein iPhone) neben dem Mac zu verzichten, das den Code liefert – was allerdings auch die Sicherheit verringert, weil es keinen "echten" zweiten Faktor mehr gibt.

          +

          Update 5.3 des Passwortmanagers liefert auch noch weitere Verbesserungen. So gibt es die Möglichkeit, FaceTime-Audio- oder Skype-Anrufe aus 1Password zu starten, die Zahl der Zusatzfelder in der Datenbank wurde erweitert und der Umgang mit unterschiedlichen Zeitzonen klappt besser. Die Engine zur Passworteingabe im Browser soll beschleunigt worden sein.

          +

          1Password kostet aktuell knapp 50 Euro im Mac App Store und setzt in seiner aktuellen Version mindestens OS X 10.10 voraus. + + + +(bsc) +

          + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/source.html new file mode 100644 index 000000000..5ac581f07 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/source.html @@ -0,0 +1,887 @@ + + + 1Password für Mac generiert Einmal-Passwörter | Mac & i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          +
          + + + + + + +
          +
          +
          + +
          + + +
            +
          • Mac & i Twitter
          • +
          • Mac & i Facebook
          • +
          • Mac & i Google+
          • +
          • Mac & i YouTube
          • +
          • +
            +
            Mac & i Apps
            +
            Mac & i für das iPhone
            +
            Mac & i für das iPad
            +
            +
          • +
          + + + + +
          + +
          + + +
          Anzeige
          + +
          + + + + + + + + + + + +
          +
          Webcode:
          www.mac-and-i.de/
          +
          + + + +
          +
          + + + + + + + + + + + + + + + + +

          + Anzeige
          + + + +

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          + +
          +
          +
          + +
          +
          +
          + + + + +
          + + + + + + + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-images.json new file mode 100644 index 000000000..a26021c34 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/api.news.com.au\/content\/1.0\/heraldsun\/images\/1227261885862?format=jpg&group=iphone&size=medium" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-metadata.json new file mode 100644 index 000000000..102413240 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "JOE HILDEBRAND", + "Direction": null, + "Excerpt": "A HIGH-powered federal government team has been doing the rounds of media organisations in the past few days in an attempt to allay concerns about the impact of new surveillance legislation on press freedom. It failed.", + "Image": "http:\/\/api.news.com.au\/content\/1.0\/heraldsun\/images\/1227261885862?format=jpg&group=iphone&size=medium", + "Title": "Angry media won’t buckle over new surveillance laws", + "SiteName": "HeraldSun" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected.html new file mode 100644 index 000000000..6896eedab --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected.html @@ -0,0 +1,26 @@ +
          +
          +
          +

          A new Bill would require telecommunications service providers to store so-called ‘metadat

          +

          + A new Bill would require telecommunications service providers to store so-called ‘metadata’ for two years. + Source: + Supplied +

          +
          +
          +

          + A HIGH-powered federal government team has been doing the rounds of media organisations in the past few days in an attempt to allay concerns about the impact of new surveillance legislation on press freedom. It failed. +

          +

          The roadshow featured the Prime Minister’s national security adviser, Andrew Shearer, Justin Bassi, who advises Attorney-General George Brandis on crime and security matters, and Australian Federal Police Commissioner Andrew Colvin. Staffers from the office of Communications Minister Malcolm Turnbull also took part.

          They held meetings with executives from News Corporation and Fairfax, representatives of the TV networks, the ABC top brass and a group from the media union and the Walkley journalism foundation. I was involved as a member of the Walkley board.

          The initiative, from Tony Abbott’s office, is evidence that the Government has been alarmed by the strength of criticism from media of the Data Retention Bill it wants passed before Parliament rises in a fortnight. Bosses, journalists, even the Press Council, are up in arms, not only over this measure, but also over aspects of two earlier pieces of national security legislation that interfere with the ability of the media to hold government to account.

          + + + +
          + + +
          +

          The Bill would require telecommunications service providers to store so-called “metadata” — the who, where, when and how of a communication, but not its content — for two years so security and law enforcement agencies can access it without warrant. Few would argue against the use of such material to catch criminals or terrorists. But, as Parliament’s Joint Committee on Intelligence and Security has pointed out, it would also be used “for the purpose of determining the identity of a journalist’s sources”.

          And that should ring warning bells for anyone genuinely concerned with the health of our democracy. Without the ability to protect the identity of sources, journalists would be greatly handicapped in exposing corruption, dishonesty, waste, incompetence and misbehaviour by public officials.

          The Press Council is concerned the laws would crush investigative journalism.

          “These legitimate concerns cannot be addressed effectively short of exempting journalists and media organisations,” says president David Weisbrot.

          The media union is adamant journalists’ metadata must be exempted from the law. That’s what media bosses want, too, though they have a fallback position based on new safeguards being implemented in Britain.

          That would prevent access to the metadata of journalists or media organisations without a judicial warrant. There would be a code including — according to the explanatory notes of the British Bill — “provision to protect the public interest in the confidentiality of journalistic sources”.

          In their meetings this week, the government team boasted of concessions in the new Data Retention Bill. The number of agencies able to access metadata will be reduced by excluding such organisations as the RSPCA and local councils. And whenever an authorisation is issued for access to information about a journalist’s sources, the Ombudsman (or, where ASIO is involved, the Inspector-General of Intelligence and Security) will receive a copy.

          That does nothing to solve the problem. The Government has effectively admitted as much by agreeing that the parliamentary committee should conduct a separate review of how to deal with the issue of journalists’ sources.

          But another inquiry would be a waste of time — the committee has already received and considered dozens of submissions on the subject. The bottom line is that the Government does not deny that the legislation is flawed, but is demanding it be passed anyway with the possibility left open of a repair job down the track. That is a ridiculous approach.

          Claims that immediate action is imperative do not stand up. These are measures that won’t come into full effect for two years. Anyway, amending the Bill to either exempt journalists or adopt the UK model could be done quickly, without any risk to national security.

          AS Opposition Leader Bill Shorten said in a letter to Abbott last month: “Press freedom concerns about mandatory data retention would ideally be addressed in this Bill to avoid the need for future additional amendments or procedures to be put in place in the future.”

          The Data Retention Bill will be debated in the House of Representatives this week. Then, on Friday, CEOs from leading media organisations will front the parliamentary committee to air their concerns before the legislation goes to the Senate.

          Those CEOs should make it clear they are just as angry about this as they were about Stephen Conroy’s attempt to impinge on press freedom through media regulation under the previous Labor government.

          Memories of the grief Conroy brought down on his head would undoubtedly make Abbott sit up and take notice.

          LAURIE OAKES IS THE NINE NETWORK POLITICAL EDITOR

          +
          +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/source.html new file mode 100644 index 000000000..050bed449 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/source.html @@ -0,0 +1,1193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Angry media won’t buckle over new surveillance laws + | Herald Sun + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          +
          + +
          +
          + +
          +
          +

          +

          Laurie Oakes

          +

          +
          +
          +

          + Angry media won’t buckle over new surveillance laws +

          +
          + +
          +
          +
          +
          +
          + A new Bill would require telecommunications service providers to store so-called ‘metadat +
          +

          + A new Bill would require telecommunications service providers to store so-called ‘metadata’ for two years. + Source: + Supplied +

          +
          +
          +
          +

          + A HIGH-powered federal government team has been doing the rounds of media organisations in the past few days in an attempt to allay concerns about the impact of new surveillance legislation on press freedom. It failed. +

          +
          +

          The roadshow featured the Prime Minister’s national security adviser, Andrew Shearer, Justin Bassi, who advises Attorney-General George Brandis on crime and security matters, and Australian Federal Police Commissioner Andrew Colvin. Staffers from the office of Communications Minister Malcolm Turnbull also took part.

          They held meetings with executives from News Corporation and Fairfax, representatives of the TV networks, the ABC top brass and a group from the media union and the Walkley journalism foundation. I was involved as a member of the Walkley board.

          The initiative, from Tony Abbott’s office, is evidence that the Government has been alarmed by the strength of criticism from media of the Data Retention Bill it wants passed before Parliament rises in a fortnight. Bosses, journalists, even the Press Council, are up in arms, not only over this measure, but also over aspects of two earlier pieces of national security legislation that interfere with the ability of the media to hold government to account.

          + +
          +
          + +
          + +
          + +
          +
          +
          +

          The Bill would require telecommunications service providers to store so-called “metadata” — the who, where, when and how of a communication, but not its content — for two years so security and law enforcement agencies can access it without warrant. Few would argue against the use of such material to catch criminals or terrorists. But, as Parliament’s Joint Committee on Intelligence and Security has pointed out, it would also be used “for the purpose of determining the identity of a journalist’s sources”.

          And that should ring warning bells for anyone genuinely concerned with the health of our democracy. Without the ability to protect the identity of sources, journalists would be greatly handicapped in exposing corruption, dishonesty, waste, incompetence and misbehaviour by public officials.

          The Press Council is concerned the laws would crush investigative journalism.

          “These legitimate concerns cannot be addressed effectively short of exempting journalists and media organisations,” says president David Weisbrot.

          The media union is adamant journalists’ metadata must be exempted from the law. That’s what media bosses want, too, though they have a fallback position based on new safeguards being implemented in Britain.

          That would prevent access to the metadata of journalists or media organisations without a judicial warrant. There would be a code including — according to the explanatory notes of the British Bill — “provision to protect the public interest in the confidentiality of journalistic sources”.

          In their meetings this week, the government team boasted of concessions in the new Data Retention Bill. The number of agencies able to access metadata will be reduced by excluding such organisations as the RSPCA and local councils. And whenever an authorisation is issued for access to information about a journalist’s sources, the Ombudsman (or, where ASIO is involved, the Inspector-General of Intelligence and Security) will receive a copy.

          That does nothing to solve the problem. The Government has effectively admitted as much by agreeing that the parliamentary committee should conduct a separate review of how to deal with the issue of journalists’ sources.

          But another inquiry would be a waste of time — the committee has already received and considered dozens of submissions on the subject. The bottom line is that the Government does not deny that the legislation is flawed, but is demanding it be passed anyway with the possibility left open of a repair job down the track. That is a ridiculous approach.

          Claims that immediate action is imperative do not stand up. These are measures that won’t come into full effect for two years. Anyway, amending the Bill to either exempt journalists or adopt the UK model could be done quickly, without any risk to national security.

          AS Opposition Leader Bill Shorten said in a letter to Abbott last month: “Press freedom concerns about mandatory data retention would ideally be addressed in this Bill to avoid the need for future additional amendments or procedures to be put in place in the future.”

          The Data Retention Bill will be debated in the House of Representatives this week. Then, on Friday, CEOs from leading media organisations will front the parliamentary committee to air their concerns before the legislation goes to the Senate.

          Those CEOs should make it clear they are just as angry about this as they were about Stephen Conroy’s attempt to impinge on press freedom through media regulation under the previous Labor government.

          Memories of the grief Conroy brought down on his head would undoubtedly make Abbott sit up and take notice.

          LAURIE OAKES IS THE NINE NETWORK POLITICAL EDITOR

          +
          +
          +
          + + +
          + +
          +
          + + +
          +
          + + + + +
          +
          +
          +
          +
          +
          +
          +
          +
          + + + + + + + +
          +
          +

          Other Opinion Columns

          +
          +
          +
          +
          +
          +
          + + + +

          + Editorial + Fraser’s lasting legacy +

          + Fraser’s lasting legacy + +

          + + MALCOLM Fraser — an effective prime minister controversially installed, soundly elected and re-elected, a relentless contributor, thinker and reformer, a blue-blooded egalitarian. +

          + + +
          +
          + + + +

          + Wave of stupidity + Doctor knows best, not Starbeam Fantapants +

          + Doctor knows best, not Starbeam Fantapants + +

          + + HOW is it that ideas and philosophies that are patently absurd capture people’s imagination? It seems we’re being swamped by a wave of stupidity. +

          + + +
          +
          + + + +

          + Ikea challenge + Good for some, but I’m not buying it +

          + Good for some, but I’m not buying it + +

          + + THE good thing about Ikea is that it’s cheap and good quality. The bad thing is the whole, exhausting business of shopping at their stores. +

          + + +
          +
          + + + +

          + True liberal + Ex-PM a man of contrasts +

          + Ex-PM a man of contrasts + +

          + + IT was said that Malcolm Fraser moved to the Left after losing office but the former PM didn’t change - he was always a “small l” liberal. +

          + + +
          +
          + + + +

          + Own backyard + Let’s make local issues a priority +

          + Let’s make local issues a priority + +

          + + IT’S nice to think Australia is a player on the world stage but, really, we’re not. So forget global posturing and let’s sort out our own backyard. +

          + + +
          +
          +
          +
          +
          +
          + + + + + +
          +
          + +
          + + + + + + + + + + + + + + + + +
          +
          + + + + +
          +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-metadata.json new file mode 100644 index 000000000..332533a12 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", + "Image": null, + "Title": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected.html new file mode 100644 index 000000000..431532997 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected.html @@ -0,0 +1,14 @@ +
          + +

          + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +

          +

          + Secondary header +

          + +

          + Third header +

          + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/source.html new file mode 100644 index 000000000..e0699a003 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/source.html @@ -0,0 +1,29 @@ + + + + + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt + + + +

          + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt +

          +

          + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +

          +

          + Secondary header +

          +

          + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +

          +

          + Third header +

          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-images.json new file mode 100644 index 000000000..88d2990ee --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-images.json @@ -0,0 +1,7 @@ +[ + "http:\/\/fakehost\/test\/..\/..\/..\/gazou\/pc_gazou\/aesop\/aesop052.jpg", + "http:\/\/fakehost\/test\/..\/..\/..\/..\/366\/logo_bana\/corner_1.gif", + "http:\/\/fakehost\/test\/..\/..\/..\/..\/366\/logo_bana\/corner_2.gif", + "http:\/\/fakehost\/test\/..\/..\/..\/gazou\/origami_gazou\/kantan\/dogface.gif", + "http:\/\/fakehost\/test\/..\/..\/..\/gazou\/origami_gazou\/kantan\/dog.gif" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-metadata.json new file mode 100644 index 000000000..b16149a42 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "福娘童話集 > きょうのイソップ童話 > 1月のイソップ童話 > 欲張りなイヌ", + "Image": null, + "Title": "欲張りなイヌ <福娘童話集 きょうのイソップ童話>", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected.html new file mode 100644 index 000000000..defbcc10c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected.html @@ -0,0 +1,39 @@ +
          +

          + 福娘童話集 > きょうのイソップ童話 > 1月のイソップ童話 > 欲張りなイヌ +

          +
          +

          元旦のイソップ童話

          よくばりなイヌ

          + 欲張りなイヌ

          ひらがな ←→ 日本語・英語 ←→ English

          +
          + + + + + +
          + + おりがみをつくろう + + ( おりがみくらぶ より) + +
          +

          + 犬の顔の折り紙いぬのかお   犬の顔の紙いぬ +

          + + +
          + ♪音声配信(html5) +
          +
          + 亜姫の朗読☆ イソップ童話より +

          +  肉をくわえたイヌが、橋を渡っていました。  ふと下を見ると、川の中にも肉をくわえたイヌがいます。 イヌはそれを見て、思いました。(あいつの肉の方が、大きそうだ)  イヌは、くやしくてたまりません。 (そうだ、あいつをおどかして、あの肉を取ってやろう)  そこでイヌは、川の中のイヌに向かって思いっきり吠えました。 「ウゥー、ワン!!」  そのとたん、くわえていた肉はポチャンと川の中に落ちてしまいました。 「ああー、ぁぁー」  川の中には、がっかりしたイヌの顔がうつっています。  さっきの川の中のイヌは、水にうつった自分の顔だったのです。  同じ物を持っていても、人が持っている物の方が良く見え、また、欲張るとけっきょく損をするというお話しです。 +

          +

          + おしまい +

          +
          +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/source.html new file mode 100644 index 000000000..7cbaacd6f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/source.html @@ -0,0 +1,356 @@ + + + + + 欲張りなイヌ <福娘童話集 きょうのイソップ童話> + + + + + + + + + + + + + + + + +
          +
          + + + + + + + + +
          + 福娘童話集 > きょうのイソップ童話 + + 福娘童話集 きょうのイソップ童話 + + 童話・昔話・おとぎ話の福娘童話集 +
          +
          +
          + + + + + + + + +
          + + + +
          + + + + + + + + + +
          + + +
          +   +
          +
          +

          + 福娘童話集 > きょうのイソップ童話 > 1月のイソップ童話 > 欲張りなイヌ +

          +

          + 元旦のイソップ童話
          +
          +
          +
          + よくばりなイヌ
          +
          +
          +
          + 欲張りなイヌ
          +
          +
          +
          + ひらがな ←→ 日本語・英語 ←→ English +

          + + + + + + +
          + + + + + + + + + + + + +
          + + + おりがみをつくろう + + ( おりがみくらぶ より) + + +
          + + + + + + +
          + 犬の顔の折り紙いぬのかお   犬の顔の紙いぬ +
          +
          +
          + + + + + + + + + + + + +
          + ♪音声配信(html5) +
          + +
          + 亜姫の朗読☆ イソップ童話より +
          +

          +  肉をくわえたイヌが、橋を渡っていました。  ふと下を見ると、川の中にも肉をくわえたイヌがいます。 イヌはそれを見て、思いました。(あいつの肉の方が、大きそうだ)  イヌは、くやしくてたまりません。 (そうだ、あいつをおどかして、あの肉を取ってやろう)  そこでイヌは、川の中のイヌに向かって思いっきり吠えました。 「ウゥー、ワン!!」  そのとたん、くわえていた肉はポチャンと川の中に落ちてしまいました。 「ああー、ぁぁー」  川の中には、がっかりしたイヌの顔がうつっています。  さっきの川の中のイヌは、水にうつった自分の顔だったのです。  同じ物を持っていても、人が持っている物の方が良く見え、また、欲張るとけっきょく損をするというお話しです。 +

          +

          + おしまい +

          +

          + 前のページへ戻る
          +
          +
          +
          + + +

          +
          + + + + + + + + + + +
          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +      1月 1日の豆知識
          +
          +
          +
          + 366日への旅
          +
          + きょうの記念日
          +
          + 元旦 +
          + きょうの誕生花
          +
          + 松(まつ) +
          + きょうの誕生日・出来事
          +
          + 1949年 Mr.マリック(マジシャン) +
          + 恋の誕生日占い
          +
          + 自分の考えをしっかりと持った女の子。 +
          + なぞなぞ小学校
          +
          + ○(丸)を取ったらお母さんになってしまう男の人は? +
          + あこがれの職業紹介
          +
          + 歌手 +
          + 恋の魔法とおまじない 001
          +
          + 両思いになれる おまじない +
          +   1月 1日の童話・昔話
          +
          +
          +
          + 福娘童話集
          +
          + きょうの日本昔話
          +
          + ネコがネズミを追いかける訳 +
          + きょうの世界昔話
          +
          + モンゴルの十二支話 +
          + きょうの日本民話
          +
          + 仕事の取替えっこ +
          + きょうのイソップ童話
          +
          + 欲張りなイヌ +
          + きょうの江戸小話
          +
          + ぞうきんとお年玉 +
          + きょうの百物語
          +
          + 百物語の幽霊 +
          + + + + + + + + + + + + + + + + + + + + + +
          + 福娘のサイト +
          + 366日への旅
          +
          + 毎日の記念日・誕生花 ・有名人の誕生日と性格判断
          +
          + 福娘童話集
          +
          + 世界と日本の童話と昔話
          +
          + 女の子応援サイト -さくら-
          +
          + 誕生日占い、お仕事紹介、おまじない、など
          +
          + 子どもの病気相談所
          +
          + 病気検索と対応方法、症状から検索するWEB問診
          +
          + 世界60秒巡り
          +
          + 国旗国歌や世界遺産など、世界の国々の豆知識
          +
          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-images.json new file mode 100644 index 000000000..f548bd9b2 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-images.json @@ -0,0 +1,4 @@ +{ + "0": "http:\/\/www.iab.com\/wp-content\/uploads\/2015\/10\/getting-lean-with-digital-ad-ux-300x250.jpg", + "2": "http:\/\/www.iab.com\/wp-content\/uploads\/2015\/05\/auto-draft-16-150x150.jpg" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-metadata.json new file mode 100644 index 000000000..a8d6766bd --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By\n\t\t\tScott Cunningham", + "Direction": null, + "Excerpt": "We messed up. As technologists, tasked with delivering content and services to users, we lost track of the user experience. Twenty years ago we saw an explosion of websites, built by developers around the world, providing all forms of content. This was the beginning of an age of enlightenment, the intersection of content and technology. … Continued", + "Image": "http:\/\/www.iab.com\/wp-content\/uploads\/2015\/10\/getting-lean-with-digital-ad-ux-300x250.jpg", + "Title": "Getting LEAN with Digital Ad UX | IAB", + "SiteName": "IAB" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected.html new file mode 100644 index 000000000..dd4faf3b4 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected.html @@ -0,0 +1,30 @@ +
          +
          +

          We messed up. As technologists, tasked with delivering content and services to users, we lost track of the user experience.

          +

          Twenty years ago we saw an explosion of websites, built by developers around the world, providing all forms of content. This was the beginning of an age of enlightenment, the intersection of content and technology. Many of us in the technical field felt compelled, and even empowered, to produce information as the distribution means for mass communication were no longer restricted by a high barrier to entry.

          +

          In 2000, the dark ages came when the dot-com bubble burst. We were told that our startups were gone or that our divisions sustained by corporate parent companies needed to be in the black. It was a wakeup call that led to a renaissance age. Digital advertising became the foundation of an economic engine that, still now, sustains the free and democratic World Wide Web. In digital publishing, we strived to balance content, commerce, and technology. The content management systems and communication gateways we built to inform and entertain populations around the world disrupted markets and in some cases governments, informed communities of imminent danger, and liberated new forms of art and entertainment—all while creating a digital middle class of small businesses.

          +

          We engineered not just the technical, but also the social and economic foundation that users around the world came to lean on for access to real time information. And users came to expect this information whenever and wherever they needed it. And more often than not, for anybody with a connected device, it was free.

          +

          This was choice—powered by digital advertising—and premised on user experience.

          +

          But we messed up.

          +

          Through our pursuit of further automation and maximization of margins during the industrial age of media technology, we built advertising technology to optimize publishers’ yield of marketing budgets that had eroded after the last recession. Looking back now, our scraping of dimes may have cost us dollars in consumer loyalty. The fast, scalable systems of targeting users with ever-heftier advertisements have slowed down the public internet and drained more than a few batteries. We were so clever and so good at it that we over-engineered the capabilities of the plumbing laid down by, well, ourselves. This steamrolled the users, depleted their devices, and tried their patience.

          +

          The rise of ad blocking poses a threat to the internet and could potentially drive users to an enclosed platform world dominated by a few companies. We have let the fine equilibrium of content, commerce, and technology get out of balance in the open web. We had, and still do have, a responsibility to educate the business side, and in some cases to push back. We lost sight of our social and ethical responsibility to provide a safe, usable experience for anyone and everyone wanting to consume the content of their choice.

          +

          We need to bring that back into alignment, starting right now.

          +

          Getting LEAN with Digital Ad UXToday, the IAB Tech Lab is launching the L.E.A.N. Ads program. Supported by the Executive Committee of the IAB Tech Lab Board, IABs around the world, and hundreds of member companies, L.E.A.N. stands for Light, Encrypted, Ad choice supported, Non-invasive ads. These are principles that will help guide the next phases of advertising technical standards for the global digital advertising supply chain.

          +

          As with any other industry, standards should be created by non-profit standards-setting bodies, with many diverse voices providing input. We will invite all parties for public comment, and make sure consumer interest groups have the opportunity to provide input.

          +

          L.E.A.N. Ads do not replace the current advertising standards many consumers still enjoy and engage with while consuming content on our sites across all IP enabled devices. Rather, these principles will guide an alternative set of standards that provide choice for marketers, content providers, and consumers.

          +

          Among the many areas of concentration, we must also address frequency capping on retargeting in Ad Tech and make sure a user is targeted appropriately before, but never AFTER they make a purchase. If we are so good at reach and scale, we can be just as good, if not better, at moderation. Additionally, we must address volume of ads per page as well as continue on the path to viewability. The dependencies here are critical to an optimized user experience.

          +

          The consumer is demanding these actions, challenging us to do better, and we must respond.

          +

          The IAB Tech Lab will continue to provide the tools for publishers in the digital supply chain to have a dialogue with users about their choices so that content providers can generate revenue while creating value. Publishers should have the opportunity to provide rich advertising experiences, L.E.A.N. advertising experiences, and subscription services. Or publishers can simply deny their service to users who choose to keep on blocking ads. That is all part of elasticity of consumer tolerance and choice.

          +

          Finally, we must do this in an increasingly fragmented market, across screens. We must do this in environments where entire sites are blocked, purposefully or not. Yes, it is disappointing that our development efforts will have to manage with multiple frameworks while we work to supply the economic engine to sustain an open internet. However, our goal is still to provide diverse content and voices to as many connected users as possible around the world.

          +

          That is user experience.

          + +

          IAB Tech Lab Members can join the IAB Tech Lab Ad Blocking Working Group, please email adblocking@iab.com for more information.

          Read more about ad blocking here.

          +
          +
          +
          Auto Draft 14
          +

          About the author

          +

          Scott Cunningham

          +

          Senior Vice President of Technology and Ad Operations at IAB, and General Manager of the IAB Tech Lab

          +
          +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/source.html new file mode 100644 index 000000000..a8c36b957 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/source.html @@ -0,0 +1,1103 @@ + + + + + Getting LEAN with Digital Ad UX | IAB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + arrow-downarrow-leftarrow-rightarrow-upbiocircleclosedownloadfacebookgplusinstagramlinkedinmailmenuphoneplaysearchsharespinnertwitteryoutube +
          + + + +
          + +
          + +
          + +
          + +
          +
          + + +
          +

          Getting LEAN with Digital Ad UX

          + + +
          + +
          + Getting LEAN with Digital Ad UX 1 + + +
          + +
          +
          +

          We messed up. As technologists, tasked with delivering content and services to users, we lost track of the user experience.

          +

          Twenty years ago we saw an explosion of websites, built by developers around the world, providing all forms of content. This was the beginning of an age of enlightenment, the intersection of content and technology. Many of us in the technical field felt compelled, and even empowered, to produce information as the distribution means for mass communication were no longer restricted by a high barrier to entry.

          +

          In 2000, the dark ages came when the dot-com bubble burst. We were told that our startups were gone or that our divisions sustained by corporate parent companies needed to be in the black. It was a wakeup call that led to a renaissance age. Digital advertising became the foundation of an economic engine that, still now, sustains the free and democratic World Wide Web. In digital publishing, we strived to balance content, commerce, and technology. The content management systems and communication gateways we built to inform and entertain populations around the world disrupted markets and in some cases governments, informed communities of imminent danger, and liberated new forms of art and entertainment—all while creating a digital middle class of small businesses.

          +

          We engineered not just the technical, but also the social and economic foundation that users around the world came to lean on for access to real time information. And users came to expect this information whenever and wherever they needed it. And more often than not, for anybody with a connected device, it was free.

          +

          This was choice—powered by digital advertising—and premised on user experience.

          +

          But we messed up.

          +

          Through our pursuit of further automation and maximization of margins during the industrial age of media technology, we built advertising technology to optimize publishers’ yield of marketing budgets that had eroded after the last recession. Looking back now, our scraping of dimes may have cost us dollars in consumer loyalty. The fast, scalable systems of targeting users with ever-heftier advertisements have slowed down the public internet and drained more than a few batteries. We were so clever and so good at it that we over-engineered the capabilities of the plumbing laid down by, well, ourselves. This steamrolled the users, depleted their devices, and tried their patience.

          +

          The rise of ad blocking poses a threat to the internet and could potentially drive users to an enclosed platform world dominated by a few companies. We have let the fine equilibrium of content, commerce, and technology get out of balance in the open web. We had, and still do have, a responsibility to educate the business side, and in some cases to push back. We lost sight of our social and ethical responsibility to provide a safe, usable experience for anyone and everyone wanting to consume the content of their choice.

          +

          We need to bring that back into alignment, starting right now.

          +

          Getting LEAN with Digital Ad UXToday, the IAB Tech Lab is launching the L.E.A.N. Ads program. Supported by the Executive Committee of the IAB Tech Lab Board, IABs around the world, and hundreds of member companies, L.E.A.N. stands for Light, Encrypted, Ad choice supported, Non-invasive ads. These are principles that will help guide the next phases of advertising technical standards for the global digital advertising supply chain.

          +

          As with any other industry, standards should be created by non-profit standards-setting bodies, with many diverse voices providing input. We will invite all parties for public comment, and make sure consumer interest groups have the opportunity to provide input.

          +

          L.E.A.N. Ads do not replace the current advertising standards many consumers still enjoy and engage with while consuming content on our sites across all IP enabled devices. Rather, these principles will guide an alternative set of standards that provide choice for marketers, content providers, and consumers.

          +

          Among the many areas of concentration, we must also address frequency capping on retargeting in Ad Tech and make sure a user is targeted appropriately before, but never AFTER they make a purchase. If we are so good at reach and scale, we can be just as good, if not better, at moderation. Additionally, we must address volume of ads per page as well as continue on the path to viewability. The dependencies here are critical to an optimized user experience.

          +

          The consumer is demanding these actions, challenging us to do better, and we must respond.

          +

          The IAB Tech Lab will continue to provide the tools for publishers in the digital supply chain to have a dialogue with users about their choices so that content providers can generate revenue while creating value. Publishers should have the opportunity to provide rich advertising experiences, L.E.A.N. advertising experiences, and subscription services. Or publishers can simply deny their service to users who choose to keep on blocking ads. That is all part of elasticity of consumer tolerance and choice.

          +

          Finally, we must do this in an increasingly fragmented market, across screens. We must do this in environments where entire sites are blocked, purposefully or not. Yes, it is disappointing that our development efforts will have to manage with multiple frameworks while we work to supply the economic engine to sustain an open internet. However, our goal is still to provide diverse content and voices to as many connected users as possible around the world.

          +

          That is user experience.

          +

           

          + + + + + + +
          IAB Tech Lab Members can join the IAB Tech Lab Ad Blocking Working Group, please email adblocking@iab.com for more information.
          +

          Read more about ad blocking here.

          +
          +
          + + + +
          +
          + + + + + + + +
          +
          + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-metadata.json new file mode 100644 index 000000000..ddf0094b9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Jong, Michiel de", + "Direction": null, + "Excerpt": null, + "Image": null, + "Title": "remoteStorage", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected.html new file mode 100644 index 000000000..ff46f7a1d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected.html @@ -0,0 +1,1110 @@ +
          + +[Docs] [txt|pdf] [Tracker] [Email] [Diff1] [Diff2] [Nits]



          Versions: 00 01 02 03 04



          INTERNET DRAFT                                      Michiel B. de Jong
          +Document: draft-dejong-remotestorage-04                   IndieHosters
          +                                                             F. Kooman
          +Intended Status: Proposed Standard                       (independent)
          +Expires: 18 June 2015                                 15 December 2014
          +
          +
          +                            remoteStorage
          +
          +Abstract
          +
          +    This draft describes a protocol by which client-side applications,
          +    running inside a web browser, can communicate with a data storage
          +    server that is hosted on a different domain name. This way, the
          +    provider of a web application need not also play the role of data
          +    storage provider. The protocol supports storing, retrieving, and
          +    removing individual documents, as well as listing the contents of an
          +    individual folder, and access control is based on bearer tokens.
          +
          +Status of this Memo
          +
          +   This Internet-Draft is submitted in full conformance with the
          +   provisions of BCP 78 and BCP 79.
          +
          +   Internet-Drafts are working documents of the Internet Engineering
          +   Task Force (IETF).  Note that other groups may also distribute
          +   working documents as Internet-Drafts.  The list of current Internet-
          +   Drafts is at http://datatracker.ietf.org/drafts/current/.
          +
          +   Internet-Drafts are draft documents valid for a maximum of six months
          +   and may be updated, replaced, or obsoleted by other documents at any
          +   time.  It is inappropriate to use Internet-Drafts as reference
          +   material or to cite them other than as "work in progress."
          +
          +   This Internet-Draft will expire on 15 December 2014.
          +
          +Copyright Notice
          +
          +   Copyright (c) 2014 IETF Trust and the persons identified as the
          +   document authors. All rights reserved.
          +
          +   This document is subject to BCP 78 and the IETF Trust's Legal
          +   Provisions Relating to IETF Documents
          +   (http://trustee.ietf.org/license-info) in effect on the date of
          +   publication of this document.  Please review these documents
          +   carefully, as they describe your rights and restrictions with respect
          +   to this document.  Code Components extracted from this document must
          +   include Simplified BSD License text as described in Section 4.e of
          +   the Trust Legal Provisions and are provided without warranty as
          +   described in the Simplified BSD License.
          +
          +
          +de Jong                                                         [Page 1]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +Table of Contents
          +
          +   1. Introduction...................................................2
          +   2. Terminology....................................................3
          +   3. Storage model..................................................3
          +   4. Requests.......................................................4
          +   5. Response codes.................................................7
          +   6. Versioning.....................................................7
          +   7. CORS headers...................................................8
          +   8. Session description............................................8
          +   9. Bearer tokens and access control...............................9
          +  10. Application-first bearer token issuance.......................10
          +  11. Storage-first bearer token issuance...........................11
          +  12. Example wire transcripts......................................12
          +     12.1. WebFinger................................................12
          +     12.2. OAuth dialog form........................................13
          +     12.3. OAuth dialog form submission.............................14
          +     12.4. OPTIONS preflight........................................15
          +     12.5. Initial PUT..............................................15
          +     12.6. Subsequent PUT...........................................16
          +     12.7. GET......................................................16
          +     12.8. DELETE...................................................17
          +  13. Distributed versioning........................................17
          +  14. Security Considerations.......................................19
          +  15. IANA Considerations...........................................20
          +  16. Acknowledgments...............................................20
          +  17. References....................................................21
          +     17.1. Normative References.....................................21
          +     17.2. Informative References...................................21
          +  18. Authors' addresses............................................22
          +
          +
          +1.  Introduction
          +
          +    Many services for data storage are available over the internet. This
          +    specification describes a vendor-independent interface for such
          +    services. It is based on https, CORS and bearer tokens. The
          +    metaphor for addressing data on the storage is that of folders
          +    containing documents and subfolders. The actions the interface
          +    exposes are:
          +
          +       *  GET a folder: retrieve the names and current versions of the
          +          documents and subfolders currently contained by the folder
          +
          +
          +de Jong                                                         [Page 2]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +       *  GET a document: retrieve its content type, current version,
          +          and contents
          +
          +       *  PUT a document: store a new version, its content type, and
          +          contents, conditional on the current version
          +
          +       *  DELETE a document: remove it from the storage, conditional on
          +          the current version
          +
          +       *  HEAD a folder or document: like GET, but omitting the response
          +          body
          +
          +    The exact details of these four actions are described in this
          +    specification.
          +
          +2. Terminology
          +
          +    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
          +    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
          +    document are to be interpreted as described in RFC 2119 [WORDS].
          +
          +    "SHOULD" and "SHOULD NOT" are appropriate when valid exceptions to a
          +    general requirement are known to exist or appear to exist, and it is
          +    infeasible or impractical to enumerate all of them.  However, they
          +    should not be interpreted as permitting implementors to fail to
          +    implement the general requirement when such failure would result in
          +    interoperability failure.
          +
          +3. Storage model
          +
          +    The server stores data in nodes that form a tree structure.
          +    Internal nodes are called 'folders' and leaf nodes are called
          +    'documents'. For a folder, the server stores references to nodes
          +    contained in the folder, and it should be able to produce a list of
          +    them, with for each contained item:
          +
          +       * item name
          +       * item type (folder or document)
          +       * current version
          +       * content type
          +       * content length
          +
          +    For a document, the server stores, and should be able to produce:
          +
          +
          +de Jong                                                         [Page 3]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +       * current version
          +       * content type
          +       * content length
          +       * content
          +
          +4. Requests
          +
          +    Client-to-server requests SHOULD be made over https [HTTPS], and
          +    servers MUST comply with HTTP/1.1 [HTTP]. Specifically, they
          +    MUST support chunked transfer coding on PUT requests. Servers MAY
          +    also offer an optional switch from https to SPDY [SPDY].
          +
          +    A request is considered successful if the HTTP response code is in
          +    the 2xx range (e.g. 200 OK, 201 Created), and unsuccessful if an
          +    error occurred or a condition was not met (response code e.g. 404
          +    Not Found, 304 Not Modified).
          +
          +    The root folder of the storage tree is represented by the following
          +    URL:
          +
          +        URI_ENCODE( <storage_root> '/' )
          +
          +    Subsequently, if <parent_folder> is the URL of a folder, then the
          +    URL of an item contained in it is:
          +
          +        URI_ENCODE( <parent_folder> <document_name> )
          +
          +    for a document, or:
          +
          +        URI_ENCODE( <parent_folder> <folder_name> '/' )
          +
          +    for a folder. Item names MAY contain all characters except '/' and
          +    the null character, and MUST NOT have zero length.
          +
          +    A document description is a map containing one string-valued 'ETag'
          +    field, one string-valued 'Content-Type' and one integer-valued
          +    'Content-Length' field. They represent the document's current
          +    version, its content type, and its content length respectively. Note
          +    that content length is measured in octets (bytes), not in
          +    characters.
          +
          +    A folder description is a map containing a string-valued 'ETag'
          +
          +
          +de Jong                                                         [Page 4]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    field, representing the folder's current version.
          +
          +    A successful GET request to a folder MUST be responded to with a
          +    JSON-LD [JSON-LD] document (content type 'application/ld+json'),
          +    containing as its 'items' field a map in which contained documents
          +    appear as entries <item_name> to a document description, and
          +    contained non-empty folders appear as entries <item_name> '/' to a
          +    folder description. It MUST also contain an '@context' field with
          +    the value 'http://remotestorage.io/spec/folder-description'. For
          +    instance:
          +
          +       {
          +         "@context": "http://remotestorage.io/spec/folder-description",
          +         "items": {
          +           "abc": {
          +             "ETag": "DEADBEEFDEADBEEFDEADBEEF",
          +             "Content-Type": "image/jpeg",
          +             "Content-Length": 82352
          +           },
          +           "def/": {
          +             "ETag": "1337ABCD1337ABCD1337ABCD"
          +           }
          +         }
          +       }
          +
          +    All folders are treated as existing, and therefore GET requests to
          +    untouched folders SHOULD be responded to with a folder description
          +    with no items (the items field set to '{}'). However, an empty
          +    folder MUST NOT be listed as an item in its parent folder.
          +
          +    Also, since folders exist automatically, PUT and DELETE requests
          +    only need to be made to documents, and never to folders. A document
          +    PUT will make all ancestor folders along its path become non-empty;
          +    deleting the last document from a subtree will make that whole
          +    subtree become empty. Folders will therefore show up in their parent
          +    folder descriptions if and only if their subtree contains at least
          +    one document.
          +
          +    A successful GET request to a document SHOULD be responded to with
          +    the full document contents in the body, the document's content type
          +    in a 'Content-Type' header, its content length in octets (not in
          +    characters) in a 'Content-Length' header, and the document's current
          +    version as a strong ETag in an 'ETag' header.
          +
          +
          +de Jong                                                         [Page 5]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    Note that the use of strong ETags prohibits changing the response
          +    body based on request headers; in particular, the server will not be
          +    able to serve the same document uncompressed to some clients and
          +    gzipped when requested by the client, since the two bodies would not
          +    be identical byte-for-byte.
          +
          +    Servers MAY support Content-Range headers [RANGE] on GET requests,
          +    but whether or not they do SHOULD be announced through the <ranges>
          +    variable mentioned below in section 10.
          +
          +    A successful PUT request to a document MUST result in:
          +
          +       * the request body being stored as the document's new content,
          +       * parent and further ancestor folders being silently created as
          +         necessary, with the document (name and version) being added to
          +         its parent folder, and each folder added to its subsequent
          +         parent,
          +       * the value of its Content-Type header being stored as the
          +         document's new content type,
          +       * its version being updated, as well as that of its parent folder
          +         and further ancestor folders, using a strong validator [HTTP,
          +         section 7.2].
          +
          +    The response MUST contain a strong ETag header, with the document's
          +    new version (for instance a hash of its contents) as its value.
          +
          +    A successful DELETE request to a document MUST result in:
          +
          +       * the deletion of that document from the storage, and from its
          +         parent folder,
          +       * silent deletion of the parent folder if it is left empty by
          +         this, and so on for further ancestor folders,
          +       * the version of its parent folder being updated, as well as that
          +         of further ancestor folders.
          +
          +    A successful OPTIONS request SHOULD be responded to as described in
          +    the CORS section below.
          +
          +    A successful HEAD request SHOULD be responded to like to the
          +    equivalent GET request, but omitting the response body.
          +
          +
          +
          +
          +de Jong                                                         [Page 6]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +5. Response codes
          +
          +    Response codes SHOULD be given as defined by [HTTP, section 6] and
          +    [BEARER, section 3.1]. The following is a non-normative checklist
          +    of status codes that are likely to occur in practice:
          +
          +       * 500 if an internal server error occurs,
          +       * 429 if the client makes too frequent requests or is suspected
          +             of malicious activity,
          +       * 414 if the request URI is too long,
          +       * 416 if Range requests are supported by the server and the Range
          +             request can not be satisfied,
          +       * 401 for all requests that don't have a bearer token with
          +             sufficient permissions,
          +       * 404 for all DELETE and GET requests to documents that do not
          +             exist on the storage,
          +       * 304 for a conditional GET request whose pre-condition
          +             fails (see "Versioning" below),
          +       * 409 for a PUT request where any folder name in the path
          +             clashes with an existing document's name at the same
          +             level, or where the document name coincides with an
          +             existing folder's name at the same level.
          +       * 412 for a conditional PUT or DELETE request whose pre-condition
          +             fails (see "Versioning" below),
          +       * 507 in case the account is over its storage quota,
          +       * 4xx for all malformed requests (e.g. foreign characters in the
          +             path), as well as for all PUT and DELETE requests to
          +             folders,
          +       * 2xx for all successful requests.
          +
          +    Clients SHOULD also handle the case where a response takes too long
          +    to arrive, or where no response is received at all.
          +
          +6. Versioning
          +
          +    All successful requests MUST return an 'ETag' header [HTTP] with, in
          +    the case of GET, the current version, in the case of PUT, the new
          +    version, and in case of DELETE, the version that was deleted. All
          +    successful GET requests MUST return an 'Expires: 0' header. PUT and
          +    DELETE requests MAY have an 'If-Match' request header [COND], and
          +    MUST fail with a 412 response code if that doesn't match the
          +    document's current version.
          +
          +
          +
          +de Jong                                                         [Page 7]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    GET requests MAY have a comma-separated list of revisions in an
          +    'If-None-Match' header [COND], and SHOULD be responded to with a 304
          +    response if that list includes the document or folder's current
          +    version. A PUT request MAY have an 'If-None-Match: *' header [COND],
          +    in which case it MUST fail with a 412 response code if the document
          +    already exists.
          +
          +    In all 'ETag', 'If-Match' and 'If-None-Match' headers, revision
          +    strings should appear inside double quotes (").
          +
          +    A provider MAY offer version rollback functionality to its users,
          +    but this specification does not define the user interface for that.
          +
          +7. CORS headers
          +
          +    All responses MUST carry CORS headers [CORS]. The server MUST also
          +    reply to OPTIONS requests as per CORS. For GET requests, a wildcard
          +    origin MAY be returned, but for PUT and DELETE requests, the
          +    response MUST echo back the Origin header sent by the client.
          +
          +8. Session description
          +
          +    The information that a client needs to receive in order to be able
          +    to connect to a server SHOULD reach the client as described in the
          +    'bearer token issuance' sections below. It consists of:
          +
          +       * <storage_root>, consisting of 'https://' followed by a server
          +         host, and optionally a server port and a path prefix as per
          +         [IRI]. Examples:
          +         * 'https://example.com' (host only)
          +         * 'https://example.com:8080' (host and port)
          +         * 'https://example.com/path/to/storage' (host, port and
          +           path prefix; note there is no trailing slash)
          +       * <access_token> as per [OAUTH]. The token SHOULD be hard to
          +         guess and SHOULD NOT be reused from one client to another. It
          +         can however be reused in subsequent interactions with the same
          +         client, as long as that client is still trusted. Example:
          +         * 'ofb24f1ac3973e70j6vts19qr9v2eei'
          +       * <storage_api>, always 'draft-dejong-remotestorage-04' for this
          +         alternative version of the specification.
          +
          +    The client can make its requests using https with CORS and bearer
          +    tokens, to the URL that is the concatenation of <storage_root> with
          +
          +
          +de Jong                                                         [Page 8]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    '/' plus one or more <folder> '/' strings indicating a path in the
          +    folder tree, followed by zero or one <document> strings, indicating
          +    a document. For example, if <storage_root> is
          +    "https://storage.example.com/bob", then to retrieve the folder
          +    contents of the /public/documents/ folder, or to retrieve a
          +    'draft.txt' document from that folder, the client would make
          +    requests to, respectively:
          +
          +    * https://storage.example.com/bob/public/documents/
          +    * https://storage.example.com/bob/public/documents/draft.txt
          +
          +9. Bearer tokens and access control
          +
          +    A bearer token represents one or more access scopes. These access
          +    scopes are represented as strings of the form <module> <level>,
          +    where the <module> string SHOULD be lower-case alphanumerical, other
          +    than the reserved word 'public', and <level> can be ':r' or ':rw'.
          +    The access the bearer token gives is the sum of its access scopes,
          +    with each access scope representing the following permissions:
          +
          +    '*:rw') any request,
          +
          +    '*:r') any GET or HEAD request,
          +
          +    <module> ':rw') any requests to paths that start with
          +                    '/' <module> '/' or '/public/' <module> '/',
          +
          +    <module> ':r') any GET or HEAD requests to paths that start with
          +                   '/' <module> '/' or '/public/' <module> '/',
          +
          +    As a special exceptions, GET requests to a document (but not a
          +    folder) whose path starts with '/public/' are always allowed. They,
          +    as well as OPTIONS requests, can be made without a bearer token.
          +    Unless [KERBEROS] is used (see section 10 below), all other requests
          +    SHOULD present a bearer token with sufficient access scope, using a
          +    header of the following form (no double quotes here):
          +
          +       Authorization: Bearer <access_token>
          +
          +    In addition, providing the access token via a HTTP query parameter
          +    for GET requests MAY be supported by the server, although its use
          +    is not recommended, due to its security deficiencies; see [BEARER,
          +    section 2.3].
          +
          +
          +de Jong                                                         [Page 9]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +10. Application-first bearer token issuance
          +
          +    To make a remoteStorage server available as 'the remoteStorage of
          +    <account> at <host>', exactly one link of the following format
          +    SHOULD be added to the WebFinger record [WEBFINGER] of <account> at
          +    <host>:
          +
          +    {
          +      "href": <storage_root>,
          +      "rel": "remotestorage",
          +      "properties": {
          +        "http://remotestorage.io/spec/version": <storage_api>,
          +        "http://tools.ietf.org/html/rfc6749#section-4.2": <auth-dialog>,
          +        ... : ... ,
          +      }
          +    }
          +
          +    Here <storage_root> and <storage_api> are as per "Session
          +    description" above, and <auth-dialog> SHOULD be either null or a
          +    URL where an OAuth 2.0 implicit-grant flow dialog [OAUTH] is
          +    presented.
          +
          +    If <auth-dialog> is a URL, the user can supply their credentials
          +    for accessing the account (how, is out of scope), and allow or
          +    reject a request by the connecting application to obtain a bearer
          +    token for a certain list of access scopes. Note that an account
          +    will often belong to just one human user, but may also belong to a
          +    group of multiple users (the remoteStorage of <group> at <host>).
          +
          +    If <auth-dialog> is null, the client will not have a way to obtain
          +    an access token, and SHOULD send all requests without Authorization
          +    header, and rely on Kerberos [KERBEROS] instead for requests that
          +    would normally be sent with a bearer token, but servers SHOULD NOT
          +    impose any such access barriers for resources that would normally
          +    not require an access token.
          +
          +    The '...' ellipses indicate that more properties may be present.
          +    Non-breaking examples that have been proposed so far, include a
          +    "http://tools.ietf.org/html/rfc6750#section-2.3" property, set to
          +    the string value "true" if the server supports passing the bearer
          +    token in the URI query parameter as per section 2.3 of [BEARER],
          +    instead of in the request header.
          +
          +
          +de Jong                                                        [Page 10]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    Another example is "http://tools.ietf.org/html/rfc7233" with a
          +    string value of "GET" if Content-Range headers are supported for
          +    GET requests as per [RANGE], "PUT" if they are supported for PUT
          +    requests, and "GET,PUT" if supported for both.
          +
          +    Both these proposals are non-breaking extensions, since the client
          +    will have a way to work around it if these features are not present
          +    (e.g. retrieve the protected resource asynchronously in the first
          +    case, or request the entire resource in the second case).
          +
          +    A "http://remotestorage.io/spec/web-authoring" property has been
          +    proposed with a string value of the fully qualified domain name to
          +    which web authoring content is published if the server supports web
          +    authoring as per [AUTHORING]. Note that this extension is a breaking
          +    extension in the sense that it divides users into "haves", whose
          +    remoteStorage accounts allow them to author web content, and
          +    "have-nots", whose remoteStorage account does not support this
          +    functionality.
          +
          +    The server MAY expire bearer tokens, and MAY require the user to
          +    register applications as OAuth clients before first use; if no
          +    client registration is required, then the server MAY ignore the
          +    client_id parameter in favor of relying on the redirect_uri
          +    parameter for client identification.
          +
          +11. Storage-first bearer token issuance
          +
          +    The provider MAY also present a dashboard to the user, where they
          +    have some way to add open web app manifests [MANIFEST]. Adding a
          +    manifest to the dashboard is considered equivalent to clicking
          +    'accept' in the dialog of the application-first flow. Removing one
          +    is considered equivalent to revoking its access token.
          +
          +    As an equivalent to OAuth's 'scope' parameter, a 'datastores-access'
          +    field SHOULD be present in the root of such an application manifest
          +    document, with entries <module> -> '{"access": "readonly"}' for
          +    <level> 'r' or '{"access": "readwrite"}' for <level> 'rw', as
          +    prescribed in [DATASTORE].
          +
          +    When the user gestures they want to use a certain application whose
          +    manifest is present on the dashboard, the dashboard SHOULD redirect
          +    to the application or open it in a new window. To mimic coming back
          +
          +
          +de Jong                                                        [Page 11]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    from the OAuth dialog, it MAY add 'access_token' and 'scope'
          +    fields to the URL fragment.
          +
          +    Regardless of whether 'access_token' and 'scope' are specified, it
          +    SHOULD add a 'remotestorage' field to the URL fragment, with a
          +    value of the form <account> '@' <host>. When the application detects
          +    this parameter, it SHOULD resolve the WebFinger record for <account>
          +    at <host> and extract the <storage_root> and <storage_api>
          +    information.
          +
          +    If no access_token was given, then the application SHOULD also
          +    extract the <auth_endpoint> information from WebFinger, and continue
          +    as per application-first bearer token issuance.
          +
          +    Note that whereas a remoteStorage server SHOULD offer support for
          +    the application-first flow with WebFinger and OAuth, it MAY choose
          +    not to support the storage-first flow, provided that users will
          +    easily remember their <account> '@' <host> WebFinger address at that
          +    provider. Applications SHOULD, however, support both flows, which
          +    means checking the URL for a 'remotestorage' parameter, but giving
          +    the user a way to specify the WebFinger address if there is none.
          +
          +    If a server provides an application manifest dashboard, then it
          +    SHOULD merge the list of applications there with the list of
          +    issued access tokens as specified by OAuth into one list. Also,
          +    the interface for revoking an access token as specified by OAuth
          +    SHOULD coincide with removing an application from the dashboard.
          +
          +    Servers MAY also provide a way to create access tokens directly from
          +    their user interface. Such functionality would be aimed mainly at
          +    developers, to manually copy and paste a token into a script or
          +    debug tool, thus bypassing the need for an OAuth dance. Clients
          +    SHOULD NOT rely on this in production.
          +
          +12. Example wire transcripts
          +
          +    The following examples are not normative ("\" indicates a line was
          +    wrapped).
          +
          +12.1. WebFinger
          +
          +    In application-first, an in-browser application might issue the
          +    following request, using XMLHttpRequest and CORS:
          +
          +
          +de Jong                                                        [Page 12]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +         GET /.well-known/webfinger?resource=acct:michiel@michielbdejon\
          +g.com HTTP/1.1
          +         Host: michielbdejong.com
          +
          +    and the server's response might look like this:
          +
          +         HTTP/1.1 200 OK
          +         Access-Control-Allow-Origin: *
          +         Access-Control-Allow-Methods: GET
          +         Access-Control-Allow-Headers: If-Match, If-None-Match
          +         Access-Control-Expose-Headers: ETag, Content-Length
          +         Content-Type: application/jrd+json
          +
          +         {
          +           "links":[{
          +             "href": "https://michielbdejong.com:7678/inbox",
          +             "rel": "post-me-anything"
          +           }, {
          +             "href": "https://michielbdejong.com/me.jpg",
          +             "rel": "avatar"
          +           }, {
          +             "href": "https://3pp.io:4439/storage/michiel",
          +             "rel": "remotestorage",
          +             "properties": {
          +               "http://remotestorage.io/spec/version": "draft-dejong-re\
          +motestorage-04",
          +               "http://tools.ietf.org/html/rfc6749#section-4.2": "https\
          +://3pp.io:4439/oauth/michiel",
          +               "http://tools.ietf.org/html/rfc6750#section-2.3": false,
          +               "http://tools.ietf.org/html/rfc7233": false,
          +               "http://remotestorage.io/spec/web-authoring": false
          +             }
          +           }]
          +         }
          +
          +12.2. OAuth dialog form
          +
          +    Once the in-browser application has discovered the server's OAuth
          +    end-point, it will typically redirect the user to this URL, in
          +    order to obtain a bearer token. Say the application is hosted on
          +    https://drinks-unhosted.5apps.com/ and wants read-write access to
          +    the account's "myfavoritedrinks" scope:
          +
          +
          +de Jong                                                        [Page 13]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +        GET /oauth/michiel?redirect_uri=https%3A%2F%2Fdrinks-unhosted.5\
          +apps.com%2F&scope=myfavoritedrinks%3Arw&client_id=https%3A%2F%2Fdrinks-\
          +unhosted.5apps.com&response_type=token HTTP/1.1
          +        Host: 3pp.io
          +
          +    The server's response might look like this (truncated for brevity):
          +
          +        HTTP/1.1 200 OK
          +
          +        <!DOCTYPE html>
          +        <html lang="en">
          +          <head>
          +            <title>Allow access?</title>
          +        ...
          +
          +12.3. OAuth dialog form submission
          +
          +    When the user submits the form, the request would look something
          +    like this:
          +
          +        POST /oauth HTTP/1.1
          +        Host: 3pp.io:4439
          +        Origin: https://3pp.io:4439
          +        Content-Type: application/x-www-form-urlencoded
          +        Referer: https://3pp.io:4439/oauth/michiel?redirect_uri=https%3\
          +A%2F%2Fdrinks-unhosted.5apps.com%2F&scope=myfavoritedrinks%3Arw&client_\
          +id=https%3A%2F%2Fdrinks-unhosted.5apps.com&response_type=token
          +
          +        client_id=https%3A%2F%2Fdrinks-unhosted.5apps.com&redirect_uri=\
          +https%3A%2F%2Fdrinks-unhosted.5apps.com%2F&response_type=token&scope=my\
          +favoritedrinks%3Arw&state=&username=michiel&password=something&allow=Al\
          +low
          +
          +    To which the server could respond with a 302 redirect, back to the
          +    origin of the requesting application:
          +
          +        HTTP/1.1 302 Found
          +        Location:https://drinks-unhosted.5apps.com/#access_token=j2YnGt\
          +XjzzzHNjkd1CJxoQubA1o%3D&token_type=bearer&state=
          +
          +12.4. OPTIONS preflight
          +
          +
          +
          +de Jong                                                        [Page 14]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    When an in-browser application makes a cross-origin request which
          +    may affect the server-state, the browser will make a preflight
          +    request first, with the OPTIONS verb, for instance:
          +
          +        OPTIONS /storage/michiel/myfavoritedrinks/ HTTP/1.1
          +        Host: 3pp.io:4439
          +        Access-Control-Request-Method: GET
          +        Origin: https://drinks-unhosted.5apps.com
          +        Access-Control-Request-Headers: Authorization
          +        Referer: https://drinks-unhosted.5apps.com/
          +
          +    To which the server can for instance respond:
          +
          +        HTTP/1.1 200 OK
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        Access-Control-Allow-Methods: GET, PUT, DELETE
          +        Access-Control-Allow-Headers: Authorization, Content-Length, Co\
          +ntent-Type, Origin, X-Requested-With, If-Match, If-None-Match
          +
          +12.5. Initial PUT
          +
          +    An initial PUT may contain an 'If-None-Match: *' header, like this:
          +
          +        PUT /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Content-Length: 91
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Content-Type: application/json; charset=UTF-8
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-None-Match: *
          +
          +        {"name":"test","@context":"http://remotestorage.io/spec/modules\
          +/myfavoritedrinks/drink"}
          +
          +    And the server may respond with either a 201 Created or a 200 OK
          +    status:
          +
          +        HTTP/1.1 201 Created
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694045000"
          +
          +12.6. Subsequent PUT
          +
          +
          +de Jong                                                        [Page 15]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    A subsequent PUT may contain an 'If-Match' header referring to the
          +    ETag previously returned, like this:
          +
          +        PUT /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Content-Length: 91
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Content-Type: application/json; charset=UTF-8
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-Match: "1382694045000"
          +
          +        {"name":"test", "updated":true, "@context":"http://remotestorag\
          +e.io/spec/modules/myfavoritedrinks/drink"}
          +
          +    And the server may respond with a 412 Conflict or a 200 OK status:
          +
          +        HTTP/1.1 200 OK
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694048000"
          +
          +12.7. GET
          +
          +    A GET request would also include the bearer token, and optionally
          +    an If-None-Match header:
          +
          +        GET /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-None-Match: "1382694045000", "1382694048000"
          +
          +    And the server may respond with a 304 Not Modified status:
          +
          +        HTTP/1.1 304 Not Modified
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694048000"
          +
          +    Or a 200 OK status, plus a response body:
          +
          +        HTTP/1.1 200 OK
          +
          +
          +de Jong                                                        [Page 16]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        Content-Type: application/json; charset=UTF-8
          +        Content-Length: 106
          +        ETag: "1382694048000"
          +        Expires: 0
          +
          +        {"name":"test", "updated":true, "@context":"http://remotestora\
          +ge.io/spec/modules/myfavoritedrinks/drink"}
          +
          +    If the GET URL would have been "/storage/michiel/myfavoritedrinks/",
          +    a 200 OK response would have a folder description as the response
          +    body:
          +
          +        HTTP/1.1 200 OK
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        Content-Type: application/ld+json
          +        Content-Length: 171
          +        ETag: "1382694048000"
          +        Expires: 0
          +
          +        {"@context":"http://remotestorage.io/spec/folder-version","ite\
          +ms":{"test":{"ETag":"1382694048000","Content-Type":"application/json; \
          +charset=UTF-8","Content-Length":106}}}
          +
          +    If the GET URL would have been a non-existing document like
          +    "/storage/michiel/myfavoritedrinks/x", the response would have a 404
          +    Not Found status, and no ETag header:
          +
          +        HTTP/1.1 404 Not Found
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +
          +12.8. DELETE
          +
          +    A DELETE request may look like this:
          +
          +        DELETE /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Content-Type: application/json; charset=UTF-8
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-Match: "1382694045000"
          +
          +
          +
          +de Jong                                                        [Page 17]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    And the server may respond with a 412 Conflict or a 200 OK status:
          +
          +        HTTP/1.1 412 Conflict
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694048000"
          +
          +13. Distributed versioning
          +
          +    This section is non-normative, and is intended to explain some of
          +    the design choices concerning ETags and folder listings. At the
          +    same time it will hopefully help readers who intend to develop an
          +    application that uses remoteStorage as its per-user data storage.
          +    When multiple clients have read/write access to the same document,
          +    versioning conflicts may occur. For instance, client A may make
          +    a PUT request that changes the document from version 1 to version
          +    2, after which client B may make a PUT request attempting to change
          +    the same document from version 1 to version 3.
          +
          +    In this case, client B can add an 'If-Match: "1"' header, which
          +    would trigger a 412 Conflict response code, since the current
          +    version ("2") does not match the version required as a condition by
          +    the header If-Match header ("1").
          +
          +    Client B is now aware of the conflict, and may consult the user,
          +    saying the update to version 3 failed. The user may then choose,
          +    through the user interface of client B, whether version 2 or
          +    version 3 should be kept, or maybe the document should be reverted
          +    on the server to version 1, or a merged version 4 is needed. Client
          +    B may then make a request that puts the document to the version the
          +    user wishes; this time setting an 'If-Match: "2"' header instead.
          +
          +    Both client A and client B would periodically poll the root
          +    folder of each scope they have access to, to see if the version
          +    of the root folder changed. If it did, then one of the versions
          +    listed in there will necessarily have changed, and the client can
          +    make a GET request to that child folder or document, to obtain
          +    its latest version.
          +
          +    Because an update in a document will result in a version change of
          +    its containing folder, and that change will propagate all the way
          +    to the root folder, it is not necessary to poll each document for
          +    changes individually.
          +
          +
          +
          +de Jong                                                        [Page 18]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    As an example, the root folder may contain 10 directories,
          +    each of which contain 10 directories, which each contain 10
          +    documents, so their paths would be for instance '/0/0/1', '/0/0/2',
          +    etcetera. Then one GET request to the root folder '/' will be
          +    enough to know if any of these 1000 documents has changed.
          +
          +    Say document '/7/9/2' has changed; then the GET request to '/' will
          +    come back with a different ETag, and entry '7/' will have a
          +    different value in its JSON content. The client could then request
          +    '/7/', '/7/9/', and '/7/9/2' to narrow down the one document that
          +    caused the root folder's ETag to change.
          +
          +    Note that the remoteStorage server does not get involved in the
          +    conflict resolution. It keeps the canonical current version at all
          +    times, and allows clients to make conditional GET and PUT requests,
          +    but it is up to whichever client discovers a given version
          +    conflict, to resolve it.
          +
          +14. Security Considerations
          +
          +    To prevent man-in-the-middle attacks, the use of https instead of
          +    http is important for both the interface itself and all end-points
          +    involved in WebFinger, OAuth, and (if present) the storage-first
          +    application launch dashboard.
          +
          +    A malicious party could link to an application, but specifying a
          +    remoteStorage account address that it controls, thus tricking the
          +    user into using a trusted application to send sensitive data to the
          +    wrong remoteStorage server. To mitigate this, applications SHOULD
          +    clearly display to which remoteStorage server they are sending the
          +    user's data.
          +
          +    Applications could request scopes that the user did not intend to
          +    give access to. The user SHOULD always be prompted to carefully
          +    review which scopes an application is requesting.
          +
          +    An application may upload malicious html pages and then trick the
          +    user into visiting them, or upload malicious client-side scripts,
          +    that take advantage of being hosted on the user's domain name. The
          +    origin on which the remoteStorage server has its interface SHOULD
          +    therefore NOT be used for anything else, and the user SHOULD be
          +    warned not to visit any web pages on that origin. In particular, the
          +    OAuth dialog and launch dashboard or token revokation interface
          +
          +
          +de Jong                                                        [Page 19]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    SHOULD be on a different origin than the remoteStorage interface.
          +
          +    Where the use of bearer tokens is impractical, a user may choose to
          +    store documents on hard-to-guess URLs whose path after
          +    <storage_root> starts with '/public/', while sharing this URL only
          +    with the intended audience. That way, only parties who know the
          +    document's hard-to-guess URL, can access it. The server SHOULD
          +    therefore make an effort to detect and stop brute-force attacks that
          +    attempt to guess the location of such documents.
          +
          +    The server SHOULD also detect and stop denial-of-service attacks
          +    that aim to overwhelm its interface with too much traffic.
          +
          +15. IANA Considerations
          +
          +    This document registers the 'remotestorage' link relation, as well
          +    as the following WebFinger properties:
          +      * "http://remotestorage.io/spec/version"
          +      * "http://tools.ietf.org/html/rfc6749#section-4.2"
          +      * "http://tools.ietf.org/html/rfc6750#section-2.3"
          +      * "http://tools.ietf.org/html/rfc7233"
          +      * "http://remotestorage.io/spec/web-authoring"
          +
          +16. Acknowledgements
          +
          +    The authors would like to thank everybody who contributed to the
          +    development of this protocol, including Kenny Bentley, Javier Diaz,
          +    Daniel Groeber, Bjarni Runar, Jan Wildeboer, Charles Schultz, Peter
          +    Svensson, Valer Mischenko, Michiel Leenaars, Jan-Christoph
          +    Borchardt, Garret Alfert, Sebastian Kippe, Max Wiehle, Melvin
          +    Carvalho, Martin Stadler, Geoffroy Couprie, Niklas Cathor, Marco
          +    Stahl, James Coglan, Ken Eucker, Daniel Brolund, elf Pavlik, Nick
          +    Jennings, Markus Sabadello, Steven te Brinke, Matthias Treydte,
          +    Rick van Rein, Mark Nottingham, Julian Reschke, and Markus
          +    Lanthaler, among many others.
          +
          +17. References
          +
          +17.1. Normative References
          +
          +    [WORDS]
          +        Bradner, S., "Key words for use in RFCs to Indicate Requirement
          +        Levels", BCP 14, RFC 2119, March 1997.
          +
          +
          +de Jong                                                        [Page 20]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    [IRI]
          +        Duerst, M., "Internationalized Resource Identifiers (IRIs)",
          +        RFC 3987, January 2005.
          +
          +    [WEBFINGER]
          +        Jones, P., Salguerio, G., Jones, M, and Smarr, J.,
          +        "WebFinger", RFC7033, September 2013.
          +
          +    [OAUTH]
          +        "Section 4.2: Implicit Grant", in: Hardt, D. (ed), "The OAuth
          +        2.0 Authorization Framework", RFC6749, October 2012.
          +
          +17.2. Informative References
          +
          +    [HTTPS]
          +        Rescorla, E., "HTTP Over TLS", RFC2818, May 2000.
          +
          +    [HTTP]
          +        Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
          +        Semantics and Content", RFC7231, June 2014.
          +
          +    [COND]
          +        Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
          +        Conditional Requests", RFC7232, June 2014.
          +
          +    [RANGE]
          +        Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
          +        Conditional Requests", RFC7233, June 2014.
          +
          +    [SPDY]
          +        Mark Belshe, Roberto Peon, "SPDY Protocol - Draft 3.1", http://
          +        www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1,
          +        September 2013.
          +
          +    [JSON-LD]
          +        M. Sporny, G. Kellogg, M. Lanthaler, "JSON-LD 1.0", W3C
          +        Proposed Recommendation,
          +        http://www.w3.org/TR/2014/REC-json-ld-20140116/, January 2014.
          +
          +    [CORS]
          +        van Kesteren, Anne (ed), "Cross-Origin Resource Sharing --
          +        W3C Candidate Recommendation 29 January 2013",
          +
          +
          +de Jong                                                        [Page 21]
          +
           
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +        http://www.w3.org/TR/cors/, January 2013.
          +
          +    [MANIFEST]
          +        Mozilla Developer Network (ed), "App manifest -- Revision
          +        330541", https://developer.mozilla.org/en-
          +        US/Apps/Build/Manifest$revision/566677, April 2014.
          +
          +    [DATASTORE]
          +        "WebAPI/DataStore", MozillaWiki, retrieved May 2014.
          +        https://wiki.mozilla.org/WebAPI/DataStore#Manifest
          +
          +    [KERBEROS]
          +        C. Neuman et al., "The Kerberos Network Authentication Service
          +        (V5)", RFC4120, July 2005.
          +
          +    [BEARER]
          +        M. Jones, D. Hardt, "The OAuth 2.0 Authorization Framework:
          +        Bearer Token Usage", RFC6750, October 2012.
          +
          +    [AUTHORING]
          +        "Using remoteStorage for web authoring", reSite wiki, retrieved
          +        September 2014. https://github.com/michielbdejong/resite/wiki
          +        /Using-remoteStorage-for-web-authoring
          +
          +18. Authors' addresses
          +
          +    Michiel B. de Jong
          +    IndieHosters
          +
          +    Email: michiel@michielbdejong.com
          +
          +
          +    F. Kooman
          +    (independent)
          +
          +    Email: fkooman@tuxed.net
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +de Jong                                                        [Page 22]
          +
          +


          Html markup produced by rfcmarkup 1.111, available from +https://tools.ietf.org/tools/rfcmarkup/ + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/source.html new file mode 100644 index 000000000..ded744e77 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/source.html @@ -0,0 +1,1269 @@ + + + + + + + + + + + + + + + + + draft-dejong-remotestorage-04 - remoteStorage + + + + + + + + +
          +
          + +
          +[Docs] [txt|pdf] [Tracker] [Email] [Diff1] [Diff2] [Nits]
          +
          +Versions: 00 01 02 03 04
          +
          +
          INTERNET DRAFT                                      Michiel B. de Jong
          +Document: draft-dejong-remotestorage-04                   IndieHosters
          +                                                             F. Kooman
          +Intended Status: Proposed Standard                       (independent)
          +Expires: 18 June 2015                                 15 December 2014
          +
          +
          +                            remoteStorage
          +
          +Abstract
          +
          +    This draft describes a protocol by which client-side applications,
          +    running inside a web browser, can communicate with a data storage
          +    server that is hosted on a different domain name. This way, the
          +    provider of a web application need not also play the role of data
          +    storage provider. The protocol supports storing, retrieving, and
          +    removing individual documents, as well as listing the contents of an
          +    individual folder, and access control is based on bearer tokens.
          +
          +Status of this Memo
          +
          +   This Internet-Draft is submitted in full conformance with the
          +   provisions of BCP 78 and BCP 79.
          +
          +   Internet-Drafts are working documents of the Internet Engineering
          +   Task Force (IETF).  Note that other groups may also distribute
          +   working documents as Internet-Drafts.  The list of current Internet-
          +   Drafts is at http://datatracker.ietf.org/drafts/current/.
          +
          +   Internet-Drafts are draft documents valid for a maximum of six months
          +   and may be updated, replaced, or obsoleted by other documents at any
          +   time.  It is inappropriate to use Internet-Drafts as reference
          +   material or to cite them other than as "work in progress."
          +
          +   This Internet-Draft will expire on 15 December 2014.
          +
          +Copyright Notice
          +
          +   Copyright (c) 2014 IETF Trust and the persons identified as the
          +   document authors. All rights reserved.
          +
          +   This document is subject to BCP 78 and the IETF Trust's Legal
          +   Provisions Relating to IETF Documents
          +   (http://trustee.ietf.org/license-info) in effect on the date of
          +   publication of this document.  Please review these documents
          +   carefully, as they describe your rights and restrictions with respect
          +   to this document.  Code Components extracted from this document must
          +   include Simplified BSD License text as described in Section 4.e of
          +   the Trust Legal Provisions and are provided without warranty as
          +   described in the Simplified BSD License.
          +
          +
          +de Jong                                                         [Page 1]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +Table of Contents
          +
          +   1. Introduction...................................................2
          +   2. Terminology....................................................3
          +   3. Storage model..................................................3
          +   4. Requests.......................................................4
          +   5. Response codes.................................................7
          +   6. Versioning.....................................................7
          +   7. CORS headers...................................................8
          +   8. Session description............................................8
          +   9. Bearer tokens and access control...............................9
          +  10. Application-first bearer token issuance.......................10
          +  11. Storage-first bearer token issuance...........................11
          +  12. Example wire transcripts......................................12
          +     12.1. WebFinger................................................12
          +     12.2. OAuth dialog form........................................13
          +     12.3. OAuth dialog form submission.............................14
          +     12.4. OPTIONS preflight........................................15
          +     12.5. Initial PUT..............................................15
          +     12.6. Subsequent PUT...........................................16
          +     12.7. GET......................................................16
          +     12.8. DELETE...................................................17
          +  13. Distributed versioning........................................17
          +  14. Security Considerations.......................................19
          +  15. IANA Considerations...........................................20
          +  16. Acknowledgments...............................................20
          +  17. References....................................................21
          +     17.1. Normative References.....................................21
          +     17.2. Informative References...................................21
          +  18. Authors' addresses............................................22
          +
          +
          +1.  Introduction
          +
          +    Many services for data storage are available over the internet. This
          +    specification describes a vendor-independent interface for such
          +    services. It is based on https, CORS and bearer tokens. The
          +    metaphor for addressing data on the storage is that of folders
          +    containing documents and subfolders. The actions the interface
          +    exposes are:
          +
          +       *  GET a folder: retrieve the names and current versions of the
          +          documents and subfolders currently contained by the folder
          +
          +
          +de Jong                                                         [Page 2]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +       *  GET a document: retrieve its content type, current version,
          +          and contents
          +
          +       *  PUT a document: store a new version, its content type, and
          +          contents, conditional on the current version
          +
          +       *  DELETE a document: remove it from the storage, conditional on
          +          the current version
          +
          +       *  HEAD a folder or document: like GET, but omitting the response
          +          body
          +
          +    The exact details of these four actions are described in this
          +    specification.
          +
          +2. Terminology
          +
          +    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
          +    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
          +    document are to be interpreted as described in RFC 2119 [WORDS].
          +
          +    "SHOULD" and "SHOULD NOT" are appropriate when valid exceptions to a
          +    general requirement are known to exist or appear to exist, and it is
          +    infeasible or impractical to enumerate all of them.  However, they
          +    should not be interpreted as permitting implementors to fail to
          +    implement the general requirement when such failure would result in
          +    interoperability failure.
          +
          +3. Storage model
          +
          +    The server stores data in nodes that form a tree structure.
          +    Internal nodes are called 'folders' and leaf nodes are called
          +    'documents'. For a folder, the server stores references to nodes
          +    contained in the folder, and it should be able to produce a list of
          +    them, with for each contained item:
          +
          +       * item name
          +       * item type (folder or document)
          +       * current version
          +       * content type
          +       * content length
          +
          +    For a document, the server stores, and should be able to produce:
          +
          +
          +de Jong                                                         [Page 3]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +       * current version
          +       * content type
          +       * content length
          +       * content
          +
          +4. Requests
          +
          +    Client-to-server requests SHOULD be made over https [HTTPS], and
          +    servers MUST comply with HTTP/1.1 [HTTP]. Specifically, they
          +    MUST support chunked transfer coding on PUT requests. Servers MAY
          +    also offer an optional switch from https to SPDY [SPDY].
          +
          +    A request is considered successful if the HTTP response code is in
          +    the 2xx range (e.g. 200 OK, 201 Created), and unsuccessful if an
          +    error occurred or a condition was not met (response code e.g. 404
          +    Not Found, 304 Not Modified).
          +
          +    The root folder of the storage tree is represented by the following
          +    URL:
          +
          +        URI_ENCODE( <storage_root> '/' )
          +
          +    Subsequently, if <parent_folder> is the URL of a folder, then the
          +    URL of an item contained in it is:
          +
          +        URI_ENCODE( <parent_folder> <document_name> )
          +
          +    for a document, or:
          +
          +        URI_ENCODE( <parent_folder> <folder_name> '/' )
          +
          +    for a folder. Item names MAY contain all characters except '/' and
          +    the null character, and MUST NOT have zero length.
          +
          +    A document description is a map containing one string-valued 'ETag'
          +    field, one string-valued 'Content-Type' and one integer-valued
          +    'Content-Length' field. They represent the document's current
          +    version, its content type, and its content length respectively. Note
          +    that content length is measured in octets (bytes), not in
          +    characters.
          +
          +    A folder description is a map containing a string-valued 'ETag'
          +
          +
          +de Jong                                                         [Page 4]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    field, representing the folder's current version.
          +
          +    A successful GET request to a folder MUST be responded to with a
          +    JSON-LD [JSON-LD] document (content type 'application/ld+json'),
          +    containing as its 'items' field a map in which contained documents
          +    appear as entries <item_name> to a document description, and
          +    contained non-empty folders appear as entries <item_name> '/' to a
          +    folder description. It MUST also contain an '@context' field with
          +    the value 'http://remotestorage.io/spec/folder-description'. For
          +    instance:
          +
          +       {
          +         "@context": "http://remotestorage.io/spec/folder-description",
          +         "items": {
          +           "abc": {
          +             "ETag": "DEADBEEFDEADBEEFDEADBEEF",
          +             "Content-Type": "image/jpeg",
          +             "Content-Length": 82352
          +           },
          +           "def/": {
          +             "ETag": "1337ABCD1337ABCD1337ABCD"
          +           }
          +         }
          +       }
          +
          +    All folders are treated as existing, and therefore GET requests to
          +    untouched folders SHOULD be responded to with a folder description
          +    with no items (the items field set to '{}'). However, an empty
          +    folder MUST NOT be listed as an item in its parent folder.
          +
          +    Also, since folders exist automatically, PUT and DELETE requests
          +    only need to be made to documents, and never to folders. A document
          +    PUT will make all ancestor folders along its path become non-empty;
          +    deleting the last document from a subtree will make that whole
          +    subtree become empty. Folders will therefore show up in their parent
          +    folder descriptions if and only if their subtree contains at least
          +    one document.
          +
          +    A successful GET request to a document SHOULD be responded to with
          +    the full document contents in the body, the document's content type
          +    in a 'Content-Type' header, its content length in octets (not in
          +    characters) in a 'Content-Length' header, and the document's current
          +    version as a strong ETag in an 'ETag' header.
          +
          +
          +de Jong                                                         [Page 5]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    Note that the use of strong ETags prohibits changing the response
          +    body based on request headers; in particular, the server will not be
          +    able to serve the same document uncompressed to some clients and
          +    gzipped when requested by the client, since the two bodies would not
          +    be identical byte-for-byte.
          +
          +    Servers MAY support Content-Range headers [RANGE] on GET requests,
          +    but whether or not they do SHOULD be announced through the <ranges>
          +    variable mentioned below in section 10.
          +
          +    A successful PUT request to a document MUST result in:
          +
          +       * the request body being stored as the document's new content,
          +       * parent and further ancestor folders being silently created as
          +         necessary, with the document (name and version) being added to
          +         its parent folder, and each folder added to its subsequent
          +         parent,
          +       * the value of its Content-Type header being stored as the
          +         document's new content type,
          +       * its version being updated, as well as that of its parent folder
          +         and further ancestor folders, using a strong validator [HTTP,
          +         section 7.2].
          +
          +    The response MUST contain a strong ETag header, with the document's
          +    new version (for instance a hash of its contents) as its value.
          +
          +    A successful DELETE request to a document MUST result in:
          +
          +       * the deletion of that document from the storage, and from its
          +         parent folder,
          +       * silent deletion of the parent folder if it is left empty by
          +         this, and so on for further ancestor folders,
          +       * the version of its parent folder being updated, as well as that
          +         of further ancestor folders.
          +
          +    A successful OPTIONS request SHOULD be responded to as described in
          +    the CORS section below.
          +
          +    A successful HEAD request SHOULD be responded to like to the
          +    equivalent GET request, but omitting the response body.
          +
          +
          +
          +
          +de Jong                                                         [Page 6]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +5. Response codes
          +
          +    Response codes SHOULD be given as defined by [HTTP, section 6] and
          +    [BEARER, section 3.1]. The following is a non-normative checklist
          +    of status codes that are likely to occur in practice:
          +
          +       * 500 if an internal server error occurs,
          +       * 429 if the client makes too frequent requests or is suspected
          +             of malicious activity,
          +       * 414 if the request URI is too long,
          +       * 416 if Range requests are supported by the server and the Range
          +             request can not be satisfied,
          +       * 401 for all requests that don't have a bearer token with
          +             sufficient permissions,
          +       * 404 for all DELETE and GET requests to documents that do not
          +             exist on the storage,
          +       * 304 for a conditional GET request whose pre-condition
          +             fails (see "Versioning" below),
          +       * 409 for a PUT request where any folder name in the path
          +             clashes with an existing document's name at the same
          +             level, or where the document name coincides with an
          +             existing folder's name at the same level.
          +       * 412 for a conditional PUT or DELETE request whose pre-condition
          +             fails (see "Versioning" below),
          +       * 507 in case the account is over its storage quota,
          +       * 4xx for all malformed requests (e.g. foreign characters in the
          +             path), as well as for all PUT and DELETE requests to
          +             folders,
          +       * 2xx for all successful requests.
          +
          +    Clients SHOULD also handle the case where a response takes too long
          +    to arrive, or where no response is received at all.
          +
          +6. Versioning
          +
          +    All successful requests MUST return an 'ETag' header [HTTP] with, in
          +    the case of GET, the current version, in the case of PUT, the new
          +    version, and in case of DELETE, the version that was deleted. All
          +    successful GET requests MUST return an 'Expires: 0' header. PUT and
          +    DELETE requests MAY have an 'If-Match' request header [COND], and
          +    MUST fail with a 412 response code if that doesn't match the
          +    document's current version.
          +
          +
          +
          +de Jong                                                         [Page 7]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    GET requests MAY have a comma-separated list of revisions in an
          +    'If-None-Match' header [COND], and SHOULD be responded to with a 304
          +    response if that list includes the document or folder's current
          +    version. A PUT request MAY have an 'If-None-Match: *' header [COND],
          +    in which case it MUST fail with a 412 response code if the document
          +    already exists.
          +
          +    In all 'ETag', 'If-Match' and 'If-None-Match' headers, revision
          +    strings should appear inside double quotes (").
          +
          +    A provider MAY offer version rollback functionality to its users,
          +    but this specification does not define the user interface for that.
          +
          +7. CORS headers
          +
          +    All responses MUST carry CORS headers [CORS]. The server MUST also
          +    reply to OPTIONS requests as per CORS. For GET requests, a wildcard
          +    origin MAY be returned, but for PUT and DELETE requests, the
          +    response MUST echo back the Origin header sent by the client.
          +
          +8. Session description
          +
          +    The information that a client needs to receive in order to be able
          +    to connect to a server SHOULD reach the client as described in the
          +    'bearer token issuance' sections below. It consists of:
          +
          +       * <storage_root>, consisting of 'https://' followed by a server
          +         host, and optionally a server port and a path prefix as per
          +         [IRI]. Examples:
          +         * 'https://example.com' (host only)
          +         * 'https://example.com:8080' (host and port)
          +         * 'https://example.com/path/to/storage' (host, port and
          +           path prefix; note there is no trailing slash)
          +       * <access_token> as per [OAUTH]. The token SHOULD be hard to
          +         guess and SHOULD NOT be reused from one client to another. It
          +         can however be reused in subsequent interactions with the same
          +         client, as long as that client is still trusted. Example:
          +         * 'ofb24f1ac3973e70j6vts19qr9v2eei'
          +       * <storage_api>, always 'draft-dejong-remotestorage-04' for this
          +         alternative version of the specification.
          +
          +    The client can make its requests using https with CORS and bearer
          +    tokens, to the URL that is the concatenation of <storage_root> with
          +
          +
          +de Jong                                                         [Page 8]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    '/' plus one or more <folder> '/' strings indicating a path in the
          +    folder tree, followed by zero or one <document> strings, indicating
          +    a document. For example, if <storage_root> is
          +    "https://storage.example.com/bob", then to retrieve the folder
          +    contents of the /public/documents/ folder, or to retrieve a
          +    'draft.txt' document from that folder, the client would make
          +    requests to, respectively:
          +
          +    * https://storage.example.com/bob/public/documents/
          +    * https://storage.example.com/bob/public/documents/draft.txt
          +
          +9. Bearer tokens and access control
          +
          +    A bearer token represents one or more access scopes. These access
          +    scopes are represented as strings of the form <module> <level>,
          +    where the <module> string SHOULD be lower-case alphanumerical, other
          +    than the reserved word 'public', and <level> can be ':r' or ':rw'.
          +    The access the bearer token gives is the sum of its access scopes,
          +    with each access scope representing the following permissions:
          +
          +    '*:rw') any request,
          +
          +    '*:r') any GET or HEAD request,
          +
          +    <module> ':rw') any requests to paths that start with
          +                    '/' <module> '/' or '/public/' <module> '/',
          +
          +    <module> ':r') any GET or HEAD requests to paths that start with
          +                   '/' <module> '/' or '/public/' <module> '/',
          +
          +    As a special exceptions, GET requests to a document (but not a
          +    folder) whose path starts with '/public/' are always allowed. They,
          +    as well as OPTIONS requests, can be made without a bearer token.
          +    Unless [KERBEROS] is used (see section 10 below), all other requests
          +    SHOULD present a bearer token with sufficient access scope, using a
          +    header of the following form (no double quotes here):
          +
          +       Authorization: Bearer <access_token>
          +
          +    In addition, providing the access token via a HTTP query parameter
          +    for GET requests MAY be supported by the server, although its use
          +    is not recommended, due to its security deficiencies; see [BEARER,
          +    section 2.3].
          +
          +
          +de Jong                                                         [Page 9]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +10. Application-first bearer token issuance
          +
          +    To make a remoteStorage server available as 'the remoteStorage of
          +    <account> at <host>', exactly one link of the following format
          +    SHOULD be added to the WebFinger record [WEBFINGER] of <account> at
          +    <host>:
          +
          +    {
          +      "href": <storage_root>,
          +      "rel": "remotestorage",
          +      "properties": {
          +        "http://remotestorage.io/spec/version": <storage_api>,
          +        "http://tools.ietf.org/html/rfc6749#section-4.2": <auth-dialog>,
          +        ... : ... ,
          +      }
          +    }
          +
          +    Here <storage_root> and <storage_api> are as per "Session
          +    description" above, and <auth-dialog> SHOULD be either null or a
          +    URL where an OAuth 2.0 implicit-grant flow dialog [OAUTH] is
          +    presented.
          +
          +    If <auth-dialog> is a URL, the user can supply their credentials
          +    for accessing the account (how, is out of scope), and allow or
          +    reject a request by the connecting application to obtain a bearer
          +    token for a certain list of access scopes. Note that an account
          +    will often belong to just one human user, but may also belong to a
          +    group of multiple users (the remoteStorage of <group> at <host>).
          +
          +    If <auth-dialog> is null, the client will not have a way to obtain
          +    an access token, and SHOULD send all requests without Authorization
          +    header, and rely on Kerberos [KERBEROS] instead for requests that
          +    would normally be sent with a bearer token, but servers SHOULD NOT
          +    impose any such access barriers for resources that would normally
          +    not require an access token.
          +
          +    The '...' ellipses indicate that more properties may be present.
          +    Non-breaking examples that have been proposed so far, include a
          +    "http://tools.ietf.org/html/rfc6750#section-2.3" property, set to
          +    the string value "true" if the server supports passing the bearer
          +    token in the URI query parameter as per section 2.3 of [BEARER],
          +    instead of in the request header.
          +
          +
          +de Jong                                                        [Page 10]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    Another example is "http://tools.ietf.org/html/rfc7233" with a
          +    string value of "GET" if Content-Range headers are supported for
          +    GET requests as per [RANGE], "PUT" if they are supported for PUT
          +    requests, and "GET,PUT" if supported for both.
          +
          +    Both these proposals are non-breaking extensions, since the client
          +    will have a way to work around it if these features are not present
          +    (e.g. retrieve the protected resource asynchronously in the first
          +    case, or request the entire resource in the second case).
          +
          +    A "http://remotestorage.io/spec/web-authoring" property has been
          +    proposed with a string value of the fully qualified domain name to
          +    which web authoring content is published if the server supports web
          +    authoring as per [AUTHORING]. Note that this extension is a breaking
          +    extension in the sense that it divides users into "haves", whose
          +    remoteStorage accounts allow them to author web content, and
          +    "have-nots", whose remoteStorage account does not support this
          +    functionality.
          +
          +    The server MAY expire bearer tokens, and MAY require the user to
          +    register applications as OAuth clients before first use; if no
          +    client registration is required, then the server MAY ignore the
          +    client_id parameter in favor of relying on the redirect_uri
          +    parameter for client identification.
          +
          +11. Storage-first bearer token issuance
          +
          +    The provider MAY also present a dashboard to the user, where they
          +    have some way to add open web app manifests [MANIFEST]. Adding a
          +    manifest to the dashboard is considered equivalent to clicking
          +    'accept' in the dialog of the application-first flow. Removing one
          +    is considered equivalent to revoking its access token.
          +
          +    As an equivalent to OAuth's 'scope' parameter, a 'datastores-access'
          +    field SHOULD be present in the root of such an application manifest
          +    document, with entries <module> -> '{"access": "readonly"}' for
          +    <level> 'r' or '{"access": "readwrite"}' for <level> 'rw', as
          +    prescribed in [DATASTORE].
          +
          +    When the user gestures they want to use a certain application whose
          +    manifest is present on the dashboard, the dashboard SHOULD redirect
          +    to the application or open it in a new window. To mimic coming back
          +
          +
          +de Jong                                                        [Page 11]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    from the OAuth dialog, it MAY add 'access_token' and 'scope'
          +    fields to the URL fragment.
          +
          +    Regardless of whether 'access_token' and 'scope' are specified, it
          +    SHOULD add a 'remotestorage' field to the URL fragment, with a
          +    value of the form <account> '@' <host>. When the application detects
          +    this parameter, it SHOULD resolve the WebFinger record for <account>
          +    at <host> and extract the <storage_root> and <storage_api>
          +    information.
          +
          +    If no access_token was given, then the application SHOULD also
          +    extract the <auth_endpoint> information from WebFinger, and continue
          +    as per application-first bearer token issuance.
          +
          +    Note that whereas a remoteStorage server SHOULD offer support for
          +    the application-first flow with WebFinger and OAuth, it MAY choose
          +    not to support the storage-first flow, provided that users will
          +    easily remember their <account> '@' <host> WebFinger address at that
          +    provider. Applications SHOULD, however, support both flows, which
          +    means checking the URL for a 'remotestorage' parameter, but giving
          +    the user a way to specify the WebFinger address if there is none.
          +
          +    If a server provides an application manifest dashboard, then it
          +    SHOULD merge the list of applications there with the list of
          +    issued access tokens as specified by OAuth into one list. Also,
          +    the interface for revoking an access token as specified by OAuth
          +    SHOULD coincide with removing an application from the dashboard.
          +
          +    Servers MAY also provide a way to create access tokens directly from
          +    their user interface. Such functionality would be aimed mainly at
          +    developers, to manually copy and paste a token into a script or
          +    debug tool, thus bypassing the need for an OAuth dance. Clients
          +    SHOULD NOT rely on this in production.
          +
          +12. Example wire transcripts
          +
          +    The following examples are not normative ("\" indicates a line was
          +    wrapped).
          +
          +12.1. WebFinger
          +
          +    In application-first, an in-browser application might issue the
          +    following request, using XMLHttpRequest and CORS:
          +
          +
          +de Jong                                                        [Page 12]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +         GET /.well-known/webfinger?resource=acct:michiel@michielbdejon\
          +g.com HTTP/1.1
          +         Host: michielbdejong.com
          +
          +    and the server's response might look like this:
          +
          +         HTTP/1.1 200 OK
          +         Access-Control-Allow-Origin: *
          +         Access-Control-Allow-Methods: GET
          +         Access-Control-Allow-Headers: If-Match, If-None-Match
          +         Access-Control-Expose-Headers: ETag, Content-Length
          +         Content-Type: application/jrd+json
          +
          +         {
          +           "links":[{
          +             "href": "https://michielbdejong.com:7678/inbox",
          +             "rel": "post-me-anything"
          +           }, {
          +             "href": "https://michielbdejong.com/me.jpg",
          +             "rel": "avatar"
          +           }, {
          +             "href": "https://3pp.io:4439/storage/michiel",
          +             "rel": "remotestorage",
          +             "properties": {
          +               "http://remotestorage.io/spec/version": "draft-dejong-re\
          +motestorage-04",
          +               "http://tools.ietf.org/html/rfc6749#section-4.2": "https\
          +://3pp.io:4439/oauth/michiel",
          +               "http://tools.ietf.org/html/rfc6750#section-2.3": false,
          +               "http://tools.ietf.org/html/rfc7233": false,
          +               "http://remotestorage.io/spec/web-authoring": false
          +             }
          +           }]
          +         }
          +
          +12.2. OAuth dialog form
          +
          +    Once the in-browser application has discovered the server's OAuth
          +    end-point, it will typically redirect the user to this URL, in
          +    order to obtain a bearer token. Say the application is hosted on
          +    https://drinks-unhosted.5apps.com/ and wants read-write access to
          +    the account's "myfavoritedrinks" scope:
          +
          +
          +de Jong                                                        [Page 13]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +        GET /oauth/michiel?redirect_uri=https%3A%2F%2Fdrinks-unhosted.5\
          +apps.com%2F&scope=myfavoritedrinks%3Arw&client_id=https%3A%2F%2Fdrinks-\
          +unhosted.5apps.com&response_type=token HTTP/1.1
          +        Host: 3pp.io
          +
          +    The server's response might look like this (truncated for brevity):
          +
          +        HTTP/1.1 200 OK
          +
          +        <!DOCTYPE html>
          +        <html lang="en">
          +          <head>
          +            <title>Allow access?</title>
          +        ...
          +
          +12.3. OAuth dialog form submission
          +
          +    When the user submits the form, the request would look something
          +    like this:
          +
          +        POST /oauth HTTP/1.1
          +        Host: 3pp.io:4439
          +        Origin: https://3pp.io:4439
          +        Content-Type: application/x-www-form-urlencoded
          +        Referer: https://3pp.io:4439/oauth/michiel?redirect_uri=https%3\
          +A%2F%2Fdrinks-unhosted.5apps.com%2F&scope=myfavoritedrinks%3Arw&client_\
          +id=https%3A%2F%2Fdrinks-unhosted.5apps.com&response_type=token
          +
          +        client_id=https%3A%2F%2Fdrinks-unhosted.5apps.com&redirect_uri=\
          +https%3A%2F%2Fdrinks-unhosted.5apps.com%2F&response_type=token&scope=my\
          +favoritedrinks%3Arw&state=&username=michiel&password=something&allow=Al\
          +low
          +
          +    To which the server could respond with a 302 redirect, back to the
          +    origin of the requesting application:
          +
          +        HTTP/1.1 302 Found
          +        Location:https://drinks-unhosted.5apps.com/#access_token=j2YnGt\
          +XjzzzHNjkd1CJxoQubA1o%3D&token_type=bearer&state=
          +
          +12.4. OPTIONS preflight
          +
          +
          +
          +de Jong                                                        [Page 14]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    When an in-browser application makes a cross-origin request which
          +    may affect the server-state, the browser will make a preflight
          +    request first, with the OPTIONS verb, for instance:
          +
          +        OPTIONS /storage/michiel/myfavoritedrinks/ HTTP/1.1
          +        Host: 3pp.io:4439
          +        Access-Control-Request-Method: GET
          +        Origin: https://drinks-unhosted.5apps.com
          +        Access-Control-Request-Headers: Authorization
          +        Referer: https://drinks-unhosted.5apps.com/
          +
          +    To which the server can for instance respond:
          +
          +        HTTP/1.1 200 OK
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        Access-Control-Allow-Methods: GET, PUT, DELETE
          +        Access-Control-Allow-Headers: Authorization, Content-Length, Co\
          +ntent-Type, Origin, X-Requested-With, If-Match, If-None-Match
          +
          +12.5. Initial PUT
          +
          +    An initial PUT may contain an 'If-None-Match: *' header, like this:
          +
          +        PUT /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Content-Length: 91
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Content-Type: application/json; charset=UTF-8
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-None-Match: *
          +
          +        {"name":"test","@context":"http://remotestorage.io/spec/modules\
          +/myfavoritedrinks/drink"}
          +
          +    And the server may respond with either a 201 Created or a 200 OK
          +    status:
          +
          +        HTTP/1.1 201 Created
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694045000"
          +
          +12.6. Subsequent PUT
          +
          +
          +de Jong                                                        [Page 15]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    A subsequent PUT may contain an 'If-Match' header referring to the
          +    ETag previously returned, like this:
          +
          +        PUT /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Content-Length: 91
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Content-Type: application/json; charset=UTF-8
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-Match: "1382694045000"
          +
          +        {"name":"test", "updated":true, "@context":"http://remotestorag\
          +e.io/spec/modules/myfavoritedrinks/drink"}
          +
          +    And the server may respond with a 412 Conflict or a 200 OK status:
          +
          +        HTTP/1.1 200 OK
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694048000"
          +
          +12.7. GET
          +
          +    A GET request would also include the bearer token, and optionally
          +    an If-None-Match header:
          +
          +        GET /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-None-Match: "1382694045000", "1382694048000"
          +
          +    And the server may respond with a 304 Not Modified status:
          +
          +        HTTP/1.1 304 Not Modified
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694048000"
          +
          +    Or a 200 OK status, plus a response body:
          +
          +        HTTP/1.1 200 OK
          +
          +
          +de Jong                                                        [Page 16]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        Content-Type: application/json; charset=UTF-8
          +        Content-Length: 106
          +        ETag: "1382694048000"
          +        Expires: 0
          +
          +        {"name":"test", "updated":true, "@context":"http://remotestora\
          +ge.io/spec/modules/myfavoritedrinks/drink"}
          +
          +    If the GET URL would have been "/storage/michiel/myfavoritedrinks/",
          +    a 200 OK response would have a folder description as the response
          +    body:
          +
          +        HTTP/1.1 200 OK
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        Content-Type: application/ld+json
          +        Content-Length: 171
          +        ETag: "1382694048000"
          +        Expires: 0
          +
          +        {"@context":"http://remotestorage.io/spec/folder-version","ite\
          +ms":{"test":{"ETag":"1382694048000","Content-Type":"application/json; \
          +charset=UTF-8","Content-Length":106}}}
          +
          +    If the GET URL would have been a non-existing document like
          +    "/storage/michiel/myfavoritedrinks/x", the response would have a 404
          +    Not Found status, and no ETag header:
          +
          +        HTTP/1.1 404 Not Found
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +
          +12.8. DELETE
          +
          +    A DELETE request may look like this:
          +
          +        DELETE /storage/michiel/myfavoritedrinks/test HTTP/1.1
          +        Host: 3pp.io:4439
          +        Origin: https://drinks-unhosted.5apps.com
          +        Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
          +        Content-Type: application/json; charset=UTF-8
          +        Referer: https://drinks-unhosted.5apps.com/?
          +        If-Match: "1382694045000"
          +
          +
          +
          +de Jong                                                        [Page 17]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    And the server may respond with a 412 Conflict or a 200 OK status:
          +
          +        HTTP/1.1 412 Conflict
          +        Access-Control-Allow-Origin: https://drinks-unhosted.5apps.com
          +        ETag: "1382694048000"
          +
          +13. Distributed versioning
          +
          +    This section is non-normative, and is intended to explain some of
          +    the design choices concerning ETags and folder listings. At the
          +    same time it will hopefully help readers who intend to develop an
          +    application that uses remoteStorage as its per-user data storage.
          +    When multiple clients have read/write access to the same document,
          +    versioning conflicts may occur. For instance, client A may make
          +    a PUT request that changes the document from version 1 to version
          +    2, after which client B may make a PUT request attempting to change
          +    the same document from version 1 to version 3.
          +
          +    In this case, client B can add an 'If-Match: "1"' header, which
          +    would trigger a 412 Conflict response code, since the current
          +    version ("2") does not match the version required as a condition by
          +    the header If-Match header ("1").
          +
          +    Client B is now aware of the conflict, and may consult the user,
          +    saying the update to version 3 failed. The user may then choose,
          +    through the user interface of client B, whether version 2 or
          +    version 3 should be kept, or maybe the document should be reverted
          +    on the server to version 1, or a merged version 4 is needed. Client
          +    B may then make a request that puts the document to the version the
          +    user wishes; this time setting an 'If-Match: "2"' header instead.
          +
          +    Both client A and client B would periodically poll the root
          +    folder of each scope they have access to, to see if the version
          +    of the root folder changed. If it did, then one of the versions
          +    listed in there will necessarily have changed, and the client can
          +    make a GET request to that child folder or document, to obtain
          +    its latest version.
          +
          +    Because an update in a document will result in a version change of
          +    its containing folder, and that change will propagate all the way
          +    to the root folder, it is not necessary to poll each document for
          +    changes individually.
          +
          +
          +
          +de Jong                                                        [Page 18]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    As an example, the root folder may contain 10 directories,
          +    each of which contain 10 directories, which each contain 10
          +    documents, so their paths would be for instance '/0/0/1', '/0/0/2',
          +    etcetera. Then one GET request to the root folder '/' will be
          +    enough to know if any of these 1000 documents has changed.
          +
          +    Say document '/7/9/2' has changed; then the GET request to '/' will
          +    come back with a different ETag, and entry '7/' will have a
          +    different value in its JSON content. The client could then request
          +    '/7/', '/7/9/', and '/7/9/2' to narrow down the one document that
          +    caused the root folder's ETag to change.
          +
          +    Note that the remoteStorage server does not get involved in the
          +    conflict resolution. It keeps the canonical current version at all
          +    times, and allows clients to make conditional GET and PUT requests,
          +    but it is up to whichever client discovers a given version
          +    conflict, to resolve it.
          +
          +14. Security Considerations
          +
          +    To prevent man-in-the-middle attacks, the use of https instead of
          +    http is important for both the interface itself and all end-points
          +    involved in WebFinger, OAuth, and (if present) the storage-first
          +    application launch dashboard.
          +
          +    A malicious party could link to an application, but specifying a
          +    remoteStorage account address that it controls, thus tricking the
          +    user into using a trusted application to send sensitive data to the
          +    wrong remoteStorage server. To mitigate this, applications SHOULD
          +    clearly display to which remoteStorage server they are sending the
          +    user's data.
          +
          +    Applications could request scopes that the user did not intend to
          +    give access to. The user SHOULD always be prompted to carefully
          +    review which scopes an application is requesting.
          +
          +    An application may upload malicious html pages and then trick the
          +    user into visiting them, or upload malicious client-side scripts,
          +    that take advantage of being hosted on the user's domain name. The
          +    origin on which the remoteStorage server has its interface SHOULD
          +    therefore NOT be used for anything else, and the user SHOULD be
          +    warned not to visit any web pages on that origin. In particular, the
          +    OAuth dialog and launch dashboard or token revokation interface
          +
          +
          +de Jong                                                        [Page 19]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +    SHOULD be on a different origin than the remoteStorage interface.
          +
          +    Where the use of bearer tokens is impractical, a user may choose to
          +    store documents on hard-to-guess URLs whose path after
          +    <storage_root> starts with '/public/', while sharing this URL only
          +    with the intended audience. That way, only parties who know the
          +    document's hard-to-guess URL, can access it. The server SHOULD
          +    therefore make an effort to detect and stop brute-force attacks that
          +    attempt to guess the location of such documents.
          +
          +    The server SHOULD also detect and stop denial-of-service attacks
          +    that aim to overwhelm its interface with too much traffic.
          +
          +15. IANA Considerations
          +
          +    This document registers the 'remotestorage' link relation, as well
          +    as the following WebFinger properties:
          +      * "http://remotestorage.io/spec/version"
          +      * "http://tools.ietf.org/html/rfc6749#section-4.2"
          +      * "http://tools.ietf.org/html/rfc6750#section-2.3"
          +      * "http://tools.ietf.org/html/rfc7233"
          +      * "http://remotestorage.io/spec/web-authoring"
          +
          +16. Acknowledgements
          +
          +    The authors would like to thank everybody who contributed to the
          +    development of this protocol, including Kenny Bentley, Javier Diaz,
          +    Daniel Groeber, Bjarni Runar, Jan Wildeboer, Charles Schultz, Peter
          +    Svensson, Valer Mischenko, Michiel Leenaars, Jan-Christoph
          +    Borchardt, Garret Alfert, Sebastian Kippe, Max Wiehle, Melvin
          +    Carvalho, Martin Stadler, Geoffroy Couprie, Niklas Cathor, Marco
          +    Stahl, James Coglan, Ken Eucker, Daniel Brolund, elf Pavlik, Nick
          +    Jennings, Markus Sabadello, Steven te Brinke, Matthias Treydte,
          +    Rick van Rein, Mark Nottingham, Julian Reschke, and Markus
          +    Lanthaler, among many others.
          +
          +17. References
          +
          +17.1. Normative References
          +
          +    [WORDS]
          +        Bradner, S., "Key words for use in RFCs to Indicate Requirement
          +        Levels", BCP 14, RFC 2119, March 1997.
          +
          +
          +de Jong                                                        [Page 20]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +
          +    [IRI]
          +        Duerst, M., "Internationalized Resource Identifiers (IRIs)",
          +        RFC 3987, January 2005.
          +
          +    [WEBFINGER]
          +        Jones, P., Salguerio, G., Jones, M, and Smarr, J.,
          +        "WebFinger", RFC7033, September 2013.
          +
          +    [OAUTH]
          +        "Section 4.2: Implicit Grant", in: Hardt, D. (ed), "The OAuth
          +        2.0 Authorization Framework", RFC6749, October 2012.
          +
          +17.2. Informative References
          +
          +    [HTTPS]
          +        Rescorla, E., "HTTP Over TLS", RFC2818, May 2000.
          +
          +    [HTTP]
          +        Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
          +        Semantics and Content", RFC7231, June 2014.
          +
          +    [COND]
          +        Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
          +        Conditional Requests", RFC7232, June 2014.
          +
          +    [RANGE]
          +        Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
          +        Conditional Requests", RFC7233, June 2014.
          +
          +    [SPDY]
          +        Mark Belshe, Roberto Peon, "SPDY Protocol - Draft 3.1", http://
          +        www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1,
          +        September 2013.
          +
          +    [JSON-LD]
          +        M. Sporny, G. Kellogg, M. Lanthaler, "JSON-LD 1.0", W3C
          +        Proposed Recommendation,
          +        http://www.w3.org/TR/2014/REC-json-ld-20140116/, January 2014.
          +
          +    [CORS]
          +        van Kesteren, Anne (ed), "Cross-Origin Resource Sharing --
          +        W3C Candidate Recommendation 29 January 2013",
          +
          +
          +de Jong                                                        [Page 21]
          +
          
          +Internet-Draft              remoteStorage                  December 2014
          +
          +
          +        http://www.w3.org/TR/cors/, January 2013.
          +
          +    [MANIFEST]
          +        Mozilla Developer Network (ed), "App manifest -- Revision
          +        330541", https://developer.mozilla.org/en-
          +        US/Apps/Build/Manifest$revision/566677, April 2014.
          +
          +    [DATASTORE]
          +        "WebAPI/DataStore", MozillaWiki, retrieved May 2014.
          +        https://wiki.mozilla.org/WebAPI/DataStore#Manifest
          +
          +    [KERBEROS]
          +        C. Neuman et al., "The Kerberos Network Authentication Service
          +        (V5)", RFC4120, July 2005.
          +
          +    [BEARER]
          +        M. Jones, D. Hardt, "The OAuth 2.0 Authorization Framework:
          +        Bearer Token Usage", RFC6750, October 2012.
          +
          +    [AUTHORING]
          +        "Using remoteStorage for web authoring", reSite wiki, retrieved
          +        September 2014. https://github.com/michielbdejong/resite/wiki
          +        /Using-remoteStorage-for-web-authoring
          +
          +18. Authors' addresses
          +
          +    Michiel B. de Jong
          +    IndieHosters
          +
          +    Email: michiel@michielbdejong.com
          +
          +
          +    F. Kooman
          +    (independent)
          +
          +    Email: fkooman@tuxed.net
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +de Jong                                                        [Page 22]
          +
          +

          +Html markup produced by rfcmarkup 1.111, available from +https://tools.ietf.org/tools/rfcmarkup/ + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-images.json new file mode 100644 index 000000000..785f18284 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-images.json @@ -0,0 +1,7 @@ +[ + "https:\/\/www.infobae.com\/new-resizer\/shi8E0F5ldd8a7vtvFaJomRURqU=\/1200x0\/filters:quality(100)\/s3.amazonaws.com\/arc-wordpress-client-uploads\/infobae-wp\/wp-content\/uploads\/2017\/12\/01154429\/Rugbier-golpeado-1920.jpg", + "https:\/\/www.infobae.com\/new-resizer\/b_LU5bsrOM_BmZtNMzegvdNoPNE=\/600x0\/filters:quality(100)\/s3.amazonaws.com\/arc-wordpress-client-uploads\/infobae-wp\/wp-content\/uploads\/2017\/12\/01154429\/Rugbier-golpeado-1920.jpg", + "https:\/\/www.infobae.com\/new-resizer\/PUJQSwJZOtaetM7tXKqic4Ib1Wg=\/600x0\/filters:quality(100)\/s3.amazonaws.com\/arc-wordpress-client-uploads\/infobae-wp\/wp-content\/uploads\/2017\/12\/01161934\/Jonathan-Castellani-SF-2.jpg", + "https:\/\/www.infobae.com\/new-resizer\/yS5kphJxw_CBn1mycqbcrMjoNmQ=\/600x0\/filters:quality(100)\/s3.amazonaws.com\/arc-wordpress-client-uploads\/infobae-wp\/wp-content\/uploads\/2017\/12\/01163101\/JonathanGay2.jpg", + "https:\/\/www.infobae.com\/new-resizer\/cFidtpanVMHP25zNoWF78I4qjMA=\/600x0\/filters:quality(100)\/s3.amazonaws.com\/arc-wordpress-client-uploads\/infobae-wp\/wp-content\/uploads\/2017\/12\/01161927\/Jonathan-Castellani-1920.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-metadata.json new file mode 100644 index 000000000..b6d25979e --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Por Mauricio Luna 1 de diciembre de 2017", + "Direction": null, + "Excerpt": "Jonathan Castellari fue salvajemente golpeado en un local de comidas rápidas, mientras esperaba el desayuno junto a un amigo. Podría perder un ojo", + "Image": "https:\/\/www.infobae.com\/new-resizer\/shi8E0F5ldd8a7vtvFaJomRURqU=\/1200x0\/filters:quality(100)\/s3.amazonaws.com\/arc-wordpress-client-uploads\/infobae-wp\/wp-content\/uploads\/2017\/12\/01154429\/Rugbier-golpeado-1920.jpg", + "Title": "Una patota de varones atacó a un rugbier gay: \"Te vamos a matar por puto\"", + "SiteName": "Infobae" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected.html new file mode 100644 index 000000000..e575c7beb --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected.html @@ -0,0 +1 @@ +

          Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres

          Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres

          Eran casi las 6:30 de la mañana. Jonathan Castellari, de 25 años, volvía de bailar junto a Sebastián, su amigo. Les pareció una buena idea detenerse en el Mc Donald's de Avenida Córdoba al 3100 con el objetivo de desayunar y continuar el viaje hasta sus hogares. Mientras esperaban la comida, un grupo de 8 chicos de entre 20 y 25 años ingresó al local con el mismo objetivo, aunque adoptaron otro plan: mirarlos fijamente, reírse de ellos y hacer chistes sobre la sexualidad de ambos.

          Sebastián relató a Infobae: "Estábamos esperando nuestro pedido, haciéndonos chistes, riéndonos de lo sucedido durante la noche. Hablábamos entre nosotros. En ese momento entró un grupo de 8 chicos, de contextura grande, y notamos que estaban alcoholizados. Nos miraban, hacían chistes, se reían de nosotros. Fue ahí cuando decidimos salir con Jonathan a fumar un cigarrillo y esperar que se fueran. Él salió primero y vi que uno de estos pibes lo abrazó y se lo llevó. Instantáneamente se metieron los demás a pegarle. Le pegaron mucho. Quise pararlos y no pude. Ligué yo también, pero nada en comparación a lo que sufrió Jonathan. Cuando lo soltaron lo agarré como pude y justo una enfermera del Sanatorio Güemes (está a dos cuadras del local) estaba tomando un café y le dio los primeros auxilios".

          "Fuimos a verlo recién, no paraba de llorar y de decirnos que le pegaron por puto", dijo a Infobae María Rachid, titular del Instituto contra la Discriminación de la Defensoría del Pueblo CABA. "Lamentablemente su situación es delicada. Recién nos informaron que lo van a intervenir quirúrgicamente porque podría perder un ojo".

          Como Jonathan no conoce a los agresores, desde la Defensoría y la Federación LGBT se comunicaron con autoridades del Ministerio de Seguridad para que soliciten las cámaras de seguridad del Mc Donald's, del sanatorio Güemes y de otros negocios de la cuadra para poder identificarlos.

          Gastón Llopart, abogado de Sebastián, le detalló a Infobae que Jonathan está "próximo a recibir una intervención quirúrgica, ya que tuvo fractura en el hueso del pómulo derecho de su rostro. Sebastián llamó al 911 dos veces y no fueron. Me contaron que los agresores los siguieron hasta el sanatorio mientras los insultaban: la gente de seguridad tuvo que echarlos".

          Llopart agregó que la patota, mientras lo golpeaban, le gritaba: "Te vamos a matar por puto". La familia de Jonathan está en el sanatorio a la espera de la intervención quirúrgica. Llopart dijo que "harán la denuncia el lunes por la mañana, cuando existan mayores precisiones de lo ocurrido".

          Jonathan y Sebastián forman parte de Ciervos Pampas Rugby Club, un equipo que nació hace cinco años como el primer equipo de la Argentina por la diversidad sexual. Se trata de un combinado que no está integrado en un 100% por varones gays, pero en el que estos encuentran un lugar en el cual expresar libremente su orientación sexual, sin miedo a los prejuicios o a la discriminación. El club emitió un comunicado en su cuenta de Facebook, relatando los hechos y solidarizándose con Jonathan.

          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/source.html new file mode 100644 index 000000000..8d6832e6f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/source.html @@ -0,0 +1,35 @@ + Una patota de varones atacó a un rugbier gay: "Te vamos a matar por puto" - Infobae + +

          Una patota de varones atacó a un rugbier gay: "Te vamos a matar por puto"

          Jonathan Castellari fue salvajemente golpeado en un local de comidas rápidas, mientras esperaba el desayuno junto a un amigo. Podría perder un ojo
          Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres
          Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres

          Eran casi las 6:30 de la mañana. Jonathan Castellari, de 25 años, volvía de bailar junto a Sebastián, su amigo. Les pareció una buena idea detenerse en el Mc Donald's de Avenida Córdoba al 3100 con el objetivo de desayunar y continuar el viaje hasta sus hogares. Mientras esperaban la comida, un grupo de 8 chicos de entre 20 y 25 años ingresó al local con el mismo objetivo, aunque adoptaron otro plan: mirarlos fijamente, reírse de ellos y hacer chistes sobre la sexualidad de ambos.

          Sebastián relató a Infobae: "Estábamos esperando nuestro pedido, haciéndonos chistes, riéndonos de lo sucedido durante la noche. Hablábamos entre nosotros. En ese momento entró un grupo de 8 chicos, de contextura grande, y notamos que estaban alcoholizados. Nos miraban, hacían chistes, se reían de nosotros. Fue ahí cuando decidimos salir con Jonathan a fumar un cigarrillo y esperar que se fueran. Él salió primero y vi que uno de estos pibes lo abrazó y se lo llevó. Instantáneamente se metieron los demás a pegarle. Le pegaron mucho. Quise pararlos y no pude. Ligué yo también, pero nada en comparación a lo que sufrió Jonathan. Cuando lo soltaron lo agarré como pude y justo una enfermera del Sanatorio Güemes (está a dos cuadras del local) estaba tomando un café y le dio los primeros auxilios".

          "Fuimos a verlo recién, no paraba de llorar y de decirnos que le pegaron por puto", dijo a Infobae María Rachid, titular del Instituto contra la Discriminación de la Defensoría del Pueblo CABA. "Lamentablemente su situación es delicada. Recién nos informaron que lo van a intervenir quirúrgicamente porque podría perder un ojo".

          Como Jonathan no conoce a los agresores, desde la Defensoría y la Federación LGBT se comunicaron con autoridades del Ministerio de Seguridad para que soliciten las cámaras de seguridad del Mc Donald's, del sanatorio Güemes y de otros negocios de la cuadra para poder identificarlos.

          Gastón Llopart, abogado de Sebastián, le detalló a Infobae que Jonathan está "próximo a recibir una intervención quirúrgica, ya que tuvo fractura en el hueso del pómulo derecho de su rostro. Sebastián llamó al 911 dos veces y no fueron. Me contaron que los agresores los siguieron hasta el sanatorio mientras los insultaban: la gente de seguridad tuvo que echarlos".

          Llopart agregó que la patota, mientras lo golpeaban, le gritaba: "Te vamos a matar por puto". La familia de Jonathan está en el sanatorio a la espera de la intervención quirúrgica. Llopart dijo que "harán la denuncia el lunes por la mañana, cuando existan mayores precisiones de lo ocurrido".

          Jonathan y Sebastián forman parte de Ciervos Pampas Rugby Club, un equipo que nació hace cinco años como el primer equipo de la Argentina por la diversidad sexual. Se trata de un combinado que no está integrado en un 100% por varones gays, pero en el que estos encuentran un lugar en el cual expresar libremente su orientación sexual, sin miedo a los prejuicios o a la discriminación. El club emitió un comunicado en su cuenta de Facebook, relatando los hechos y solidarizándose con Jonathan.

          LEA MÁS:

          Permite ver las noticias en menos de un segundo.

          Mas Noticias

          Comentarios

          🍿🍿🍿 Buena
          🍿🍿🍿🍿 Muy Buena
          🍿🍿🍿🍿🍿 Excelente
          🍿🍿🍿 Buena
          Cerrar
          Now Playing
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-images.json new file mode 100644 index 000000000..d5b5affb7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-images.json @@ -0,0 +1,17 @@ +{ + "0": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*sLDnS1UWEFIS33uLMxq3cw.jpeg", + "1": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*sLDnS1UWEFIS33uLMxq3cw.jpeg", + "2": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*3vIhkoHIzcxvUdijoCVx6w.png", + "3": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*4gN1-fzOwCniw-DbqQjDeQ.jpeg", + "4": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*2KPmZkIBUrhps-2uwDvYFQ.jpeg", + "5": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*PU40bbbox2Ompc5I3RE99A.jpeg", + "6": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*ohyycinH18fz98TCyUzVgQ.png", + "7": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*mKvUNOAVQxl6atCbxbCZsg.jpeg", + "8": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*knT10_FNVUmqQIBLnutmzQ.jpeg", + "10": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*Vr61dyCTRwk6CemmVF8YAQ.jpeg", + "11": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*a-1_13xE6_ErQ-QSlz6myw.jpeg", + "13": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg", + "14": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*NGcrjfkV0l37iQH2uyYjEw.jpeg", + "15": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/2000\/1*WRlKt3q3mt7utmwxcbl3sQ.jpeg", + "16": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*320_4I0lxbn5x3bx4XPI5Q.png" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-metadata.json new file mode 100644 index 000000000..3b705f98a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Joseph Cox", + "Direction": null, + "Excerpt": "Welcome to DoctorX’s Barcelona lab, where the drugs you bought online are tested for safety and purity. No questions ask…", + "Image": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*sLDnS1UWEFIS33uLMxq3cw.jpeg", + "Title": "Inside the Deep Web Drug Lab", + "SiteName": "Medium" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected.html new file mode 100644 index 000000000..d3696f7d1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected.html @@ -0,0 +1,381 @@ +
          +
          +
          +
          +
          +
          + +

          +
          +
          + + +

          Welcome to DoctorX’s Barcelona lab, where the drugs you bought online are tested for safety and purity. No questions asked.

          + +
          + +

          +

          Standing at a table in a chemistry lab in Barcelona, Cristina Gil Lladanosa + tears open a silver, smell-proof protective envelope. She slides out a + transparent bag full of crystals. Around her, machines whir and hum, and + other researchers mill around in long, white coats.

          +

          She is holding the lab’s latest delivery of a drug bought from the “deep + web,” the clandestine corner of the internet that isn’t reachable by normal + search engines, and is home to some sites that require special software + to access. Labeled as MDMA (the street + term is ecstasy), this sample has been shipped from Canada. Lladanosa and + her colleague Iván Fornís Espinosa have also received drugs, anonymously, + from people in China, Australia, Europe and the United States.

          +

          “Here we have speed, MDMA, cocaine, pills,” Lladanosa says, pointing to + vials full of red, green, blue and clear solutions sitting in labeled boxes.

          +
          +
          +
          + +

          +
          Cristina Gil Lladanosa, at the Barcelona testing lab | photo by Joan Bardeletti
          +
          +

          Since 2011, with the launch of Silk Road, anybody has been able to safely buy illegal + drugs from the deep web and have them delivered to their door. Though the + FBI shut down that black market in October 2013, other outlets have emerged + to fill its role. For the last 10 months the lab at which Lladanosa and + Espinosa work has offered a paid testing service of those drugs. By sending + in samples for analysis, users can know exactly what it is they are buying, + and make a more informed decision about whether to ingest the substance. + The group, called Energy Control, + which has being running “harm reduction” programs since 1999, is the first + to run a testing service explicitly geared towards verifying those purchases + from the deep web.

          +

          Before joining Energy Control, Lladanosa briefly worked at a pharmacy, + whereas Espinosa spent 14 years doing drug analysis. Working at Energy + Control is “more gratifying,” and “rewarding” than her previous jobs, Lladanosa + told me. They also receive help from a group of volunteers, made up of + a mixture of “squatters,” as Espinosa put it, and medical students, who + prepare the samples for testing.

          +

          After weighing out the crystals, aggressively mixing it with methanol + until dissolved, and delicately pouring the liquid into a tiny brown bottle, + Lladanosa, a petite woman who is nearly engulfed by her lab coat, is now + ready to test the sample. She loads a series of three trays on top of a + large white appliance sitting on a table, called a gas chromatograph (GC). + A jungle of thick pipes hang from the lab’s ceiling behind it.

          +
          +
          +
          + +

          +
          Photo by Joan Bardeletti
          +
          +

          “Chromatography separates all the substances,” Lladanosa says as she loads + the machine with an array of drugs sent from the deep web and local Spanish + users. It can tell whether a sample is pure or contaminated, and if the + latter, with what.

          +

          Rushes of hot air blow across the desk as the gas chromatograph blasts + the sample at 280 degrees Celsius. Thirty minutes later the machine’s robotic + arm automatically moves over to grip another bottle. The machine will continue + cranking through the 150 samples in the trays for most of the work week.

          +
          +
          +
          + +

          +
          Photo by Joan Bardeletti
          +
          +

          To get the drugs to Barcelona, a user mails at least 10 milligrams of + a substance to the offices of the Asociación Bienestar y Desarrollo, the + non-government organization that oversees Energy Control. The sample then + gets delivered to the testing service’s laboratory, at the Barcelona Biomedical + Research Park, a futuristic, seven story building sitting metres away from + the beach. Energy Control borrows its lab space from a biomedical research + group for free.

          +

          The tests cost 50 Euro per sample. Users pay, not surprisingly, with Bitcoin. + In the post announcing Energy Control’s service on the deep web, the group + promised that “All profits of this service are set aside of maintenance + of this project.”

          +

          About a week after testing, those results are sent in a PDF to an email + address provided by the anonymous client.

          +

          “The process is quite boring, because you are in a routine,” Lladanosa + says. But one part of the process is consistently surprising: that moment + when the results pop up on the screen. “Every time it’s something different.” + For instance, one cocaine sample she had tested also contained phenacetin, + a painkiller added to increase the product’s weight; lidocaine, an anesthetic + that numbs the gums, giving the impression that the user is taking higher + quality cocaine; and common caffeine.

          +
          + +

          +

          The deep web drug lab is the brainchild of Fernando Caudevilla, a Spanish + physician who is better known as “DoctorX” on the deep web, a nickname + given to him by his Energy Control co-workers because of his earlier writing + about the history, risks and recreational culture of MDMA. In the physical + world, Caudevilla has worked for over a decade with Energy Control on various + harm reduction focused projects, most of which have involved giving Spanish + illegal drug users medical guidance, and often writing leaflets about the + harms of certain substances.

          +
          +
          +
          + +

          +
          Fernando Caudevilla, AKA DoctorX. Photo: Joseph Cox
          +
          +

          Caudevilla first ventured into Silk Road forums in April 2013. “I would + like to contribute to this forum offering professional advice in topics + related to drug use and health,” he wrote in an introductory post, + using his DoctorX alias. Caudevilla offered to provide answers to questions + that a typical doctor is not prepared, or willing, to respond to, at least + not without a lecture or a judgment. “This advice cannot replace a complete + face-to-face medical evaluation,” he wrote, “but I know how difficult it + can be to talk frankly about these things.”

          +

          The requests flooded in. A diabetic asked what effect MDMA has on blood + sugar; another what the risks of frequent psychedelic use were for a young + person. Someone wanted to know whether amphetamine use should be avoided + during lactation. In all, Fernando’s thread received over 50,000 visits + and 300 questions before the FBI shut down Silk Road.

          +

          “He’s amazing. A gift to this community,” one user wrote on the Silk Road + 2.0 forum, a site that sprang up after the original. “His knowledge is + invaluable, and never comes with any judgment.” Up until recently, Caudevilla + answered questions on the marketplace “Evolution.” Last week, however, + the administrators of that site pulled a scam, + shutting the market down and escaping with an estimated $12 million worth + of Bitcoin.

          +

          Caudevilla’s transition from dispensing advice to starting up a no-questions-asked + drug testing service came as a consequence of his experience on the deep + web. He’d wondered whether he could help bring more harm reduction services + to a marketplace without controls. The Energy Control project, as part + of its mandate of educating drug users and preventing harm, had already + been carrying out drug testing for local Spanish users since 2001, at music + festivals, night clubs, or through a drop-in service at a lab in Madrid.

          +

          “I thought, we are doing this in Spain, why don’t we do an international + drug testing service?” Caudevilla told me when I visited the other Energy + Control lab, in Madrid. Caudevilla, a stocky character with ear piercings + and short, shaved hair, has eyes that light up whenever he discusses the + world of the deep web. Later, via email, he elaborated that it was not + a hard sell. “It was not too hard to convince them,” he wrote me. Clearly, + Energy Control believed that the reputation he had earned as an unbiased + medical professional on the deep web might carry over to the drug analysis + service, where one needs to establish “credibility, trustworthiness, [and] + transparency,” Caudevilla said. “We could not make mistakes,” he added.

          +
          +
          +
          + +

          +
          Photo: Joseph Cox
          +
          +
          + +

          +

          While the Energy Control lab in Madrid lab only tests Spanish drugs from + various sources, it is the Barcelona location which vets the substances + bought in the shadowy recesses of of the deep web. Caudevilla no longer + runs it, having handed it over to his colleague Ana Muñoz. She maintains + a presence on the deep web forums, answers questions from potential users, + and sends back reports when they are ready.

          +

          The testing program exists in a legal grey area. The people who own the + Barcelona lab are accredited to experiment with and handle drugs, but Energy + Control doesn’t have this permission itself, at least not in writing.

          +

          “We have a verbal agreement with the police and other authorities. They + already know what we are doing,” Lladanosa tells me. It is a pact of mutual + benefit. Energy Control provides the police with information on batches + of drugs in Spain, whether they’re from the deep web or not, Espinosa says. + They also contribute to the European Monitoring Centre for Drugs and Drug + Addiction’s early warning system, a collaboration that attempts to spread + information about dangerous drugs as quickly as possible.

          +

          By the time of my visit in February, Energy Control had received over + 150 samples from the deep web and have been receiving more at a rate of + between 4 and 8 a week. Traditional drugs, such as cocaine and MDMA, make + up about 70 percent of the samples tested, but the Barcelona lab has also + received samples of the prescription pill codeine, research chemicals and + synthetic cannabinoids, and even pills of Viagra.

          +
          +
          +
          + +

          +
          Photo by Joan Bardeletti
          +
          +

          So it’s fair to make a tentative judgement on what people are paying for + on the deep web. The verdict thus far? Overall, drugs on the deep web appear + to be of much higher quality than those found on the street.

          +

          “In general, the cocaine is amazing,” says Caudevilla, saying that the + samples they’ve seen have purities climbing towards 80 or 90 percent, and + some even higher. To get an idea of how unusual this is, take a look at + the United Nations Office on Drugs and Crime World Drug Report 2014, + which reports that the average quality of street cocaine in Spain is just + over 40 percent, while in the United Kingdom it is closer to 30 percent.“We + have found 100 percent [pure] cocaine,” he adds. “That’s really, really + strange. That means that, technically, this cocaine has been purified, + with clandestine methods.”

          +

          Naturally, identifying vendors who sell this top-of-the-range stuff is + one of the reasons that people have sent samples to Energy Control. Caudevilla + was keen to stress that, officially, Energy Control’s service “is not intended + to be a control of drug quality,” meaning a vetting process for identifying + the best sellers, but that is exactly how some people have been using it.

          +

          As one buyer on the Evolution market, elmo666, wrote to me over the site’s + messaging system, “My initial motivations were selfish. My primary motivation + was to ensure that I was receiving and continue to receive a high quality + product, essentially to keep the vendor honest as far as my interactions + with them went.”

          +

          Vendors on deep web markets advertise their product just like any other + outlet does, using flash sales, gimmicky giveaways and promises of drugs + that are superior to those of their competitors. The claims, however, can + turn out to be empty: despite the test results that show that deep web + cocaine vendors typically sell product that is of a better quality than + that found on the street, in plenty of cases, the drugs are nowhere near + as pure as advertised.

          +

          “You won’t be getting anything CLOSE to what you paid for,” one user complained + about the cocaine from ‘Mirkov’, a vendor on Evolution. “He sells 65% not + 95%.”

          +
          +
          +
          + +

          +
          Photo by Joan Bardeletti
          +
          +
          + +

          +

          Despite the prevalence of people using the service to gauge the quality + of what goes up their nose, many users send samples to Energy Control in + the spirit of its original mission: keeping themselves alive and healthy. + The worst case scenario from drugs purchased on the deep web is, well the + worst case. That was the outcome when Patrick McMullen, a + 17-year-old Scottish student, ingested half a gram of MDMA and three tabs + of LSD, reportedly purchased from the Silk Road. While talking to his friends + on Skype, his words became slurred and he passed out. Paramedics could + not revive him. The coroner for that case, Sherrif Payne, who deemed the + cause of death ecstasy toxicity, told The Independent “You + never know the purity of what you are taking and you can easily come unstuck.”

          +

          ScreamMyName, a deep web user who has been active since the original Silk + Road, wants to alert users to the dangerous chemicals that are often mixed + with drugs, and is using Energy Control as a means to do so.

          +

          “We’re at a time where some vendors are outright sending people poison. + Some do it unknowingly,” ScreamMyName told me in an encrypted message. + “Cocaine production in South America is often tainted with either levamisole + or phenacetine. Both poison to humans and both with severe side effects.”

          +

          In the case of Levamisole, those prescribing it are often not doctors + but veterinarians, as Levamisole is commonly used on animals, primarily + for the treatment of worms. If ingested by humans it can lead to cases + of extreme eruptions of the skin, as documented in a study from researchers at the University + of California, San Francisco. But Lladanosa has found Levamisole in cocaine + samples; dealers use it to increase the product weight, allowing them to + stretch their batch further for greater profit — and also, she says, because + Levamisole has a strong stimulant effect.

          +

          “It got me sick as fuck,” Dr. Feel, an Evolution user, wrote on the site’s + forums after consuming cocaine that had been cut with 23 percent Levamisole, + and later tested by Energy Control. “I was laid up in bed for several days + because of that shit. The first night I did it, I thought I was going to + die. I nearly drove myself to the ER.”

          +

          “More people die because of tainted drugs than the drugs themselves,” + Dr. Feel added. “It’s the cuts and adulterants that are making people sick + and killing them.”

          +
          +
          +
          + +

          +
          Photo by Joan Bardeletti
          +
          +

          The particular case of cocaine cut with Levamisole is one of the reasons + that ScreamMyName has been pushing for more drug testing on the deep web + markets. “I recognize that drug use isn’t exactly healthy, but why exacerbate + the problem?” he told me when I contacted him after his post. “[Energy + Control] provides a way for users to test the drugs they’ll use and for + these very users to know what it is they’re putting in their bodies. Such + services are in very short supply.”

          +

          After sending a number of Energy Control tests himself, ScreamMyName started + a de facto crowd-sourcing campaign to get more drugs sent to the lab, and + then shared the results, after throwing in some cash to get the ball rolling. + He set up a Bitcoin wallet, with the hope that users might chip in + to fund further tests. At the time of writing, the wallet has received + a total of 1.81 bitcoins; around $430 at today’s exchange rates.

          +

          In posts to the Evolution community, ScreamMyName pitched this project + as something that will benefit users and keep drug dealer honest. “When + the funds build up to a point where we can purchase an [Energy Control] + test fee, we’ll do a US thread poll for a few days and try to cohesively + decide on what vendor to test,” he continued.

          +
          +
          +
          + +

          +
          Photo by Joan Bardeletti
          +
          +

          Other members of the community have been helping out, too. PlutoPete, + a vendor from the original Silk Road who sold cannabis seeds and other + legal items, has provided ScreamMyName with packaging to safely send the + samples to Barcelona. “A box of baggies, and a load of different moisture + barrier bags,” PlutoPete told me over the phone. “That’s what all the vendors + use.”

          +

          It’s a modest program so far. ScreamMyName told me that so far he had + gotten enough public funding to purchase five different Energy Control + tests, in addition to the ten or so he’s sent himself so far. “The program + created is still in its infancy and it is growing and changing as we go + along but I have a lot of faith in what we’re doing,” he says.

          +

          But the spirit is contagious: elmo666, the other deep web user testing + cocaine, originally kept the results of the drug tests to himself, but + he, too, saw a benefit to distributing the data. “It is clear that it is + a useful service to other users, keeping vendors honest and drugs (and + their users) safe,” he told me. He started to report his findings to others + on the forums, and then created a thread with summaries of the test results, + as well as comments from the vendors if they provided it. Other users were + soon basing their decisions on what to buy on elmo666‘s tests.

          +

          “I’m defo trying the cola based on the incredibly helpful elmo and his + energy control results and recommendations,” wrote user jayk1984. On top + of this, elmo666 plans to launch an independent site on the deep web that + will collate all of these results, which should act as a resource for users + of all the marketplaces.

          +

          As word of elmo666's efforts spread, he began getting requests from drug + dealers who wanted him to use their wares for testing. Clearly, they figured + that a positive result from Energy Control would be a fantastic marketing + tool to draw more customers. They even offered elmo666 free samples. (He + passed.)

          +

          Meanwhile, some in the purchasing community are arguing that those running + markets on the deep web should be providing quality control themselves. + PlutoPete told me over the phone that he had been in discussions about + this with Dread Pirate Roberts, the pseudonymous owner of the original + Silk Road site. “We [had been] talking about that on a more organized basis + on Silk Road 1, doing lots of anonymous buys to police each category. But + of course they took the thing [Silk Road] down before we got it properly + off the ground,” he lamented.

          +

          But perhaps it is best that the users, those who are actually consuming + the drugs, remain in charge of shaming dealers and warning each other. + “It’s our responsibility to police the market based on reviews and feedback,” + elmo666 wrote in an Evolution forum post. It seems that in the lawless + space of the deep web, where everything from child porn to weapons are + sold openly, users have cooperated in an organic display of self-regulation + to stamp out those particular batches of drugs that are more likely to + harm users.

          +

          “That’s always been the case with the deep web,” PlutoPete told me. Indeed, + ever since Silk Road, a stable of the drug markets has been the review + system, where buyers can leave a rating and feedback for vendors, letting + others know about the reliability of the seller. But DoctorX’s lab, rigorously + testing the products with scientific instruments, takes it a step further.

          +
          +
          +
          + +

          +
          Photo by Joan Bardeletti
          +
          +

          “In the white market, they have quality control. In the dark market, it + should be the same,” Cristina Gil Lladanosa says to me before I leave the + Barcelona lab.

          +

          A week after I visit the lab, the results of the MDMA arrive in my inbox: + it is 85 percent pure, with no indications of other active ingredients. + Whoever ordered that sample from the digital shelves of the deep web, and + had it shipped to their doorstep in Canada, got hold of some seriously + good, and relatively safe drugs. And now they know it.

          +
          + +

          +

          Top photo by Joan Bardeletti +

          +

          Follow Backchannel: Twitter + |Facebook +

          +
          +
          +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/source.html new file mode 100644 index 000000000..6d2b2821c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/source.html @@ -0,0 +1,833 @@ + + + + + + + Inside the Deep Web Drug Lab — Backchannel — Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          + +
          +
          +
          +
          +
          Ready to publish?
          +
          Change the story’s title, subtitle, and visibility as needed
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          + + + + +
          +
          +
          +
          +
          + + + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Inside the Deep Web Drug Lab

          +

          +
          +

          +

          Welcome to DoctorX’s Barcelona lab, where the drugs you bought online are tested for safety and purity. No questions asked.

          +

          +
          +

          +
          +
          +
          + +
          +
          +

          Standing at a table in a chemistry lab in Barcelona, Cristina Gil Lladanosa + tears open a silver, smell-proof protective envelope. She slides out a + transparent bag full of crystals. Around her, machines whir and hum, and + other researchers mill around in long, white coats.

          +

          She is holding the lab’s latest delivery of a drug bought from the “deep + web,” the clandestine corner of the internet that isn’t reachable by normal + search engines, and is home to some sites that require special software + to access. Labeled as MDMA (the street + term is ecstasy), this sample has been shipped from Canada. Lladanosa and + her colleague Iván Fornís Espinosa have also received drugs, anonymously, + from people in China, Australia, Europe and the United States.

          +

          “Here we have speed, MDMA, cocaine, pills,” Lladanosa says, pointing to + vials full of red, green, blue and clear solutions sitting in labeled boxes.

          +
          +
          +
          +
          +
          + +
          +
          Cristina Gil Lladanosa, at the Barcelona testing lab | photo by Joan Bardeletti
          +
          +
          +
          +

          Since 2011, with the launch of Silk Road, anybody has been able to safely buy illegal + drugs from the deep web and have them delivered to their door. Though the + FBI shut down that black market in October 2013, other outlets have emerged + to fill its role. For the last 10 months the lab at which Lladanosa and + Espinosa work has offered a paid testing service of those drugs. By sending + in samples for analysis, users can know exactly what it is they are buying, + and make a more informed decision about whether to ingest the substance. + The group, called Energy Control, + which has being running “harm reduction” programs since 1999, is the first + to run a testing service explicitly geared towards verifying those purchases + from the deep web.

          +

          Before joining Energy Control, Lladanosa briefly worked at a pharmacy, + whereas Espinosa spent 14 years doing drug analysis. Working at Energy + Control is “more gratifying,” and “rewarding” than her previous jobs, Lladanosa + told me. They also receive help from a group of volunteers, made up of + a mixture of “squatters,” as Espinosa put it, and medical students, who + prepare the samples for testing.

          +

          After weighing out the crystals, aggressively mixing it with methanol + until dissolved, and delicately pouring the liquid into a tiny brown bottle, + Lladanosa, a petite woman who is nearly engulfed by her lab coat, is now + ready to test the sample. She loads a series of three trays on top of a + large white appliance sitting on a table, called a gas chromatograph (GC). + A jungle of thick pipes hang from the lab’s ceiling behind it.

          +
          +
          +
          +
          +
          + +
          +
          Photo by Joan Bardeletti
          +
          +
          +
          +

          “Chromatography separates all the substances,” Lladanosa says as she loads + the machine with an array of drugs sent from the deep web and local Spanish + users. It can tell whether a sample is pure or contaminated, and if the + latter, with what.

          +

          Rushes of hot air blow across the desk as the gas chromatograph blasts + the sample at 280 degrees Celsius. Thirty minutes later the machine’s robotic + arm automatically moves over to grip another bottle. The machine will continue + cranking through the 150 samples in the trays for most of the work week.

          +
          +
          +
          +
          +
          + +
          +
          Photo by Joan Bardeletti
          +
          +
          +
          +

          To get the drugs to Barcelona, a user mails at least 10 milligrams of + a substance to the offices of the Asociación Bienestar y Desarrollo, the + non-government organization that oversees Energy Control. The sample then + gets delivered to the testing service’s laboratory, at the Barcelona Biomedical + Research Park, a futuristic, seven story building sitting metres away from + the beach. Energy Control borrows its lab space from a biomedical research + group for free.

          +

          The tests cost 50 Euro per sample. Users pay, not surprisingly, with Bitcoin. + In the post announcing Energy Control’s service on the deep web, the group + promised that “All profits of this service are set aside of maintenance + of this project.”

          +

          About a week after testing, those results are sent in a PDF to an email + address provided by the anonymous client.

          +

          “The process is quite boring, because you are in a routine,” Lladanosa + says. But one part of the process is consistently surprising: that moment + when the results pop up on the screen. “Every time it’s something different.” + For instance, one cocaine sample she had tested also contained phenacetin, + a painkiller added to increase the product’s weight; lidocaine, an anesthetic + that numbs the gums, giving the impression that the user is taking higher + quality cocaine; and common caffeine.

          +
          +
          +
          + +
          +
          +

          The deep web drug lab is the brainchild of Fernando Caudevilla, a Spanish + physician who is better known as “DoctorX” on the deep web, a nickname + given to him by his Energy Control co-workers because of his earlier writing + about the history, risks and recreational culture of MDMA. In the physical + world, Caudevilla has worked for over a decade with Energy Control on various + harm reduction focused projects, most of which have involved giving Spanish + illegal drug users medical guidance, and often writing leaflets about the + harms of certain substances.

          +
          +
          +
          +
          +
          + +
          +
          Fernando Caudevilla, AKA DoctorX. Photo: Joseph Cox
          +
          +
          +
          +

          Caudevilla first ventured into Silk Road forums in April 2013. “I would + like to contribute to this forum offering professional advice in topics + related to drug use and health,” he wrote in an introductory post, + using his DoctorX alias. Caudevilla offered to provide answers to questions + that a typical doctor is not prepared, or willing, to respond to, at least + not without a lecture or a judgment. “This advice cannot replace a complete + face-to-face medical evaluation,” he wrote, “but I know how difficult it + can be to talk frankly about these things.”

          +

          The requests flooded in. A diabetic asked what effect MDMA has on blood + sugar; another what the risks of frequent psychedelic use were for a young + person. Someone wanted to know whether amphetamine use should be avoided + during lactation. In all, Fernando’s thread received over 50,000 visits + and 300 questions before the FBI shut down Silk Road.

          +

          “He’s amazing. A gift to this community,” one user wrote on the Silk Road + 2.0 forum, a site that sprang up after the original. “His knowledge is + invaluable, and never comes with any judgment.” Up until recently, Caudevilla + answered questions on the marketplace “Evolution.” Last week, however, + the administrators of that site pulled a scam, + shutting the market down and escaping with an estimated $12 million worth + of Bitcoin.

          +

          Caudevilla’s transition from dispensing advice to starting up a no-questions-asked + drug testing service came as a consequence of his experience on the deep + web. He’d wondered whether he could help bring more harm reduction services + to a marketplace without controls. The Energy Control project, as part + of its mandate of educating drug users and preventing harm, had already + been carrying out drug testing for local Spanish users since 2001, at music + festivals, night clubs, or through a drop-in service at a lab in Madrid.

          +

          “I thought, we are doing this in Spain, why don’t we do an international + drug testing service?” Caudevilla told me when I visited the other Energy + Control lab, in Madrid. Caudevilla, a stocky character with ear piercings + and short, shaved hair, has eyes that light up whenever he discusses the + world of the deep web. Later, via email, he elaborated that it was not + a hard sell. “It was not too hard to convince them,” he wrote me. Clearly, + Energy Control believed that the reputation he had earned as an unbiased + medical professional on the deep web might carry over to the drug analysis + service, where one needs to establish “credibility, trustworthiness, [and] + transparency,” Caudevilla said. “We could not make mistakes,” he added.

          +
          +
          +
          +
          +
          + +
          +
          Photo: Joseph Cox
          +
          +
          +
          +
          +
          +
          + +
          +
          +

          While the Energy Control lab in Madrid lab only tests Spanish drugs from + various sources, it is the Barcelona location which vets the substances + bought in the shadowy recesses of of the deep web. Caudevilla no longer + runs it, having handed it over to his colleague Ana Muñoz. She maintains + a presence on the deep web forums, answers questions from potential users, + and sends back reports when they are ready.

          +

          The testing program exists in a legal grey area. The people who own the + Barcelona lab are accredited to experiment with and handle drugs, but Energy + Control doesn’t have this permission itself, at least not in writing.

          +

          “We have a verbal agreement with the police and other authorities. They + already know what we are doing,” Lladanosa tells me. It is a pact of mutual + benefit. Energy Control provides the police with information on batches + of drugs in Spain, whether they’re from the deep web or not, Espinosa says. + They also contribute to the European Monitoring Centre for Drugs and Drug + Addiction’s early warning system, a collaboration that attempts to spread + information about dangerous drugs as quickly as possible.

          +

          By the time of my visit in February, Energy Control had received over + 150 samples from the deep web and have been receiving more at a rate of + between 4 and 8 a week. Traditional drugs, such as cocaine and MDMA, make + up about 70 percent of the samples tested, but the Barcelona lab has also + received samples of the prescription pill codeine, research chemicals and + synthetic cannabinoids, and even pills of Viagra.

          +
          +
          +
          +
          +
          + +
          +
          Photo by Joan Bardeletti
          +
          +
          +
          +

          So it’s fair to make a tentative judgement on what people are paying for + on the deep web. The verdict thus far? Overall, drugs on the deep web appear + to be of much higher quality than those found on the street.

          +

          “In general, the cocaine is amazing,” says Caudevilla, saying that the + samples they’ve seen have purities climbing towards 80 or 90 percent, and + some even higher. To get an idea of how unusual this is, take a look at + the United Nations Office on Drugs and Crime World Drug Report 2014, + which reports that the average quality of street cocaine in Spain is just + over 40 percent, while in the United Kingdom it is closer to 30 percent.“We + have found 100 percent [pure] cocaine,” he adds. “That’s really, really + strange. That means that, technically, this cocaine has been purified, + with clandestine methods.”

          +

          Naturally, identifying vendors who sell this top-of-the-range stuff is + one of the reasons that people have sent samples to Energy Control. Caudevilla + was keen to stress that, officially, Energy Control’s service “is not intended + to be a control of drug quality,” meaning a vetting process for identifying + the best sellers, but that is exactly how some people have been using it.

          +

          As one buyer on the Evolution market, elmo666, wrote to me over the site’s + messaging system, “My initial motivations were selfish. My primary motivation + was to ensure that I was receiving and continue to receive a high quality + product, essentially to keep the vendor honest as far as my interactions + with them went.”

          +

          Vendors on deep web markets advertise their product just like any other + outlet does, using flash sales, gimmicky giveaways and promises of drugs + that are superior to those of their competitors. The claims, however, can + turn out to be empty: despite the test results that show that deep web + cocaine vendors typically sell product that is of a better quality than + that found on the street, in plenty of cases, the drugs are nowhere near + as pure as advertised.

          +

          “You won’t be getting anything CLOSE to what you paid for,” one user complained + about the cocaine from ‘Mirkov’, a vendor on Evolution. “He sells 65% not + 95%.”

          +
          +
          +
          +
          +
          + +
          +
          Photo by Joan Bardeletti
          +
          +
          +
          +
          +
          +
          + +
          +
          +

          Despite the prevalence of people using the service to gauge the quality + of what goes up their nose, many users send samples to Energy Control in + the spirit of its original mission: keeping themselves alive and healthy. + The worst case scenario from drugs purchased on the deep web is, well the + worst case. That was the outcome when Patrick McMullen, a + 17-year-old Scottish student, ingested half a gram of MDMA and three tabs + of LSD, reportedly purchased from the Silk Road. While talking to his friends + on Skype, his words became slurred and he passed out. Paramedics could + not revive him. The coroner for that case, Sherrif Payne, who deemed the + cause of death ecstasy toxicity, told The Independent “You + never know the purity of what you are taking and you can easily come unstuck.”

          +

          ScreamMyName, a deep web user who has been active since the original Silk + Road, wants to alert users to the dangerous chemicals that are often mixed + with drugs, and is using Energy Control as a means to do so.

          +

          “We’re at a time where some vendors are outright sending people poison. + Some do it unknowingly,” ScreamMyName told me in an encrypted message. + “Cocaine production in South America is often tainted with either levamisole + or phenacetine. Both poison to humans and both with severe side effects.”

          +

          In the case of Levamisole, those prescribing it are often not doctors + but veterinarians, as Levamisole is commonly used on animals, primarily + for the treatment of worms. If ingested by humans it can lead to cases + of extreme eruptions of the skin, as documented in a study from researchers at the University + of California, San Francisco. But Lladanosa has found Levamisole in cocaine + samples; dealers use it to increase the product weight, allowing them to + stretch their batch further for greater profit — and also, she says, because + Levamisole has a strong stimulant effect.

          +

          “It got me sick as fuck,” Dr. Feel, an Evolution user, wrote on the site’s + forums after consuming cocaine that had been cut with 23 percent Levamisole, + and later tested by Energy Control. “I was laid up in bed for several days + because of that shit. The first night I did it, I thought I was going to + die. I nearly drove myself to the ER.”

          +

          “More people die because of tainted drugs than the drugs themselves,” + Dr. Feel added. “It’s the cuts and adulterants that are making people sick + and killing them.”

          +
          +
          +
          +
          +
          + +
          +
          Photo by Joan Bardeletti
          +
          +
          +
          +

          The particular case of cocaine cut with Levamisole is one of the reasons + that ScreamMyName has been pushing for more drug testing on the deep web + markets. “I recognize that drug use isn’t exactly healthy, but why exacerbate + the problem?” he told me when I contacted him after his post. “[Energy + Control] provides a way for users to test the drugs they’ll use and for + these very users to know what it is they’re putting in their bodies. Such + services are in very short supply.”

          +

          After sending a number of Energy Control tests himself, ScreamMyName started + a de facto crowd-sourcing campaign to get more drugs sent to the lab, and + then shared the results, after throwing in some cash to get the ball rolling. + He set up a Bitcoin wallet, with the hope that users might chip in + to fund further tests. At the time of writing, the wallet has received + a total of 1.81 bitcoins; around $430 at today’s exchange rates.

          +

          In posts to the Evolution community, ScreamMyName pitched this project + as something that will benefit users and keep drug dealer honest. “When + the funds build up to a point where we can purchase an [Energy Control] + test fee, we’ll do a US thread poll for a few days and try to cohesively + decide on what vendor to test,” he continued.

          +
          +
          +
          +
          +
          + +
          +
          Photo by Joan Bardeletti
          +
          +
          +
          +

          Other members of the community have been helping out, too. PlutoPete, + a vendor from the original Silk Road who sold cannabis seeds and other + legal items, has provided ScreamMyName with packaging to safely send the + samples to Barcelona. “A box of baggies, and a load of different moisture + barrier bags,” PlutoPete told me over the phone. “That’s what all the vendors + use.”

          +

          It’s a modest program so far. ScreamMyName told me that so far he had + gotten enough public funding to purchase five different Energy Control + tests, in addition to the ten or so he’s sent himself so far. “The program + created is still in its infancy and it is growing and changing as we go + along but I have a lot of faith in what we’re doing,” he says.

          +

          But the spirit is contagious: elmo666, the other deep web user testing + cocaine, originally kept the results of the drug tests to himself, but + he, too, saw a benefit to distributing the data. “It is clear that it is + a useful service to other users, keeping vendors honest and drugs (and + their users) safe,” he told me. He started to report his findings to others + on the forums, and then created a thread with summaries of the test results, + as well as comments from the vendors if they provided it. Other users were + soon basing their decisions on what to buy on elmo666‘s tests.

          +

          “I’m defo trying the cola based on the incredibly helpful elmo and his + energy control results and recommendations,” wrote user jayk1984. On top + of this, elmo666 plans to launch an independent site on the deep web that + will collate all of these results, which should act as a resource for users + of all the marketplaces.

          +

          As word of elmo666's efforts spread, he began getting requests from drug + dealers who wanted him to use their wares for testing. Clearly, they figured + that a positive result from Energy Control would be a fantastic marketing + tool to draw more customers. They even offered elmo666 free samples. (He + passed.)

          +

          Meanwhile, some in the purchasing community are arguing that those running + markets on the deep web should be providing quality control themselves. + PlutoPete told me over the phone that he had been in discussions about + this with Dread Pirate Roberts, the pseudonymous owner of the original + Silk Road site. “We [had been] talking about that on a more organized basis + on Silk Road 1, doing lots of anonymous buys to police each category. But + of course they took the thing [Silk Road] down before we got it properly + off the ground,” he lamented.

          +

          But perhaps it is best that the users, those who are actually consuming + the drugs, remain in charge of shaming dealers and warning each other. + “It’s our responsibility to police the market based on reviews and feedback,” + elmo666 wrote in an Evolution forum post. It seems that in the lawless + space of the deep web, where everything from child porn to weapons are + sold openly, users have cooperated in an organic display of self-regulation + to stamp out those particular batches of drugs that are more likely to + harm users.

          +

          “That’s always been the case with the deep web,” PlutoPete told me. Indeed, + ever since Silk Road, a stable of the drug markets has been the review + system, where buyers can leave a rating and feedback for vendors, letting + others know about the reliability of the seller. But DoctorX’s lab, rigorously + testing the products with scientific instruments, takes it a step further.

          +
          +
          +
          +
          +
          + +
          +
          Photo by Joan Bardeletti
          +
          +
          +
          +

          “In the white market, they have quality control. In the dark market, it + should be the same,” Cristina Gil Lladanosa says to me before I leave the + Barcelona lab.

          +

          A week after I visit the lab, the results of the MDMA arrive in my inbox: + it is 85 percent pure, with no indications of other active ingredients. + Whoever ordered that sample from the digital shelves of the deep web, and + had it shipped to their doorstep in Canada, got hold of some seriously + good, and relatively safe drugs. And now they know it.

          +
          +
          +
          + +
          +
          +

          Top photo by Joan Bardeletti +

          +

          Follow Backchannel: Twitter + |Facebook +

          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-images.json new file mode 100644 index 000000000..1ff254f29 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-images.json @@ -0,0 +1,4 @@ +[ + "http:\/\/bucket.glanacion.com\/anexos\/fotos\/77\/2585177.jpg", + "http:\/\/bucket2.glanacion.com\/anexos\/fotos\/77\/conflicto-mapuche-2585177w280.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-metadata.json new file mode 100644 index 000000000..d2e56b0f8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Los pueblos indígenas reclaman por derechos que permanecen incumplidos, por eso es más eficiente canalizar la protesta que reprimirla", + "Image": "http:\/\/bucket.glanacion.com\/anexos\/fotos\/77\/2585177.jpg", + "Title": "Una solución no violenta para la cuestión mapuche", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected.html new file mode 100644 index 000000000..5640699c1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected.html @@ -0,0 +1,85 @@ +
          +

          Los pueblos indígenas reclaman por derechos que permanecen + incumplidos, por eso es más eficiente canalizar la protesta que reprimirla

          +
          +
          + +

          Abdullah Ocalan, el líder independentista kurdo, desembarcó en Italia en noviembre de + 1998 y pidió asilo político. Arrastraba un pedido de captura de Turquía, donde era acusado por + terrorismo. El ex comunista Massimo D'Alema, recién asumido, dudaba. Acoger a Ocalan implicaba comprarse + un problema con un aliado de la OTAN e importar un conflicto ajeno, pero deportarlo lo exponía a la pena + de muerte, legal en Turquía pero inadmisible en la Unión Europea. Optó por la estrecha avenida del + medio: se ignoró el mandato de captura al tiempo que se negó el asilo, presionando a Ocalan para que se + fuera por las suyas. Tras una carambola a tres bandas, fue capturado por agentes turcos en Kenia, donde + se encontraba bajo la protección del embajador griego, mientras intentaba abordar un avión hacia + Holanda. Desde febrero de 1999 permanece en una cárcel de máxima seguridad en la isla turca de + Imrali.

          +

          Uno de los autores de esta columna vivía en Italia en esa época y siguió la crisis de cerca; el otro la + estudió en profundidad, años más tarde. Pero no hacía falta: cualquiera puede encontrar esta información + a un clic de distancia. Eso fue lo que no hizo un periodista de un diario argentino, que no es la + nacion. La semana pasada se publicaron extractos de un "informe de carácter secreto" que mencionaba + supuestos contactos internacionales de organizaciones mapuches. Entre ellos aparecía Ocalan, a quien el + informe ubicó "con domicilios en Palermo y en el centro porteño", y aseguraba incluso que había sido + visto "en Neuquén, Río Negro y Chubut durante el juicio a Jones Huala".

          +

          +
          Foto: LA NACION

          Esta falsa noticia fue la más rocambolesca de una larga cadena. Dos hechos quedaron en evidencia: + primero, que hay periodistas que no chequean la información; segundo, que los servicios de inteligencia + los utilizan para manipular la agenda pública. Y sobre los servicios hay dos posibilidades: o son burros + o son perversos. Las opciones no son excluyentes, aunque cualquiera alcanza para tornarlos indignos de + confianza. Sin embargo, de ellos proviene la información que alimenta a muchos medios de comunicación y, + aún más grave, al Estado argentino.

          +

          El reguero de noticias falsas y vínculos brumosos tiene, paradójicamente, un objetivo prístino: asociar + la acción de los grupos mapuches con el terrorismo internacional. Comunicadores, analistas y escritores + alineados con el discurso oficial llegaron a relacionar las ideas de las organizaciones patagónicas con + las de Estado Islámico (ISIS) de Irak y Siria. El terrorismo carece de definiciones consensuales y ha + sido utilizado para emparentar cosas bien diferentes. Aunque el líder mapuche más radicalizado (y menos + representativo) declare que propician "un proceso de construcción de autonomía sin pedirle permiso al + Estado", vincular a un grupo que reclama tierras en la región de sus ancestros con otro que busca + gobernar el mundo según sus normas religiosas y ha masacrado a miles de personas requiere de una + operación intelectual tan audaz como inadecuada.

          +

          La asociación con el movimiento kurdo, en cambio, asoma menos inverosímil. Desde su arresto, Ocalan + transformó su pensamiento: de una visión nacionalista con inspiración estalinista evolucionó al + confederalismo democrático, una propuesta de organización comunal, ecologista, más apegada a las raíces + locales que a las fronteras nacionales. Parece lógico que esas ideas resuenen en agrupamientos + indígenas, que reivindican una organización anterior a la consolidación de los Estados sudamericanos. + Los paralelos, sin embargo, terminan allí. En Chile, donde el conflicto ha tenido su desarrollo más + dramático, la Sociedad de Fomento Agrícola denunció en 2014 que los insurrectos causaron daños por 10 + millones de dólares y la muerte de tres agricultores y un carabinero a lo largo de 15 años; en la + Argentina, por ahora, se registran actos de vandalismo, ocupaciones de tierras y cortes de rutas + aislados. En contraste, el conflicto entre el Partido de los Trabajadores del Kurdistán y la República + de Turquía se cobró cerca de 40.000 vidas en los años 90 y lleva más de 2000 desde la reanudación de + hostilidades en 2015.

          +

          Consultada sobre esta desproporción, una fuente de los servicios nos la resumió así: "La estrategia de la + Coordinadora Arauco-Malleco (CAM), de Chile, y ahora de la Resistencia Ancestral Mapuche (RAM), más que + matar directamente, es realizar sabotajes, movilizaciones, ataques a iglesias y empresas y mucha + prensa". ¡En Medio Oriente pagarían por un terrorismo así! Ningún hecho de violencia debe ser + minimizado, pero las analogías no resisten prueba.

          +

          La "cuestión mapuche" es social antes que policial. La Constitución manda "reconocer la preexistencia + étnica y cultural de los pueblos indígenas argentinos. Garantizar el respeto a su identidad?; reconocer + la personería jurídica de sus comunidades, y la posesión y propiedad comunitarias de las tierras que + tradicionalmente ocupan; y regular la entrega de otras aptas y suficientes para el desarrollo humano". + Estos derechos permanecen incumplidos. Y no son un capricho chavista: los países que reputamos serios + también los reconocen. En Estados Unidos, las reservaciones indígenas ocupan 80.000 kilómetros + cuadrados, el 1,3% de la superficie del país (y 400 veces la superficie de la ciudad de Buenos Aires). + En Canadá, unas 2300 reservas ocupan 28.000 kilómetros cuadrados. Australia otorga a los pueblos + indígenas más de la mitad de los territorios del norte del país y son los nativos quienes negocian con + las empresas mineras los permisos para que operen en sus tierras. En Nueva Zelanda existen tribunales + especiales con jurisdicción sobre las tierras ancestrales de los maoríes; una de sus ventajas es que + empoderan a los aborígenes individualmente, liberándolos del yugo de los caciques.

          +

          La protesta social es indisociable de la democracia. Cuando desborda, recanalizarla es más eficiente que + reprimirla: ahí reside el arte del acuerdo. En la Argentina la tarea es delicada porque pocos confían en + la imparcialidad de las instituciones. Entonces, cada actor reivindica sus intereses con los medios de + que dispone: los sindicatos hacen huelga, los estudiantes toman colegios, los empresarios cierran las + fábricas y todos hacen piquetes. El politólogo Samuel Huntington definía una sociedad así como + pretoriana y el jurista Carlos Nino llamó a la Argentina "un país al margen de la ley". Al movilizarse + por sus derechos y desconfiar del Estado, la comunidad mapuche se demuestra bien argentina.

          +

          Las cinco provincias patagónicas tienen una población similar a la de La Matanza. A diferencia de los + Estados Unidos, que se integraron hacia el oeste otorgando parcelas de tierra a los colonizadores, y de + Brasil, donde el rol de ocupación y desarrollo territorial fue cumplido por las fuerzas armadas, la + Argentina obvió la tarea integradora tras consolidar su soberanía a finales del siglo XX. Hoy sobra + tierra y falta gente. Gobernar sigue siendo poblar, pero también integrar.

          +

          Seamos claros: ningún individuo u organización tiene derecho a violar la ley. Pero el problema histórico + del Estado argentino no fue tanto quiénes lo desafiaron como quiénes lo gobernaron. Cambiemos.

          +

          Andrés Malamud es politólogo e investigador en la Universidad de Lisboa. Martín Schapiro es abogado + administrativista y analista internacional

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/source.html new file mode 100644 index 000000000..2c0a8c72a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/source.html @@ -0,0 +1,700 @@ + + + + + + Una solución no violenta para la cuestión mapuche - 07.12.2017 - LA NACION + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Si usted es una persona con dificultades + visuales, navegue el sitio desde aquí + + +
          + + + + + +
          + +
          +

          Una solución no violenta para la cuestión + mapuche

          +

          Los pueblos indígenas reclaman por derechos que permanecen + incumplidos, por eso es más eficiente canalizar la protesta que reprimirla

          +
          +
          +
          +
          +
          +
          + + + + + + 0 +
          +
          + +

          Abdullah Ocalan, el líder independentista kurdo, desembarcó en Italia en noviembre de + 1998 y pidió asilo político. Arrastraba un pedido de captura de Turquía, donde era acusado por + terrorismo. El ex comunista Massimo D'Alema, recién asumido, dudaba. Acoger a Ocalan implicaba comprarse + un problema con un aliado de la OTAN e importar un conflicto ajeno, pero deportarlo lo exponía a la pena + de muerte, legal en Turquía pero inadmisible en la Unión Europea. Optó por la estrecha avenida del + medio: se ignoró el mandato de captura al tiempo que se negó el asilo, presionando a Ocalan para que se + fuera por las suyas. Tras una carambola a tres bandas, fue capturado por agentes turcos en Kenia, donde + se encontraba bajo la protección del embajador griego, mientras intentaba abordar un avión hacia + Holanda. Desde febrero de 1999 permanece en una cárcel de máxima seguridad en la isla turca de + Imrali.

          +

          Uno de los autores de esta columna vivía en Italia en esa época y siguió la crisis de cerca; el otro la + estudió en profundidad, años más tarde. Pero no hacía falta: cualquiera puede encontrar esta información + a un clic de distancia. Eso fue lo que no hizo un periodista de un diario argentino, que no es la + nacion. La semana pasada se publicaron extractos de un "informe de carácter secreto" que mencionaba + supuestos contactos internacionales de organizaciones mapuches. Entre ellos aparecía Ocalan, a quien el + informe ubicó "con domicilios en Palermo y en el centro porteño", y aseguraba incluso que había sido + visto "en Neuquén, Río Negro y Chubut durante el juicio a Jones Huala".

          +
          +
          +
          Foto: LA NACION
          +
          + +

          Esta falsa noticia fue la más rocambolesca de una larga cadena. Dos hechos quedaron en evidencia: + primero, que hay periodistas que no chequean la información; segundo, que los servicios de inteligencia + los utilizan para manipular la agenda pública. Y sobre los servicios hay dos posibilidades: o son burros + o son perversos. Las opciones no son excluyentes, aunque cualquiera alcanza para tornarlos indignos de + confianza. Sin embargo, de ellos proviene la información que alimenta a muchos medios de comunicación y, + aún más grave, al Estado argentino.

          +

          El reguero de noticias falsas y vínculos brumosos tiene, paradójicamente, un objetivo prístino: asociar + la acción de los grupos mapuches con el terrorismo internacional. Comunicadores, analistas y escritores + alineados con el discurso oficial llegaron a relacionar las ideas de las organizaciones patagónicas con + las de Estado Islámico (ISIS) de Irak y Siria. El terrorismo carece de definiciones consensuales y ha + sido utilizado para emparentar cosas bien diferentes. Aunque el líder mapuche más radicalizado (y menos + representativo) declare que propician "un proceso de construcción de autonomía sin pedirle permiso al + Estado", vincular a un grupo que reclama tierras en la región de sus ancestros con otro que busca + gobernar el mundo según sus normas religiosas y ha masacrado a miles de personas requiere de una + operación intelectual tan audaz como inadecuada.

          + +

          La asociación con el movimiento kurdo, en cambio, asoma menos inverosímil. Desde su arresto, Ocalan + transformó su pensamiento: de una visión nacionalista con inspiración estalinista evolucionó al + confederalismo democrático, una propuesta de organización comunal, ecologista, más apegada a las raíces + locales que a las fronteras nacionales. Parece lógico que esas ideas resuenen en agrupamientos + indígenas, que reivindican una organización anterior a la consolidación de los Estados sudamericanos. + Los paralelos, sin embargo, terminan allí. En Chile, donde el conflicto ha tenido su desarrollo más + dramático, la Sociedad de Fomento Agrícola denunció en 2014 que los insurrectos causaron daños por 10 + millones de dólares y la muerte de tres agricultores y un carabinero a lo largo de 15 años; en la + Argentina, por ahora, se registran actos de vandalismo, ocupaciones de tierras y cortes de rutas + aislados. En contraste, el conflicto entre el Partido de los Trabajadores del Kurdistán y la República + de Turquía se cobró cerca de 40.000 vidas en los años 90 y lleva más de 2000 desde la reanudación de + hostilidades en 2015.

          +

          Consultada sobre esta desproporción, una fuente de los servicios nos la resumió así: "La estrategia de la + Coordinadora Arauco-Malleco (CAM), de Chile, y ahora de la Resistencia Ancestral Mapuche (RAM), más que + matar directamente, es realizar sabotajes, movilizaciones, ataques a iglesias y empresas y mucha + prensa". ¡En Medio Oriente pagarían por un terrorismo así! Ningún hecho de violencia debe ser + minimizado, pero las analogías no resisten prueba.

          + +

          La "cuestión mapuche" es social antes que policial. La Constitución manda "reconocer la preexistencia + étnica y cultural de los pueblos indígenas argentinos. Garantizar el respeto a su identidad?; reconocer + la personería jurídica de sus comunidades, y la posesión y propiedad comunitarias de las tierras que + tradicionalmente ocupan; y regular la entrega de otras aptas y suficientes para el desarrollo humano". + Estos derechos permanecen incumplidos. Y no son un capricho chavista: los países que reputamos serios + también los reconocen. En Estados Unidos, las reservaciones indígenas ocupan 80.000 kilómetros + cuadrados, el 1,3% de la superficie del país (y 400 veces la superficie de la ciudad de Buenos Aires). + En Canadá, unas 2300 reservas ocupan 28.000 kilómetros cuadrados. Australia otorga a los pueblos + indígenas más de la mitad de los territorios del norte del país y son los nativos quienes negocian con + las empresas mineras los permisos para que operen en sus tierras. En Nueva Zelanda existen tribunales + especiales con jurisdicción sobre las tierras ancestrales de los maoríes; una de sus ventajas es que + empoderan a los aborígenes individualmente, liberándolos del yugo de los caciques.

          +

          La protesta social es indisociable de la democracia. Cuando desborda, recanalizarla es más eficiente que + reprimirla: ahí reside el arte del acuerdo. En la Argentina la tarea es delicada porque pocos confían en + la imparcialidad de las instituciones. Entonces, cada actor reivindica sus intereses con los medios de + que dispone: los sindicatos hacen huelga, los estudiantes toman colegios, los empresarios cierran las + fábricas y todos hacen piquetes. El politólogo Samuel Huntington definía una sociedad así como + pretoriana y el jurista Carlos Nino llamó a la Argentina "un país al margen de la ley". Al movilizarse + por sus derechos y desconfiar del Estado, la comunidad mapuche se demuestra bien argentina.

          +

          Las cinco provincias patagónicas tienen una población similar a la de La Matanza. A diferencia de los + Estados Unidos, que se integraron hacia el oeste otorgando parcelas de tierra a los colonizadores, y de + Brasil, donde el rol de ocupación y desarrollo territorial fue cumplido por las fuerzas armadas, la + Argentina obvió la tarea integradora tras consolidar su soberanía a finales del siglo XX. Hoy sobra + tierra y falta gente. Gobernar sigue siendo poblar, pero también integrar.

          +

          Seamos claros: ningún individuo u organización tiene derecho a violar la ley. Pero el problema histórico + del Estado argentino no fue tanto quiénes lo desafiaron como quiénes lo gobernaron. Cambiemos.

          +

          Andrés Malamud es politólogo e investigador en la Universidad de Lisboa. Martín Schapiro es abogado + administrativista y analista internacional

          + +
          +
          + +
          +
          +
          + Enviá tu comentario
          +

          Los comentarios publicados son de exclusiva responsabilidad de sus autores y + las consecuencias derivadas de ellos pueden ser pasibles de sanciones legales. Aquel usuario que incluya en + sus mensajes algún comentario violatorio del reglamento será eliminado e inhabilitado para volver a + comentar. Enviar un comentario implica la aceptación del Reglamento.

          +
          Para poder comentar tenés que ingresar con tu usuario de LA NACION.
          +
          +
          +
          + +
          + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-images.json new file mode 100644 index 000000000..e32833b65 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/s1.lemde.fr\/image\/2015\/05\/05\/600x315\/4628128_3_47fc_projet-de-loi-renseignement_aeba800424730d672d1bd08faf203438.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-metadata.json new file mode 100644 index 000000000..a45fcaf97 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Largement approuvé par les députés, le texte sera désormais examiné par le Sénat, puis le Conseil constitutionnel.", + "Image": "http:\/\/s1.lemde.fr\/image\/2015\/05\/05\/600x315\/4628128_3_47fc_projet-de-loi-renseignement_aeba800424730d672d1bd08faf203438.jpg", + "Title": "Le projet de loi sur le renseignement massivement approuvé à l'Assemblée", + "SiteName": "Le Monde.fr" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected.html new file mode 100644 index 000000000..dd91ed502 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected.html @@ -0,0 +1,46 @@ +

          Le Monde | + • Mis à jour le + | +Par +

          +

          + +

          +

          Les députés ont, sans surprise, adopté à une large majorité (438 contre 86 et 42 abstentions) le projet de loi sur le renseignement défendu par le gouvernement lors d’un vote solennel, mardi 5 mai. Il sera désormais examiné par le Sénat, puis le Conseil constitutionnel, prochainement saisi par 75 députés. Dans un souci d'apaisement, François Hollande avait annoncé par avance qu'il saisirait les Sages.

          +

          Revivez le direct du vote à l’Assemblée avec vos questions.

          +

          Ont voté contre : 10 députés socialistes (sur 288), 35 UMP (sur 198), 11 écologistes (sur 18), 11 UDI (sur 30), 12 députés Front de gauche (sur 15) et 7 non-inscrits (sur 9). Le détail est disponible sur le site de l'Assemblée nationale.

          +

          Parmi les députés ayan voté contre figurent notamment des opposants de la première heure, comme l'UMP Laure de la Raudière ou l'écologiste Sergio Coronado, mais aussi quelques poids lourds de l'opposition comme Patrick Devedjian ou Claude Goasguen. A gauche, on trouve parmi les quelque opposants au texte Aurélie Filipetti. Christian Paul, qui avait été très actif lors d'autres débats sur les libertés numériques, s'est abstenu.

          +

          Pouria Amirshahi, député socialiste des Français de l'étranger qui a également voté contre, a annoncé qu'il transmettrait un « mémorandum argumenté » au Conseil constitutionnel et demanderait à se faire auditionner sur le projet de loi. D'autres députés ont prévu de faire la même démarche.

          +

          Ce texte, fortement décrié par la société civile pour son manque de contre-pouvoir et le caractère intrusif des techniques qu’il autorise, entend donner un cadre aux pratiques des services de renseignement, rendant légales certaines pratiques qui, jusqu’à présent, ne l’étaient pas.

          +

          Retour sur ses principales dispositions, après son passage en commission des lois et après le débat en séance publique.

          +

          Définition des objectifs des services

          +

          Le projet de loi énonce les domaines que peuvent invoquer les services pour justifier leur surveillance. Il s’agit notamment, de manière attendue, de « l’indépendance nationale, de l’intégrité du territoire et de la défense nationale » et de « la prévention du terrorisme », mais également des « intérêts majeurs de la politique étrangère », ainsi que de la « prévention des atteintes à la forme républicaine des institutions » et de « la criminalité et de la délinquance organisées ». Des formulations parfois larges qui inquiètent les opposants au texte qui craignent qu’elles puissent permettre de surveiller des activistes ou des manifestants.

          +

          La Commission de contrôle

          +

          Le contrôle de cette surveillance sera confié à une nouvelle autorité administrative indépendante, la Commission nationale de contrôle des techniques de renseignement (CNCTR), composée de six magistrats du Conseil d’Etat et de la Cour de cassation, de trois députés et trois sénateurs de la majorité et de l’opposition, et d’un expert technique. Elle remplacera l’actuelle Commission nationale de contrôle des interceptions de sécurité (CNCIS).

          +

          Elle délivrera son avis, sauf cas d’urgence, avant toute opération de surveillance ciblée. Deux types urgences sont prévus par la loi : d’un côté une « urgence absolue », pour laquelle un agent pourra se passer de l’avis de la CNCTR mais pas de l’autorisation du premier ministre. De l’autre, une urgence opérationnelle extrêmement limitée, notamment en termes de techniques, à l’initiative du chef du service de renseignement, qui se passe de l’avis de la CNCTR. Ces cas d’urgence ne justifieront pas l’intrusion d’un domicile ni la surveillance d’un journaliste, un parlementaire ou un avocat. Dans ces cas, la procédure classique devra s’appliquer.

          +

          L’avis de la CNCTR ne sera pas contraignant, mais cette commission pourra saisir le Conseil d’Etat si elle estime que la loi n’est pas respectée et elle disposera de pouvoirs d’enquête. Ce recours juridictionnel est une nouveauté dans le monde du renseignement.

          +

          Les « boîtes noires »

          +

          Une des dispositions les plus contestées de ce projet de loi prévoit de pouvoir contraindre les fournisseurs d’accès à Internet (FAI) à « détecter une menace terroriste sur la base d’un traitement automatisé ». Ce dispositif – autorisé par le premier ministre par tranche de quatre mois – permettrait de détecter, en temps réel ou quasi réel, les personnes ayant une activité en ligne typique de « schémas » utilisés par les terroristes pour transmettre des informations.

          +

          En pratique, les services de renseignement pourraient installer chez les FAI une « boîte noire » surveillant le trafic. Le contenu des communications – qui resterait « anonyme » – ne serait pas surveillé, mais uniquement les métadonnées : origine ou destinataire d’un message, adresse IP d’un site visité, durée de la conversation ou de la connexion… Ces données ne seraient pas conservées.

          +

          La Commission nationale informatique et libertés (CNIL), qui critique fortement cette disposition. La CNIL soulève notamment que l’anonymat de ces données est très relatif, puisqu’il peut être levé.

          +

          Lire aussi : Les critiques de la CNIL contre le projet de loi sur le renseignement

          +

          Le dispositif introduit une forme de « pêche au chalut » – un brassage très large des données des Français à la recherche de quelques individus. Le gouvernement se défend de toute similarité avec les dispositifs mis en place par la NSA américaine, arguant notamment que les données ne seront pas conservées et que cette activité sera contrôlée par une toute nouvelle commission aux moyens largement renforcés. Il s’agit cependant d’un dispositif très large, puisqu’il concernera tous les fournisseurs d’accès à Internet, et donc tous les internautes français.

          +

          L’élargissement de la surveillance électronique pour détecter les « futurs » terroristes

          +

          La surveillance des métadonnées sera aussi utilisée pour tenter de détecter de nouveaux profils de terroristes potentiels, prévoit le projet de loi. Le gouvernement considère qu’il s’agit d’une manière efficace de détecter les profils qui passent aujourd’hui « entre les mailles du filet », par exemple des personnes parties en Syrie ou en Irak sans qu’aucune activité suspecte n’ait été décelée avant leur départ.

          +

          Pour repérer ces personnes, la loi permettra d’étendre la surveillance électronique à toutes les personnes en contact avec des personnes déjà suspectées. En analysant leurs contacts, la fréquence de ces derniers et les modes de communication, les services de renseignement espèrent pouvoir détecter ces nouveaux profils en amont.

          +

          De nouveaux outils et méthodes de collecte

          +

          Les services pourront également procéder, après un avis de la CNCTR, à la pose de micros dans une pièce ou de mouchards sur un objet (voiture par exemple), ou à l’intérieur d’un ordinateur. L’utilisation des IMSI-catchers (fausses antennes qui permettent d’intercepter des conversations téléphoniques) est également légalisée, pour les services de renseignement, dans certains cas. Le nombre maximal de ces appareils sera fixé par arrêté du premier ministre après l’avis de la CNCTR.

          +

          Lire : Que sont les IMSI-catchers, ces valises qui espionnent les téléphones portables ?

          +

          La loi introduit également des mesures de surveillance internationale : concrètement, les procédures de contrôle seront allégées lorsqu’un des « bouts » de la communication sera situé à l’étranger (concrètement, un Français qui parle avec un individu situé à l’étranger). Cependant, comme l’a souligné l’Arcep (l’Autorité de régulation des communications électroniques et des postes), sollicitée pour le versant technique de cette mesure, il est parfois difficile de s’assurer qu’une communication, même passant par l’étranger, ne concerne pas deux Français.

          +

          Un nouveau fichier

          +

          La loi crée un fichier judiciaire national automatisé des auteurs d’infractions terroristes (Fijait), dont les données pourront être conservées pendant vingt ans.

          +

          Ce fichier concerne les personnes ayant été condamnées, même si une procédure d’appel est en cours. Les mineurs pourront aussi être inscrits dans ce fichier et leurs données conservées jusqu’à dix ans. L’inscription ne sera pas automatique et se fera sur décision judiciaire. Certaines mises en examen pourront aussi apparaître sur ce fichier. En cas de non-lieu, relaxe, acquittement, amnistie ou réhabilitation, ces informations seront effacées.

          +

          Renseignement pénitentiaire

          +

          Le renseignement pénitentiaire pourra, dans des conditions qui seront fixées par décret, profiter des techniques que légalise le projet de loi pour les services de renseignement. La ministre de la justice, Christiane Taubira, était défavorable à cette disposition, soutenue par le rapporteur du texte, la droite et une partie des députés de gauche. Pour la ministre, cette innovation va dénaturer le renseignement pénitentiaire et le transformer en véritable service de renseignement.

          +

          Conservation des données

          +

          La CNIL a fait part à plusieurs reprises de sa volonté d’exercer sa mission de contrôle sur les fichiers liés au renseignement, qui seront alimentés par ces collectes. Ces fichiers sont aujourd’hui exclus du périmètre d’action de la CNIL.

          +

          La durée de conservation des données collectées – et l’adaptation de cette durée à la technique employée – a par ailleurs été inscrite dans la loi, contrairement au projet initial du gouvernement qui entendait fixer ces limites par décret. Elle pourra aller jusqu’à cinq ans dans le cas des données de connexion.

          +

          Un dispositif pour les lanceurs d’alerte

          +

          La loi prévoit également une forme de protection pour les agents qui seraient témoins de surveillance illégale. Ces lanceurs d’alerte pourraient solliciter la CNCTR, voire le premier ministre, et leur fournir toutes les pièces utiles. La CNCTR pourra ensuite aviser le procureur de la République et solliciter la Commission consultative du secret de la défense nationale afin que cette dernière « donne au premier ministre son avis sur la possibilité de déclassifier tout ou partie de ces éléments ». Aucune mesure de rétorsion ne pourra viser l’agent qui aurait dénoncé des actes potentiellement illégaux.

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/source.html new file mode 100644 index 000000000..093b02e52 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/source.html @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + + Le projet de loi sur le renseignement massivement approuvé à l'Assemblée + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          +
          + + +
          +
          + +
          +
          +
          +
          +
          +
          +
          + +
          +

          Le projet de loi sur le renseignement massivement approuvé à l'Assemblée

          +

          Le Monde | + • Mis à jour le + | +Par +

          +
          +
          +
          +
          + +
          +

          Les députés ont, sans surprise, adopté à une large majorité (438 contre 86 et 42 abstentions) le projet de loi sur le renseignement défendu par le gouvernement lors d’un vote solennel, mardi 5 mai. Il sera désormais examiné par le Sénat, puis le Conseil constitutionnel, prochainement saisi par 75 députés. Dans un souci d'apaisement, François Hollande avait annoncé par avance qu'il saisirait les Sages.

          +

          Revivez le direct du vote à l’Assemblée avec vos questions.

          +

          Ont voté contre : 10 députés socialistes (sur 288), 35 UMP (sur 198), 11 écologistes (sur 18), 11 UDI (sur 30), 12 députés Front de gauche (sur 15) et 7 non-inscrits (sur 9). Le détail est disponible sur le site de l'Assemblée nationale.

          +

          Parmi les députés ayan voté contre figurent notamment des opposants de la première heure, comme l'UMP Laure de la Raudière ou l'écologiste Sergio Coronado, mais aussi quelques poids lourds de l'opposition comme Patrick Devedjian ou Claude Goasguen. A gauche, on trouve parmi les quelque opposants au texte Aurélie Filipetti. Christian Paul, qui avait été très actif lors d'autres débats sur les libertés numériques, s'est abstenu.

          +

          Pouria Amirshahi, député socialiste des Français de l'étranger qui a également voté contre, a annoncé qu'il transmettrait un « mémorandum argumenté » au Conseil constitutionnel et demanderait à se faire auditionner sur le projet de loi. D'autres députés ont prévu de faire la même démarche.

          +

          Ce texte, fortement décrié par la société civile pour son manque de contre-pouvoir et le caractère intrusif des techniques qu’il autorise, entend donner un cadre aux pratiques des services de renseignement, rendant légales certaines pratiques qui, jusqu’à présent, ne l’étaient pas.

          +

          Retour sur ses principales dispositions, après son passage en commission des lois et après le débat en séance publique.

          +

          Définition des objectifs des services

          +

          Le projet de loi énonce les domaines que peuvent invoquer les services pour justifier leur surveillance. Il s’agit notamment, de manière attendue, de « l’indépendance nationale, de l’intégrité du territoire et de la défense nationale » et de « la prévention du terrorisme », mais également des « intérêts majeurs de la politique étrangère », ainsi que de la « prévention des atteintes à la forme républicaine des institutions » et de « la criminalité et de la délinquance organisées ». Des formulations parfois larges qui inquiètent les opposants au texte qui craignent qu’elles puissent permettre de surveiller des activistes ou des manifestants.

          +

          La Commission de contrôle

          +

          Le contrôle de cette surveillance sera confié à une nouvelle autorité administrative indépendante, la Commission nationale de contrôle des techniques de renseignement (CNCTR), composée de six magistrats du Conseil d’Etat et de la Cour de cassation, de trois députés et trois sénateurs de la majorité et de l’opposition, et d’un expert technique. Elle remplacera l’actuelle Commission nationale de contrôle des interceptions de sécurité (CNCIS).

          +

          Elle délivrera son avis, sauf cas d’urgence, avant toute opération de surveillance ciblée. Deux types urgences sont prévus par la loi : d’un côté une « urgence absolue », pour laquelle un agent pourra se passer de l’avis de la CNCTR mais pas de l’autorisation du premier ministre. De l’autre, une urgence opérationnelle extrêmement limitée, notamment en termes de techniques, à l’initiative du chef du service de renseignement, qui se passe de l’avis de la CNCTR. Ces cas d’urgence ne justifieront pas l’intrusion d’un domicile ni la surveillance d’un journaliste, un parlementaire ou un avocat. Dans ces cas, la procédure classique devra s’appliquer.

          +

          L’avis de la CNCTR ne sera pas contraignant, mais cette commission pourra saisir le Conseil d’Etat si elle estime que la loi n’est pas respectée et elle disposera de pouvoirs d’enquête. Ce recours juridictionnel est une nouveauté dans le monde du renseignement.

          +

          Les « boîtes noires »

          +

          Une des dispositions les plus contestées de ce projet de loi prévoit de pouvoir contraindre les fournisseurs d’accès à Internet (FAI) à « détecter une menace terroriste sur la base d’un traitement automatisé ». Ce dispositif – autorisé par le premier ministre par tranche de quatre mois – permettrait de détecter, en temps réel ou quasi réel, les personnes ayant une activité en ligne typique de « schémas » utilisés par les terroristes pour transmettre des informations.

          +

          En pratique, les services de renseignement pourraient installer chez les FAI une « boîte noire » surveillant le trafic. Le contenu des communications – qui resterait « anonyme » – ne serait pas surveillé, mais uniquement les métadonnées : origine ou destinataire d’un message, adresse IP d’un site visité, durée de la conversation ou de la connexion… Ces données ne seraient pas conservées.

          +

          La Commission nationale informatique et libertés (CNIL), qui critique fortement cette disposition. La CNIL soulève notamment que l’anonymat de ces données est très relatif, puisqu’il peut être levé.

          +

          Lire aussi : Les critiques de la CNIL contre le projet de loi sur le renseignement

          +

          Le dispositif introduit une forme de « pêche au chalut » – un brassage très large des données des Français à la recherche de quelques individus. Le gouvernement se défend de toute similarité avec les dispositifs mis en place par la NSA américaine, arguant notamment que les données ne seront pas conservées et que cette activité sera contrôlée par une toute nouvelle commission aux moyens largement renforcés. Il s’agit cependant d’un dispositif très large, puisqu’il concernera tous les fournisseurs d’accès à Internet, et donc tous les internautes français.

          +

          L’élargissement de la surveillance électronique pour détecter les « futurs » terroristes

          +

          La surveillance des métadonnées sera aussi utilisée pour tenter de détecter de nouveaux profils de terroristes potentiels, prévoit le projet de loi. Le gouvernement considère qu’il s’agit d’une manière efficace de détecter les profils qui passent aujourd’hui « entre les mailles du filet », par exemple des personnes parties en Syrie ou en Irak sans qu’aucune activité suspecte n’ait été décelée avant leur départ.

          +

          Pour repérer ces personnes, la loi permettra d’étendre la surveillance électronique à toutes les personnes en contact avec des personnes déjà suspectées. En analysant leurs contacts, la fréquence de ces derniers et les modes de communication, les services de renseignement espèrent pouvoir détecter ces nouveaux profils en amont.

          +

          De nouveaux outils et méthodes de collecte

          +

          Les services pourront également procéder, après un avis de la CNCTR, à la pose de micros dans une pièce ou de mouchards sur un objet (voiture par exemple), ou à l’intérieur d’un ordinateur. L’utilisation des IMSI-catchers (fausses antennes qui permettent d’intercepter des conversations téléphoniques) est également légalisée, pour les services de renseignement, dans certains cas. Le nombre maximal de ces appareils sera fixé par arrêté du premier ministre après l’avis de la CNCTR.

          +

          Lire : Que sont les IMSI-catchers, ces valises qui espionnent les téléphones portables ?

          +

          La loi introduit également des mesures de surveillance internationale : concrètement, les procédures de contrôle seront allégées lorsqu’un des « bouts » de la communication sera situé à l’étranger (concrètement, un Français qui parle avec un individu situé à l’étranger). Cependant, comme l’a souligné l’Arcep (l’Autorité de régulation des communications électroniques et des postes), sollicitée pour le versant technique de cette mesure, il est parfois difficile de s’assurer qu’une communication, même passant par l’étranger, ne concerne pas deux Français.

          +

          Un nouveau fichier

          +

          La loi crée un fichier judiciaire national automatisé des auteurs d’infractions terroristes (Fijait), dont les données pourront être conservées pendant vingt ans.

          +

          Ce fichier concerne les personnes ayant été condamnées, même si une procédure d’appel est en cours. Les mineurs pourront aussi être inscrits dans ce fichier et leurs données conservées jusqu’à dix ans. L’inscription ne sera pas automatique et se fera sur décision judiciaire. Certaines mises en examen pourront aussi apparaître sur ce fichier. En cas de non-lieu, relaxe, acquittement, amnistie ou réhabilitation, ces informations seront effacées.

          +

          Renseignement pénitentiaire

          +

          Le renseignement pénitentiaire pourra, dans des conditions qui seront fixées par décret, profiter des techniques que légalise le projet de loi pour les services de renseignement. La ministre de la justice, Christiane Taubira, était défavorable à cette disposition, soutenue par le rapporteur du texte, la droite et une partie des députés de gauche. Pour la ministre, cette innovation va dénaturer le renseignement pénitentiaire et le transformer en véritable service de renseignement.

          +

          Conservation des données

          +

          La CNIL a fait part à plusieurs reprises de sa volonté d’exercer sa mission de contrôle sur les fichiers liés au renseignement, qui seront alimentés par ces collectes. Ces fichiers sont aujourd’hui exclus du périmètre d’action de la CNIL.

          +

          La durée de conservation des données collectées – et l’adaptation de cette durée à la technique employée – a par ailleurs été inscrite dans la loi, contrairement au projet initial du gouvernement qui entendait fixer ces limites par décret. Elle pourra aller jusqu’à cinq ans dans le cas des données de connexion.

          +

          Un dispositif pour les lanceurs d’alerte

          +

          La loi prévoit également une forme de protection pour les agents qui seraient témoins de surveillance illégale. Ces lanceurs d’alerte pourraient solliciter la CNCTR, voire le premier ministre, et leur fournir toutes les pièces utiles. La CNCTR pourra ensuite aviser le procureur de la République et solliciter la Commission consultative du secret de la défense nationale afin que cette dernière « donne au premier ministre son avis sur la possibilité de déclassifier tout ou partie de ces éléments ». Aucune mesure de rétorsion ne pourra viser l’agent qui aurait dénoncé des actes potentiellement illégaux.

          +
          + +
          + +
          +

          +
          +
          + + +
          +
          + + +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +
          + + +
          +
          + +
          + + +
          +
          + +
          +
          +
          +
          +
          + +
          + +
          + + +
          +
          + +
          + + +
          +
          + + +
          +
          +
          + +
          + + + + +
          + + +
          +
          + +
          + + +
           
          + +
          + +
          + +
          + +
          + + +
          + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-images.json new file mode 100644 index 000000000..8492ce450 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/s1.lemde.fr\/medias\/web\/1.2.705\/img\/placeholder\/default.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-metadata.json new file mode 100644 index 000000000..c402d3e27 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Le retour à la stabilité coûtera des milliards d'euros, mais l'Union européenne en vaut la peine, estime un collectif d'industriels.", + "Image": "http:\/\/s1.lemde.fr\/medias\/web\/1.2.705\/img\/placeholder\/default.png", + "Title": "La crise européenne est une crise de la dette, pas de l'euro", + "SiteName": "Le Monde.fr" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected.html new file mode 100644 index 000000000..af69efe32 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected.html @@ -0,0 +1,13 @@ +

          Le retour à la stabilité coûtera des milliards d'euros, mais l'Union européenne en vaut la peine, estime un collectif d'industriels.

          +

          L'union monétaire s'enlise dans la crise, l'euro reste soumis au feu des critiques. C'est le bilan des nombreux débats qui ont eu lieu ces derniers mois.

          +

          En tant qu'industriels allemands et français, qui ont la responsabilité de 1 500 milliards d'euros de chiffre d'affaires et de cinq millions de salariés dans le monde entier, nous nous soucions de l'avenir de l'euro et de l'union économique et monétaire européenne. L'histoire de l'euro est une véritable réussite. Qui aurait pensé, lorsque l'euro a été introduit il y a douze ans, qu'il aurait aujourd'hui gagné en valeur par rapport au dollar et de nombreuses autres monnaies ?

          +

          L'euro s'est imposé comme seconde monnaie de référence à côté du dollar et a renforcé le rôle de l'Europe en tant que puissance économique. Avec l'euro, un marché commun doté d'une monnaie unique et sans fluctuation de cours de change a vu le jour, créant ainsi prospérité et richesse pour nous tous. Depuis son introduction, près de 9 millions de nouveaux emplois ont été créés dans la zone euro. Les entreprises européennes profitent de ce développement. Elles ont élargi leurs capacités de financement et augmenté leur compétitivité à l'international.

          +

          Le ralentissement de l'économie mondiale a conduit certains pays de l'union monétaire à s'endetter encore davantage. A court terme, ces pays doivent être aidés pour regagner leur indépendance financière et recréer les conditions d'un avenir meilleur pour leur population.

          +

          En contrepartie, des mesures efficaces doivent être mises en oeuvre. Le retour à une situation financière stable coûtera de nombreux milliards d'euros, mais l'Union européenne et notre monnaie commune en valent la peine. Nous devons convaincre nos concitoyens de cela.

          +

          RÈGLES PLUS STRICTES

          +

          Nous avons besoin d'une politique économique européenne et de règles de stabilité plus strictes. Pour éviter, à l'avenir, une crise telle que celle que nous traversons actuellement, nous devons renforcer les règles de stabilité existantes et assurer leur respect. Les solutions envisagées, comme, par exemple, l'exclusion de pays membres de la zone euro ou la scission entre une Union des pays du Nord et du Sud, ne sont pas bonnes. Cela aurait des conséquences qui sont difficilement prévisibles aujourd'hui. De telles propositions démagogiques ne sont pas adaptées à la gravité de la situation.

          +

          Cependant, des mesures doivent être prises à temps et être aussi efficaces que possible. De plus, les Etats membres doivent coordonner, plus étroitement qu'auparavant, leur politique économique intérieure et parler d'une seule voix vis-à-vis de l'extérieur.

          +

          En tant qu'industriels allemands et français, nous voulons souligner les immenses avantages que l'espace monétaire commun a apportés. Nous envoyons un message de soutien aux responsables politiques, afin qu'ils mettent en place des conditions nécessaires à un euro durablement stable et compétitif. C'est la base de la future prospérité en Europe. L'union monétaire a durablement besoin de finances publiques solides, de règles de responsabilité claires, de structures transparentes et de conditions de concurrence équitables.

          +

          Ce n'est qu'à ces conditions que l'euro sortira renforcé de la crise de la dette. Il n'y a pas d'alternative sérieuse à l'euro commun. L'euro symbolise l'Europe d'aujourd'hui. Un échec de l'euro serait un revers fatal pour l'Europe.

          +

          +Appel Frank (Deutsche Post) ; Aschenbroich Jacques (Valeo) ; Berger Roland (Roland Berger Strategy Consultants) ; Bock Kurt (BASF) ; Bories Christel (Constellium) ; Borsig Clemens (Deutsche Bank) ; Brunck Robert (CGG Veritas) ; Buffet Patrick (Eramet) ; Burda Hubert (Hubert Burda Media Holding) ; Caparros Alain (Rewe group) ; Clamadieu Jean-Pierre (Rhodia) ; Cromme Gerhard (ThyssenKrupp) ; Crouzet Philippe (Vallourec) ; de Chalendar Pierre-André (Saint-Gobain) ; de Margerie Christophe (Total) ; de Romanet Augustin (Caisse des dépôts et consignations) ; Degenhart Elmar (Continental) ; Diekmann Michael (Allianz) ; Engel Klaus (Evonik Industries) ; Fehrenbach Franz (Robert Bosch) ; Frérot Antoine (Veolia Environnement) ; Hagemann Snabe Jim (SAP) ; Henrot François (Groupe Rothschild Cie Banque) ; Hermelin Paul (Cap Gemini) ; Kormann Hermut (Lazard) ; Kron Patrick (Alstom) ; Lachmann Henri (Schneider Electric) ; Lafont Bruno (Lafarge) ; Lauvergeon Anne (Areva) ; Lévy Maurice (Publicis Groupe SA) ; Lévy Jean-Bernard (Vivendi) ; Löscher Peter (Siemens) ; Mestrallet Gérard (GDF Suez) ; Obermann René (Deutsche Telekom) ;Oetker Arend (Dr Arend Oetker Holding) ; Oudéa Frédéric (Société Générale) ; Potier Benoit (Air Liquide) ; Ranque Denis (Cercle de l'industrie/Technicolor) ; Reithofer Norbert (BMW) ; Reitzle Wolfgang (Linde) ; Richard Stéphane (France Telecom) ; Rollier Michel (Michelin) ; Rose Frédéric (Technicolor) ; Schnepp Gilles (Legrand) ; Spinetta Jean-Cyril (Air-France KLM)  ; Teyssen Johannes (E.ON)  ; Thumann Jürgen (BusinessEurope) ; Verwaayen Ben (Alcatel-Lucent) ; Viehbacher Chris (Sanofi) ; Zetsche Dieter (Daimler).

          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/source.html new file mode 100644 index 000000000..b47799962 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/source.html @@ -0,0 +1,1353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +La crise européenne est une crise de la dette, pas de l'euro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          + + + +
          +
          + +
          La crise européenne est une crise de la dette, pas de l'euro
          +
          +
          Partager
          +
          Tweeter
          +
          +
          +
          +
          +
          +
          + + + + + + + + +
          + +
          + +
          + + + + + + + +
          +
          Idées
          + +
          +
          +
          +
          +
          + +
          +
          + +
          +

          +

          +
          +
          +
          + + + +
          + + +
          + +
          + +
          +
          +
          +
          + +
          + + +

          La crise européenne est une crise de la dette, pas de l'euro

          + +

          Le retour à la stabilité coûtera des milliards d'euros, mais l'Union européenne en vaut la peine, estime un collectif d'industriels.

          + + +

          + Le Monde + | + • Mis à jour le + + | + +Par + + +

          + + +
          + + + +
          +

          L'union monétaire s'enlise dans la crise, l'euro reste soumis au feu des critiques. C'est le bilan des nombreux débats qui ont eu lieu ces derniers mois.

          +

          En tant qu'industriels allemands et français, qui ont la responsabilité de 1 500 milliards d'euros de chiffre d'affaires et de cinq millions de salariés dans le monde entier, nous nous soucions de l'avenir de l'euro et de l'union économique et monétaire européenne. L'histoire de l'euro est une véritable réussite. Qui aurait pensé, lorsque l'euro a été introduit il y a douze ans, qu'il aurait aujourd'hui gagné en valeur par rapport au dollar et de nombreuses autres monnaies ?

          +

          L'euro s'est imposé comme seconde monnaie de référence à côté du dollar et a renforcé le rôle de l'Europe en tant que puissance économique. Avec l'euro, un marché commun doté d'une monnaie unique et sans fluctuation de cours de change a vu le jour, créant ainsi prospérité et richesse pour nous tous. Depuis son introduction, près de 9 millions de nouveaux emplois ont été créés dans la zone euro. Les entreprises européennes profitent de ce développement. Elles ont élargi leurs capacités de financement et augmenté leur compétitivité à l'international.

          +

          Le ralentissement de l'économie mondiale a conduit certains pays de l'union monétaire à s'endetter encore davantage. A court terme, ces pays doivent être aidés pour regagner leur indépendance financière et recréer les conditions d'un avenir meilleur pour leur population.

          +

          En contrepartie, des mesures efficaces doivent être mises en oeuvre. Le retour à une situation financière stable coûtera de nombreux milliards d'euros, mais l'Union européenne et notre monnaie commune en valent la peine. Nous devons convaincre nos concitoyens de cela.

          +

          RÈGLES PLUS STRICTES

          +

          Nous avons besoin d'une politique économique européenne et de règles de stabilité plus strictes. Pour éviter, à l'avenir, une crise telle que celle que nous traversons actuellement, nous devons renforcer les règles de stabilité existantes et assurer leur respect. Les solutions envisagées, comme, par exemple, l'exclusion de pays membres de la zone euro ou la scission entre une Union des pays du Nord et du Sud, ne sont pas bonnes. Cela aurait des conséquences qui sont difficilement prévisibles aujourd'hui. De telles propositions démagogiques ne sont pas adaptées à la gravité de la situation.

          +

          Cependant, des mesures doivent être prises à temps et être aussi efficaces que possible. De plus, les Etats membres doivent coordonner, plus étroitement qu'auparavant, leur politique économique intérieure et parler d'une seule voix vis-à-vis de l'extérieur.

          +

          En tant qu'industriels allemands et français, nous voulons souligner les immenses avantages que l'espace monétaire commun a apportés. Nous envoyons un message de soutien aux responsables politiques, afin qu'ils mettent en place des conditions nécessaires à un euro durablement stable et compétitif. C'est la base de la future prospérité en Europe. L'union monétaire a durablement besoin de finances publiques solides, de règles de responsabilité claires, de structures transparentes et de conditions de concurrence équitables.

          +

          Ce n'est qu'à ces conditions que l'euro sortira renforcé de la crise de la dette. Il n'y a pas d'alternative sérieuse à l'euro commun. L'euro symbolise l'Europe d'aujourd'hui. Un échec de l'euro serait un revers fatal pour l'Europe.

          +
          +Appel Frank (Deutsche Post) ; Aschenbroich Jacques (Valeo) ; Berger Roland (Roland Berger Strategy Consultants) ; Bock Kurt (BASF) ; Bories Christel (Constellium) ; Borsig Clemens (Deutsche Bank) ; Brunck Robert (CGG Veritas) ; Buffet Patrick (Eramet) ; Burda Hubert (Hubert Burda Media Holding) ; Caparros Alain (Rewe group) ; Clamadieu Jean-Pierre (Rhodia) ; Cromme Gerhard (ThyssenKrupp) ; Crouzet Philippe (Vallourec) ; de Chalendar Pierre-André (Saint-Gobain) ; de Margerie Christophe (Total) ; de Romanet Augustin (Caisse des dépôts et consignations) ; Degenhart Elmar (Continental) ; Diekmann Michael (Allianz) ; Engel Klaus (Evonik Industries) ; Fehrenbach Franz (Robert Bosch) ; Frérot Antoine (Veolia Environnement) ; Hagemann Snabe Jim (SAP) ; Henrot François (Groupe Rothschild Cie Banque) ; Hermelin Paul (Cap Gemini) ; Kormann Hermut (Lazard) ; Kron Patrick (Alstom) ; Lachmann Henri (Schneider Electric) ; Lafont Bruno (Lafarge) ; Lauvergeon Anne (Areva) ; Lévy Maurice (Publicis Groupe SA) ; Lévy Jean-Bernard (Vivendi) ; Löscher Peter (Siemens) ; Mestrallet Gérard (GDF Suez) ; Obermann René (Deutsche Telekom) ;Oetker Arend (Dr Arend Oetker Holding) ; Oudéa Frédéric (Société Générale) ; Potier Benoit (Air Liquide) ; Ranque Denis (Cercle de l'industrie/Technicolor) ; Reithofer Norbert (BMW) ; Reitzle Wolfgang (Linde) ; Richard Stéphane (France Telecom) ; Rollier Michel (Michelin) ; Rose Frédéric (Technicolor) ; Schnepp Gilles (Legrand) ; Spinetta Jean-Cyril (Air-France KLM)  ; Teyssen Johannes (E.ON)  ; Thumann Jürgen (BusinessEurope) ; Verwaayen Ben (Alcatel-Lucent) ; Viehbacher Chris (Sanofi) ; Zetsche Dieter (Daimler).
          +
          + +
          + +
          + + + + + +
          + + + + + +
          +
          + + +
          + + + +
          + +
          +
          +
          +
          +
          +
          + + + + + + +
          + + +
          + + + + +
          +
          +
          +
          + + + +
          + +
          + + + + +
          + +
          + +
          + +
          + +
          +
          +
          +
          + + + +
          + +
          + +
          + +
          + +
          + + +
          + + + + + + + + + + +
          + +
          +
          + + + + +
          + +
          + +
          + + +
          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-images.json new file mode 100644 index 000000000..4b8e9a8b4 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/md1.libe.com\/photo\/755923-000_hkg10175905.jpg?modified_at=1430371146&width=750" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-metadata.json new file mode 100644 index 000000000..5f2b7b5ee --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "AFP", + "Direction": null, + "Excerpt": "Laurent Fabius a accueilli jeudi matin à Roissy un premier avion spécial ramenant des rescapés.", + "Image": "http:\/\/md1.libe.com\/photo\/755923-000_hkg10175905.jpg?modified_at=1430371146&width=750", + "Title": "Un troisième Français mort dans le séisme au Népal", + "SiteName": "Libération.fr" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected.html new file mode 100644 index 000000000..889c2b928 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected.html @@ -0,0 +1,13 @@ +
          +
          +

          Un troisième Français a été tué dans le tremblement de terre samedi au Népal, emporté par une avalanche, a déclaré jeudi le ministre des Affaires étrangères. Les autorités françaises sont toujours sans nouvelles «d’encore plus de 200» personnes. «Pour certains d’entre eux on est très interrogatif», a ajouté Laurent Fabius. Il accueillait à Roissy un premier avion spécial ramenant des rescapés. L’Airbus A350 affrété par les autorités françaises s’est posé peu avant 5h45 avec à son bord 206 passagers, dont 12 enfants et 26 blessés, selon une source du Quai d’Orsay. Quasiment tous sont français, à l’exception d’une quinzaine de ressortissants allemands, suisses, italiens, portugais ou encore turcs. Des psychologues, une équipe médicale et des personnels du centre de crise du Quai d’Orsay les attendent.

          +

          L’appareil, mis à disposition par Airbus, était arrivé à Katmandou mercredi matin avec 55 personnels de santé et humanitaires, ainsi que 25 tonnes de matériel (abris, médicaments, aide alimentaire). Un deuxième avion dépêché par Paris, qui était immobilisé aux Emirats depuis mardi avec 20 tonnes de matériel, est arrivé jeudi à Katmandou, dont le petit aéroport est engorgé par le trafic et l’afflux d’aide humanitaire. Il devait lui aussi ramener des Français, «les plus éprouvés» par la catastrophe et les «plus vulnérables (blessés, familles avec enfants)», selon le ministère des Affaires étrangères.

          +

          2 209 Français ont été localisés sains et saufs tandis que 393 n’ont pas encore pu être joints, selon le Quai d’Orsay. Environ 400 Français ont demandé à être rapatriés dans les vols mis en place par la France.

          +

          Le séisme a fait près de 5 500 morts et touche huit des 28 millions d’habitants du Népal. Des dizaines de milliers de personnes sont sans abri.

          +

          + +

          +
          + +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/source.html new file mode 100644 index 000000000..609df40d6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/source.html @@ -0,0 +1,1803 @@ + + + + + + + + + + + + Un troisième Français mort dans le séisme au Népal - Libération + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          + + + + + + + + + + + + + +
          +
          +
          + +
          +
          +
          +
          + +
          +
          +
          +
          +
          + + + +
          + +
          +

          Un troisième Français a été tué dans le tremblement de terre samedi au Népal, emporté par une avalanche, a déclaré jeudi le ministre des Affaires étrangères. Les autorités françaises sont toujours sans nouvelles «d’encore plus de 200» personnes. «Pour certains d’entre eux on est très interrogatif», a ajouté Laurent Fabius. Il accueillait à Roissy un premier avion spécial ramenant des rescapés. L’Airbus A350 affrété par les autorités françaises s’est posé peu avant 5h45 avec à son bord 206 passagers, dont 12 enfants et 26 blessés, selon une source du Quai d’Orsay. Quasiment tous sont français, à l’exception d’une quinzaine de ressortissants allemands, suisses, italiens, portugais ou encore turcs. Des psychologues, une équipe médicale et des personnels du centre de crise du Quai d’Orsay les attendent.

          +

          L’appareil, mis à disposition par Airbus, était arrivé à Katmandou mercredi matin avec 55 personnels de santé et humanitaires, ainsi que 25 tonnes de matériel (abris, médicaments, aide alimentaire). Un deuxième avion dépêché par Paris, qui était immobilisé aux Emirats depuis mardi avec 20 tonnes de matériel, est arrivé jeudi à Katmandou, dont le petit aéroport est engorgé par le trafic et l’afflux d’aide humanitaire. Il devait lui aussi ramener des Français, «les plus éprouvés» par la catastrophe et les «plus vulnérables (blessés, familles avec enfants)», selon le ministère des Affaires étrangères.

          +

          2 209 Français ont été localisés sains et saufs tandis que 393 n’ont pas encore pu être joints, selon le Quai d’Orsay. Environ 400 Français ont demandé à être rapatriés dans les vols mis en place par la France.

          +

          Le séisme a fait près de 5 500 morts et touche huit des 28 millions d’habitants du Népal. Des dizaines de milliers de personnes sont sans abri.

          +

          + +

          +
          +
          AFP + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + +
          + +
          +
          +
          + +
          + +
          +
          +
          +
          +
          + + +
          +
          + +
          +
          +
          + + + +
          +
          + +
          +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json new file mode 100644 index 000000000..b46843d47 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json @@ -0,0 +1,11 @@ +{ + "0": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--hqqO9fze--\/n1s6c2m6kc07iqdyllj6.jpg", + "2": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--QeUTCiuW--\/o4dpyrcbiqyfrc3bxx6p.jpg", + "3": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--mlR3Ku0_--\/xrhkwleyurcizy4akiae.jpg", + "4": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--Tacb0tyW--\/qodag11euf2npkawkn9v.jpg", + "5": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--x9hLbIKJ--\/imfc9ybqfw0jmztbhfrh.jpg", + "6": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--6NwBgQLy--\/afy7n45jfvsjdmmhonct.jpg", + "7": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--ciqk42G0--\/s3pq8vjrvyjgne4lfsod.jpg", + "8": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--mtob1sjR--\/y2ldv5eufb3jcrtfouye.jpg", + "9": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--4Ajak63w--\/atb9qm07fvvg7hqkumkw.jpg" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json new file mode 100644 index 000000000..fa13f9e3b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Patrick Allan", + "Direction": null, + "Excerpt": "We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.", + "Image": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--hqqO9fze--\/n1s6c2m6kc07iqdyllj6.jpg", + "Title": "How to Program Your Mind to Stop Buying Crap You Don’t Need", + "SiteName": "Lifehacker" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html new file mode 100644 index 000000000..2f862a91c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html @@ -0,0 +1,484 @@ +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.

          + + + + + + + + + + + +

          Understand How Your Own Brain Works Against You

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          It may come as no surprise to learn that stores employ all kinds of tricks to get you to part ways with your cash, and your brain plays right along. Through psychological tricks, product placement, and even color, stores are designed from the ground up to increase spending. We've talked about the biggest things stores do to manipulate your senses, but here are some of the biggest things to look out for:

          + + + + + + + + + + +

          And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your brain is falling for their tricks. Even without the stores, your brain is working against you on its own, thanks to some simple cognitive biases.

          + + + + + + + + + + + + +

          For example, confirmation bias makes you only believe the information that conforms to your prior beliefs, while you discount everything else. Advertisers appeal to this bias directly by convincing you one item is better than another with imagery and other tricks, regardless of what hard facts might say. Keep your mind open, do your own research, and accept when you're wrong about a product. The Decoy effect is also a commonly used tactic. You think one product is a deal because it's next to a similar product that's priced way higher. Even if it's a product you need, it's probably not as good of a deal as it looks right then and there. Again, always research beforehand and be on the lookout for this common trick to avoid impulse buys.

          + + + + + + + + + + +

          Make a List of Everything You Own and Do Some Decluttering

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now that you know what you're up against, it's time to start changing the way you think. Before you can stop buying crap you don't need, you need to identify what that crap is. The first step is to make a list of every single thing you own. Every. Single. Thing. This might sound extreme, but you need to gather your data so you can start reprogramming your mind.

          + + + + + + + + + + + + +

          The purpose of this exercise is twofold: you see what you already have and don't need to ever buy again, and you get to see what you shouldn't have bought in the first place. As you list everything out, separate items into categories. It's extremely important that you are as honest with yourself as possible while you do this. It's also important you actually write this all down or type it all out. Here is the first set of categories to separate everything into:

          + + + + + + + + + + +

          Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:

          + + + + + + + + + + +

          Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can bring happiness to many people, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.

          + + + + + + + + + + +

          Once you have everything organized, it's time to do some serious decluttering. This listing exercise should get you started, but there are a lot of other great ideas when it comes to ditching the junk you don't need. Regardless, everything on your "crap" list needs to go. You can donate it, sell it at a yard sale, give it away to people know, whatever you like. Before you get rid of everything, though, take a picture of all your stuff together. Print out or save the picture somewhere. Some of it was probably gifts, but in general, this is all the crap you bought that you don't need. Take a good look and remember it.

          + + + + + + + + + + +

          See How Much Money and Time You Spent on the Stuff You Threw Out

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now take a look at your "crap" list again and start calculating how much you spent on all of it. If it was a gift, mark it as $0. Otherwise, figure out the price of the item at the time you bought it. If you got a deal or bought it on sale it's okay to factor that in, but try to be as accurate as possible. Once you have the price for each item, add it all together. Depending on your spending habits this could possibly be in the hundreds to thousands of dollars. Remember the picture you took of all this stuff? Attach the total cost to the picture so you can see both at the same time.

          + + + + + + + + + + +

          With the money cost figured out, you should take a look at the other costs too. Time is a resource just like any other, and it's a finite one. What kind of time did you pour into these things? Consider the time you spent acquiring and using these items, then write it all down. These can be rough estimations, but go ahead and add it all up when you think you've got it. Now attach the total time to same picture as before and think of the other ways you could have spent all that time. This isn't to make you feel bad about yourself, just to deliver information to your brain in an easy-to-understand form. When you look at it all like this, it can open your eyes a little more, and help you think about purchases in the future. You'll look at an item and ask yourself, "Will this just end up in the picture?"

          + + + + + + + + + + +

          List Every Non-Material Thing In Your Life that Makes You Happy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now it's time to make a different list. While material items may bring plenty of joy, the things in your life that make you happiest probably can't be bought. Get a separate piece of paper or create a new document and list out everything in your life that makes you happy. If you can't buy it, it's eligible for the list. It doesn't matter if it only makes you crack a smile or makes you jump for joy, list it out.

          + + + + + + + + + + +

          These are probably the things that actually make you want to get out of bed in the morning and keep on keepin' on. Once you have it all down, put it in your purse or wallet. The next time you feel the urge to buy something, whip this list out first and remind yourself why you probably don't need it.

          + + + + + + + + + + +

          Spend Some Time Away from Material Things to Gain Perspective

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you're having a really hard time with your spending, it can help to get away from material objects completely. When you're constantly surrounded by stuff and have access to buying things at all times, it can be really tough to break the habit. Spend a day in the park enjoying the sights and sounds of the outdoors, go camping with some friends, or hike a trail you haven't been on before.

          + + + + + + + + + + +

          Essentially, you want to show yourself that you don't need your "things" to have a good time. When you realize how much fun you can have without all the trinkets and trivets, you'll start to shut down your desire to buy them. If you can't get really get away right now, just go for a walk without your purse or wallet (but carry your ID). If you can't buy anything, you'll be forced to experience things a different way.

          + + + + + + + + + + +

          Develop a Personal "Should I Buy This?" Test

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you don't have a personal "should I buy this?" test, now's the perfect time to make one. When you find an item you think you need or want, it has to pass all of the questions you have on your test before you can buy it. Here's where you can use all of the data you've gathered so far and put it to really good use. The test should be personalized to your own buying habits, but here are some example questions:

          + + + + + + + + + + +

          Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself what problem the piece of tech solves. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.

          + + + + + + + + + + +

          Learn to Delay Gratification and Destroy the Urge to Impulse Buy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          When it comes to the unnecessary crap we buy, impulse purchases probably make up a good deal of them. We love to feel gratification instantly and impulse buys appeal to that with a rush of excitement with each new purchase. We like to believe that we have control over our impulses all the time, but we really don't, and that's a major problem for the ol' wallet.

          + + + + + + + + + + +

          The key is teaching your brain that it's okay to wait for gratification. You can do this with a simple time out every time you want something. Look at whatever you're thinking of buying, go through your personal "should I buy this?" test, and then walk away for a little while. Planning your purchases ahead is ideal, so the longer you can hold off, the better. Set yourself a reminder to check on the item a week or month down the line. When you come back to it, you may find that you don't even want it, just the gratification that would come with it. If you're shopping online, you can do the same thing. Walk away from your desk or put your phone in your pocket and do something else for a little while.

          + + + + + + + + + + +

          You can also avoid online impulse purchases by making it harder to do. Block shopping web sites during time periods you know you're at your weakest, or remove all of your saved credit card or Paypal information. You can also practice the "HALT" method when you're shopping online or in a store. Try not to buy things when you're Hungry, Angry, Lonely, or Tired because you're at your weakest state mentally. Last, but not least, the "stranger test" can help you weed out bad purchases too.

          + + + + + + + + + + + + +

          The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to reduce the time you get with your main interests:

          + + + + + + + + + + +
          +

          Whenever I consistently cut quality time for my main interests out of my life, I start to long for them. As you saw in that "typical" day, I do make room for spending time with my family, but my other two main interests are absent. If that happens too many days in a row, I start to really miss reading. I start to really miss playing thoughtful board games with friends. What happens after that? I start to substitute. When I don't have the opportunity to sit down for an hour or even for half an hour and really get lost in a book, I start looking for an alternative way to fill in the tiny slices of time that I do have. I'll spend money.

          + + + + + + + + + + +

          You probably have things in your life that provide plenty of gratification, so don't get caught substituting it with impulse buys. Always make sure you keep yourself happy with plenty of time doing the things you like to do and you won't be subconsciously trying to fill that void with useless crap.

          + + + + + + + + + + +

          Turn the Money You Save Into More Money

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you will need further down the road. You might need a home, a vehicle, or a way to retire, but none of that can happen until you start planning for it.

          + + + + + + + + + + +

          Start by paying off any debts you already have. Credit cards, student loans, and even car payments can force you to live paycheck to paycheck. Use the snowball method and pay off some small balances to make you feel motivated, then start taking out your debt in full force with the stacking method: stop creating new debt, determine which balances have the highest interest rates, and create a payment schedule to pay them off efficiently.

          + + + + + + + + + + +

          With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily with only modest savings.

          + + + + + + + + + + +

          When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective "set and forget" investment portfolio. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.

          + + + + + + + + + + + + +

          Photos by cmgirl (Shutterstock), Macrovector (Shutterstock), J E Theriot, davidd, George Redgrave, David Amsler, Arup Malakar, J B, jakerome, 401(K) 2012.

          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/source.html new file mode 100644 index 000000000..fb7f522f6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/source.html @@ -0,0 +1,1305 @@ + + + + + + + + + + How to Program Your Mind to Stop Buying Crap You Don’t Need
          + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.

          +
          +
          + + + + + + + + + + + +

          Understand How Your Own Brain Works Against You

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          It may come as no surprise to learn that stores employ all kinds of tricks to get you to part ways with your cash, and your brain plays right along. Through psychological tricks, product placement, and even color, stores are designed from the ground up to increase spending. We've talked about the biggest things stores do to manipulate your senses, but here are some of the biggest things to look out for:

          + + + + + + + + + + +
          • Color: Stores use color to make products attractive and eye-catching, but they also use color on price labels. Red stands out and can encourage taking action, that's why it's commonly associated with sale signage and advertising. When you see red, remember what they're trying to do to your brain with that color. You don't to buy something just because it's on sale.
          • Navigation Roadblocks: Stores force you to walk around stuff you don't need to find the stuff you are really after. Have a list of what you need before you go in, go straight to it, and imagine it's the only item in the store.
          • The Touch Factor: Stores place items they want to sell in easy to reach locations and encourage you to touch them. Don't do it! As soon as you pick something up, you're more likely to buy it because your mind suddenly takes ownership of the object. Don't pick anything up and don't play with display items.
          • Scents and Sounds: You'll probably hear classic, upbeat tunes when you walk into a store. The upbeat music makes you happy and excited, while playing familiar songs makes you feel comfortable. They also use pleasant smells to put your mind at ease. A happy, comfortable mind at ease is a dangerous combination for your brain when shopping. There's not much you can do to avoid this unless you shop online, but it's good to be aware of it.
          + + + + + + + + + + +

          And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your brain is falling for their tricks. Even without the stores, your brain is working against you on its own, thanks to some simple cognitive biases.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          For example, confirmation bias makes you only believe the information that conforms to your prior beliefs, while you discount everything else. Advertisers appeal to this bias directly by convincing you one item is better than another with imagery and other tricks, regardless of what hard facts might say. Keep your mind open, do your own research, and accept when you're wrong about a product. The Decoy effect is also a commonly used tactic. You think one product is a deal because it's next to a similar product that's priced way higher. Even if it's a product you need, it's probably not as good of a deal as it looks right then and there. Again, always research beforehand and be on the lookout for this common trick to avoid impulse buys.

          + + + + + + + + + + +

          Make a List of Everything You Own and Do Some Decluttering

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now that you know what you're up against, it's time to start changing the way you think. Before you can stop buying crap you don't need, you need to identify what that crap is. The first step is to make a list of every single thing you own. Every. Single. Thing. This might sound extreme, but you need to gather your data so you can start reprogramming your mind.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          The purpose of this exercise is twofold: you see what you already have and don't need to ever buy again, and you get to see what you shouldn't have bought in the first place. As you list everything out, separate items into categories. It's extremely important that you are as honest with yourself as possible while you do this. It's also important you actually write this all down or type it all out. Here is the first set of categories to separate everything into:

          + + + + + + + + + + +
          • Need: You absolutely need this item to get by on a day to day basis.
          • Sometimes Need: You don't need this item every day, but you use it on a somewhat regular basis.
          • Want: You bought this item because you wanted it, not because you needed it.
          • Crap: You don't have a good reason why you have it and you already know it needs to go (there's probably a few of these items, at least).
          + + + + + + + + + + +

          Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:

          + + + + + + + + + + +
          • When was the last time I used this?
          • When will I use this again?
          • Does this item bring you joy?
          + + + + + + + + + + +

          Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can bring happiness to many people, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.

          + + + + + + + + + + +

          Once you have everything organized, it's time to do some serious decluttering. This listing exercise should get you started, but there are a lot of other great ideas when it comes to ditching the junk you don't need. Regardless, everything on your "crap" list needs to go. You can donate it, sell it at a yard sale, give it away to people know, whatever you like. Before you get rid of everything, though, take a picture of all your stuff together. Print out or save the picture somewhere. Some of it was probably gifts, but in general, this is all the crap you bought that you don't need. Take a good look and remember it.

          + + + + + + + + + + +

          See How Much Money and Time You Spent on the Stuff You Threw Out

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now take a look at your "crap" list again and start calculating how much you spent on all of it. If it was a gift, mark it as $0. Otherwise, figure out the price of the item at the time you bought it. If you got a deal or bought it on sale it's okay to factor that in, but try to be as accurate as possible. Once you have the price for each item, add it all together. Depending on your spending habits this could possibly be in the hundreds to thousands of dollars. Remember the picture you took of all this stuff? Attach the total cost to the picture so you can see both at the same time.

          + + + + + + + + + + +

          With the money cost figured out, you should take a look at the other costs too. Time is a resource just like any other, and it's a finite one. What kind of time did you pour into these things? Consider the time you spent acquiring and using these items, then write it all down. These can be rough estimations, but go ahead and add it all up when you think you've got it. Now attach the total time to same picture as before and think of the other ways you could have spent all that time. This isn't to make you feel bad about yourself, just to deliver information to your brain in an easy-to-understand form. When you look at it all like this, it can open your eyes a little more, and help you think about purchases in the future. You'll look at an item and ask yourself, "Will this just end up in the picture?"

          + + + + + + + + + + +

          List Every Non-Material Thing In Your Life that Makes You Happy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now it's time to make a different list. While material items may bring plenty of joy, the things in your life that make you happiest probably can't be bought. Get a separate piece of paper or create a new document and list out everything in your life that makes you happy. If you can't buy it, it's eligible for the list. It doesn't matter if it only makes you crack a smile or makes you jump for joy, list it out.

          + + + + + + + + + + +

          These are probably the things that actually make you want to get out of bed in the morning and keep on keepin' on. Once you have it all down, put it in your purse or wallet. The next time you feel the urge to buy something, whip this list out first and remind yourself why you probably don't need it.

          + + + + + + + + + + +

          Spend Some Time Away from Material Things to Gain Perspective

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you're having a really hard time with your spending, it can help to get away from material objects completely. When you're constantly surrounded by stuff and have access to buying things at all times, it can be really tough to break the habit. Spend a day in the park enjoying the sights and sounds of the outdoors, go camping with some friends, or hike a trail you haven't been on before.

          + + + + + + + + + + +

          Essentially, you want to show yourself that you don't need your "things" to have a good time. When you realize how much fun you can have without all the trinkets and trivets, you'll start to shut down your desire to buy them. If you can't get really get away right now, just go for a walk without your purse or wallet (but carry your ID). If you can't buy anything, you'll be forced to experience things a different way.

          + + + + + + + + + + +

          Develop a Personal "Should I Buy This?" Test

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you don't have a personal "should I buy this?" test, now's the perfect time to make one. When you find an item you think you need or want, it has to pass all of the questions you have on your test before you can buy it. Here's where you can use all of the data you've gathered so far and put it to really good use. The test should be personalized to your own buying habits, but here are some example questions:

          + + + + + + + + + + +
          • Is this a planned purchase?
          • Will it end up in the "crap" list picture one day?
          • Where am I going to put it?
          • Have I included this in my budget?
          • Why do I want/need it?
          + + + + + + + + + + +

          Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself what problem the piece of tech solves. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.

          + + + + + + + + + + +

          Learn to Delay Gratification and Destroy the Urge to Impulse Buy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          When it comes to the unnecessary crap we buy, impulse purchases probably make up a good deal of them. We love to feel gratification instantly and impulse buys appeal to that with a rush of excitement with each new purchase. We like to believe that we have control over our impulses all the time, but we really don't, and that's a major problem for the ol' wallet.

          + + + + + + + + + + +

          The key is teaching your brain that it's okay to wait for gratification. You can do this with a simple time out every time you want something. Look at whatever you're thinking of buying, go through your personal "should I buy this?" test, and then walk away for a little while. Planning your purchases ahead is ideal, so the longer you can hold off, the better. Set yourself a reminder to check on the item a week or month down the line. When you come back to it, you may find that you don't even want it, just the gratification that would come with it. If you're shopping online, you can do the same thing. Walk away from your desk or put your phone in your pocket and do something else for a little while.

          + + + + + + + + + + +

          You can also avoid online impulse purchases by making it harder to do. Block shopping web sites during time periods you know you're at your weakest, or remove all of your saved credit card or Paypal information. You can also practice the "HALT" method when you're shopping online or in a store. Try not to buy things when you're Hungry, Angry, Lonely, or Tired because you're at your weakest state mentally. Last, but not least, the "stranger test" can help you weed out bad purchases too.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to reduce the time you get with your main interests:

          + + + + + + + + + + +
          +

          Whenever I consistently cut quality time for my main interests out of my life, I start to long for them. As you saw in that "typical" day, I do make room for spending time with my family, but my other two main interests are absent. If that happens too many days in a row, I start to really miss reading. I start to really miss playing thoughtful board games with friends. What happens after that? I start to substitute. When I don't have the opportunity to sit down for an hour or even for half an hour and really get lost in a book, I start looking for an alternative way to fill in the tiny slices of time that I do have. I'll spend money.

          + + + + + + + + + + +

          You probably have things in your life that provide plenty of gratification, so don't get caught substituting it with impulse buys. Always make sure you keep yourself happy with plenty of time doing the things you like to do and you won't be subconsciously trying to fill that void with useless crap.

          + + + + + + + + + + +

          Turn the Money You Save Into More Money

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you will need further down the road. You might need a home, a vehicle, or a way to retire, but none of that can happen until you start planning for it.

          + + + + + + + + + + +

          Start by paying off any debts you already have. Credit cards, student loans, and even car payments can force you to live paycheck to paycheck. Use the snowball method and pay off some small balances to make you feel motivated, then start taking out your debt in full force with the stacking method: stop creating new debt, determine which balances have the highest interest rates, and create a payment schedule to pay them off efficiently.

          + + + + + + + + + + +

          With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily with only modest savings.

          + + + + + + + + + + +

          When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective "set and forget" investment portfolio. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Photos by cmgirl (Shutterstock), Macrovector (Shutterstock), J E Theriot, davidd, George Redgrave, David Amsler, Arup Malakar, J B, jakerome, 401(K) 2012.

          36 146Reply

          This is one of my hardest habits to break. I've been working on it for literally years. I'm getting better, mainly because I've gone to cash-only recently. Swiping the debit/credit cards don't seem like "real" money (even though it obviously is). Having cash on hand, and then see it disappear makes the "Should I buy This?" decision that much easier. Usually it's "No".

          Flagged

          Yup. Each week, I give myself $25 cash for spending on me. If I go out to eat Friday night, that's it, it's gone.

          + + + + + + + + + + +

          I use the envelope system for dividing saved cash for special purchases, home improvements, etc. It's crazy how fast it adds up.

          Flagged

          Make a List of Everything You Own and Do Some Decluttering

          Why would I make a list when I could get right down to the business of decluttering?

          Flagged

          So you know what you already have. You can avoid buying something that you forget you had, or the next time you're in a store, you might remember that you have an item that can do the same job as the thing you're interested in. It also helps you gain a little perspective when you realize how many things you actually own already. It can help you rethink those desires to buy things.

          Flagged

          I am. Well, I was..... Some of it was spent on impulse buying Ziiiro watches last Valentine's Day lol. :( So I'm saving up, again. Sucks that it'll get delayed because of a freaking watch.

          + + + + + + + + + + +

          Ugh I feel like I need to read this article everyday.

          Flagged

          I love the suggestion of going camping to get away from stuff... You do realize that camping gear can be more expensive than electronics and gadgets.... Now I need to buy a $4500 tent and $1200 hiking shoes to get away from things....

          + + + + + + + + + + +

          Oh and I have to have all matching camping clothing from North Face... I need to go shopping.

          Flagged

          Haha, yeah, some camping gear can be pretty pricey, but I just went this past weekend with a rented tent and some friends, and it didn't cost much. Just got to avoid the "I want to look like an outdoorsy camper" style I guess :P

          Flagged

          My camping gear addiction is one of those that I need to do some decluttering on. I have a really cool 2 person Tent Cot that sound like awesome ideas until you actually see one in person.

          + + + + + + + + + + +

          http://www.amazon.com/Kamp-Rite-TB34...

          + + + + + + + + + + +

          They weigh nearly 90 pounds and will not fit in the back of anything but a full size SUV with the seats folded down or a pickup truck.

          + + + + + + + + + + +

          So it has sat in it's box in my basement for the past 3 years as a testament to my UPS guys hernia when he delivered it.

          Flagged

          lol! That does sound like a cool idea, but you're right, what's the point if you can't transport it easily? I wonder if someone makes a lighter, less cumbersome model...

          Flagged
          Hosts of other popular chats
          + + + +
          diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-images.json new file mode 100644 index 000000000..b46843d47 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-images.json @@ -0,0 +1,11 @@ +{ + "0": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--hqqO9fze--\/n1s6c2m6kc07iqdyllj6.jpg", + "2": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--QeUTCiuW--\/o4dpyrcbiqyfrc3bxx6p.jpg", + "3": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--mlR3Ku0_--\/xrhkwleyurcizy4akiae.jpg", + "4": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--Tacb0tyW--\/qodag11euf2npkawkn9v.jpg", + "5": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--x9hLbIKJ--\/imfc9ybqfw0jmztbhfrh.jpg", + "6": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--6NwBgQLy--\/afy7n45jfvsjdmmhonct.jpg", + "7": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--ciqk42G0--\/s3pq8vjrvyjgne4lfsod.jpg", + "8": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--mtob1sjR--\/y2ldv5eufb3jcrtfouye.jpg", + "9": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--4Ajak63w--\/atb9qm07fvvg7hqkumkw.jpg" +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-metadata.json new file mode 100644 index 000000000..fa13f9e3b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Patrick Allan", + "Direction": null, + "Excerpt": "We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.", + "Image": "http:\/\/i.kinja-img.com\/gawker-media\/image\/upload\/s--hqqO9fze--\/n1s6c2m6kc07iqdyllj6.jpg", + "Title": "How to Program Your Mind to Stop Buying Crap You Don’t Need", + "SiteName": "Lifehacker" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected.html new file mode 100644 index 000000000..2f862a91c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected.html @@ -0,0 +1,484 @@ +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.

          + + + + + + + + + + + +

          Understand How Your Own Brain Works Against You

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          It may come as no surprise to learn that stores employ all kinds of tricks to get you to part ways with your cash, and your brain plays right along. Through psychological tricks, product placement, and even color, stores are designed from the ground up to increase spending. We've talked about the biggest things stores do to manipulate your senses, but here are some of the biggest things to look out for:

          + + + + + + + + + + +

          And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your brain is falling for their tricks. Even without the stores, your brain is working against you on its own, thanks to some simple cognitive biases.

          + + + + + + + + + + + + +

          For example, confirmation bias makes you only believe the information that conforms to your prior beliefs, while you discount everything else. Advertisers appeal to this bias directly by convincing you one item is better than another with imagery and other tricks, regardless of what hard facts might say. Keep your mind open, do your own research, and accept when you're wrong about a product. The Decoy effect is also a commonly used tactic. You think one product is a deal because it's next to a similar product that's priced way higher. Even if it's a product you need, it's probably not as good of a deal as it looks right then and there. Again, always research beforehand and be on the lookout for this common trick to avoid impulse buys.

          + + + + + + + + + + +

          Make a List of Everything You Own and Do Some Decluttering

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now that you know what you're up against, it's time to start changing the way you think. Before you can stop buying crap you don't need, you need to identify what that crap is. The first step is to make a list of every single thing you own. Every. Single. Thing. This might sound extreme, but you need to gather your data so you can start reprogramming your mind.

          + + + + + + + + + + + + +

          The purpose of this exercise is twofold: you see what you already have and don't need to ever buy again, and you get to see what you shouldn't have bought in the first place. As you list everything out, separate items into categories. It's extremely important that you are as honest with yourself as possible while you do this. It's also important you actually write this all down or type it all out. Here is the first set of categories to separate everything into:

          + + + + + + + + + + +

          Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:

          + + + + + + + + + + +

          Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can bring happiness to many people, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.

          + + + + + + + + + + +

          Once you have everything organized, it's time to do some serious decluttering. This listing exercise should get you started, but there are a lot of other great ideas when it comes to ditching the junk you don't need. Regardless, everything on your "crap" list needs to go. You can donate it, sell it at a yard sale, give it away to people know, whatever you like. Before you get rid of everything, though, take a picture of all your stuff together. Print out or save the picture somewhere. Some of it was probably gifts, but in general, this is all the crap you bought that you don't need. Take a good look and remember it.

          + + + + + + + + + + +

          See How Much Money and Time You Spent on the Stuff You Threw Out

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now take a look at your "crap" list again and start calculating how much you spent on all of it. If it was a gift, mark it as $0. Otherwise, figure out the price of the item at the time you bought it. If you got a deal or bought it on sale it's okay to factor that in, but try to be as accurate as possible. Once you have the price for each item, add it all together. Depending on your spending habits this could possibly be in the hundreds to thousands of dollars. Remember the picture you took of all this stuff? Attach the total cost to the picture so you can see both at the same time.

          + + + + + + + + + + +

          With the money cost figured out, you should take a look at the other costs too. Time is a resource just like any other, and it's a finite one. What kind of time did you pour into these things? Consider the time you spent acquiring and using these items, then write it all down. These can be rough estimations, but go ahead and add it all up when you think you've got it. Now attach the total time to same picture as before and think of the other ways you could have spent all that time. This isn't to make you feel bad about yourself, just to deliver information to your brain in an easy-to-understand form. When you look at it all like this, it can open your eyes a little more, and help you think about purchases in the future. You'll look at an item and ask yourself, "Will this just end up in the picture?"

          + + + + + + + + + + +

          List Every Non-Material Thing In Your Life that Makes You Happy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now it's time to make a different list. While material items may bring plenty of joy, the things in your life that make you happiest probably can't be bought. Get a separate piece of paper or create a new document and list out everything in your life that makes you happy. If you can't buy it, it's eligible for the list. It doesn't matter if it only makes you crack a smile or makes you jump for joy, list it out.

          + + + + + + + + + + +

          These are probably the things that actually make you want to get out of bed in the morning and keep on keepin' on. Once you have it all down, put it in your purse or wallet. The next time you feel the urge to buy something, whip this list out first and remind yourself why you probably don't need it.

          + + + + + + + + + + +

          Spend Some Time Away from Material Things to Gain Perspective

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you're having a really hard time with your spending, it can help to get away from material objects completely. When you're constantly surrounded by stuff and have access to buying things at all times, it can be really tough to break the habit. Spend a day in the park enjoying the sights and sounds of the outdoors, go camping with some friends, or hike a trail you haven't been on before.

          + + + + + + + + + + +

          Essentially, you want to show yourself that you don't need your "things" to have a good time. When you realize how much fun you can have without all the trinkets and trivets, you'll start to shut down your desire to buy them. If you can't get really get away right now, just go for a walk without your purse or wallet (but carry your ID). If you can't buy anything, you'll be forced to experience things a different way.

          + + + + + + + + + + +

          Develop a Personal "Should I Buy This?" Test

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you don't have a personal "should I buy this?" test, now's the perfect time to make one. When you find an item you think you need or want, it has to pass all of the questions you have on your test before you can buy it. Here's where you can use all of the data you've gathered so far and put it to really good use. The test should be personalized to your own buying habits, but here are some example questions:

          + + + + + + + + + + +

          Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself what problem the piece of tech solves. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.

          + + + + + + + + + + +

          Learn to Delay Gratification and Destroy the Urge to Impulse Buy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          When it comes to the unnecessary crap we buy, impulse purchases probably make up a good deal of them. We love to feel gratification instantly and impulse buys appeal to that with a rush of excitement with each new purchase. We like to believe that we have control over our impulses all the time, but we really don't, and that's a major problem for the ol' wallet.

          + + + + + + + + + + +

          The key is teaching your brain that it's okay to wait for gratification. You can do this with a simple time out every time you want something. Look at whatever you're thinking of buying, go through your personal "should I buy this?" test, and then walk away for a little while. Planning your purchases ahead is ideal, so the longer you can hold off, the better. Set yourself a reminder to check on the item a week or month down the line. When you come back to it, you may find that you don't even want it, just the gratification that would come with it. If you're shopping online, you can do the same thing. Walk away from your desk or put your phone in your pocket and do something else for a little while.

          + + + + + + + + + + +

          You can also avoid online impulse purchases by making it harder to do. Block shopping web sites during time periods you know you're at your weakest, or remove all of your saved credit card or Paypal information. You can also practice the "HALT" method when you're shopping online or in a store. Try not to buy things when you're Hungry, Angry, Lonely, or Tired because you're at your weakest state mentally. Last, but not least, the "stranger test" can help you weed out bad purchases too.

          + + + + + + + + + + + + +

          The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to reduce the time you get with your main interests:

          + + + + + + + + + + +
          +

          Whenever I consistently cut quality time for my main interests out of my life, I start to long for them. As you saw in that "typical" day, I do make room for spending time with my family, but my other two main interests are absent. If that happens too many days in a row, I start to really miss reading. I start to really miss playing thoughtful board games with friends. What happens after that? I start to substitute. When I don't have the opportunity to sit down for an hour or even for half an hour and really get lost in a book, I start looking for an alternative way to fill in the tiny slices of time that I do have. I'll spend money.

          + + + + + + + + + + +

          You probably have things in your life that provide plenty of gratification, so don't get caught substituting it with impulse buys. Always make sure you keep yourself happy with plenty of time doing the things you like to do and you won't be subconsciously trying to fill that void with useless crap.

          + + + + + + + + + + +

          Turn the Money You Save Into More Money

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you will need further down the road. You might need a home, a vehicle, or a way to retire, but none of that can happen until you start planning for it.

          + + + + + + + + + + +

          Start by paying off any debts you already have. Credit cards, student loans, and even car payments can force you to live paycheck to paycheck. Use the snowball method and pay off some small balances to make you feel motivated, then start taking out your debt in full force with the stacking method: stop creating new debt, determine which balances have the highest interest rates, and create a payment schedule to pay them off efficiently.

          + + + + + + + + + + +

          With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily with only modest savings.

          + + + + + + + + + + +

          When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective "set and forget" investment portfolio. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.

          + + + + + + + + + + + + +

          Photos by cmgirl (Shutterstock), Macrovector (Shutterstock), J E Theriot, davidd, George Redgrave, David Amsler, Arup Malakar, J B, jakerome, 401(K) 2012.

          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/source.html new file mode 100644 index 000000000..9256059f8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/source.html @@ -0,0 +1,1241 @@ + + + + + + + + + + How to Program Your Mind to Stop Buying Crap You Don’t Need
          + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.

          +
          +
          + + + + + + + + + + + +

          Understand How Your Own Brain Works Against You

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          It may come as no surprise to learn that stores employ all kinds of tricks to get you to part ways with your cash, and your brain plays right along. Through psychological tricks, product placement, and even color, stores are designed from the ground up to increase spending. We've talked about the biggest things stores do to manipulate your senses, but here are some of the biggest things to look out for:

          + + + + + + + + + + +
          • Color: Stores use color to make products attractive and eye-catching, but they also use color on price labels. Red stands out and can encourage taking action, that's why it's commonly associated with sale signage and advertising. When you see red, remember what they're trying to do to your brain with that color. You don't to buy something just because it's on sale.
          • Navigation Roadblocks: Stores force you to walk around stuff you don't need to find the stuff you are really after. Have a list of what you need before you go in, go straight to it, and imagine it's the only item in the store.
          • The Touch Factor: Stores place items they want to sell in easy to reach locations and encourage you to touch them. Don't do it! As soon as you pick something up, you're more likely to buy it because your mind suddenly takes ownership of the object. Don't pick anything up and don't play with display items.
          • Scents and Sounds: You'll probably hear classic, upbeat tunes when you walk into a store. The upbeat music makes you happy and excited, while playing familiar songs makes you feel comfortable. They also use pleasant smells to put your mind at ease. A happy, comfortable mind at ease is a dangerous combination for your brain when shopping. There's not much you can do to avoid this unless you shop online, but it's good to be aware of it.
          + + + + + + + + + + +

          And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your brain is falling for their tricks. Even without the stores, your brain is working against you on its own, thanks to some simple cognitive biases.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          For example, confirmation bias makes you only believe the information that conforms to your prior beliefs, while you discount everything else. Advertisers appeal to this bias directly by convincing you one item is better than another with imagery and other tricks, regardless of what hard facts might say. Keep your mind open, do your own research, and accept when you're wrong about a product. The Decoy effect is also a commonly used tactic. You think one product is a deal because it's next to a similar product that's priced way higher. Even if it's a product you need, it's probably not as good of a deal as it looks right then and there. Again, always research beforehand and be on the lookout for this common trick to avoid impulse buys.

          + + + + + + + + + + +

          Make a List of Everything You Own and Do Some Decluttering

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now that you know what you're up against, it's time to start changing the way you think. Before you can stop buying crap you don't need, you need to identify what that crap is. The first step is to make a list of every single thing you own. Every. Single. Thing. This might sound extreme, but you need to gather your data so you can start reprogramming your mind.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          The purpose of this exercise is twofold: you see what you already have and don't need to ever buy again, and you get to see what you shouldn't have bought in the first place. As you list everything out, separate items into categories. It's extremely important that you are as honest with yourself as possible while you do this. It's also important you actually write this all down or type it all out. Here is the first set of categories to separate everything into:

          + + + + + + + + + + +
          • Need: You absolutely need this item to get by on a day to day basis.
          • Sometimes Need: You don't need this item every day, but you use it on a somewhat regular basis.
          • Want: You bought this item because you wanted it, not because you needed it.
          • Crap: You don't have a good reason why you have it and you already know it needs to go (there's probably a few of these items, at least).
          + + + + + + + + + + +

          Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:

          + + + + + + + + + + +
          • When was the last time I used this?
          • When will I use this again?
          • Does this item bring you joy?
          + + + + + + + + + + +

          Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can bring happiness to many people, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.

          + + + + + + + + + + +

          Once you have everything organized, it's time to do some serious decluttering. This listing exercise should get you started, but there are a lot of other great ideas when it comes to ditching the junk you don't need. Regardless, everything on your "crap" list needs to go. You can donate it, sell it at a yard sale, give it away to people know, whatever you like. Before you get rid of everything, though, take a picture of all your stuff together. Print out or save the picture somewhere. Some of it was probably gifts, but in general, this is all the crap you bought that you don't need. Take a good look and remember it.

          + + + + + + + + + + +

          See How Much Money and Time You Spent on the Stuff You Threw Out

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now take a look at your "crap" list again and start calculating how much you spent on all of it. If it was a gift, mark it as $0. Otherwise, figure out the price of the item at the time you bought it. If you got a deal or bought it on sale it's okay to factor that in, but try to be as accurate as possible. Once you have the price for each item, add it all together. Depending on your spending habits this could possibly be in the hundreds to thousands of dollars. Remember the picture you took of all this stuff? Attach the total cost to the picture so you can see both at the same time.

          + + + + + + + + + + +

          With the money cost figured out, you should take a look at the other costs too. Time is a resource just like any other, and it's a finite one. What kind of time did you pour into these things? Consider the time you spent acquiring and using these items, then write it all down. These can be rough estimations, but go ahead and add it all up when you think you've got it. Now attach the total time to same picture as before and think of the other ways you could have spent all that time. This isn't to make you feel bad about yourself, just to deliver information to your brain in an easy-to-understand form. When you look at it all like this, it can open your eyes a little more, and help you think about purchases in the future. You'll look at an item and ask yourself, "Will this just end up in the picture?"

          + + + + + + + + + + +

          List Every Non-Material Thing In Your Life that Makes You Happy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Now it's time to make a different list. While material items may bring plenty of joy, the things in your life that make you happiest probably can't be bought. Get a separate piece of paper or create a new document and list out everything in your life that makes you happy. If you can't buy it, it's eligible for the list. It doesn't matter if it only makes you crack a smile or makes you jump for joy, list it out.

          + + + + + + + + + + +

          These are probably the things that actually make you want to get out of bed in the morning and keep on keepin' on. Once you have it all down, put it in your purse or wallet. The next time you feel the urge to buy something, whip this list out first and remind yourself why you probably don't need it.

          + + + + + + + + + + +

          Spend Some Time Away from Material Things to Gain Perspective

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you're having a really hard time with your spending, it can help to get away from material objects completely. When you're constantly surrounded by stuff and have access to buying things at all times, it can be really tough to break the habit. Spend a day in the park enjoying the sights and sounds of the outdoors, go camping with some friends, or hike a trail you haven't been on before.

          + + + + + + + + + + +

          Essentially, you want to show yourself that you don't need your "things" to have a good time. When you realize how much fun you can have without all the trinkets and trivets, you'll start to shut down your desire to buy them. If you can't get really get away right now, just go for a walk without your purse or wallet (but carry your ID). If you can't buy anything, you'll be forced to experience things a different way.

          + + + + + + + + + + +

          Develop a Personal "Should I Buy This?" Test

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          If you don't have a personal "should I buy this?" test, now's the perfect time to make one. When you find an item you think you need or want, it has to pass all of the questions you have on your test before you can buy it. Here's where you can use all of the data you've gathered so far and put it to really good use. The test should be personalized to your own buying habits, but here are some example questions:

          + + + + + + + + + + +
          • Is this a planned purchase?
          • Will it end up in the "crap" list picture one day?
          • Where am I going to put it?
          • Have I included this in my budget?
          • Why do I want/need it?
          + + + + + + + + + + +

          Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself what problem the piece of tech solves. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.

          + + + + + + + + + + +

          Learn to Delay Gratification and Destroy the Urge to Impulse Buy

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          When it comes to the unnecessary crap we buy, impulse purchases probably make up a good deal of them. We love to feel gratification instantly and impulse buys appeal to that with a rush of excitement with each new purchase. We like to believe that we have control over our impulses all the time, but we really don't, and that's a major problem for the ol' wallet.

          + + + + + + + + + + +

          The key is teaching your brain that it's okay to wait for gratification. You can do this with a simple time out every time you want something. Look at whatever you're thinking of buying, go through your personal "should I buy this?" test, and then walk away for a little while. Planning your purchases ahead is ideal, so the longer you can hold off, the better. Set yourself a reminder to check on the item a week or month down the line. When you come back to it, you may find that you don't even want it, just the gratification that would come with it. If you're shopping online, you can do the same thing. Walk away from your desk or put your phone in your pocket and do something else for a little while.

          + + + + + + + + + + +

          You can also avoid online impulse purchases by making it harder to do. Block shopping web sites during time periods you know you're at your weakest, or remove all of your saved credit card or Paypal information. You can also practice the "HALT" method when you're shopping online or in a store. Try not to buy things when you're Hungry, Angry, Lonely, or Tired because you're at your weakest state mentally. Last, but not least, the "stranger test" can help you weed out bad purchases too.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to reduce the time you get with your main interests:

          + + + + + + + + + + +
          +

          Whenever I consistently cut quality time for my main interests out of my life, I start to long for them. As you saw in that "typical" day, I do make room for spending time with my family, but my other two main interests are absent. If that happens too many days in a row, I start to really miss reading. I start to really miss playing thoughtful board games with friends. What happens after that? I start to substitute. When I don't have the opportunity to sit down for an hour or even for half an hour and really get lost in a book, I start looking for an alternative way to fill in the tiny slices of time that I do have. I'll spend money.

          + + + + + + + + + + +

          You probably have things in your life that provide plenty of gratification, so don't get caught substituting it with impulse buys. Always make sure you keep yourself happy with plenty of time doing the things you like to do and you won't be subconsciously trying to fill that void with useless crap.

          + + + + + + + + + + +

          Turn the Money You Save Into More Money

          + + + + + + + + + + +

          How to Program Your Mind to Stop Buying Crap You Don’t Need

          + + + + + + + + + + +

          Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you will need further down the road. You might need a home, a vehicle, or a way to retire, but none of that can happen until you start planning for it.

          + + + + + + + + + + +

          Start by paying off any debts you already have. Credit cards, student loans, and even car payments can force you to live paycheck to paycheck. Use the snowball method and pay off some small balances to make you feel motivated, then start taking out your debt in full force with the stacking method: stop creating new debt, determine which balances have the highest interest rates, and create a payment schedule to pay them off efficiently.

          + + + + + + + + + + +

          With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily with only modest savings.

          + + + + + + + + + + +

          When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective "set and forget" investment portfolio. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Photos by cmgirl (Shutterstock), Macrovector (Shutterstock), J E Theriot, davidd, George Redgrave, David Amsler, Arup Malakar, J B, jakerome, 401(K) 2012.

          36 146Reply
          + + + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-images.json new file mode 100644 index 000000000..c4caaa1ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-images.json @@ -0,0 +1,5 @@ +[ + "https:\/\/2.bp.blogspot.com\/-chCZZinlUTg\/WEcxvJo9gdI\/AAAAAAAADnk\/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB\/w1200-h630-p-k-nu\/ipsum-opsum.gif", + "https:\/\/2.bp.blogspot.com\/-chCZZinlUTg\/WEcxvJo9gdI\/AAAAAAAADnk\/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB\/s640\/ipsum-opsum.gif", + "https:\/\/2.bp.blogspot.com\/-5aRh1dM6Unc\/WEcNs55RGhI\/AAAAAAAADnI\/tzr_oOJjZwgWd9Vu25ydY0UwB3eXKupXwCLcB\/s200\/image01.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-metadata.json new file mode 100644 index 000000000..d6b1330af --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Posted by Andrew Hayden, Software Engineer on Google Play Android users are downloading tens of billions of apps and games on Google Pla...", + "Image": "https:\/\/2.bp.blogspot.com\/-chCZZinlUTg\/WEcxvJo9gdI\/AAAAAAAADnk\/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB\/w1200-h630-p-k-nu\/ipsum-opsum.gif", + "Title": "Saving Data: Reducing the size of App Updates by 65%", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected.html new file mode 100644 index 000000000..05e072336 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected.html @@ -0,0 +1,174 @@ +
          +

          +Posted by Andrew Hayden, Software Engineer on Google Play +

          +

          +Android users are downloading tens of billions of apps and games on Google Play. + We're also seeing developers update their apps frequently in order to provide +users with great content, improve security, and enhance the overall user +experience. It takes a lot of data to download these updates and we know users +care about how much data their devices are using. Earlier this year, we +announced that we started using the +bsdiff algorithm (by +Colin Percival). Using bsdiff, we were able to reduce the size of app +updates on average by 47% compared to the full APK size. +

          +

          +Today, we're excited to share a new approach that goes further — File-by-File +patching. App Updates using File-by-File patching are, on average, +65% smaller than the full app, and in some cases more than 90% +smaller. +

          +

          +The savings, compared to our previous approach, add up to 6 petabytes of user +data saved per day! +

          +

          +In order to get the new version of the app, Google Play sends your device a +patch that describes the differences between the old and new versions +of the app. +

          +

          +Imagine you are an author of a book about to be published, and wish to change a +single sentence - it's much easier to tell the editor which sentence to change +and what to change, rather than send an entirely new book. In the same way, +patches are much smaller and much faster to download than the entire APK. +

          +

          +Techniques used in File-by-File +patching +

          +

          +Android apps are packaged as APKs, which are ZIP files with special conventions. +Most of the content within the ZIP files (and APKs) is compressed using a +technology called Deflate. +Deflate is really good at compressing data but it has a drawback: it makes +identifying changes in the original (uncompressed) content really hard. Even a +tiny change to the original content (like changing one word in a book) can make +the compressed output of deflate look completely different. Describing +the differences between the original content is easy, but describing +the differences between the compressed content is so hard that it leads +to inefficient patches. +

          +

          +Watch how much the compressed text on the right side changes from a one-letter +change in the uncompressed text on the left: +

          +

          +

          +File-by-File therefore is based on detecting changes in the uncompressed data. +To generate a patch, we first decompress both old and new files before computing +the delta (we still use bsdiff here). Then to apply the patch, we decompress the +old file, apply the delta to the uncompressed content and then recompress the +new file. In doing so, we need to make sure that the APK on your device is a +perfect match, byte for byte, to the one on the Play Store (see APK Signature +Schema v2 for why). +

          +

          +When recompressing the new file, we hit two complications. First, Deflate has a +number of settings that affect output; and we don't know which settings were +used in the first place. Second, many versions of deflate exist and we need to +know whether the version on your device is suitable. +

          +

          +Fortunately, after analysis of the apps on the Play Store, we've discovered that +recent and compatible versions of deflate based on zlib (the most popular +deflate library) account for almost all deflated content in the Play Store. In +addition, the default settings (level=6) and maximum compression settings +(level=9) are the only settings we encountered in practice. +

          +

          +Knowing this, we can detect and reproduce the original deflate settings. This +makes it possible to uncompress the data, apply a patch, and then recompress the +data back to exactly the same bytes as originally uploaded. +

          +

          +However, there is one trade off; extra processing power is needed on the device. +On modern devices (e.g. from 2015), recompression can take a little over a +second per megabyte and on older or less powerful devices it can be longer. +Analysis so far shows that, on average, if the patch size is halved then the +time spent applying the patch (which for File-by-File includes recompression) is +doubled. +

          +

          +For now, we are limiting the use of this new patching technology to auto-updates +only, i.e. the updates that take place in the background, usually at night when +your phone is plugged into power and you're not likely to be using it. This +ensures that users won't have to wait any longer than usual for an update to +finish when manually updating an app. +

          +

          +How effective is File-by-File +Patching? +

          +

          +Here are examples of app updates already using File-by-File Patching: +

          +
          + +
          +

          Application

          +

          Original Size

          +

          Previous (BSDiff) Patch Size

          +

          (% vs original)

          +

          File-by-File Patch Size (% vs original)

          +
          +

          71.1 MB

          +

          13.4 MB (-81%)

          +

          8.0 MB (-89%)

          +
          +

          32.7 MB

          +

          17.5 MB (-46%)

          +

          9.6 MB (-71%)

          +
          +

          17.8 MB

          +

          7.6 MB (-57%)

          +

          7.3 MB (-59%)

          +
          +

          18.9 MB

          +

          17.2 MB (-9%)

          +

          13.1 MB (-31%)

          +
          +

          52.4 MB

          +

          19.1 MB (-64%)

          +

          8.4 MB (-84%)

          +
          +

          16.2 MB

          +

          7.7 MB (-52%)

          +

          1.2 MB (-92%)

          +
          + +
          +

          Disclaimer: if you see different patch sizes when you press "update" +manually, that is because we are not currently using File-by-file for +interactive updates, only those done in the background.

          +Saving data and making our +users (& developers!) happy +

          +

          +These changes are designed to ensure our community of over a billion Android +users use as little data as possible for regular app updates. The best thing is +that as a developer you don't need to do anything. You get these reductions to +your update size for free! +

          + +

          +If you'd like to know more about File-by-File patching, including the technical +details, head over to the Archive Patcher GitHub +project where you can find information, including the source code. Yes, +File-by-File patching is completely open-source! +

          +

          +As a developer if you're interested in reducing your APK size still further, +here are some general +tips on reducing APK size. +

          +

          + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/source.html new file mode 100644 index 000000000..b9ca816ee --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/source.html @@ -0,0 +1,3165 @@ + + + + + + + + + + + + + + + + + + + + +Saving Data: Reducing the size of App Updates by 65% | Android Developers Blog + + + + + + + + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          This Blog
          This Blog
           
           
           
          +
          + +
          + +

          06 December 2016

          + +
          + +
          +
          + +

          +Saving Data: Reducing the size of App Updates by 65% +

          +
          +
          +
          +
          +

          +Posted by Andrew Hayden, Software Engineer on Google Play +

          +

          +Android users are downloading tens of billions of apps and games on Google Play. + We're also seeing developers update their apps frequently in order to provide +users with great content, improve security, and enhance the overall user +experience. It takes a lot of data to download these updates and we know users +care about how much data their devices are using. Earlier this year, we +announced that we started using the +bsdiff algorithm (by +Colin Percival). Using bsdiff, we were able to reduce the size of app +updates on average by 47% compared to the full APK size. +

          +

          +Today, we're excited to share a new approach that goes further — File-by-File +patching. App Updates using File-by-File patching are, on average, +65% smaller than the full app, and in some cases more than 90% +smaller. +

          +

          +The savings, compared to our previous approach, add up to 6 petabytes of user +data saved per day! +

          +

          +In order to get the new version of the app, Google Play sends your device a +patch that describes the differences between the old and new versions +of the app. +

          +

          +Imagine you are an author of a book about to be published, and wish to change a +single sentence - it's much easier to tell the editor which sentence to change +and what to change, rather than send an entirely new book. In the same way, +patches are much smaller and much faster to download than the entire APK. +

          +

          +Techniques used in File-by-File +patching +

          +

          +Android apps are packaged as APKs, which are ZIP files with special conventions. +Most of the content within the ZIP files (and APKs) is compressed using a +technology called Deflate. +Deflate is really good at compressing data but it has a drawback: it makes +identifying changes in the original (uncompressed) content really hard. Even a +tiny change to the original content (like changing one word in a book) can make +the compressed output of deflate look completely different. Describing +the differences between the original content is easy, but describing +the differences between the compressed content is so hard that it leads +to inefficient patches. +

          +

          +Watch how much the compressed text on the right side changes from a one-letter +change in the uncompressed text on the left: +

          +
          +

          +File-by-File therefore is based on detecting changes in the uncompressed data. +To generate a patch, we first decompress both old and new files before computing +the delta (we still use bsdiff here). Then to apply the patch, we decompress the +old file, apply the delta to the uncompressed content and then recompress the +new file. In doing so, we need to make sure that the APK on your device is a +perfect match, byte for byte, to the one on the Play Store (see APK Signature +Schema v2 for why). +

          +

          +When recompressing the new file, we hit two complications. First, Deflate has a +number of settings that affect output; and we don't know which settings were +used in the first place. Second, many versions of deflate exist and we need to +know whether the version on your device is suitable. +

          +

          +Fortunately, after analysis of the apps on the Play Store, we've discovered that +recent and compatible versions of deflate based on zlib (the most popular +deflate library) account for almost all deflated content in the Play Store. In +addition, the default settings (level=6) and maximum compression settings +(level=9) are the only settings we encountered in practice. +

          +

          +Knowing this, we can detect and reproduce the original deflate settings. This +makes it possible to uncompress the data, apply a patch, and then recompress the +data back to exactly the same bytes as originally uploaded. +

          +

          +However, there is one trade off; extra processing power is needed on the device. +On modern devices (e.g. from 2015), recompression can take a little over a +second per megabyte and on older or less powerful devices it can be longer. +Analysis so far shows that, on average, if the patch size is halved then the +time spent applying the patch (which for File-by-File includes recompression) is +doubled. +

          +

          +For now, we are limiting the use of this new patching technology to auto-updates +only, i.e. the updates that take place in the background, usually at night when +your phone is plugged into power and you're not likely to be using it. This +ensures that users won't have to wait any longer than usual for an update to +finish when manually updating an app. +

          +

          +How effective is File-by-File +Patching? +

          +

          +Here are examples of app updates already using File-by-File Patching: +

          +
          +
          +
          +
          + + + + + + + + +
          +Application
          +
          +Original Size
          +
          +Previous (BSDiff) Patch Size
          +
          +(% vs original)
          +
          +File-by-File Patch Size (% vs original)
          +
          +
          +71.1 MB
          +
          +13.4 MB (-81%)
          +
          +8.0 MB (-89%)
          +
          +
          +32.7 MB
          +
          +17.5 MB (-46%)
          +
          +9.6 MB (-71%)
          +
          +
          +17.8 MB
          +
          +7.6 MB (-57%)
          +
          +7.3 MB (-59%)
          +
          +
          +18.9 MB
          +
          +17.2 MB (-9%)
          +
          +13.1 MB (-31%)
          +
          +
          +52.4 MB
          +
          +19.1 MB (-64%)
          +
          +8.4 MB (-84%)
          +
          +
          +16.2 MB
          +
          +7.7 MB (-52%)
          +
          +1.2 MB (-92%)
          +
          +
          +
          +
          +
          +
          +Disclaimer: if you see different patch sizes when you press "update" +manually, that is because we are not currently using File-by-file for +interactive updates, only those done in the background. +

          +Saving data and making our +users (& developers!) happy +

          +

          +These changes are designed to ensure our community of over a billion Android +users use as little data as possible for regular app updates. The best thing is +that as a developer you don't need to do anything. You get these reductions to +your update size for free! +

          + +

          +If you'd like to know more about File-by-File patching, including the technical +details, head over to the Archive Patcher GitHub +project where you can find information, including the source code. Yes, +File-by-File patching is completely open-source! +

          +

          +As a developer if you're interested in reducing your APK size still further, +here are some general +tips on reducing APK size. +

          +
          + +
          +
          + +
          +
          + + +
          +
          + +
          + +
          +
          + +Newer Post + + +Older Post + +Home +
          +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          + +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +
          +
          +
          +
          + + + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/config.json new file mode 100644 index 000000000..0ac6816ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/config.json @@ -0,0 +1,3 @@ +{ + "ArticleByLine": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-images.json new file mode 100644 index 000000000..3f6b61062 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-images.json @@ -0,0 +1,6 @@ +[ + "http:\/\/fakehost\/images\/2015\/03-qgis-map-sm.png", + "http:\/\/fakehost\/images\/2015\/03-qgis-query-sm.png", + "http:\/\/fakehost\/images\/2015\/03-qgis-simplify-sm.png", + "http:\/\/fakehost\/images\/2015\/03-qgis-style-sm.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-metadata.json new file mode 100644 index 000000000..584887a46 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By Nathan Willis\n March 25, 2015", + "Direction": null, + "Excerpt": "The Arduino has been one of the biggest success stories of the open-hardware movement, but that success does not protect it from internal conflict. In recent months, two of the project's founders have come into conflict about the direction of future efforts—and that conflict has turned into a legal dispute about who owns the rights to the Arduino trademark.", + "Image": null, + "Title": "LWN.net Weekly Edition for March 26, 2015 [LWN.net]", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected.html new file mode 100644 index 000000000..358f95655 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected.html @@ -0,0 +1,373 @@ +
          + +
          +

          A trademark battle in the Arduino community

          + +

          The Arduino has been one of the biggest success stories of the open-hardware movement, but that success does not protect it from internal conflict. In recent months, two of the project's founders have come into conflict about the direction of future efforts—and that conflict has turned into a legal dispute about who owns the rights to the Arduino trademark.

          +

          The current fight is a battle between two companies that both bear the Arduino name: Arduino LLC and Arduino SRL. The disagreements that led to present state of affairs go back a bit further.

          +

          The Arduino project grew out of 2005-era course work taught at the Interaction Design Institute Ivrea (IDII) in Ivrea, Italy (using Processing, Wiring, and pre-existing microcontroller hardware). After the IDII program was discontinued, the open-hardware Arduino project as we know it was launched by Massimo Banzi, David Cuartielles, and David Mellis (who had worked together at IDII), with co-founders Tom Igoe and Gianluca Martino joining shortly afterward. The project released open hardware designs (including full schematics and design files) as well as the microcontroller software to run on the boards and the desktop IDE needed to program it.

          +

          Arduino LLC was incorporated in 2008 by Banzi, Cuartielles, Mellis, Igoe, and Martino. The company is registered in the United States, and it has continued to design the Arduino product line, develop the software, and run the Arduino community site. The hardware devices themselves, however, were manufactured by a separate company, "Smart Projects SRL," that was founded by Martino. "SRL" is essentially the Italian equivalent of "LLC"—Smart Projects was incorporated in Italy.

          +

          This division of responsibilities—with the main Arduino project handling everything except for board manufacturing—may seem like an odd one, but it is consistent with Arduino's marketing story. From its earliest days, the designs for the hardware have been freely available, and outside companies were allowed to make Arduino-compatible devices. The project has long run a certification +program for third-party manufacturers interested in using the "Arduino" branding, but allows (and arguably even encourages) informal software and firmware compatibility.

          +

          The Arduino branding was not formally registered as a trademark in the early days, however. Arduino LLC filed to register the US trademark in April 2009, and it was granted in 2011.

          +

          At this point, the exact events begin to be harder to verify, but the original group of founders reportedly had a difference of opinion about how to license out hardware production rights to other companies. Wired Italy reports that Martino and Smart Projects resisted the other four founders' plans to "internationalize" production—although it is not clear if that meant that Smart Projects disapproved of licensing out any official hardware manufacturing to other companies, or had some other concern. Heise Online adds that the conflict seemed to be about moving some production to China.

          +

          What is clear is that Smart Projects filed a petition with the US Patent and Trademark Office (USPTO) in October 2014 asking the USPTO to cancel Arduino LLC's trademark on "Arduino." Then, in November 2014, Smart Projects changed its company's name to Arduino SRL. Somewhere around that time, Martino sold off his ownership stake in Smart Projects SRL and new owner Federico Musto was named CEO.

          +

          Unsurprisingly, Arduino LLC did not care for the petition to the USPTO and, in January 2015, the company filed a trademark-infringement lawsuit against Arduino SRL. Confusing matters further, the re-branded Arduino SRL has set up its own web site using the domain name arduino.org, which duplicates most of the site features found on the original Arduino site (arduino.cc). That includes both a hardware store and software downloads.

          +

          Musto, the new CEO of the company now called Arduino SRL, has a bit of a history with Arduino as well. His other manufacturing business had collaborated with Arduino LLC on the design and production of the Arduino Yún, which has received some criticism for including proprietary components.

          +

          Hackaday has run a two-part series (in February and March) digging into the ins and outs of the dispute, including the suggestion that Arduino LLC's recent release of version 1.6.0 of the Arduino IDE was a move intended to block Arduino SRL from hijacking IDE development. Commenter Paul Stoffregen (who was the author of the Heise story above) noted that Arduino SRL recently created a fork of the Arduino IDE on GitHub.

          +

          Most recently, Banzi broke his silence about the dispute in a story published at MAKEzine. There, Banzi claims that Martino secretly filed a trademark application on "Arduino" in Italy in 2008 and told none of the other Arduino founders. He also details a series of unpleasant negotiations between the companies, including Smart Projects stopping the royalty payments it had long sent to Arduino LLC for manufacturing devices and re-branding its boards with the Arduino.org URL.

          +

          Users appear to be stuck in the middle. Banzi says that several retail outlets that claim to be selling "official" Arduino boards are actually paying Arduino SRL, not Arduino LLC, but it is quite difficult to determine which retailers are lined up on which side, since there are (typically) several levels of supplier involved. The two Arduino companies' web sites also disagree about the available hardware, with Arduino.org offering the new Arduino Zero model for sale today and Arduino.cc listing it as "Coming soon."

          +

          Furthermore, as Hackaday's March story explains, the recently-released Arduino.cc IDE now reports that boards manufactured by Arduino SRL are "uncertified." That warning does not prevent users from programming the other company's hardware, but it will no doubt confuse quite a few users who believe they possess genuine Arduino-manufactured devices.

          +

          The USPTO page for Arduino SRL's petition notes pre-trial disclosure dates have been set for August and October of 2015 (for Arduino SRL and Arduino LLC, respectively), which suggests that this debate is far from over. Of course, it is always disappointing to observe a falling out between project founders, particularly when the project in question has had such an impact on open-source software and open hardware.

          +

          One could argue that disputes of this sort are proof that even small projects started among friends need to take legal and intellectual-property issues (such as trademarks) seriously from the very beginning—perhaps Arduino and Smart Projects thought that an informal agreement was all that was necessary in the early days, after all.

          +

          But, perhaps, once a project becomes profitable, there is simply no way to predict what might happen. Arduino LLC would seem to have a strong case for continual and rigorous use of the "Arduino" trademark, which is the salient point in US trademark law. It could still be a while before the courts rule on either side of that question, however.

          +

          Comments (5 posted)

          + +

          Mapping and data mining with QGIS 2.8

          +

          By Nathan Willis +

          March 25, 2015

          +

          QGIS is a free-software geographic information system (GIS) tool; it provides a unified interface in which users can import, edit, and analyze geographic-oriented information, and it can produce output as varied as printable maps or map-based web services. The project recently made its first update to be designated a long-term release (LTR), and that release is both poised for high-end usage and friendly to newcomers alike.

          +

          The new release is version 2.8, which was unveiled on March 2. An official change +log is available on the QGIS site, while the release itself was announced primarily through blog posts (such as this +post by Anita Graser of the project's steering committee). Downloads are available for a variety of platforms, including packages for Ubuntu, Debian, Fedora, openSUSE, and several other distributions.

          +

          [QGIS main interface]

          As the name might suggest, QGIS is a Qt application; the latest release will, in fact, build on both Qt4 and Qt5, although the binaries released by the project come only in Qt4 form at present. 2.8 has been labeled a long-term release (LTR)—which, in this case, means that the project has committed to providing backported bug fixes for one full calendar year, and that the 2.8.x series is in permanent feature freeze. The goal, according to the change log, is to provide a stable version suitable for businesses and deployments in other large organizations. The change log itself points out that the development of quite a few new features was underwritten by various GIS companies or university groups, which suggests that taking care of these organizations' needs is reaping dividends for the project.

          +

          For those new to QGIS (or GIS in general), there is a detailed new-user tutorial that provides a thorough walk-through of the data-manipulation, mapping, and analysis functions. Being a new user, I went through the tutorial; although there are a handful of minor differences between QGIS 2.8 and the version used in the text (primarily whether specific features were accessed through a toolbar or right-click menu), on the whole it is well worth the time.

          +

          QGIS is designed to make short work of importing spatially oriented data sets, mining information from them, and turning the results into a meaningful visualization. Technically speaking, the visualization output is optional: one could simply extract the needed statistics and results and use them to answer some question or, perhaps, publish the massaged data set as a database for others to use.

          +

          But well-made maps are often the easiest way to illuminate facts about populations, political regions, geography, and many other topics when human comprehension is the goal. QGIS makes importing data from databases, web-mapping services (WMS), and even unwieldy flat-file data dumps a painless experience. It handles converting between a variety of map-referencing systems more or less automatically, and allows the user to focus on finding the useful attributes of the data sets and rendering them on screen.

          +

          Here be data

          +

          The significant changes in QGIS 2.8 fall into several categories. There are updates to how QGIS handles the mathematical expressions and queries users can use to filter information out of a data set, improvements to the tools used to explore the on-screen map canvas, and enhancements to the "map composer" used to produce visual output. This is on top of plenty of other under-the-hood improvements, naturally.

          +

          [QGIS query builder]

          In the first category are several updates to the filtering tools used to mine a data set. Generally speaking, each independent data set is added to a QGIS project as its own layer, then transformed with filters to focus in on a specific portion of the original data. For instance, the land-usage statistics for a region might be one layer, while roads and buildings for the same region from OpenStreetMap might be two additional layers. Such filters can be created in several ways: there is a "query builder" that lets the user construct and test expressions on a data layer, then save the results, an SQL console for performing similar queries on a database, and spreadsheet-like editing tools for working directly on data tables.

          +

          All three have been improved in this release. New are support for if(condition, true, false) conditional statements, a set of operations for geometry primitives (e.g., to test whether regions overlap or lines intersect), and an "integer divide" operation. Users can also add comments to their queries to annotate their code, and there is a new custom +function editor for writing Python functions that can be called in mathematical expressions within the query builder.

          +

          It is also now possible to select only some rows in a table, then perform calculations just on the selection—previously, users would have to extract the rows of interest into a new table first. Similarly, in the SQL editor, the user can highlight a subset of the SQL query and execute it separately, which is no doubt helpful for debugging.

          +

          There have also been several improvements to the Python and Processing plugins. Users can now drag-and-drop Python scripts onto QGIS and they will be run automatically. Several new analysis algorithms are now available through the Processing interface that were previously Python-only; they include algorithms for generating grids of points or vectors within a region, splitting layers and lines, generating hypsometric +curves, refactoring data sets, and more.

          +

          Maps in, maps out

          +

          [QGIS simplify tool]

          The process of working with on-screen map data picked up some improvements in the new release as well. Perhaps the most fundamental is that each map layer added to the canvas is now handled in its own thread, so fewer hangs in the user interface are experienced when re-rendering a layer (as happens whenever the user changes the look of points or shapes in a layer). Since remote databases can also be layers, this multi-threaded approach is more resilient against connectivity problems, too. The interface also now supports temporary "scratch" layers that can be used to merge, filter, or simply experiment with a data set, but are not saved when the current project is saved.

          +

          For working on the canvas itself, polygonal regions can now use raster images (tiled, if necessary) as fill colors, the map itself can be rotated arbitrarily, and objects can be "snapped" to align with items on any layer (not just the current layer). For working with raster image layers (e.g., aerial photographs) or simply creating new geometric shapes by hand, there is a new digitizing tool that can offer assistance by locking lines to specific angles, automatically keeping borders parallel, and other niceties.

          +

          There is a completely overhauled "simplify" tool that is used to reduce the number of extraneous vertices of a vector layer (thus reducing its size). The old simplify tool provided only a relative "tolerance" setting that did not correspond directly to any units. With the new tool, users can set a simplification threshold in terms of the underlying map units, layer-specific units, pixels, and more—and, in addition, the tool reports how much the simplify operation has reduced the size of the data.

          +

          [QGIS style editing]

          There has also been an effort to present a uniform interface to one of the most important features of the map canvas: the ability to change the symbology used for an item based on some data attribute. The simplest example might be to change the line color of a road based on whether its road-type attribute is "highway," "service road," "residential," or so on. But the same feature is used to automatically highlight layer information based on the filtering and querying functionality discussed above. The new release allows many more map attributes to be controlled by these "data definition" settings, and provides a hard-to-miss button next to each attribute, through which a custom data definition can be set.

          +

          QGIS's composer module is the tool used to take project data and generate a map that can be used outside of the application (in print, as a static image, or as a layer for MapServer or some other software tool, for example). Consequently, it is not a simple select-and-click-export tool; composing the output can involve a lot of choices about which data to make visible, how (and where) to label it, and how to make it generally accessible.

          +

          The updated composer in 2.8 now has a full-screen mode and sports several new options for configuring output. For instance, the user now has full control over how map axes are labeled. In previous releases, the grid coordinates of the map could be turned on or off, but the only options were all or nothing. Now, the user can individually choose whether coordinates are displayed on all four sides, and can even choose in which direction vertical text labels will run (so that they can be correctly justified to the edge of the map, for example).

          +

          There are, as usual, many more changes than there is room to discuss. Some particularly noteworthy improvements include the ability to save and load bookmarks for frequently used data sources (perhaps most useful for databases, web services, and other non-local data) and improvements to QGIS's server module. This module allows one QGIS instance to serve up data accessible to other QGIS applications (for example, to simply team projects). The server can now be extended with Python plugins and the data layers that it serves can be styled with style rules like those used in the desktop interface.

          +

          QGIS is one of those rare free-software applications that is both powerful enough for high-end work and yet also straightforward to use for the simple tasks that might attract a newcomer to GIS in the first place. The 2.8 release, particularly with its project-wide commitment to long-term support, appears to be an update well worth checking out, whether one needs to create a simple, custom map or to mine a database for obscure geo-referenced meaning.

          +

          Comments (3 posted)

          + +

          Development activity in LibreOffice and OpenOffice

          +

          By Jonathan Corbet +

          March 25, 2015

          The LibreOffice project was announced with great fanfare in September 2010. Nearly one year later, the OpenOffice.org project (from which LibreOffice was forked) was +cut loose from Oracle and found a new home as an Apache project. It is fair to say that the rivalry between the two projects in the time since then has been strong. Predictions that one project or the other would fail have not been borne out, but that does not mean that the two projects are equally successful. A look at the two projects' development communities reveals some interesting differences. +

          +

          Release histories

          +

          Apache OpenOffice has made two releases in the past year: 4.1 in April 2014 and 4.1.1 (described as "a micro update" in the release announcement) in August. The main feature added during that time would appear to be significantly improved accessibility support.

          +

          The release history for LibreOffice tells a slightly different story:

          + +
          +
          +

          It seems clear that LibreOffice has maintained a rather more frenetic release cadence, generally putting out at least one release per month. The project typically keeps at least two major versions alive at any one time. Most of the releases are of the minor, bug-fix variety, but there have been two major releases in the last year as well.

          + +

          Development statistics

          +

          In the one-year period since late March 2014, there have been 381 changesets committed to the OpenOffice Subversion repository. The most active committers are:

          + +
          + + + +
          Most active OpenOffice developers
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changesets
          Herbert Dürr6316.6%
          Jürgen Schmidt             5614.7%
          Armin Le Grand5614.7%
          Oliver-Rainer Wittmann4612.1%
          Tsutomu Uchino338.7%
          Kay Schenk277.1%
          Pedro Giffuni236.1%
          Ariel Constenla-Haile225.8%
          Andrea Pescetti143.7%
          Steve Yin112.9%
          Andre Fischer102.6%
          Yuri Dario71.8%
          Regina Henschel61.6%
          Juan C. Sanz20.5%
          Clarence Guo20.5%
          Tal Daniel20.5%
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changed lines
          Jürgen Schmidt             45549988.1%
          Andre Fischer261483.8%
          Pedro Giffuni231833.4%
          Armin Le Grand110181.6%
          Juan C. Sanz45820.7%
          Oliver-Rainer Wittmann43090.6%
          Andrea Pescetti39080.6%
          Herbert Dürr28110.4%
          Tsutomu Uchino19910.3%
          Ariel Constenla-Haile12580.2%
          Steve Yin10100.1%
          Kay Schenk6160.1%
          Regina Henschel4170.1%
          Yuri Dario2680.0%
          tal160.0%
          Clarence Guo110.0%
          +

          In truth, the above list is not just the most active OpenOffice developers — it is all of them; a total of 16 developers have committed changes to OpenOffice in the last year. Those developers changed 528,000 lines of code, but, as can be seen above, Jürgen Schmidt accounted for the bulk of those changes, which were mostly updates to translation files.

          +

          The top four developers in the "by changesets" column all work for IBM, so IBM is responsible for a minimum of about 60% of the changes to OpenOffice in the last year.

          +

          The picture for LibreOffice is just a little bit different; in the same one-year period, the project has committed 22,134 changesets from 268 developers. The most active of these developers were:

          + +
          + + + +
          Most active LibreOffice developers
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changesets
          Caolán McNamara430719.5%
          Stephan Bergmann235110.6%
          Miklos Vajna14496.5%
          Tor Lillqvist11595.2%
          Noel Grandin10644.8%
          Markus Mohrhard9354.2%
          Michael Stahl9154.1%
          Kohei Yoshida7553.4%
          Tomaž Vajngerl6583.0%
          Thomas Arnhold6192.8%
          Jan Holesovsky4662.1%
          Eike Rathke4572.1%
          Matteo Casalin4422.0%
          Bjoern Michaelsen4211.9%
          Chris Sherlock3961.8%
          David Tardon3861.7%
          Julien Nabet3621.6%
          Zolnai Tamás3381.5%
          Matúš Kukan2561.2%
          Robert Antoni Buj Gelonch2311.0%
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changed lines
          Lionel Elie Mamane24406212.5%
          Noel Grandin23871112.2%
          Stephan Bergmann1612208.3%
          Miklos Vajna1293256.6%
          Caolán McNamara975445.0%
          Tomaž Vajngerl694043.6%
          Tor Lillqvist594983.1%
          Laurent Balland-Poirier528022.7%
          Markus Mohrhard505092.6%
          Kohei Yoshida455142.3%
          Chris Sherlock367881.9%
          Peter Foley343051.8%
          Christian Lohmaier337871.7%
          Thomas Arnhold327221.7%
          David Tardon216811.1%
          David Ostrovsky216201.1%
          Jan Holesovsky207921.1%
          Valentin Kettner205261.1%
          Robert Antoni Buj Gelonch204471.0%
          Michael Stahl182160.9%
          +

          To a first approximation, the top ten companies supporting LibreOffice in the last year are:

          + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          Companies supporting LibreOffice development
          (by changesets)
          Red Hat841738.0%
          Collabora Multimedia653129.5%
          (Unknown)512623.2%
          (None)14906.7%
          Canonical4221.9%
          Igalia S.L.800.4%
          Ericsson210.1%
          Yandex180.1%
          FastMail.FM170.1%
          SUSE70.0%
          +

          Development work on LibreOffice is thus concentrated in a small number of companies, though it is rather more spread out than OpenOffice development. It is worth noting that the LibreOffice developers with unknown affiliation, who contributed 23% of the changes, make up 82% of the developer base, so there would appear to be a substantial community of developers contributing from outside the above-listed companies.

          + +

          Some conclusions

          +

          Last October, some concerns were raised on the OpenOffice list about the health of that project's community. At the time, Rob Weir shrugged them off as the result of a marketing effort by the LibreOffice crowd. There can be no doubt that the war of words between these two projects has gotten tiresome at times, but, looking at the above numbers, it is hard not to conclude that there is an issue that goes beyond marketing hype here.

          +

          In the 4½ years since its founding, the LibreOffice project has put together a community with over 250 active developers. There is support from multiple companies and an impressive rate of patches going into the project's repository. The project's ability to sustain nearly monthly releases on two branches is a direct result of that community's work. Swearing at LibreOffice is one of your editor's favorite pastimes, but it seems clear that the project is on a solid footing with a healthy community.

          +

          OpenOffice, instead, is driven by four developers from a single company — a company that appears to have been deemphasizing OpenOffice work for some time. As a result, the project's commit rate is a fraction of what LibreOffice is able to sustain and releases are relatively rare. As of this writing, the OpenOffice +blog shows no posts in 2015. In the October discussion, Rob said that "the dogs may +bark but the caravan moves on." That may be true, but, in this case, the caravan does not appear to be moving with any great speed.

          +

          Anything can happen in the free-software development world; it is entirely possible that a reinvigorated OpenOffice.org may yet give LibreOffice a run for its money. But something will clearly have to change to bring that future around. As things stand now, it is hard not to conclude that LibreOffice has won the battle for developer participation.

          +

          Comments (74 posted)

          + +

          Page editor: Jonathan Corbet +

          +

          Inside this week's LWN.net Weekly Edition

          +
          • Security: Toward secure package downloads; New vulnerabilities in drupal, mozilla, openssl, python-django ...
          • +
          • Kernel: LSFMM coverage: NFS, defragmentation, epoll(), copy offload, and more.
          • +
          • Distributions: A look at Debian's 2015 DPL candidates; Debian, Fedora, ...
          • +
          • Development: A look at GlusterFS; LibreOffice Online; Open sourcing existing code; Secure Boot in Windows 10; ...
          • +
          • Announcements: A Turing award for Michael Stonebraker, Sébastien Jodogne, ReGlue are Free Software Award winners, Kat Walsh joins FSF board of directors, Cyanogen, ...
          • +

          Next page: Security>> +

          + + + + + + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/source.html new file mode 100644 index 000000000..85eea11d8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/source.html @@ -0,0 +1,820 @@ + + + + + LWN.net Weekly Edition for March 26, 2015 [LWN.net] + + + + + + + + + + + + + + + + + + +
          +
          + LWN.net Logo +
          +

          + + +

          +

          + + + + +
          + + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          +

          LWN.net Weekly Edition for March 26, 2015

          +
          +

          A trademark battle in the Arduino community

          +
          By Nathan Willis +
          March 25, 2015
          +

          The Arduino has been one of the biggest success stories of the open-hardware movement, but that success does not protect it from internal conflict. In recent months, two of the project's founders have come into conflict about the direction of future efforts—and that conflict has turned into a legal dispute about who owns the rights to the Arduino trademark.

          +

          The current fight is a battle between two companies that both bear the Arduino name: Arduino LLC and Arduino SRL. The disagreements that led to present state of affairs go back a bit further.

          +

          The Arduino project grew out of 2005-era course work taught at the Interaction Design Institute Ivrea (IDII) in Ivrea, Italy (using Processing, Wiring, and pre-existing microcontroller hardware). After the IDII program was discontinued, the open-hardware Arduino project as we know it was launched by Massimo Banzi, David Cuartielles, and David Mellis (who had worked together at IDII), with co-founders Tom Igoe and Gianluca Martino joining shortly afterward. The project released open hardware designs (including full schematics and design files) as well as the microcontroller software to run on the boards and the desktop IDE needed to program it.

          +

          Arduino LLC was incorporated in 2008 by Banzi, Cuartielles, Mellis, Igoe, and Martino. The company is registered in the United States, and it has continued to design the Arduino product line, develop the software, and run the Arduino community site. The hardware devices themselves, however, were manufactured by a separate company, "Smart Projects SRL," that was founded by Martino. "SRL" is essentially the Italian equivalent of "LLC"—Smart Projects was incorporated in Italy.

          +

          This division of responsibilities—with the main Arduino project handling everything except for board manufacturing—may seem like an odd one, but it is consistent with Arduino's marketing story. From its earliest days, the designs for the hardware have been freely available, and outside companies were allowed to make Arduino-compatible devices. The project has long run a certification +program for third-party manufacturers interested in using the "Arduino" branding, but allows (and arguably even encourages) informal software and firmware compatibility.

          +

          The Arduino branding was not formally registered as a trademark in the early days, however. Arduino LLC filed to register the US trademark in April 2009, and it was granted in 2011.

          +

          At this point, the exact events begin to be harder to verify, but the original group of founders reportedly had a difference of opinion about how to license out hardware production rights to other companies. Wired Italy reports that Martino and Smart Projects resisted the other four founders' plans to "internationalize" production—although it is not clear if that meant that Smart Projects disapproved of licensing out any official hardware manufacturing to other companies, or had some other concern. Heise Online adds that the conflict seemed to be about moving some production to China.

          +

          What is clear is that Smart Projects filed a petition with the US Patent and Trademark Office (USPTO) in October 2014 asking the USPTO to cancel Arduino LLC's trademark on "Arduino." Then, in November 2014, Smart Projects changed its company's name to Arduino SRL. Somewhere around that time, Martino sold off his ownership stake in Smart Projects SRL and new owner Federico Musto was named CEO.

          +

          Unsurprisingly, Arduino LLC did not care for the petition to the USPTO and, in January 2015, the company filed a trademark-infringement lawsuit against Arduino SRL. Confusing matters further, the re-branded Arduino SRL has set up its own web site using the domain name arduino.org, which duplicates most of the site features found on the original Arduino site (arduino.cc). That includes both a hardware store and software downloads.

          +

          Musto, the new CEO of the company now called Arduino SRL, has a bit of a history with Arduino as well. His other manufacturing business had collaborated with Arduino LLC on the design and production of the Arduino Yún, which has received some criticism for including proprietary components.

          +

          Hackaday has run a two-part series (in February and March) digging into the ins and outs of the dispute, including the suggestion that Arduino LLC's recent release of version 1.6.0 of the Arduino IDE was a move intended to block Arduino SRL from hijacking IDE development. Commenter Paul Stoffregen (who was the author of the Heise story above) noted that Arduino SRL recently created a fork of the Arduino IDE on GitHub.

          +

          Most recently, Banzi broke his silence about the dispute in a story published at MAKEzine. There, Banzi claims that Martino secretly filed a trademark application on "Arduino" in Italy in 2008 and told none of the other Arduino founders. He also details a series of unpleasant negotiations between the companies, including Smart Projects stopping the royalty payments it had long sent to Arduino LLC for manufacturing devices and re-branding its boards with the Arduino.org URL.

          +

          Users appear to be stuck in the middle. Banzi says that several retail outlets that claim to be selling "official" Arduino boards are actually paying Arduino SRL, not Arduino LLC, but it is quite difficult to determine which retailers are lined up on which side, since there are (typically) several levels of supplier involved. The two Arduino companies' web sites also disagree about the available hardware, with Arduino.org offering the new Arduino Zero model for sale today and Arduino.cc listing it as "Coming soon."

          +

          Furthermore, as Hackaday's March story explains, the recently-released Arduino.cc IDE now reports that boards manufactured by Arduino SRL are "uncertified." That warning does not prevent users from programming the other company's hardware, but it will no doubt confuse quite a few users who believe they possess genuine Arduino-manufactured devices.

          +

          The USPTO page for Arduino SRL's petition notes pre-trial disclosure dates have been set for August and October of 2015 (for Arduino SRL and Arduino LLC, respectively), which suggests that this debate is far from over. Of course, it is always disappointing to observe a falling out between project founders, particularly when the project in question has had such an impact on open-source software and open hardware.

          +

          One could argue that disputes of this sort are proof that even small projects started among friends need to take legal and intellectual-property issues (such as trademarks) seriously from the very beginning—perhaps Arduino and Smart Projects thought that an informal agreement was all that was necessary in the early days, after all.

          +

          But, perhaps, once a project becomes profitable, there is simply no way to predict what might happen. Arduino LLC would seem to have a strong case for continual and rigorous use of the "Arduino" trademark, which is the salient point in US trademark law. It could still be a while before the courts rule on either side of that question, however.

          +

          Comments (5 posted)

          +

          +

          Mapping and data mining with QGIS 2.8

          +
          By Nathan Willis +
          March 25, 2015
          +

          QGIS is a free-software geographic information system (GIS) tool; it provides a unified interface in which users can import, edit, and analyze geographic-oriented information, and it can produce output as varied as printable maps or map-based web services. The project recently made its first update to be designated a long-term release (LTR), and that release is both poised for high-end usage and friendly to newcomers alike.

          +

          The new release is version 2.8, which was unveiled on March 2. An official change +log is available on the QGIS site, while the release itself was announced primarily through blog posts (such as this +post by Anita Graser of the project's steering committee). Downloads are available for a variety of platforms, including packages for Ubuntu, Debian, Fedora, openSUSE, and several other distributions.

          + [QGIS main interface] +

          As the name might suggest, QGIS is a Qt application; the latest release will, in fact, build on both Qt4 and Qt5, although the binaries released by the project come only in Qt4 form at present. 2.8 has been labeled a long-term release (LTR)—which, in this case, means that the project has committed to providing backported bug fixes for one full calendar year, and that the 2.8.x series is in permanent feature freeze. The goal, according to the change log, is to provide a stable version suitable for businesses and deployments in other large organizations. The change log itself points out that the development of quite a few new features was underwritten by various GIS companies or university groups, which suggests that taking care of these organizations' needs is reaping dividends for the project.

          +

          For those new to QGIS (or GIS in general), there is a detailed new-user tutorial that provides a thorough walk-through of the data-manipulation, mapping, and analysis functions. Being a new user, I went through the tutorial; although there are a handful of minor differences between QGIS 2.8 and the version used in the text (primarily whether specific features were accessed through a toolbar or right-click menu), on the whole it is well worth the time.

          +

          QGIS is designed to make short work of importing spatially oriented data sets, mining information from them, and turning the results into a meaningful visualization. Technically speaking, the visualization output is optional: one could simply extract the needed statistics and results and use them to answer some question or, perhaps, publish the massaged data set as a database for others to use.

          +

          But well-made maps are often the easiest way to illuminate facts about populations, political regions, geography, and many other topics when human comprehension is the goal. QGIS makes importing data from databases, web-mapping services (WMS), and even unwieldy flat-file data dumps a painless experience. It handles converting between a variety of map-referencing systems more or less automatically, and allows the user to focus on finding the useful attributes of the data sets and rendering them on screen.

          +

          Here be data

          +

          The significant changes in QGIS 2.8 fall into several categories. There are updates to how QGIS handles the mathematical expressions and queries users can use to filter information out of a data set, improvements to the tools used to explore the on-screen map canvas, and enhancements to the "map composer" used to produce visual output. This is on top of plenty of other under-the-hood improvements, naturally.

          + [QGIS query builder] +

          In the first category are several updates to the filtering tools used to mine a data set. Generally speaking, each independent data set is added to a QGIS project as its own layer, then transformed with filters to focus in on a specific portion of the original data. For instance, the land-usage statistics for a region might be one layer, while roads and buildings for the same region from OpenStreetMap might be two additional layers. Such filters can be created in several ways: there is a "query builder" that lets the user construct and test expressions on a data layer, then save the results, an SQL console for performing similar queries on a database, and spreadsheet-like editing tools for working directly on data tables.

          +

          All three have been improved in this release. New are support for if(condition, true, false) conditional statements, a set of operations for geometry primitives (e.g., to test whether regions overlap or lines intersect), and an "integer divide" operation. Users can also add comments to their queries to annotate their code, and there is a new custom +function editor for writing Python functions that can be called in mathematical expressions within the query builder.

          +

          It is also now possible to select only some rows in a table, then perform calculations just on the selection—previously, users would have to extract the rows of interest into a new table first. Similarly, in the SQL editor, the user can highlight a subset of the SQL query and execute it separately, which is no doubt helpful for debugging.

          +

          There have also been several improvements to the Python and Processing plugins. Users can now drag-and-drop Python scripts onto QGIS and they will be run automatically. Several new analysis algorithms are now available through the Processing interface that were previously Python-only; they include algorithms for generating grids of points or vectors within a region, splitting layers and lines, generating hypsometric +curves, refactoring data sets, and more.

          +

          Maps in, maps out

          + [QGIS simplify tool] +

          The process of working with on-screen map data picked up some improvements in the new release as well. Perhaps the most fundamental is that each map layer added to the canvas is now handled in its own thread, so fewer hangs in the user interface are experienced when re-rendering a layer (as happens whenever the user changes the look of points or shapes in a layer). Since remote databases can also be layers, this multi-threaded approach is more resilient against connectivity problems, too. The interface also now supports temporary "scratch" layers that can be used to merge, filter, or simply experiment with a data set, but are not saved when the current project is saved.

          +

          For working on the canvas itself, polygonal regions can now use raster images (tiled, if necessary) as fill colors, the map itself can be rotated arbitrarily, and objects can be "snapped" to align with items on any layer (not just the current layer). For working with raster image layers (e.g., aerial photographs) or simply creating new geometric shapes by hand, there is a new digitizing tool that can offer assistance by locking lines to specific angles, automatically keeping borders parallel, and other niceties.

          +

          There is a completely overhauled "simplify" tool that is used to reduce the number of extraneous vertices of a vector layer (thus reducing its size). The old simplify tool provided only a relative "tolerance" setting that did not correspond directly to any units. With the new tool, users can set a simplification threshold in terms of the underlying map units, layer-specific units, pixels, and more—and, in addition, the tool reports how much the simplify operation has reduced the size of the data.

          + [QGIS style editing] +

          There has also been an effort to present a uniform interface to one of the most important features of the map canvas: the ability to change the symbology used for an item based on some data attribute. The simplest example might be to change the line color of a road based on whether its road-type attribute is "highway," "service road," "residential," or so on. But the same feature is used to automatically highlight layer information based on the filtering and querying functionality discussed above. The new release allows many more map attributes to be controlled by these "data definition" settings, and provides a hard-to-miss button next to each attribute, through which a custom data definition can be set.

          +

          QGIS's composer module is the tool used to take project data and generate a map that can be used outside of the application (in print, as a static image, or as a layer for MapServer or some other software tool, for example). Consequently, it is not a simple select-and-click-export tool; composing the output can involve a lot of choices about which data to make visible, how (and where) to label it, and how to make it generally accessible.

          +

          The updated composer in 2.8 now has a full-screen mode and sports several new options for configuring output. For instance, the user now has full control over how map axes are labeled. In previous releases, the grid coordinates of the map could be turned on or off, but the only options were all or nothing. Now, the user can individually choose whether coordinates are displayed on all four sides, and can even choose in which direction vertical text labels will run (so that they can be correctly justified to the edge of the map, for example).

          +

          There are, as usual, many more changes than there is room to discuss. Some particularly noteworthy improvements include the ability to save and load bookmarks for frequently used data sources (perhaps most useful for databases, web services, and other non-local data) and improvements to QGIS's server module. This module allows one QGIS instance to serve up data accessible to other QGIS applications (for example, to simply team projects). The server can now be extended with Python plugins and the data layers that it serves can be styled with style rules like those used in the desktop interface.

          +

          QGIS is one of those rare free-software applications that is both powerful enough for high-end work and yet also straightforward to use for the simple tasks that might attract a newcomer to GIS in the first place. The 2.8 release, particularly with its project-wide commitment to long-term support, appears to be an update well worth checking out, whether one needs to create a simple, custom map or to mine a database for obscure geo-referenced meaning.

          +

          Comments (3 posted)

          +

          +

          Development activity in LibreOffice and OpenOffice

          +
          By Jonathan Corbet +
          March 25, 2015
          The LibreOffice project was announced with great fanfare in September 2010. Nearly one year later, the OpenOffice.org project (from which LibreOffice was forked) was +cut loose from Oracle and found a new home as an Apache project. It is fair to say that the rivalry between the two projects in the time since then has been strong. Predictions that one project or the other would fail have not been borne out, but that does not mean that the two projects are equally successful. A look at the two projects' development communities reveals some interesting differences. +

          +

          Release histories

          +

          Apache OpenOffice has made two releases in the past year: 4.1 in April 2014 and 4.1.1 (described as "a micro update" in the release announcement) in August. The main feature added during that time would appear to be significantly improved accessibility support.

          +

          The release history for LibreOffice tells a slightly different story:

          +

          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          ReleaseDate
          4.2.3April 2014
          4.1.6April 2014
          4.2.4May 2014
          4.2.5June 2014
          4.3July 2014
          4.2.6August 2014
          4.3.1August 2014
          4.3.2September 2014
          4.2.7/4.3.3October 2014
          4.3.4November 2014
          4.2.8December 2014
          4.3.5December 2014
          4.4January 2015
          4.3.6February 2015
          4.4.1February 2015
          +
          +

          It seems clear that LibreOffice has maintained a rather more frenetic release cadence, generally putting out at least one release per month. The project typically keeps at least two major versions alive at any one time. Most of the releases are of the minor, bug-fix variety, but there have been two major releases in the last year as well.

          +

          +

          Development statistics

          +

          In the one-year period since late March 2014, there have been 381 changesets committed to the OpenOffice Subversion repository. The most active committers are:

          +

          +
          + + + + + + + + + + +
          Most active OpenOffice developers
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changesets
          Herbert Dürr6316.6%
          Jürgen Schmidt             5614.7%
          Armin Le Grand5614.7%
          Oliver-Rainer Wittmann4612.1%
          Tsutomu Uchino338.7%
          Kay Schenk277.1%
          Pedro Giffuni236.1%
          Ariel Constenla-Haile225.8%
          Andrea Pescetti143.7%
          Steve Yin112.9%
          Andre Fischer102.6%
          Yuri Dario71.8%
          Regina Henschel61.6%
          Juan C. Sanz20.5%
          Clarence Guo20.5%
          Tal Daniel20.5%
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changed lines
          Jürgen Schmidt             45549988.1%
          Andre Fischer261483.8%
          Pedro Giffuni231833.4%
          Armin Le Grand110181.6%
          Juan C. Sanz45820.7%
          Oliver-Rainer Wittmann43090.6%
          Andrea Pescetti39080.6%
          Herbert Dürr28110.4%
          Tsutomu Uchino19910.3%
          Ariel Constenla-Haile12580.2%
          Steve Yin10100.1%
          Kay Schenk6160.1%
          Regina Henschel4170.1%
          Yuri Dario2680.0%
          tal160.0%
          Clarence Guo110.0%
          +
          +
          +

          In truth, the above list is not just the most active OpenOffice developers — it is all of them; a total of 16 developers have committed changes to OpenOffice in the last year. Those developers changed 528,000 lines of code, but, as can be seen above, Jürgen Schmidt accounted for the bulk of those changes, which were mostly updates to translation files.

          +

          The top four developers in the "by changesets" column all work for IBM, so IBM is responsible for a minimum of about 60% of the changes to OpenOffice in the last year.

          +

          The picture for LibreOffice is just a little bit different; in the same one-year period, the project has committed 22,134 changesets from 268 developers. The most active of these developers were:

          +

          +
          + + + + + + + + + + +
          Most active LibreOffice developers
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changesets
          Caolán McNamara430719.5%
          Stephan Bergmann235110.6%
          Miklos Vajna14496.5%
          Tor Lillqvist11595.2%
          Noel Grandin10644.8%
          Markus Mohrhard9354.2%
          Michael Stahl9154.1%
          Kohei Yoshida7553.4%
          Tomaž Vajngerl6583.0%
          Thomas Arnhold6192.8%
          Jan Holesovsky4662.1%
          Eike Rathke4572.1%
          Matteo Casalin4422.0%
          Bjoern Michaelsen4211.9%
          Chris Sherlock3961.8%
          David Tardon3861.7%
          Julien Nabet3621.6%
          Zolnai Tamás3381.5%
          Matúš Kukan2561.2%
          Robert Antoni Buj Gelonch2311.0%
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          By changed lines
          Lionel Elie Mamane24406212.5%
          Noel Grandin23871112.2%
          Stephan Bergmann1612208.3%
          Miklos Vajna1293256.6%
          Caolán McNamara975445.0%
          Tomaž Vajngerl694043.6%
          Tor Lillqvist594983.1%
          Laurent Balland-Poirier528022.7%
          Markus Mohrhard505092.6%
          Kohei Yoshida455142.3%
          Chris Sherlock367881.9%
          Peter Foley343051.8%
          Christian Lohmaier337871.7%
          Thomas Arnhold327221.7%
          David Tardon216811.1%
          David Ostrovsky216201.1%
          Jan Holesovsky207921.1%
          Valentin Kettner205261.1%
          Robert Antoni Buj Gelonch204471.0%
          Michael Stahl182160.9%
          +
          +
          +

          To a first approximation, the top ten companies supporting LibreOffice in the last year are:

          +

          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          Companies supporting LibreOffice development
          (by changesets)
          Red Hat841738.0%
          Collabora Multimedia653129.5%
          (Unknown)512623.2%
          (None)14906.7%
          Canonical4221.9%
          Igalia S.L.800.4%
          Ericsson210.1%
          Yandex180.1%
          FastMail.FM170.1%
          SUSE70.0%
          +
          +

          Development work on LibreOffice is thus concentrated in a small number of companies, though it is rather more spread out than OpenOffice development. It is worth noting that the LibreOffice developers with unknown affiliation, who contributed 23% of the changes, make up 82% of the developer base, so there would appear to be a substantial community of developers contributing from outside the above-listed companies.

          +

          +

          Some conclusions

          +

          Last October, some concerns were raised on the OpenOffice list about the health of that project's community. At the time, Rob Weir shrugged them off as the result of a marketing effort by the LibreOffice crowd. There can be no doubt that the war of words between these two projects has gotten tiresome at times, but, looking at the above numbers, it is hard not to conclude that there is an issue that goes beyond marketing hype here.

          +

          In the 4½ years since its founding, the LibreOffice project has put together a community with over 250 active developers. There is support from multiple companies and an impressive rate of patches going into the project's repository. The project's ability to sustain nearly monthly releases on two branches is a direct result of that community's work. Swearing at LibreOffice is one of your editor's favorite pastimes, but it seems clear that the project is on a solid footing with a healthy community.

          +

          OpenOffice, instead, is driven by four developers from a single company — a company that appears to have been deemphasizing OpenOffice work for some time. As a result, the project's commit rate is a fraction of what LibreOffice is able to sustain and releases are relatively rare. As of this writing, the OpenOffice +blog shows no posts in 2015. In the October discussion, Rob said that "the dogs may +bark but the caravan moves on." That may be true, but, in this case, the caravan does not appear to be moving with any great speed.

          +

          Anything can happen in the free-software development world; it is entirely possible that a reinvigorated OpenOffice.org may yet give LibreOffice a run for its money. But something will clearly have to change to bring that future around. As things stand now, it is hard not to conclude that LibreOffice has won the battle for developer participation.

          +

          Comments (74 posted)

          +

          +

          Page editor: Jonathan Corbet +

          +

          Inside this week's LWN.net Weekly Edition

          +
            +
          • Security: Toward secure package downloads; New vulnerabilities in drupal, mozilla, openssl, python-django ...
          • +
          • Kernel: LSFMM coverage: NFS, defragmentation, epoll(), copy offload, and more.
          • +
          • Distributions: A look at Debian's 2015 DPL candidates; Debian, Fedora, ...
          • +
          • Development: A look at GlusterFS; LibreOffice Online; Open sourcing existing code; Secure Boot in Windows 10; ...
          • +
          • Announcements: A Turing award for Michael Stonebraker, Sébastien Jodogne, ReGlue are Free Software Award winners, Kat Walsh joins FSF board of directors, Cyanogen, ...
          • +
          Next page: Security>> +
          + +
          +
          +
          +
          + +
          +
          +

          + Copyright © 2015, Eklektix, Inc.
          + + Comments and public postings are copyrighted by their creators.
          + Linux is a registered trademark of Linus Torvalds
          +

          +
          + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/config.json new file mode 100644 index 000000000..958972e20 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/config.json @@ -0,0 +1,4 @@ +{ + "ArticleByLine": true, + "SubstituteEntities": true +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-images.json new file mode 100644 index 000000000..cfe75d030 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/s.marketwatch.com\/public\/resources\/MWimages\/MW-GG178_realty_ZG_20180323163027.jpg" +] diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-metadata.json new file mode 100644 index 000000000..94f36a271 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Andrea Riquier", + "Direction": null, + "Excerpt": "House prices show no sign of slowing down, according to a closely-watched index out Tuesday.", + "Image": "http://s.marketwatch.com/public/resources/MWimages/MW-GG178_realty_ZG_20180323163027.jpg", + "Title": "Home prices are still on fire, Case-Shiller data show", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected.html new file mode 100644 index 000000000..bd81ab3d7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected.html @@ -0,0 +1,47 @@ +
          + + + + + + + + + +

          The numbers: The S&P/Case-Shiller national index rose a seasonally adjusted 0.5% in the three-month period ending in January, and was up 6.2% compared to a year before. The 20-city index rose a seasonally adjusted 0.8% for the month, and 6.4% for the year.

          What happened: Prices are still on fire. And the West is still the best: Seattle, Las Vegas and San Francisco all notched double-digit yearly price gains. Only one city, Washington, D.C., had a negative monthly reading.

          As David Blitzer, chairman of the index committee at S&P Dow Jones Indices, noted in a release, the price gains are all about demand and lack of supply.

          “The current months-supply — how many months at the current sales rate would be needed to absorb homes currently for sale — is 3.4; the average since 2000 is 6.0 months, and the high in July 2010 was 11.9,” Blitzer wrote. “Currently, the homeowner vacancy rate is 1.6% compared to an average of 2.1% since 2000; it peaked in 2010 at 2.7%. Despite limited supplies, rising prices and higher mortgage rates, affordability is not a concern.”

          Relatively affordable housing is cold comfort to many would-be home buyers who simply can’t find anything to buy.

          Read: Most house hunters have been searching for 3 months or more

          Big picture: Economists had forecast a 0.7% monthly increase, and a 6.2% 12-month increase, for the 20-city index. As MarketWatch has reported, most housing analysts have argued that the ongoing price gains in housing can’t last — and yet they have so far.

          Metro Monthly change 12-month change
          Atlanta 0.7% 6.5%
          Boston 0.2% 5.3%
          Charlotte 0.4% 6.0%
          Chicago 0.0% 2.4%
          Cleveland 0.0% 3.5%
          Dallas 0.2% 6.9%
          Denver 0.7% 7.6%
          Detroit 0.1% 7.6%
          Las Vegas 0.6% 11.1%
          Los Angeles 0.6% 7.6%
          Miami 0.6% 4.0%
          Minneapolis 0.1% 5.9%
          New York 0.0% 5.2%
          Phoenix 0.3% 5.9%
          Portland 0.4% 7.1%
          San Diego 0.8% 7.4%
          San Francisco 0.4% 10.2%
          Seattle 0.7% 12.9%
          Tampa 0.4% 6.7%
          Washington -0.4% 2.4%

          Read: Mortgage rates edge up even as trade war worries loom ahead

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/source.html new file mode 100644 index 000000000..080f03dd8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/source.html @@ -0,0 +1,1453 @@ + + + + Home prices are still on fire, Case-Shiller data show - MarketWatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          + + +
          + + +

          + + + + + + + + + + + + + + + + + + + +

          + + + + + + + +
          + +
          +
          +
          +
          + +
          +
          + +
          + +
          +
          +
          + +
          +
          +
          + +
          + × +
          +

          A New Watchlist

          + + We've updated Watchlist! The changes include a new, responsive design featuring extended-hours data and more news. Learn More + +
          +
          + +
          + +
          +
          + +
          + + +
          +

          + Home prices are still on fire, Case-Shiller data show +

          +
          +
          + +
          + +
          + +
          + + +

          Published: Mar 27, 2018 9:00 a.m. ET

          + +
          +
          Share
          + +
          + +
          +
          + +
          + + + + Print icon + + + +
          + +

          + + +

          After a lull, San Francisco is back to being one of the top three hottest markets

          +

          + +
          + +
          + + + + +
          + + + + + +
          +
          + + Bloomberg News/Landov +
          +
          A home for sale in Seattle, Wash., one of the nation’s hottest housing markets.
          +
          + +
          +
          +
          +
          + + Author photo + +

          By

          + + + +
          +
          +
          + +
          + + + + + + + + + +

          The numbers: The S&P/Case-Shiller national index rose a seasonally adjusted 0.5% in the three-month period ending in January, and was up 6.2% compared to a year before. The 20-city index rose a seasonally adjusted 0.8% for the month, and 6.4% for the year.

          What happened: Prices are still on fire. And the West is still the best: Seattle, Las Vegas and San Francisco all notched double-digit yearly price gains. Only one city, Washington, D.C., had a negative monthly reading.

          As David Blitzer, chairman of the index committee at S&P Dow Jones Indices, noted in a release, the price gains are all about demand and lack of supply.

          “The current months-supply — how many months at the current sales rate would be needed to absorb homes currently for sale — is 3.4; the average since 2000 is 6.0 months, and the high in July 2010 was 11.9,” Blitzer wrote. “Currently, the homeowner vacancy rate is 1.6% compared to an average of 2.1% since 2000; it peaked in 2010 at 2.7%. Despite limited supplies, rising prices and higher mortgage rates, affordability is not a concern.”

          Relatively affordable housing is cold comfort to many would-be home buyers who simply can’t find anything to buy.

          Read: Most house hunters have been searching for 3 months or more

          Big picture: Economists had forecast a 0.7% monthly increase, and a 6.2% 12-month increase, for the 20-city index. As MarketWatch has reported, most housing analysts have argued that the ongoing price gains in housing can’t last — and yet they have so far.

          Metro Monthly change 12-month change
          Atlanta 0.7% 6.5%
          Boston 0.2% 5.3%
          Charlotte 0.4% 6.0%
          Chicago 0.0% 2.4%
          Cleveland 0.0% 3.5%
          Dallas 0.2% 6.9%
          Denver 0.7% 7.6%
          Detroit 0.1% 7.6%
          Las Vegas 0.6% 11.1%
          Los Angeles 0.6% 7.6%
          Miami 0.6% 4.0%
          Minneapolis 0.1% 5.9%
          New York 0.0% 5.2%
          Phoenix 0.3% 5.9%
          Portland 0.4% 7.1%
          San Diego 0.8% 7.4%
          San Francisco 0.4% 10.2%
          Seattle 0.7% 12.9%
          Tampa 0.4% 6.7%
          Washington -0.4% 2.4%

          Read: Mortgage rates edge up even as trade war worries loom ahead

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          +
          +
          + + +
          +

          + Andrea Riquier reports on housing and banking from MarketWatch's New York newsroom. Follow her on Twitter @ARiquier. +

          +
          +
          + +
          +

          + We Want to + Hear from You +

          +
          +

          Join the conversation

          + +
          +
          + + +
          +
          +
          + + + + +
          +
          +
          + + + +
          + +
          +
          +

          MarketWatch Partner Center

          + +
          + + + + + + +
          + +
          + + + +
          + +
          +
          + +
          + +
          +
          +
          + + +
          +
          +
          + + + +
          +
          + +
          + + + + + +
          + + + + + + + + + +
          + + + +
          +
          + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-images.json new file mode 100644 index 000000000..9a2422037 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-images.json @@ -0,0 +1,10 @@ +[ + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*oBWUXtszDsiv_-Qq2bFLTQ.png", + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*AzYWbe4cZkMMEUbfRjysLQ.png", + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*d0Hp6KlzyIcGHcL6to1sYQ.png", + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*_9KYIFrk_PqWFgptsMDeww.png", + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*Vh2MpQjqjPkzYJaaWExoVg.png", + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*2Ln_DmC95Xpz6LzgywkcFQ.png", + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*bXaR_NBJdoHpRc8lUWSsow.png", + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*lulfisQxgSQ209vPHMAifg.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-metadata.json new file mode 100644 index 000000000..a974b4361 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Pippin Lee", + "Direction": null, + "Excerpt": "We pushed out the first version of the Open Journalism site in January. Here’s what we’ve learned about student journali…", + "Image": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/800\/1*oBWUXtszDsiv_-Qq2bFLTQ.png", + "Title": "The Open Journalism Project: Better Student Journalism", + "SiteName": "Medium" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected.html new file mode 100644 index 000000000..679d8b75b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected.html @@ -0,0 +1,286 @@ +
          +

          Open Journalism Project:

          + +

          Better Student Journalism

          + + + +

          We pushed out the first version of the Open Journalism site in January. Our goal is for the + site to be a place to teach students what they should know about journalism + on the web. It should be fun too.

          +

          Topics like mapping, security, command + line tools, and open source are + all concepts that should be made more accessible, and should be easily + understood at a basic level by all journalists. We’re focusing on students + because we know student journalism well, and we believe that teaching maturing + journalists about the web will provide them with an important lens to view + the world with. This is how we got to where we are now.

          +

          Circa 2011

          +

          In late 2011 I sat in the design room of our university’s student newsroom + with some of the other editors: Kate Hudson, Brent Rose, and Nicholas Maronese. + I was working as the photo editor then—something I loved doing. I was very + happy travelling and photographing people while listening to their stories.

          +

          Photography was my lucky way of experiencing the many types of people + my generation seemed to avoid, as well as many the public spends too much + time discussing. One of my habits as a photographer was scouring sites + like Flickr to see how others could frame the world in ways I hadn’t previously + considered.

          +
          + +

          +
          topleftpixel.com

          I started discovering beautiful things the web could do with images: + things not possible with print. Just as every generation revolts against + walking in the previous generations shoes, I found myself questioning the + expectations that I came up against as a photo editor. In our newsroom + the expectations were built from an outdated information world. We were + expected to fill old shoes.

          +

          So we sat in our student newsroom—not very happy with what we were doing. + Our weekly newspaper had remained essentially unchanged for 40+ years. + Each editorial position had the same requirement every year. The big change + happened in the 80s when the paper started using colour. We’d also stumbled + into having a website, but it was updated just once a week with the release + of the newspaper.

          +

          Information had changed form, but the student newsroom hadn’t, and it + was becoming harder to romanticize the dusty newsprint smell coming from + the shoes we were handed down from previous generations of editors. It + was, we were told, all part of “becoming a journalist.”

          +
          + +

          +

          We don’t know what we don’t know

          +

          We spent much of the rest of the school year asking “what should we be + doing in the newsroom?”, which mainly led us to ask “how do we use the + web to tell stories?” It was a straightforward question that led to many + more questions about the web: something we knew little about. Out in the + real world, traditional journalists were struggling to keep their jobs + in a dying print world. They wore the same design of shoes that we were + supposed to fill. Being pushed to repeat old, failing strategies and blocked + from trying something new scared us.

          +

          We had questions, so we started doing some research. We talked with student + newsrooms in Canada and the United States, and filled too many Google Doc + files with notes. Looking at the notes now, they scream of fear. We annotated + our notes with naive solutions, often involving scrambled and immature + odysseys into the future of online journalism.

          +

          There was a lot we didn’t know. We didn’t know how to build a mobile app. + We didn’t know if we should build a mobile app. + We didn’t know how to run a server. + We didn’t know where to go to find a server. + We didn’t know how the web worked. + We didn’t know how people used the web to read news. + We didn’t know what news should be on the web. + If news is just information, what does that even look like?

          +

          We asked these questions to many students at other papers to get a consensus + of what had worked and what hadn’t. They reported similar questions and + fears about the web but followed with “print advertising is keeping us + afloat so we can’t abandon it”.

          +

          In other words, we knew that we should be building a newer pair of shoes, + but we didn’t know what the function of the shoes should be.

          +

          Common problems in student newsrooms (2011)

          +

          Our questioning of other student journalists in 15 student newsrooms brought + up a few repeating issues.

          +
          + +

          +
          From our 2011 research

          Common problems in student newsrooms (2013)

          +

          Two years later, we went back and looked at what had changed. We talked + to a dozen more newsrooms and weren’t surprised by our findings.

          +

          Newsrooms have traditionally been covered in copies of The New York Times + or Globe and Mail. Instead newsrooms should try spend at 20 minutes each + week going over the coolest/weirdest online storytelling in an effort to + expose each other to what is possible. “Hey, what has the New York Times R&D lab been up to this week?

          +

          Instead of having computers that are locked down, try setting aside a + few office computers that allow students to play and “break”, or encourage + editors to buy their own Macbooks so they’re always able to practice with + code and new tools on their own.

          +

          From all this we realized that changing a student newsroom is difficult. + It takes patience. It requires that the business and editorial departments + of the student newsroom be on the same (web)page. The shoes of the future + must be different from the shoes we were given.

          +

          We need to rethink how long the new shoe design will be valid. It’s more + important that we focus on the process behind making footwear than on actually + creating a specific shoe. We shouldn’t be building a shoe to last 40 years. + Our footwear design process will allow us to change and adapt as technology + evolves. The media landscape will change, so having a newsroom that can + change with it will be critical.

          +

          We are building a shoe machine, not a shoe. +

          + +

          A train or light at the end of the tunnel: are student newsrooms changing for the better?

          + +

          In our 2013 research we found that almost 50% of student newsrooms had + created roles specifically for the web. This sounds great, but is still problematic in its current state. +

          +
          + +

          +
          We designed many of these slides to help explain to ourselves what we were doing +

          When a newsroom decides to create a position for the web, it’s often with + the intent of having content flow steadily from writers onto the web. This + is a big improvement from just uploading stories to the web whenever there + is a print issue. However… +

          +
          1. The handoff +

            Problems arise because web editors are given roles that absolve the rest + of the editors from thinking about the web. All editors should be involved + in the process of story development for the web. While it’s a good idea + to have one specific editor manage the website, contributors and editors + should all play with and learn about the web. Instead of “can you make + a computer do XYZ for me?”, we should be saying “can you show me how to + make a computer do XYZ?”
          2. +
          3. Not just social media

            A + web editor could do much more than simply being in charge of the social + media accounts for the student paper. Their responsibility could include + teaching all other editors to be listening to what’s happening online. + The web editor can take advantage of live information to change how the + student newsroom reports news in real time.
          4. +
          5. Web (interactive) editor

            The + goal of having a web editor should be for someone to build and tell stories + that take full advantage of the web as their medium. Too often the web’s + interactivity is not considered when developing the story. The web then + ends up as a resting place for print words.
          6. +

          Editors at newsrooms are still figuring out how to convince writers of + the benefit to having their content online. There’s still a stronger draw + to writers seeing their name in print than on the web. Showing writers + that their stories can be told in new ways to larger audiences is a convincing + argument that the web is a starting point for telling a story, not its + graveyard.

          +

          When everyone in the newsroom approaches their website with the intention + of using it to explore the web as a medium, they all start to ask “what + is possible?” and “what can be done?” You can’t expect students to think + in terms of the web if it’s treated as a place for print words to hang + out on a web page.

          +

          We’re OK with this problem, if we see newsrooms continue to take small + steps towards having all their editors involved in the stories for the + web.

          +
          + +

          +
          The current Open Journalism site was a few years in the making. This was + an original launch page we use in 2012

          What we know

          +

          What we don’t know

          +
          +

          What we’re trying to share with others

          +

          Student newsrooms don’t have investors to please. Student newsrooms can + change their website every week if they want to try a new design or interaction. + As long as students start treating the web as a different medium, and start + building stories around that idea, then we’ll know we’re moving forward.

          +

          A note to professional news orgs

          +

          We’re also asking professional newsrooms to be more open about their process + of developing stories for the web. You play a big part in this. This means + writing about it, and sharing code. We need to start building a bridge + between student journalism and professional newsrooms.

          +
          + +

          +
          2012

          This is a start

          +

          We going to continue slowly growing the content on Open Journalism. We still consider this the beta version, + but expect to polish it, and beef up the content for a real launch at the + beginning of the summer.

          +

          We expect to have more original tutorials as well as the beginnings of + what a curriculum may look like that a student newsroom can adopt to start + guiding their transition to become a web first newsroom. We’re also going + to be working with the Queen’s Journal and + The Ubysseynext school year to better understand how to make the student + newsroom a place for experimenting with telling stories on the web. If + this sound like a good idea in your newsroom, we’re still looking to add + 1 more school.

          +

          We’re trying out some new shoes. And while they’re not self-lacing, and + smell a bit different, we feel lacing up a new pair of kicks can change + a lot.

          +
          + +

          +
          +

          Let’s talk. Let’s listen. +

          +

          We’re still in the early stages of what this project will look like, so if you want to help or have thoughts, let’s talk. +

          +

          pippin@pippinlee.com +

          + + +

          This isn’t supposed to be a + manifesto™© + we just think it’s pretty cool to share what we’ve learned so far, and hope you’ll do the same. We’re all in this together. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/source.html new file mode 100644 index 000000000..63be92077 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/source.html @@ -0,0 +1,705 @@ + + + + + + + The Open Journalism Project: Better Student Journalism — Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          + +
          +
          +
          +
          +
          Ready to publish?
          +
          Change the story’s title, subtitle, and visibility as needed
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          + + + + +
          +
          +
          +
          +
          + + + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Open Journalism Project:

          +

          +
          +

          +

          Better Student Journalism

          +

          +
          +

          +


          +

          +
          +

          +

          We pushed out the first version of the Open Journalism site in January. Our goal is for the + site to be a place to teach students what they should know about journalism + on the web. It should be fun too.

          +

          Topics like mapping, security, command + line tools, and open source are + all concepts that should be made more accessible, and should be easily + understood at a basic level by all journalists. We’re focusing on students + because we know student journalism well, and we believe that teaching maturing + journalists about the web will provide them with an important lens to view + the world with. This is how we got to where we are now.

          +

          Circa 2011

          +

          In late 2011 I sat in the design room of our university’s student newsroom + with some of the other editors: Kate Hudson, Brent Rose, and Nicholas Maronese. + I was working as the photo editor then—something I loved doing. I was very + happy travelling and photographing people while listening to their stories.

          +

          Photography was my lucky way of experiencing the many types of people + my generation seemed to avoid, as well as many the public spends too much + time discussing. One of my habits as a photographer was scouring sites + like Flickr to see how others could frame the world in ways I hadn’t previously + considered.

          +
          +
          +
          + +
          +
          topleftpixel.com
          +
          +

          I started discovering beautiful things the web could do with images: + things not possible with print. Just as every generation revolts against + walking in the previous generations shoes, I found myself questioning the + expectations that I came up against as a photo editor. In our newsroom + the expectations were built from an outdated information world. We were + expected to fill old shoes.

          +

          So we sat in our student newsroom—not very happy with what we were doing. + Our weekly newspaper had remained essentially unchanged for 40+ years. + Each editorial position had the same requirement every year. The big change + happened in the 80s when the paper started using colour. We’d also stumbled + into having a website, but it was updated just once a week with the release + of the newspaper.

          +

          Information had changed form, but the student newsroom hadn’t, and it + was becoming harder to romanticize the dusty newsprint smell coming from + the shoes we were handed down from previous generations of editors. It + was, we were told, all part of “becoming a journalist.”

          +
          +
          +
          + +
          +
          +

          We don’t know what we don’t know

          +

          We spent much of the rest of the school year asking “what should we be + doing in the newsroom?”, which mainly led us to ask “how do we use the + web to tell stories?” It was a straightforward question that led to many + more questions about the web: something we knew little about. Out in the + real world, traditional journalists were struggling to keep their jobs + in a dying print world. They wore the same design of shoes that we were + supposed to fill. Being pushed to repeat old, failing strategies and blocked + from trying something new scared us.

          +

          We had questions, so we started doing some research. We talked with student + newsrooms in Canada and the United States, and filled too many Google Doc + files with notes. Looking at the notes now, they scream of fear. We annotated + our notes with naive solutions, often involving scrambled and immature + odysseys into the future of online journalism.

          +

          There was a lot we didn’t know. We didn’t know how to build a mobile app. + We didn’t know if we should build a mobile app. + We didn’t know how to run a server. + We didn’t know where to go to find a server. + We didn’t know how the web worked. + We didn’t know how people used the web to read news. + We didn’t know what news should be on the web. + If news is just information, what does that even look like?

          +

          We asked these questions to many students at other papers to get a consensus + of what had worked and what hadn’t. They reported similar questions and + fears about the web but followed with “print advertising is keeping us + afloat so we can’t abandon it”.

          +

          In other words, we knew that we should be building a newer pair of shoes, + but we didn’t know what the function of the shoes should be.

          +

          Common problems in student newsrooms (2011)

          +

          Our questioning of other student journalists in 15 student newsrooms brought + up a few repeating issues.

          +
            +
          • Lack of mentorship
          • +
          • A news process that lacked consideration of the web
          • +
          • No editor/position specific to the web
          • +
          • Little exposure to many of the cool projects being put together by professional + newsrooms
          • +
          • Lack of diverse skills within the newsroom. Writers made up 95% of the + personnel. Students with other skills were not sought because journalism + was seen as “a career with words.” The other 5% were designers, designing + words on computers, for print.
          • +
          • Not enough discussion between the business side and web efforts
          • +
          +
          +
          +
          + +
          +
          From our 2011 research
          +
          +

          Common problems in student newsrooms (2013)

          +

          Two years later, we went back and looked at what had changed. We talked + to a dozen more newsrooms and weren’t surprised by our findings.

          +
            +
          • Still no mentorship or link to professional newsrooms building stories + for the web
          • +
          • Very little control of website and technology
          • +
          • The lack of exposure that student journalists have to interactive storytelling. + While some newsrooms are in touch with what’s happening with the web and + journalism, there still exists a huge gap between the student newsroom + and its professional counterpart
          • +
          • No time in the current news development cycle for student newsrooms to + experiment with the web
          • +
          • Lack of skill diversity (specifically coding, interaction design, and + statistics)
          • +
          • Overly restricted access to student website technology. Changes are primarily + visual rather than functional.
          • +
          • Significantly reduced print production of many papers
          • +
          • Computers aren’t set up for experimenting with software and code, and + often locked down
          • +
          +

          Newsrooms have traditionally been covered in copies of The New York Times + or Globe and Mail. Instead newsrooms should try spend at 20 minutes each + week going over the coolest/weirdest online storytelling in an effort to + expose each other to what is possible. “Hey, what has the New York Times R&D lab been up to this week?

          +

          Instead of having computers that are locked down, try setting aside a + few office computers that allow students to play and “break”, or encourage + editors to buy their own Macbooks so they’re always able to practice with + code and new tools on their own.

          +

          From all this we realized that changing a student newsroom is difficult. + It takes patience. It requires that the business and editorial departments + of the student newsroom be on the same (web)page. The shoes of the future + must be different from the shoes we were given.

          +

          We need to rethink how long the new shoe design will be valid. It’s more + important that we focus on the process behind making footwear than on actually + creating a specific shoe. We shouldn’t be building a shoe to last 40 years. + Our footwear design process will allow us to change and adapt as technology + evolves. The media landscape will change, so having a newsroom that can + change with it will be critical.

          +

          We are building a shoe machine, not a shoe. +

          +

          +
          +

          +

          A train or light at the end of the tunnel: are student newsrooms changing for the better?

          +

          +
          +

          +

          In our 2013 research we found that almost 50% of student newsrooms had + created roles specifically for the web. This sounds great, but is still problematic in its current state. +

          +
          +
          +
          + +
          +
          We designed many of these slides to help explain to ourselves what we were doing +
          +
          +

          When a newsroom decides to create a position for the web, it’s often with + the intent of having content flow steadily from writers onto the web. This + is a big improvement from just uploading stories to the web whenever there + is a print issue. However… +

          +
            +
          1. The handoff +
            Problems arise because web editors are given roles that absolve the rest + of the editors from thinking about the web. All editors should be involved + in the process of story development for the web. While it’s a good idea + to have one specific editor manage the website, contributors and editors + should all play with and learn about the web. Instead of “can you make + a computer do XYZ for me?”, we should be saying “can you show me how to + make a computer do XYZ?”
          2. +
          3. Not just social media
            A + web editor could do much more than simply being in charge of the social + media accounts for the student paper. Their responsibility could include + teaching all other editors to be listening to what’s happening online. + The web editor can take advantage of live information to change how the + student newsroom reports news in real time.
          4. +
          5. Web (interactive) editor
            The + goal of having a web editor should be for someone to build and tell stories + that take full advantage of the web as their medium. Too often the web’s + interactivity is not considered when developing the story. The web then + ends up as a resting place for print words.
          6. +
          +

          Editors at newsrooms are still figuring out how to convince writers of + the benefit to having their content online. There’s still a stronger draw + to writers seeing their name in print than on the web. Showing writers + that their stories can be told in new ways to larger audiences is a convincing + argument that the web is a starting point for telling a story, not its + graveyard.

          +

          When everyone in the newsroom approaches their website with the intention + of using it to explore the web as a medium, they all start to ask “what + is possible?” and “what can be done?” You can’t expect students to think + in terms of the web if it’s treated as a place for print words to hang + out on a web page.

          +

          We’re OK with this problem, if we see newsrooms continue to take small + steps towards having all their editors involved in the stories for the + web.

          +
          +
          +
          + +
          +
          The current Open Journalism site was a few years in the making. This was + an original launch page we use in 2012
          +
          +

          What we know

          +
            +
          • New process +
            Our rough research has told us newsrooms need to be reorganized. This + includes every part of the newsroom’s workflow: from where a story and + its information comes from, to thinking of every word, pixel, and interaction + the reader will have with your stories. If I was a photo editor that wanted + to re-think my process with digital tools in mind, I’d start by asking + “how are photo assignments processed and sent out?”, “how do we receive + images?”, “what formats do images need to be exported in?”, “what type + of screens will the images be viewed on?”, and “how are the designers getting + these images?” Making a student newsroom digital isn’t about producing + “digital manifestos”, it’s about being curious enough that you’ll want + to to continue experimenting with your process until you’ve found one that + fits your newsroom’s needs.
          • +
          • More (remote) mentorship +
            Lack of mentorship is still a big problem. Google’s fellowship program is great. The fact that it + only caters to United States students isn’t. There are only a handful of + internships in Canada where students interested in journalism can get experience + writing code and building interactive stories. We’re OK with this for now, + as we expect internships and mentorship over the next 5 years between professional + newsrooms and student newsrooms will only increase. It’s worth noting that + some of that mentorship will likely be done remotely.
          • +
          • Changing a newsroom culture +
            Skill diversity needs to change. We encourage every student newsroom we + talk to, to start building a partnership with their school’s Computer Science + department. It will take some work, but you’ll find there are many CS undergrads + that love playing with web technologies, and using data to tell stories. + Changing who is in the newsroom should be one of the first steps newsrooms + take to changing how they tell stories. The same goes with getting designers + who understand the wonderful interactive elements of the web and students + who love statistics and exploring data. Getting students who are amazing + at design, data, code, words, and images into one room is one of the coolest + experience I’ve had. Everyone benefits from a more diverse newsroom.
          • +
          +

          What we don’t know

          +
            +
          • Sharing curiosity for the web +
            We don’t know how to best teach students about the web. It’s not efficient + for us to teach coding classes. We do go into newsrooms and get them running + their first code exercises, but if someone wants to learn to program, we + can only provide the initial push and curiosity. We will be trying out + “labs” with a few schools next school year to hopefully get a better idea + of how to teach students about the web.
          • +
          • Business +
            We don’t know how to convince the business side of student papers that + they should invest in the web. At the very least we’re able to explain + that having students graduate with their current skill set is painful in + the current job market.
          • +
          • The future +
            We don’t know what journalism or the web will be like in 10 years, but + we can start encouraging students to keep an open mind about the skills + they’ll need. We’re less interested in preparing students for the current + newsroom climate, than we are in teaching students to have the ability + to learn new tools quickly as they come and go.
          • +
          +
          +
          +
          +
          +
          + +
          +
          Another slide from 2012 website
          +
          +
          +
          +

          What we’re trying to share with others

          +
            +
          • A concise guide to building stories for the web +
            There are too many options to get started. We hope to provide an opinionated + guide that follows both our experiences, research, and observations from + trying to teach our peers.
          • +
          +

          Student newsrooms don’t have investors to please. Student newsrooms can + change their website every week if they want to try a new design or interaction. + As long as students start treating the web as a different medium, and start + building stories around that idea, then we’ll know we’re moving forward.

          +

          A note to professional news orgs

          +

          We’re also asking professional newsrooms to be more open about their process + of developing stories for the web. You play a big part in this. This means + writing about it, and sharing code. We need to start building a bridge + between student journalism and professional newsrooms.

          +
          +
          +
          + +
          +
          2012
          +
          +

          This is a start

          +

          We going to continue slowly growing the content on Open Journalism. We still consider this the beta version, + but expect to polish it, and beef up the content for a real launch at the + beginning of the summer.

          +

          We expect to have more original tutorials as well as the beginnings of + what a curriculum may look like that a student newsroom can adopt to start + guiding their transition to become a web first newsroom. We’re also going + to be working with the Queen’s Journal and + The Ubysseynext school year to better understand how to make the student + newsroom a place for experimenting with telling stories on the web. If + this sound like a good idea in your newsroom, we’re still looking to add + 1 more school.

          +

          We’re trying out some new shoes. And while they’re not self-lacing, and + smell a bit different, we feel lacing up a new pair of kicks can change + a lot.

          +
          +
          +
          + +
          +
          +

          +
          +

          +

          Let’s talk. Let’s listen. +

          +

          We’re still in the early stages of what this project will look like, so if you want to help or have thoughts, let’s talk. +

          +

          pippin@pippinlee.com +

          +

          +
          +

          +

          +
          +

          +

          This isn’t supposed to be a + manifesto™© + we just think it’s pretty cool to share what we’ve learned so far, and hope you’ll do the same. We’re all in this together. +

          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-images.json new file mode 100644 index 000000000..e52ea6ff1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-images.json @@ -0,0 +1,3 @@ +[ + "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/1600\/1*eR_J8DurqygbhrwDg-WPnQ.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-metadata.json new file mode 100644 index 000000000..71804a0dc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Courtney Kirchoff", + "Direction": null, + "Excerpt": "In defense of the word “literally” and why you or someone you know should stop misusing the word, lest they drive us fig…", + "Image": "https:\/\/d262ilb51hltx0.cloudfront.net\/max\/1600\/1*eR_J8DurqygbhrwDg-WPnQ.png", + "Title": "On Behalf of “Literally”", + "SiteName": "Medium" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected.html new file mode 100644 index 000000000..222b09dbc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected.html @@ -0,0 +1 @@ +

          Words need defenders.

          On Behalf of “Literally”

          You either are a “literally” abuser or know of one. If you’re anything like me, hearing the word “literally” used incorrectly causes a little piece of your soul to whither and die. Of course I do not mean that literally, I mean that figuratively. An abuser would have said: “Every time a person uses that word, a piece of my soul literally withers and dies.” Which is terribly, horribly wrong.

          For whatever bizarre reason, people feel the need to use literally as a sort of verbal crutch. They use it to emphasize a point, which is silly because they’re already using an analogy or a metaphor to illustrate said point. For example: “Ugh, I literally tore the house apart looking for my remote control!” No, you literally did not tear apart your house, because it’s still standing. If you’d just told me you “tore your house apart” searching for your remote, I would’ve understood what you meant. No need to add “literally” to the sentence.

          Maybe I should define literally.

          Literally means actually. When you say something literally happened, you’re describing the scene or situation as it actually happened.

          So you should only use literally when you mean it. It should not be used in hyperbole. Example: “That was so funny I literally cried.” Which is possible. Some things are funny enough to elicit tears. Note the example stops with “literally cried.” You cannot literally cry your eyes out. The joke wasn’t so funny your eyes popped out of their sockets.

          When in Doubt, Leave it Out

          “I’m so hungry I could eat a horse,” means you’re hungry. You don’t need to say “I’m so hungry I could literally eat a horse.” Because you can’t do that in one sitting, I don’t care how big your stomach is.

          “That play was so funny I laughed my head off,” illustrates the play was amusing. You don’t need to say you literally laughed your head off, because then your head would be on the ground and you wouldn’t be able to speak, much less laugh.

          “I drove so fast my car was flying,” we get your point: you were speeding. But your car is never going fast enough to fly, so don’t say your car was literally flying.

          Insecurities?

          Maybe no one believed a story you told as a child, and you felt the need to prove that it actually happened. No really, mom, I literally climbed the tree. In efforts to prove truth, you used literally to describe something real, however outlandish it seemed. Whatever the reason, now your overuse of literally has become a habit.

          Hard Habit to Break?

          Abusing literally isn’t as bad a smoking, but it’s still an unhealthy habit (I mean that figuratively). Help is required in order to break it.

          This is my version of an intervention for literally abusers. I’m not sure how else to do it other than in writing. I know this makes me sound like a know-it-all, and I accept that. But there’s no excuse other than blatant ignorance to misuse the word “literally.” So just stop it.

          Don’t say “Courtney, this post is so snobbish it literally burned up my computer.” Because nothing is that snobbish that it causes computers to combust. Or: “Courtney, your head is so big it literally cannot get through the door.” Because it can, unless it’s one of those tiny doors from Alice in Wonderland and I need to eat a mushroom to make my whole body smaller.

          No One’s Perfect

          And I’m not saying I am. I’m trying to restore meaning to a word that’s lost meaning. I’m standing up for literally. It’s a good word when used correctly. People are butchering it and destroying it every day (figuratively speaking) and the massacre needs to stop. Just as there’s a coalition of people against the use of certain fonts (like Comic Sans and Papyrus), so should there be a coalition of people against the abuse of literally.

          Saying it to Irritate?

          Do you misuse the word “literally” just to annoy your know-it-all or grammar police friends/acquaintances/total strangers? If so, why? Doing so would be like me going outside when it’s freezing, wearing nothing but a pair of shorts and t-shirt in hopes of making you cold by just looking at me. Who suffers more?

          Graphical Representation

          Matthew Inman of “The Oatmeal” wrote a comic about literally. Abusers and defenders alike should check it out. It’s clear this whole craze about literally is driving a lot of us nuts. You literally abusers are killing off pieces of our souls. You must be stopped, or the world will be lost to meaninglessness forever. Figuratively speaking.

          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/source.html new file mode 100644 index 000000000..da62885b7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/source.html @@ -0,0 +1,14 @@ +On Behalf of “Literally” — Medium + +
          + + sidebar-open-28px + + + + + +
          +
          Ready to publish?
          Change the story’s title, subtitle, and visibility as needed

          Words need defenders.

          On Behalf of “Literally”

          You either are a “literally” abuser or know of one. If you’re anything like me, hearing the word “literally” used incorrectly causes a little piece of your soul to whither and die. Of course I do not mean that literally, I mean that figuratively. An abuser would have said: “Every time a person uses that word, a piece of my soul literally withers and dies.” Which is terribly, horribly wrong.

          For whatever bizarre reason, people feel the need to use literally as a sort of verbal crutch. They use it to emphasize a point, which is silly because they’re already using an analogy or a metaphor to illustrate said point. For example: “Ugh, I literally tore the house apart looking for my remote control!” No, you literally did not tear apart your house, because it’s still standing. If you’d just told me you “tore your house apart” searching for your remote, I would’ve understood what you meant. No need to add “literally” to the sentence.

          Maybe I should define literally.

          Literally means actually. When you say something literally happened, you’re describing the scene or situation as it actually happened.

          So you should only use literally when you mean it. It should not be used in hyperbole. Example: “That was so funny I literally cried.” Which is possible. Some things are funny enough to elicit tears. Note the example stops with “literally cried.” You cannot literally cry your eyes out. The joke wasn’t so funny your eyes popped out of their sockets.

          When in Doubt, Leave it Out

          “I’m so hungry I could eat a horse,” means you’re hungry. You don’t need to say “I’m so hungry I could literally eat a horse.” Because you can’t do that in one sitting, I don’t care how big your stomach is.

          “That play was so funny I laughed my head off,” illustrates the play was amusing. You don’t need to say you literally laughed your head off, because then your head would be on the ground and you wouldn’t be able to speak, much less laugh.

          “I drove so fast my car was flying,” we get your point: you were speeding. But your car is never going fast enough to fly, so don’t say your car was literally flying.

          Insecurities?

          Maybe no one believed a story you told as a child, and you felt the need to prove that it actually happened. No really, mom, I literally climbed the tree. In efforts to prove truth, you used literally to describe something real, however outlandish it seemed. Whatever the reason, now your overuse of literally has become a habit.

          Hard Habit to Break?

          Abusing literally isn’t as bad a smoking, but it’s still an unhealthy habit (I mean that figuratively). Help is required in order to break it.

          This is my version of an intervention for literally abusers. I’m not sure how else to do it other than in writing. I know this makes me sound like a know-it-all, and I accept that. But there’s no excuse other than blatant ignorance to misuse the word “literally.” So just stop it.

          Don’t say “Courtney, this post is so snobbish it literally burned up my computer.” Because nothing is that snobbish that it causes computers to combust. Or: “Courtney, your head is so big it literally cannot get through the door.” Because it can, unless it’s one of those tiny doors from Alice in Wonderland and I need to eat a mushroom to make my whole body smaller.

          No One’s Perfect

          And I’m not saying I am. I’m trying to restore meaning to a word that’s lost meaning. I’m standing up for literally. It’s a good word when used correctly. People are butchering it and destroying it every day (figuratively speaking) and the massacre needs to stop. Just as there’s a coalition of people against the use of certain fonts (like Comic Sans and Papyrus), so should there be a coalition of people against the abuse of literally.

          Saying it to Irritate?

          Do you misuse the word “literally” just to annoy your know-it-all or grammar police friends/acquaintances/total strangers? If so, why? Doing so would be like me going outside when it’s freezing, wearing nothing but a pair of shorts and t-shirt in hopes of making you cold by just looking at me. Who suffers more?

          Graphical Representation

          Matthew Inman of “The Oatmeal” wrote a comic about literally. Abusers and defenders alike should check it out. It’s clear this whole craze about literally is driving a lot of us nuts. You literally abusers are killing off pieces of our souls. You must be stopped, or the world will be lost to meaninglessness forever. Figuratively speaking.


          Originally published at www.courtneykirchoff.com on November 18, 2011. Sadly this solo post did not stop the abuse of literally. Help the word out. Recommend this article to your literally abusers in your life.

          diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-images.json new file mode 100644 index 000000000..54ac86669 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-images.json @@ -0,0 +1,3 @@ +[ + "https:\/\/cdn-images-1.medium.com\/max\/1200\/1*kbPh7V97eyRodSOw2-ALDw.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-metadata.json new file mode 100644 index 000000000..59ef2043d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "John C. Welch", + "Direction": null, + "Excerpt": "How to get shanked doing what people say they want", + "Image": "https:\/\/cdn-images-1.medium.com\/max\/1200\/1*kbPh7V97eyRodSOw2-ALDw.png", + "Title": "Samantha and The Great Big Lie", + "SiteName": "Medium" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected.html new file mode 100644 index 000000000..f1c311e75 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected.html @@ -0,0 +1,226 @@ +
          +
          +
          + +

          How to get shanked doing what people say they want

          +
          don’t preach to me

          Mr. integrity
          +

          (EDIT: removed the link to Samantha’s post, because the arments and the grubers and the rest of The Deck Clique got what they wanted: a non-proper person driven off the internet lightly capped with a dusting of transphobia along the way, all totally okay because the ends justify the means, and it’s okay when “good” people do it.)

          +

          First, I need to say something about this article: the reason I’m writing it infuriates me. Worse than installing CS 3 or Acrobat 7 ever did, and the former inspired comparisons to fecophile porn. I’m actually too mad to cuss. Well, not completely, but in this case, I don’t think the people I’m mad at are worth the creativity I try to put into profanity. This is about a brownfield of hypocrisy and viciously deliberate mischaracterization that “shame” cannot even come close to the shame those behind it should feel.

          +

          Now, read this post by Samantha Bielefeld: The Elephant in the Room. First, it is a well-written critical piece that raises a few points in a calm, rational, nonconfrontational fashion, exactly the kind of things the pushers of The Great Big Lie say we need more of, as opposed to the screaming that is the norm in such cases.

          +

          …sorry, I should explain “The Great Big Lie”. There are several, but in this case, our specific instance of “The Great Big Lie” is about criticism. Over and over, you hear from the very people I am not going to be nice to in this that we need “better” criticsm. Instead of rage and anger, volume and vitriol, we need in-depth rational criticism, that isn’t personal or ad hominem. That it should focus on points, not people.

          +

          That, readers, is “The Big Lie”. It is a lie so big that if one ponders the reality of it, as I am going to, one wonders why anyone would believe it. It is a lie and it is one we should stop telling.

          +
          +
          +
          +
          +
          +

          Samantha’s points (I assume you read it, for you are smart people who know the importance of such things) are fairly clear:

          +
          1. With the release of Overcast 2.0, a product Samantha actually likes, Marco Arment moved to a patronage model that will probably be successful for him.
          2. +
          3. Arment’s insistence that “anyone can do this” while technically true, (anyone can in fact, implement this pricing model), also implies that “anyone” can have the kind of success that a developer with Marco’s history, financial status, and deep ties to the Apple News Web is expected to have. This is silly.
          4. +
          5. Marco Arment occupies a fairly unique position in the Apple universe, (gained by hard work and no small talent), and because of that, benefits from a set of privileges that a new developer or even one that has been around for a long time, but isn’t, well, Marco, not only don’t have, but have little chance of attaining anytime soon.
          6. +
          7. Marco has earned his success and is entitled to the benefits and privileges it brings, but he seems rather blind to all of that, and seems to still imagine himself as “two guys in a garage”. This is just not correct.
          8. +
          9. In addition, the benefits and privileges of the above ensure that by releasing Overcast 2 as a free app, with patronage pricing, he has, if not gutted, severely hurt the ability of folks actually selling their apps for an up-front price of not free to continue doing so. This has the effect of accelerating the “race to the bottom” in the podcast listening app segment, which hurts devs who cannot afford to work on a “I don’t really need this money, so whatever you feel like sending is okay” model.
          10. +

          None of this is incorrect. None of this is an ad hominem attack in any way. It is just pointing out that a developer of Arment’s stature and status lives in a very different world than someone in East Frog Balls, Arkansas trying to make a living off of App sales. Our dev in EFB doesn’t have the main sites on the Apple web falling all over themselves to review their app the way that Arment does. They’re not friends with the people being The Loop, Daring Fireball, SixColors, iMore, The Mac Observer, etc., yadda.

          +

          So, our hero, in a fit of well-meaning ignorance writes this piece (posted this morning, 14 Oct. 15) and of course, the response and any criticisms are just as reasonable and thoughtful.

          +

          If you really believe that, you are the most preciously ignorant person in the world, and can I have your seriously charmed life.

          +
          +
          +
          +
          +
          +

          The response, from all quarters, including Marco, someone who is so sensitive to criticism that the word “useless” is enough to shut him down, who blocked a friend of mine for the high crime of pointing out that his review of podcasting mics centered around higher priced gear and ignored folks without the scratch, who might not be ready for such things, is, in a single word, disgusting. Vomitous even.

          +

          It’s an hours-long dogpile that beggars even my imagination, and I can imagine almost anything. Seriously, it’s all there in Samantha’s Twitter Feed. From what I can tell, she’s understandably shocked over it. I however was not. This one comment in her feed made me smile (warning, this wanders a bit…er…LOT. Twitter timelines are not easy to put together):

          +
          I can see why you have some reservations about publishing it, but my gut feeling is that he would take it better than Nilay.
          +

          Oh honey, bless your sweet, ignorant heart. Marco is one of the biggest pushers of The Big Lie, and one of the reasons it is such a lie.

          +

          But it gets better. First, you have the “hey, Marco earned his status!” lot. A valid point, and one Bielefeld explicitly acknowledges, here:

          +
          From his ground floor involvement in Tumblr (for which he is now a millionaire), to the creation and sale of a wildly successful app called Instapaper, he has become a household name in technology minded circles. It is this extensive time spent in the spotlight, the huge following on Twitter, and dedicated listeners of his weekly aired Accidental Tech Podcast, that has granted him the freedom to break from seeking revenue in more traditional manners.
          +

          and here:

          +
          I’m not knocking his success, he has put effort into his line of work, and has built his own life.
          +

          and here:

          +
          He has earned his time in the spotlight, and it’s only natural for him to take advantage of it.
          +

          But still, you get the people telling her something she already acknowledge:

          +
          I don’t think he’s blind. he’s worked to where he has gotten and has had failures like everyone else.
          +

          Thank you for restating something in the article. To the person who wrote it.

          +

          In the original article, Samantha talked about the money Marco makes from his podcast. She based that on the numbers provided by ATP in terms of sponsorship rates and the number of current sponsors the podcast has. Is this going to yield perfect numbers? No. But the numbers you get from it will at least be reasonable, or should be unless the published sponsorship rates are just fantasy, and you’re stupid for taking them seriously.

          +

          At first, she went with a simple formula:

          +
          $4K x 3 per episode = $12K x 52 weeks / 3 hosts splitting it.
          +

          That’s not someone making shit up, right? Rather quickly, someone pointed out that she’d made an error in how she calculated it:

          +
          That’s $4k per ad, no? So more like $12–16k per episode.
          +

          She’d already realized her mistake and fixed it.

          +
          which is actually wrong, and I’m correcting now. $4,000 per sponsor, per episode! So, $210,000 per year.
          +

          Again, this is based on publicly available data the only kind someone not part of ATP or a close friend of Arment has access to. So while her numbers may be wrong, if they are, there’s no way for her to know that. She’s basing her opinion on actual available data. Which is sadly rare.

          +

          This becomes a huge flashpoint. You name a reason to attack her over this, people do. No really. For example, she’s not calculating his income taxes correctly:

          +
          especially since it isn’t his only source of income thus, not an indicator of his marginal inc. tax bracket.
          +
          thus, guessing net income is more haphazard than stating approx. gross income.
          +

          Ye Gods. She’s not doing his taxes for him, her point is invalid?

          +

          Then there’s the people who seem to have not read anything past what other people are telling them:

          +
          Not sure what to make of your Marco piece, to be honest. You mention his fame, whatever, but what’s the main idea here?
          +

          Just how spoon-fed do you have to be? Have you no teeth?

          +

          Of course, Marco jumps in, and predictably, he’s snippy:

          +
          If you’re going to speak in precise absolutes, it’s best to first ensure that you’re correct.
          +

          If you’re going to be like that, it’s best to provide better data. Don’t get snippy when someone is going off the only data available, and is clearly open to revising based on better data.

          +

          Then Marco’s friends/fans get into it:

          +
          I really don’t understand why it’s anyone’s business
          +

          Samantha is trying to qualify for sainthood at this point:

          +
          It isn’t really, it was a way of putting his income in context in regards to his ability to gamble with Overcast.
          +

          Again, she’s trying to drag people back to her actual point, but no one is going to play. The storm has begun. Then we get people who are just spouting nonsense:

          +
          Why is that only relevant for him? It’s a pretty weird metric,especially since his apps aren’t free.
          +

          Wha?? Overcast 2 is absolutely free. Samantha points this out:

          +
          His app is free, that’s what sparked the article to begin with.
          +

          The response is literally a parallel to “How can there be global warming if it snowed today in my town?”

          +
          If it’s free, how have I paid for it? Twice?
          +

          She is still trying:

          +
          You paid $4.99 to unlock functionality in Overcast 1.0 and you chose to support him with no additional functionality in 2.0
          +

          He is having none of it. IT SNOWED! SNOWWWWWWW!

          +
          Yes. That’s not free. Free is when you choose not to make money. And that can be weaponized. But that’s not what Overcast does.
          +

          She however, is relentless:

          +
          No, it’s still free. You can choose to support it, you are required to pay $4.99 for Pocket Casts. Totally different model.
          +

          Dude seems to give up. (Note: allllll the people bagging on her are men. All of them. Mansplaining like hell. And I’d bet every one of them considers themselves a feminist.)

          +

          We get another guy trying to push the narrative she’s punishing him for his success, which is just…it’s stupid, okay? Stupid.

          +
          It also wasn’t my point in writing my piece today, but it seems to be everyone’s focus.
          +

          (UNDERSTATEMENT OF THE YEAR)

          +
          I think the focus should be more on that fact that while it’s difficult, Marco spent years building his audience.
          +
          It doesn’t matter what he makes it how he charges. If the audience be earned is willing to pay for it, awesome.
          +

          She tries, oh lord, she tries:

          +
          To assert that he isn’t doing anything any other dev couldn’t, is wrong. It’s successful because it’s Marco.
          +

          But no, HE KNOWS HER POINT BETTER THAN SHE DOES:

          +
          No, it’s successful because he busted his ass to make it so. It’s like any other business. He grew it.
          +

          Christ. This is like a field of strawmen. Stupid ones. Very stupid ones.

          +

          One guy tries to blame it all on Apple, another in a string of Wha??? moments:

          +
          the appropriate context is Apple’s App Store policies. Other devs aren’t Marco’s responsibility
          +

          Seriously? Dude, are you even trying to talk about what Samantha actually wrote? At this point, Samantha is clearly mystified at the entire thing:

          +
          Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?
          +

          Because it’s a nit they can pick and allows them to ignore everything you wrote. That’s the only reason.

          +

          One guy is “confused”:

          +
          I see. He does have clout, so are you saying he’s too modest in how he sees himself as a dev?
          +
          Yes. He can’t be equated to the vast majority of other developers. Like calling Gruber, “just another blogger”.
          +
          Alright, that’s fair. I was just confused by the $ and fame angle at first.
          +

          Samantha’s point centers on the benefits Marco gains via his fame and background. HOW DO YOU NOT MENTION THAT? HOW IS THAT CONFUSING?

          +

          People of course are telling her it’s her fault for mentioning a salient fact at all:

          +
          Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?
          +
          Maybe because you went there with your article?
          +
          As a way of rationalizing his ability to gamble with the potential for Overcast to generate income…not the norm at all.
          +

          Of course, had she not brought up those important points, she’d have been bagged on for “not providing proof”. Lose some, lose more. By now, she’s had enough and she just deletes all mention of it. Understandable, but sad she was bullied into doing that.

          +

          Yes, bullied. That’s all this is. Bullying. She didn’t lie, cheat, or exaagerate. If her numbers were wrong, they weren’t wrong in a way she had any ability to do anything about. But there’s blood in the water, and the comments and attacks get worse:

          +
          Because you decided to start a conversation about someone else’s personal shit. You started this war.
          +

          War. THIS. IS. WAR.

          +

          This is a bunch of nerds attacking someone for reasoned, calm, polite criticism of their friend/idol. Samantha is politely pushing back a bit:

          +
          That doesn’t explain why every other part of my article is being pushed aside.
          +

          She’s right. This is all nonsense. This is people ignoring her article completely, just looking for things to attack so it can be dismissed. It’s tribalism at its purest.

          +

          Then some of the other annointed get into it, including Jason Snell in one of the most spectactular displays of “I have special knowledge you can’t be expected to have, therefore you are totally off base and wrong, even though there’s no way for you to know this” I’ve seen in a while. Jason:

          +
          You should never use an ad rate card to estimate ad revenue from any media product ever.
          +
          I learned this when I started working for a magazine — rate cards are mostly fiction, like prices on new cars
          +

          How…exactly…in the name of whatever deity Jason may believe in…is Samantha or anyone not “in the biz” supposed to know this. Also, what exactly does a magazine on paper like Macworld have to do with sponsorships for a podcast? I have done podcasts that were sponsored, and I can retaliate with “we charged what the rate card said we did. Checkmate Elitests!

          +

          Samantha basically abases herself at his feet:

          +
          I understand my mistake, and it’s unfortunate that it has completely diluted the point of my article.
          +

          I think she should have told him where and how to stuff that nonsense, but she’s a nicer person than I am. Also, it’s appropriate that Jason’s twitter avatar has its nose in the air. This is some rank snobbery. It’s disgusting and if anyone pulled that on him, Jason would be very upset. But hey, one cannot criticize The Marco without getting pushback. By “pushback”, I mean “an unrelenting fecal flood”.

          +

          Her only mistake was criticizing one of the Kool Kids. Folks, if you criticize anyone in The Deck Clique, or their friends, expect the same thing, regardless of tone or point.

          +

          Another App Dev, seemingly unable to parse Samantha’s words, needs more explanation:

          +
          so just looking over your mentions, I’m curious what exactly was your main point? Ignoring the podcast income bits.
          +

          Oh wait, he didn’t even read the article. Good on you, Dev Guy, good. on. you. Still, she plays nice with someone who didn’t even read her article:

          +
          That a typical unknown developer can’t depend on patronage to generate revenue, and charging for apps will become a negative.
          +

          Marco comes back of course, and now basically accuses her of lying about other devs talking to her and supporting her point:

          +
          How many actual developers did you hear from, really? Funny how almost nobody wants to give a (real) name on these accusations.
          +

          Really? You’re going to do that? “There’s no name, so I don’t think it’s a real person.” Just…what’s the Joe Welch quote from the McCarthy hearings?

          +
          Let us not assassinate this lad further, Senator. You’ve done enough. Have you no sense of decency, sir? At long last, have you left no sense of decency?
          +

          That is what this is at this point: character assasination because she said something critical of A Popular Person. It’s disgusting. Depressing and disgusting. No one, none of these people have seriously discussed her point, heck, it looks like they barely bothered to read it, if they did at all.

          +

          Marco starts getting really petty with her (no big shock) and Samantha finally starts pushing back:

          +
          Glad to see you be the bigger person and ignore the mindset of so many developers not relating to you, good for you!
          +

          That of course, is what caused Marco to question the validity, if not the existence of her sources. (Funny how anonymous sources are totes okay when they convenience Marco et al, and work for oh, Apple, but when they are inconvenient? Ha! PROVIDE ME PROOF YOU INTEMPERATE WOMAN!)

          +

          Make no mistake, there’s some sexist shit going on here. Every tweet I’ve quoted was authored by a guy.

          +

          Of course, Marco has to play the “I’ve been around longer than you” card with this bon mot:

          +
          Yup, before you existed!
          +

          Really dude? I mean, I’m sorry about the penis, but really?

          +

          Mind you, when the criticism isn’t just bizarrely stupid, Samantha reacts the way Marco and his ilk claim they would to (if they ever got any valid criticism. Which clearly is impossible):

          +
          Not to get into the middle of this, but “income” is not the term you’re looking for. “Revenue” is.
          +
          lol. Noted.
          +
          And I wasn’t intending to be a dick, just a lot of people hear/say “income” when they intend “revenue”, and then discussion …
          +
          … gets derailed by a jedi handwave of “Expenses”. But outside of charitable donation, it is all directly related.
          +
          haha. Thank you for the clarification.
          +

          Note to Marco and the other…whatever they are…that is how one reacts to that kind of criticism. With a bit of humor and self-deprecation. You should try it sometime. For real, not just in your heads or conversations in Irish Pubs in S.F.

          +

          But now, the door has been cracked, and the cheap shots come out:

          +
          @testflight_app: Don’t worry guys, we process @marcoarment’s apps in direct proportion to his megabucks earnings. #fairelephant
          +

          (Note: testflight_app is a parody account. Please do not mess with the actual testflight folks. They are still cool.)

          +

          Or this…conversation:

          +
          + + +
          +

          Good job guys. Good job. Defend the tribe. Attack the other. Frederico attempts to recover from his stunning display of demeaning douchery: ‏@viticci: @s_bielefeld I don’t know if it’s an Italian thing, but counting other people’s money is especially weird for me. IMO, bad move in the post.

          +

          Samantha is clearly sick of his crap: ‏@s_bielefeld: @viticci That’s what I’m referring to, the mistake of ever having mentioned it. So, now, Marco can ignore the bigger issue and go on living.

          +

          Good for her. There’s being patient and being roadkill.

          +

          Samantha does put the call out for her sources to maybe let her use their names:

          +
          From all of you I heard from earlier, anyone care to go on record?
          +

          My good friend, The Angry Drunk points out the obvious problem:

          +
          Nobody’s going to go on record when they count on Marco’s friends for their PR.
          +

          This is true. Again, the sites that are Friends of Marco:

          +

          Daring Fireball

          +

          The Loop

          +

          SixColors

          +

          iMore

          +

          MacStories

          +

          A few others, but I want this post to end one day.

          +

          You piss that crew off, and given how petty rather a few of them have demonstrated they are, good luck on getting any kind of notice from them.

          +

          Of course, the idea this could happen is just craycray:

          +
          @KevinColeman .@Angry_Drunk @s_bielefeld @marcoarment Wow, you guys are veering right into crazy conspiracy theory territory. #JetFuelCantMeltSteelBeams
          +

          Yeah. Because a mature person like Marco would never do anything like that.

          +

          Of course, the real point on this is starting to happen:

          +
          you’re getting a lot of heat now but happy you are writing things that stir up the community. Hope you continue to be a voice!
          +
          I doubt I will.
          +

          See, they’ve done their job. Mess with the bull, you get the horns. Maybe you should find another thing to write about, this isn’t a good place for you. Great job y’all.

          +

          Some people aren’t even pretending. They’re just in full strawman mode:

          +
          @timkeller: Unfair to begrudge a person for leveraging past success, especially when that success is earned. No ‘luck’ involved.
          +
          @s_bielefeld: @timkeller I plainly stated that I don’t hold his doing this against him. Way to twist words.
          +

          I think she’s earned her anger at this point.

          +

          Don’t worry, Marco knows what the real problem is: most devs just suck —

          +
          + + +
          +

          I have a saying that applies in this case: don’t place your head so far up your nethers that you go full Klein Bottle. Marco has gone full Klein Bottle. (To be correct, he went FKB some years ago.)

          +

          There are some bright spots. My favorite is when Building Twenty points out the real elephant in the room:

          +
          @BuildingTwenty: Both @s_bielefeld & I wrote similar critiques of @marcoarment’s pricing model yet the Internet pilloried only the woman. Who’d have guessed?
          +

          Yup.

          +

          Another bright spot are these comments from Ian Betteridge, who has been doing this even longer than Marco:

          +
          You know, any writer who has never made a single factual error in a piece hasn’t ever written anything worth reading.
          +
          I learned my job with the support of people who helped me. Had I suffered an Internet pile on for every error I wouldn’t have bothered.
          +

          To which Samantha understandably replies:

          +
          and it’s honestly something I’m contemplating right now, whether to continue…
          +

          Gee, I can’t imagine why. Why with comments like this from Chris Breen that completely misrepresent Samantha’s point, (who until today, I would have absolutely defended as being better than this, something I am genuinely saddened to be wrong about), why wouldn’t she want to continue doing this?

          +
          If I have this right, some people are outraged that a creator has decided to give away his work.
          +

          No Chris, you don’t have this right. But hey, who has time to find out the real issue and read an article. I’m sure your friends told you everything you need to know.

          +

          Noted Feminist Glenn Fleishman gets a piece of the action too:

          +
          + + +
          +

          I’m not actually surprised here. I watched Fleishman berate a friend of mine who has been an engineer for…heck, waaaaay too long on major software products in the most condescending way because she tried to point out that as a very technical woman, “The Magazine” literally had nothing to say to her and maybe he should fix that. “Impertinent” was I believe what he called her, but I may have the specific word wrong. Not the attitude mind you. Great Feminists like Glenn do not like uppity women criticizing Great Feminists who are their Great Allies.

          +

          Great Feminists are often tools.

          +
          +
          +
          +
          +
          +

          Luckily, I hope, the people who get Samantha’s point also started chiming in (and you get 100% of the women commenting here that I’ve seen):

          +
          I don’t think he’s wrong for doing it, he just discusses it as if the market’s a level playing field — it isn’t
          +
          This is a great article with lots of great points about the sustainability of iOS development. Thank you for publishing it.
          +
          Regardless of the numbers and your view of MA, fair points here about confirmation bias in app marketing feasibility http://samanthabielefeld.com/the-elephant-in-the-room …
          +
          thank you for posting this, it covers a lot of things people don’t like to talk about.
          +
          I’m sure you have caught untold amounts of flak over posting this because Marco is blind to his privilege as a developer.
          +
          Catching up on the debate, and agreeing with Harry’s remark. (Enjoyed your article, Samantha, and ‘got’ your point.)
          +
          +
          +
          +
          +
          +

          I would like to say I’m surprised at the reaction to Samantha’s article, but I’m not. In spite of his loud declarations of support for The Big Lie, Marco Arment is as bad at any form of criticism that he hasn’t already approved as a very insecure tween. An example from 2011: http://www.businessinsider.com/marco-arment-2011-9

          +

          Marco is great with criticism as long as it never actually criticizes him. If it does, be prepared a flood of petty, petulant whining that a room full of bored preschoolers on a hot day would be hard-pressed to match.

          +

          Today has been…well, it sucks. It sucks because someone doing what all the Arments of the world claim to want was naive enough to believe what they were told, and found out the hard way just how big a lie The Big Lie is, and how vicious people are when you’re silly enough to believe anything they say about criticism.

          +

          And note again, every single condescending crack, misrepresentation, and strawman had an exclusively male source. Most of them have, at one point or another, loudly trumpted themselves as Feminist Allies, as a friend to women struggling with the sexism and misogyny in tech. Congratulations y’all on being just as bad as the people you claim to oppose.

          +

          Samantha has handled this better than anyone else could have. My respect for her as a person and a writer is off the charts. If she choses to walk away from blogging in the Apple space, believe me I understand. As bad as today was for her, I’ve seen worse. Much worse.

          +

          But I hope she doesn’t. I hope she stays, because she is Doing This Right, and in a corner of the internet that has become naught but an endless circle jerk, a cliquish collection, a churlish, childish cohort interested not in writing or the truth, but in making sure The Right People are elevated, and The Others put down, she is someone worth reading and listening to. The number people who owe her apologies goes around the block, and I don’t think she’ll ever see a one. I’m sure as heck not apologizing for them, I’ll not make their lives easier in the least.

          +

          All of you, all. of. you…Marco, Breen, Snell, Vittici, had a chance to live by your words. You were faced with reasoned, polite, respectful criticism and instead of what you should have done, you all dropped trou and sprayed an epic diarrheal discharge all over someone who had done nothing to deserve it. Me, I earned most of my aggro, Samantha did not earn any of the idiocy I’ve seen today. I hope you’re all proud of yourselves. Someone should be, it won’t be me. Ever.

          +

          So I hope she stays, but if she goes, I understand. For what it’s worth, I don’t think she’s wrong either way.

          +
          +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/source.html new file mode 100644 index 000000000..37c246419 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/source.html @@ -0,0 +1,4815 @@ + + + + + + + Samantha and The Great Big Lie – John C. Welch – Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +

          Samantha and The Great Big Lie

          +

          How to get shanked doing what people say they want

          +
          don’t preach to me
          Mr. integrity
          +

          (EDIT: removed the link to Samantha’s post, because the arments and the grubers and the rest of The Deck Clique got what they wanted: a non-proper person driven off the internet lightly capped with a dusting of transphobia along the way, all totally okay because the ends justify the means, and it’s okay when “good” people do it.)

          +

          First, I need to say something about this article: the reason I’m writing it infuriates me. Worse than installing CS 3 or Acrobat 7 ever did, and the former inspired comparisons to fecophile porn. I’m actually too mad to cuss. Well, not completely, but in this case, I don’t think the people I’m mad at are worth the creativity I try to put into profanity. This is about a brownfield of hypocrisy and viciously deliberate mischaracterization that “shame” cannot even come close to the shame those behind it should feel.

          +

          Now, read this post by Samantha Bielefeld: The Elephant in the Room. First, it is a well-written critical piece that raises a few points in a calm, rational, nonconfrontational fashion, exactly the kind of things the pushers of The Great Big Lie say we need more of, as opposed to the screaming that is the norm in such cases.

          +

          …sorry, I should explain “The Great Big Lie”. There are several, but in this case, our specific instance of “The Great Big Lie” is about criticism. Over and over, you hear from the very people I am not going to be nice to in this that we need “better” criticsm. Instead of rage and anger, volume and vitriol, we need in-depth rational criticism, that isn’t personal or ad hominem. That it should focus on points, not people.

          +

          That, readers, is “The Big Lie”. It is a lie so big that if one ponders the reality of it, as I am going to, one wonders why anyone would believe it. It is a lie and it is one we should stop telling.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          Samantha’s points (I assume you read it, for you are smart people who know the importance of such things) are fairly clear:

          +
            +
          1. With the release of Overcast 2.0, a product Samantha actually likes, Marco Arment moved to a patronage model that will probably be successful for him.
          2. +
          3. Arment’s insistence that “anyone can do this” while technically true, (anyone can in fact, implement this pricing model), also implies that “anyone” can have the kind of success that a developer with Marco’s history, financial status, and deep ties to the Apple News Web is expected to have. This is silly.
          4. +
          5. Marco Arment occupies a fairly unique position in the Apple universe, (gained by hard work and no small talent), and because of that, benefits from a set of privileges that a new developer or even one that has been around for a long time, but isn’t, well, Marco, not only don’t have, but have little chance of attaining anytime soon.
          6. +
          7. Marco has earned his success and is entitled to the benefits and privileges it brings, but he seems rather blind to all of that, and seems to still imagine himself as “two guys in a garage”. This is just not correct.
          8. +
          9. In addition, the benefits and privileges of the above ensure that by releasing Overcast 2 as a free app, with patronage pricing, he has, if not gutted, severely hurt the ability of folks actually selling their apps for an up-front price of not free to continue doing so. This has the effect of accelerating the “race to the bottom” in the podcast listening app segment, which hurts devs who cannot afford to work on a “I don’t really need this money, so whatever you feel like sending is okay” model.
          10. +
          +

          None of this is incorrect. None of this is an ad hominem attack in any way. It is just pointing out that a developer of Arment’s stature and status lives in a very different world than someone in East Frog Balls, Arkansas trying to make a living off of App sales. Our dev in EFB doesn’t have the main sites on the Apple web falling all over themselves to review their app the way that Arment does. They’re not friends with the people being The Loop, Daring Fireball, SixColors, iMore, The Mac Observer, etc., yadda.

          +

          So, our hero, in a fit of well-meaning ignorance writes this piece (posted this morning, 14 Oct. 15) and of course, the response and any criticisms are just as reasonable and thoughtful.

          +

          If you really believe that, you are the most preciously ignorant person in the world, and can I have your seriously charmed life.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          The response, from all quarters, including Marco, someone who is so sensitive to criticism that the word “useless” is enough to shut him down, who blocked a friend of mine for the high crime of pointing out that his review of podcasting mics centered around higher priced gear and ignored folks without the scratch, who might not be ready for such things, is, in a single word, disgusting. Vomitous even.

          +

          It’s an hours-long dogpile that beggars even my imagination, and I can imagine almost anything. Seriously, it’s all there in Samantha’s Twitter Feed. From what I can tell, she’s understandably shocked over it. I however was not. This one comment in her feed made me smile (warning, this wanders a bit…er…LOT. Twitter timelines are not easy to put together):

          +
          I can see why you have some reservations about publishing it, but my gut feeling is that he would take it better than Nilay.
          +

          Oh honey, bless your sweet, ignorant heart. Marco is one of the biggest pushers of The Big Lie, and one of the reasons it is such a lie.

          +

          But it gets better. First, you have the “hey, Marco earned his status!” lot. A valid point, and one Bielefeld explicitly acknowledges, here:

          +
          From his ground floor involvement in Tumblr (for which he is now a millionaire), to the creation and sale of a wildly successful app called Instapaper, he has become a household name in technology minded circles. It is this extensive time spent in the spotlight, the huge following on Twitter, and dedicated listeners of his weekly aired Accidental Tech Podcast, that has granted him the freedom to break from seeking revenue in more traditional manners.
          +

          and here:

          +
          I’m not knocking his success, he has put effort into his line of work, and has built his own life.
          +

          and here:

          +
          He has earned his time in the spotlight, and it’s only natural for him to take advantage of it.
          +

          But still, you get the people telling her something she already acknowledge:

          +
          I don’t think he’s blind. he’s worked to where he has gotten and has had failures like everyone else.
          +

          Thank you for restating something in the article. To the person who wrote it.

          +

          In the original article, Samantha talked about the money Marco makes from his podcast. She based that on the numbers provided by ATP in terms of sponsorship rates and the number of current sponsors the podcast has. Is this going to yield perfect numbers? No. But the numbers you get from it will at least be reasonable, or should be unless the published sponsorship rates are just fantasy, and you’re stupid for taking them seriously.

          +

          At first, she went with a simple formula:

          +
          $4K x 3 per episode = $12K x 52 weeks / 3 hosts splitting it.
          +

          That’s not someone making shit up, right? Rather quickly, someone pointed out that she’d made an error in how she calculated it:

          +
          That’s $4k per ad, no? So more like $12–16k per episode.
          +

          She’d already realized her mistake and fixed it.

          +
          which is actually wrong, and I’m correcting now. $4,000 per sponsor, per episode! So, $210,000 per year.
          +

          Again, this is based on publicly available data the only kind someone not part of ATP or a close friend of Arment has access to. So while her numbers may be wrong, if they are, there’s no way for her to know that. She’s basing her opinion on actual available data. Which is sadly rare.

          +

          This becomes a huge flashpoint. You name a reason to attack her over this, people do. No really. For example, she’s not calculating his income taxes correctly:

          +
          especially since it isn’t his only source of income thus, not an indicator of his marginal inc. tax bracket.
          +
          thus, guessing net income is more haphazard than stating approx. gross income.
          +

          Ye Gods. She’s not doing his taxes for him, her point is invalid?

          +

          Then there’s the people who seem to have not read anything past what other people are telling them:

          +
          Not sure what to make of your Marco piece, to be honest. You mention his fame, whatever, but what’s the main idea here?
          +

          Just how spoon-fed do you have to be? Have you no teeth?

          +

          Of course, Marco jumps in, and predictably, he’s snippy:

          +
          If you’re going to speak in precise absolutes, it’s best to first ensure that you’re correct.
          +

          If you’re going to be like that, it’s best to provide better data. Don’t get snippy when someone is going off the only data available, and is clearly open to revising based on better data.

          +

          Then Marco’s friends/fans get into it:

          +
          I really don’t understand why it’s anyone’s business
          +

          Samantha is trying to qualify for sainthood at this point:

          +
          It isn’t really, it was a way of putting his income in context in regards to his ability to gamble with Overcast.
          +

          Again, she’s trying to drag people back to her actual point, but no one is going to play. The storm has begun. Then we get people who are just spouting nonsense:

          +
          Why is that only relevant for him? It’s a pretty weird metric,especially since his apps aren’t free.
          +

          Wha?? Overcast 2 is absolutely free. Samantha points this out:

          +
          His app is free, that’s what sparked the article to begin with.
          +

          The response is literally a parallel to “How can there be global warming if it snowed today in my town?”

          +
          If it’s free, how have I paid for it? Twice?
          +

          She is still trying:

          +
          You paid $4.99 to unlock functionality in Overcast 1.0 and you chose to support him with no additional functionality in 2.0
          +

          He is having none of it. IT SNOWED! SNOWWWWWWW!

          +
          Yes. That’s not free. Free is when you choose not to make money. And that can be weaponized. But that’s not what Overcast does.
          +

          She however, is relentless:

          +
          No, it’s still free. You can choose to support it, you are required to pay $4.99 for Pocket Casts. Totally different model.
          +

          Dude seems to give up. (Note: allllll the people bagging on her are men. All of them. Mansplaining like hell. And I’d bet every one of them considers themselves a feminist.)

          +

          We get another guy trying to push the narrative she’s punishing him for his success, which is just…it’s stupid, okay? Stupid.

          +
          It also wasn’t my point in writing my piece today, but it seems to be everyone’s focus.
          +

          (UNDERSTATEMENT OF THE YEAR)

          +
          I think the focus should be more on that fact that while it’s difficult, Marco spent years building his audience.
          +
          It doesn’t matter what he makes it how he charges. If the audience be earned is willing to pay for it, awesome.
          +

          She tries, oh lord, she tries:

          +
          To assert that he isn’t doing anything any other dev couldn’t, is wrong. It’s successful because it’s Marco.
          +

          But no, HE KNOWS HER POINT BETTER THAN SHE DOES:

          +
          No, it’s successful because he busted his ass to make it so. It’s like any other business. He grew it.
          +

          Christ. This is like a field of strawmen. Stupid ones. Very stupid ones.

          +

          One guy tries to blame it all on Apple, another in a string of Wha??? moments:

          +
          the appropriate context is Apple’s App Store policies. Other devs aren’t Marco’s responsibility
          +

          Seriously? Dude, are you even trying to talk about what Samantha actually wrote? At this point, Samantha is clearly mystified at the entire thing:

          +
          Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?
          +

          Because it’s a nit they can pick and allows them to ignore everything you wrote. That’s the only reason.

          +

          One guy is “confused”:

          +
          I see. He does have clout, so are you saying he’s too modest in how he sees himself as a dev?
          +
          Yes. He can’t be equated to the vast majority of other developers. Like calling Gruber, “just another blogger”.
          +
          Alright, that’s fair. I was just confused by the $ and fame angle at first.
          +

          Samantha’s point centers on the benefits Marco gains via his fame and background. HOW DO YOU NOT MENTION THAT? HOW IS THAT CONFUSING?

          +

          People of course are telling her it’s her fault for mentioning a salient fact at all:

          +
          Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?
          +
          Maybe because you went there with your article?
          +
          As a way of rationalizing his ability to gamble with the potential for Overcast to generate income…not the norm at all.
          +

          Of course, had she not brought up those important points, she’d have been bagged on for “not providing proof”. Lose some, lose more. By now, she’s had enough and she just deletes all mention of it. Understandable, but sad she was bullied into doing that.

          +

          Yes, bullied. That’s all this is. Bullying. She didn’t lie, cheat, or exaagerate. If her numbers were wrong, they weren’t wrong in a way she had any ability to do anything about. But there’s blood in the water, and the comments and attacks get worse:

          +
          Because you decided to start a conversation about someone else’s personal shit. You started this war.
          +

          War. THIS. IS. WAR.

          +

          This is a bunch of nerds attacking someone for reasoned, calm, polite criticism of their friend/idol. Samantha is politely pushing back a bit:

          +
          That doesn’t explain why every other part of my article is being pushed aside.
          +

          She’s right. This is all nonsense. This is people ignoring her article completely, just looking for things to attack so it can be dismissed. It’s tribalism at its purest.

          +

          Then some of the other annointed get into it, including Jason Snell in one of the most spectactular displays of “I have special knowledge you can’t be expected to have, therefore you are totally off base and wrong, even though there’s no way for you to know this” I’ve seen in a while. Jason:

          +
          You should never use an ad rate card to estimate ad revenue from any media product ever.
          +
          I learned this when I started working for a magazine — rate cards are mostly fiction, like prices on new cars
          +

          How…exactly…in the name of whatever deity Jason may believe in…is Samantha or anyone not “in the biz” supposed to know this. Also, what exactly does a magazine on paper like Macworld have to do with sponsorships for a podcast? I have done podcasts that were sponsored, and I can retaliate with “we charged what the rate card said we did. Checkmate Elitests!

          +

          Samantha basically abases herself at his feet:

          +
          I understand my mistake, and it’s unfortunate that it has completely diluted the point of my article.
          +

          I think she should have told him where and how to stuff that nonsense, but she’s a nicer person than I am. Also, it’s appropriate that Jason’s twitter avatar has its nose in the air. This is some rank snobbery. It’s disgusting and if anyone pulled that on him, Jason would be very upset. But hey, one cannot criticize The Marco without getting pushback. By “pushback”, I mean “an unrelenting fecal flood”.

          +

          Her only mistake was criticizing one of the Kool Kids. Folks, if you criticize anyone in The Deck Clique, or their friends, expect the same thing, regardless of tone or point.

          +

          Another App Dev, seemingly unable to parse Samantha’s words, needs more explanation:

          +
          so just looking over your mentions, I’m curious what exactly was your main point? Ignoring the podcast income bits.
          +

          Oh wait, he didn’t even read the article. Good on you, Dev Guy, good. on. you. Still, she plays nice with someone who didn’t even read her article:

          +
          That a typical unknown developer can’t depend on patronage to generate revenue, and charging for apps will become a negative.
          +

          Marco comes back of course, and now basically accuses her of lying about other devs talking to her and supporting her point:

          +
          How many actual developers did you hear from, really? Funny how almost nobody wants to give a (real) name on these accusations.
          +

          Really? You’re going to do that? “There’s no name, so I don’t think it’s a real person.” Just…what’s the Joe Welch quote from the McCarthy hearings?

          +
          Let us not assassinate this lad further, Senator. You’ve done enough. Have you no sense of decency, sir? At long last, have you left no sense of decency?
          +

          That is what this is at this point: character assasination because she said something critical of A Popular Person. It’s disgusting. Depressing and disgusting. No one, none of these people have seriously discussed her point, heck, it looks like they barely bothered to read it, if they did at all.

          +

          Marco starts getting really petty with her (no big shock) and Samantha finally starts pushing back:

          +
          Glad to see you be the bigger person and ignore the mindset of so many developers not relating to you, good for you!
          +

          That of course, is what caused Marco to question the validity, if not the existence of her sources. (Funny how anonymous sources are totes okay when they convenience Marco et al, and work for oh, Apple, but when they are inconvenient? Ha! PROVIDE ME PROOF YOU INTEMPERATE WOMAN!)

          +

          Make no mistake, there’s some sexist shit going on here. Every tweet I’ve quoted was authored by a guy.

          +

          Of course, Marco has to play the “I’ve been around longer than you” card with this bon mot:

          +
          Yup, before you existed!
          +

          Really dude? I mean, I’m sorry about the penis, but really?

          +

          Mind you, when the criticism isn’t just bizarrely stupid, Samantha reacts the way Marco and his ilk claim they would to (if they ever got any valid criticism. Which clearly is impossible):

          +
          Not to get into the middle of this, but “income” is not the term you’re looking for. “Revenue” is.
          +
          lol. Noted.
          +
          And I wasn’t intending to be a dick, just a lot of people hear/say “income” when they intend “revenue”, and then discussion …
          +
          … gets derailed by a jedi handwave of “Expenses”. But outside of charitable donation, it is all directly related.
          +
          haha. Thank you for the clarification.
          +

          Note to Marco and the other…whatever they are…that is how one reacts to that kind of criticism. With a bit of humor and self-deprecation. You should try it sometime. For real, not just in your heads or conversations in Irish Pubs in S.F.

          +

          But now, the door has been cracked, and the cheap shots come out:

          +
          @testflight_app: Don’t worry guys, we process @marcoarment’s apps in direct proportion to his megabucks earnings. #fairelephant
          +

          (Note: testflight_app is a parody account. Please do not mess with the actual testflight folks. They are still cool.)

          +

          Or this…conversation:

          +
          +
          +
          +
          +
          +
          +

          Good job guys. Good job. Defend the tribe. Attack the other. Frederico attempts to recover from his stunning display of demeaning douchery: ‏@viticci: @s_bielefeld I don’t know if it’s an Italian thing, but counting other people’s money is especially weird for me. IMO, bad move in the post.

          +

          Samantha is clearly sick of his crap: ‏@s_bielefeld: @viticci That’s what I’m referring to, the mistake of ever having mentioned it. So, now, Marco can ignore the bigger issue and go on living.

          +

          Good for her. There’s being patient and being roadkill.

          +

          Samantha does put the call out for her sources to maybe let her use their names:

          +
          From all of you I heard from earlier, anyone care to go on record?
          +

          My good friend, The Angry Drunk points out the obvious problem:

          +
          Nobody’s going to go on record when they count on Marco’s friends for their PR.
          +

          This is true. Again, the sites that are Friends of Marco:

          +

          Daring Fireball

          +

          The Loop

          +

          SixColors

          +

          iMore

          +

          MacStories

          +

          A few others, but I want this post to end one day.

          +

          You piss that crew off, and given how petty rather a few of them have demonstrated they are, good luck on getting any kind of notice from them.

          +

          Of course, the idea this could happen is just craycray:

          +
          @KevinColeman .@Angry_Drunk @s_bielefeld @marcoarment Wow, you guys are veering right into crazy conspiracy theory territory. #JetFuelCantMeltSteelBeams
          +

          Yeah. Because a mature person like Marco would never do anything like that.

          +

          Of course, the real point on this is starting to happen:

          +
          you’re getting a lot of heat now but happy you are writing things that stir up the community. Hope you continue to be a voice!
          +
          I doubt I will.
          +

          See, they’ve done their job. Mess with the bull, you get the horns. Maybe you should find another thing to write about, this isn’t a good place for you. Great job y’all.

          +

          Some people aren’t even pretending. They’re just in full strawman mode:

          +
          @timkeller: Unfair to begrudge a person for leveraging past success, especially when that success is earned. No ‘luck’ involved.
          +
          @s_bielefeld: @timkeller I plainly stated that I don’t hold his doing this against him. Way to twist words.
          +

          I think she’s earned her anger at this point.

          +

          Don’t worry, Marco knows what the real problem is: most devs just suck —

          +
          +
          +
          +
          +
          +
          +

          I have a saying that applies in this case: don’t place your head so far up your nethers that you go full Klein Bottle. Marco has gone full Klein Bottle. (To be correct, he went FKB some years ago.)

          +

          There are some bright spots. My favorite is when Building Twenty points out the real elephant in the room:

          +
          @BuildingTwenty: Both @s_bielefeld & I wrote similar critiques of @marcoarment’s pricing model yet the Internet pilloried only the woman. Who’d have guessed?
          +

          Yup.

          +

          Another bright spot are these comments from Ian Betteridge, who has been doing this even longer than Marco:

          +
          You know, any writer who has never made a single factual error in a piece hasn’t ever written anything worth reading.
          +
          I learned my job with the support of people who helped me. Had I suffered an Internet pile on for every error I wouldn’t have bothered.
          +

          To which Samantha understandably replies:

          +
          and it’s honestly something I’m contemplating right now, whether to continue…
          +

          Gee, I can’t imagine why. Why with comments like this from Chris Breen that completely misrepresent Samantha’s point, (who until today, I would have absolutely defended as being better than this, something I am genuinely saddened to be wrong about), why wouldn’t she want to continue doing this?

          +
          If I have this right, some people are outraged that a creator has decided to give away his work.
          +

          No Chris, you don’t have this right. But hey, who has time to find out the real issue and read an article. I’m sure your friends told you everything you need to know.

          +

          Noted Feminist Glenn Fleishman gets a piece of the action too:

          +
          +
          +
          +
          +
          +
          +

          I’m not actually surprised here. I watched Fleishman berate a friend of mine who has been an engineer for…heck, waaaaay too long on major software products in the most condescending way because she tried to point out that as a very technical woman, “The Magazine” literally had nothing to say to her and maybe he should fix that. “Impertinent” was I believe what he called her, but I may have the specific word wrong. Not the attitude mind you. Great Feminists like Glenn do not like uppity women criticizing Great Feminists who are their Great Allies.

          +

          Great Feminists are often tools.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          Luckily, I hope, the people who get Samantha’s point also started chiming in (and you get 100% of the women commenting here that I’ve seen):

          +
          I don’t think he’s wrong for doing it, he just discusses it as if the market’s a level playing field — it isn’t
          +
          This is a great article with lots of great points about the sustainability of iOS development. Thank you for publishing it.
          +
          Regardless of the numbers and your view of MA, fair points here about confirmation bias in app marketing feasibility http://samanthabielefeld.com/the-elephant-in-the-room …
          +
          thank you for posting this, it covers a lot of things people don’t like to talk about.
          +
          I’m sure you have caught untold amounts of flak over posting this because Marco is blind to his privilege as a developer.
          +
          Catching up on the debate, and agreeing with Harry’s remark. (Enjoyed your article, Samantha, and ‘got’ your point.)
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          I would like to say I’m surprised at the reaction to Samantha’s article, but I’m not. In spite of his loud declarations of support for The Big Lie, Marco Arment is as bad at any form of criticism that he hasn’t already approved as a very insecure tween. An example from 2011: http://www.businessinsider.com/marco-arment-2011-9

          +

          Marco is great with criticism as long as it never actually criticizes him. If it does, be prepared a flood of petty, petulant whining that a room full of bored preschoolers on a hot day would be hard-pressed to match.

          +

          Today has been…well, it sucks. It sucks because someone doing what all the Arments of the world claim to want was naive enough to believe what they were told, and found out the hard way just how big a lie The Big Lie is, and how vicious people are when you’re silly enough to believe anything they say about criticism.

          +

          And note again, every single condescending crack, misrepresentation, and strawman had an exclusively male source. Most of them have, at one point or another, loudly trumpted themselves as Feminist Allies, as a friend to women struggling with the sexism and misogyny in tech. Congratulations y’all on being just as bad as the people you claim to oppose.

          +

          Samantha has handled this better than anyone else could have. My respect for her as a person and a writer is off the charts. If she choses to walk away from blogging in the Apple space, believe me I understand. As bad as today was for her, I’ve seen worse. Much worse.

          +

          But I hope she doesn’t. I hope she stays, because she is Doing This Right, and in a corner of the internet that has become naught but an endless circle jerk, a cliquish collection, a churlish, childish cohort interested not in writing or the truth, but in making sure The Right People are elevated, and The Others put down, she is someone worth reading and listening to. The number people who owe her apologies goes around the block, and I don’t think she’ll ever see a one. I’m sure as heck not apologizing for them, I’ll not make their lives easier in the least.

          +

          All of you, all. of. you…Marco, Breen, Snell, Vittici, had a chance to live by your words. You were faced with reasoned, polite, respectful criticism and instead of what you should have done, you all dropped trou and sprayed an epic diarrheal discharge all over someone who had done nothing to deserve it. Me, I earned most of my aggro, Samantha did not earn any of the idiocy I’ve seen today. I hope you’re all proud of yourselves. Someone should be, it won’t be me. Ever.

          +

          So I hope she stays, but if she goes, I understand. For what it’s worth, I don’t think she’s wrong either way.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
            +
          • Share
          • +
          • +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          +
          + Go to the profile of John C. Welch +
          +
          +
          Never miss a story from John C. Welch, when you sign up for Medium. Learn more
          +
          Never miss a story from John C. Welch
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + + + + + +===========^CCrash Annotation GraphicsCriticalError: |[C0][GFX1-]: Receive IPC close with reason=AbnormalShutdown (t=7.53758) [GFX1-]: Receive IPC close with reason=AbnormalShutdown localhost:mozilla-central itoyxd$ localhost:mozilla-central itoyxd$ localhost:mozilla-central itoyxd$ ./mach run 0:00.20 /Users/itoyxd/evan/dev/mozilla/mozilla-central/obj-firefox/dist/Nightly.app/Contents/MacOS/firefox -no-remote -foreground -profile /Users/itoyxd/evan/dev/mozilla/mozilla-central/obj-firefox/tmp/scratch_user 2017-02-17 16:57:43.743 plugin-container[11969:394160] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x943f, name = 'com.apple.tsm.portname' See /usr/include/servers/bootstrap_defs.h for the error codes. 2017-02-17 16:57:43.743 plugin-container[11969:394160] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x4907, name = 'com.apple.CFPasteboardClient' See /usr/include/servers/bootstrap_defs.h for the error codes. 2017-02-17 16:57:43.743 plugin-container[11969:394160] void __CFPasteboardSetup() : Failed to allocate communication port for com.apple.CFPasteboardClient; this is likely due to sandbox restrictions 2017-02-17 16:57:50.234 plugin-container[11972:394329] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x953f, name = 'com.apple.tsm.portname' See /usr/include/servers/bootstrap_defs.h for the error codes. 2017-02-17 16:57:50.235 plugin-container[11972:394329] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x4b0b, name = 'com.apple.CFPasteboardClient' See /usr/include/servers/bootstrap_defs.h for the error codes. 2017-02-17 16:57:50.235 plugin-container[11972:394329] void __CFPasteboardSetup() : Failed to allocate communication port for com.apple.CFPasteboardClient; this is likely due to sandbox restrictions =========== + + + + + + + Samantha and The Great Big Lie – Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +

          Samantha and The Great Big Lie

          +

          How to get shanked doing what people say they want

          +
          don’t preach to me
          Mr. integrity
          +

          (EDIT: removed the link to Samantha’s post, because the arments and the grubers and the rest of The Deck Clique got what they wanted: a non-proper person driven off the internet lightly capped with a dusting of transphobia along the way, all totally okay because the ends justify the means, and it’s okay when “good” people do it.)

          +

          First, I need to say something about this article: the reason I’m writing it infuriates me. Worse than installing CS 3 or Acrobat 7 ever did, and the former inspired comparisons to fecophile porn. I’m actually too mad to cuss. Well, not completely, but in this case, I don’t think the people I’m mad at are worth the creativity I try to put into profanity. This is about a brownfield of hypocrisy and viciously deliberate mischaracterization that “shame” cannot even come close to the shame those behind it should feel.

          +

          Now, read this post by Samantha Bielefeld: The Elephant in the Room. First, it is a well-written critical piece that raises a few points in a calm, rational, nonconfrontational fashion, exactly the kind of things the pushers of The Great Big Lie say we need more of, as opposed to the screaming that is the norm in such cases.

          +

          …sorry, I should explain “The Great Big Lie”. There are several, but in this case, our specific instance of “The Great Big Lie” is about criticism. Over and over, you hear from the very people I am not going to be nice to in this that we need “better” criticsm. Instead of rage and anger, volume and vitriol, we need in-depth rational criticism, that isn’t personal or ad hominem. That it should focus on points, not people.

          +

          That, readers, is “The Big Lie”. It is a lie so big that if one ponders the reality of it, as I am going to, one wonders why anyone would believe it. It is a lie and it is one we should stop telling.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          Samantha’s points (I assume you read it, for you are smart people who know the importance of such things) are fairly clear:

          +
            +
          1. With the release of Overcast 2.0, a product Samantha actually likes, Marco Arment moved to a patronage model that will probably be successful for him.
          2. +
          3. Arment’s insistence that “anyone can do this” while technically true, (anyone can in fact, implement this pricing model), also implies that “anyone” can have the kind of success that a developer with Marco’s history, financial status, and deep ties to the Apple News Web is expected to have. This is silly.
          4. +
          5. Marco Arment occupies a fairly unique position in the Apple universe, (gained by hard work and no small talent), and because of that, benefits from a set of privileges that a new developer or even one that has been around for a long time, but isn’t, well, Marco, not only don’t have, but have little chance of attaining anytime soon.
          6. +
          7. Marco has earned his success and is entitled to the benefits and privileges it brings, but he seems rather blind to all of that, and seems to still imagine himself as “two guys in a garage”. This is just not correct.
          8. +
          9. In addition, the benefits and privileges of the above ensure that by releasing Overcast 2 as a free app, with patronage pricing, he has, if not gutted, severely hurt the ability of folks actually selling their apps for an up-front price of not free to continue doing so. This has the effect of accelerating the “race to the bottom” in the podcast listening app segment, which hurts devs who cannot afford to work on a “I don’t really need this money, so whatever you feel like sending is okay” model.
          10. +
          +

          None of this is incorrect. None of this is an ad hominem attack in any way. It is just pointing out that a developer of Arment’s stature and status lives in a very different world than someone in East Frog Balls, Arkansas trying to make a living off of App sales. Our dev in EFB doesn’t have the main sites on the Apple web falling all over themselves to review their app the way that Arment does. They’re not friends with the people being The Loop, Daring Fireball, SixColors, iMore, The Mac Observer, etc., yadda.

          +

          So, our hero, in a fit of well-meaning ignorance writes this piece (posted this morning, 14 Oct. 15) and of course, the response and any criticisms are just as reasonable and thoughtful.

          +

          If you really believe that, you are the most preciously ignorant person in the world, and can I have your seriously charmed life.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          The response, from all quarters, including Marco, someone who is so sensitive to criticism that the word “useless” is enough to shut him down, who blocked a friend of mine for the high crime of pointing out that his review of podcasting mics centered around higher priced gear and ignored folks without the scratch, who might not be ready for such things, is, in a single word, disgusting. Vomitous even.

          +

          It’s an hours-long dogpile that beggars even my imagination, and I can imagine almost anything. Seriously, it’s all there in Samantha’s Twitter Feed. From what I can tell, she’s understandably shocked over it. I however was not. This one comment in her feed made me smile (warning, this wanders a bit…er…LOT. Twitter timelines are not easy to put together):

          +
          I can see why you have some reservations about publishing it, but my gut feeling is that he would take it better than Nilay.
          +

          Oh honey, bless your sweet, ignorant heart. Marco is one of the biggest pushers of The Big Lie, and one of the reasons it is such a lie.

          +

          But it gets better. First, you have the “hey, Marco earned his status!” lot. A valid point, and one Bielefeld explicitly acknowledges, here:

          +
          From his ground floor involvement in Tumblr (for which he is now a millionaire), to the creation and sale of a wildly successful app called Instapaper, he has become a household name in technology minded circles. It is this extensive time spent in the spotlight, the huge following on Twitter, and dedicated listeners of his weekly aired Accidental Tech Podcast, that has granted him the freedom to break from seeking revenue in more traditional manners.
          +

          and here:

          +
          I’m not knocking his success, he has put effort into his line of work, and has built his own life.
          +

          and here:

          +
          He has earned his time in the spotlight, and it’s only natural for him to take advantage of it.
          +

          But still, you get the people telling her something she already acknowledge:

          +
          I don’t think he’s blind. he’s worked to where he has gotten and has had failures like everyone else.
          +

          Thank you for restating something in the article. To the person who wrote it.

          +

          In the original article, Samantha talked about the money Marco makes from his podcast. She based that on the numbers provided by ATP in terms of sponsorship rates and the number of current sponsors the podcast has. Is this going to yield perfect numbers? No. But the numbers you get from it will at least be reasonable, or should be unless the published sponsorship rates are just fantasy, and you’re stupid for taking them seriously.

          +

          At first, she went with a simple formula:

          +
          $4K x 3 per episode = $12K x 52 weeks / 3 hosts splitting it.
          +

          That’s not someone making shit up, right? Rather quickly, someone pointed out that she’d made an error in how she calculated it:

          +
          That’s $4k per ad, no? So more like $12–16k per episode.
          +

          She’d already realized her mistake and fixed it.

          +
          which is actually wrong, and I’m correcting now. $4,000 per sponsor, per episode! So, $210,000 per year.
          +

          Again, this is based on publicly available data the only kind someone not part of ATP or a close friend of Arment has access to. So while her numbers may be wrong, if they are, there’s no way for her to know that. She’s basing her opinion on actual available data. Which is sadly rare.

          +

          This becomes a huge flashpoint. You name a reason to attack her over this, people do. No really. For example, she’s not calculating his income taxes correctly:

          +
          especially since it isn’t his only source of income thus, not an indicator of his marginal inc. tax bracket.
          +
          thus, guessing net income is more haphazard than stating approx. gross income.
          +

          Ye Gods. She’s not doing his taxes for him, her point is invalid?

          +

          Then there’s the people who seem to have not read anything past what other people are telling them:

          +
          Not sure what to make of your Marco piece, to be honest. You mention his fame, whatever, but what’s the main idea here?
          +

          Just how spoon-fed do you have to be? Have you no teeth?

          +

          Of course, Marco jumps in, and predictably, he’s snippy:

          +
          If you’re going to speak in precise absolutes, it’s best to first ensure that you’re correct.
          +

          If you’re going to be like that, it’s best to provide better data. Don’t get snippy when someone is going off the only data available, and is clearly open to revising based on better data.

          +

          Then Marco’s friends/fans get into it:

          +
          I really don’t understand why it’s anyone’s business
          +

          Samantha is trying to qualify for sainthood at this point:

          +
          It isn’t really, it was a way of putting his income in context in regards to his ability to gamble with Overcast.
          +

          Again, she’s trying to drag people back to her actual point, but no one is going to play. The storm has begun. Then we get people who are just spouting nonsense:

          +
          Why is that only relevant for him? It’s a pretty weird metric,especially since his apps aren’t free.
          +

          Wha?? Overcast 2 is absolutely free. Samantha points this out:

          +
          His app is free, that’s what sparked the article to begin with.
          +

          The response is literally a parallel to “How can there be global warming if it snowed today in my town?”

          +
          If it’s free, how have I paid for it? Twice?
          +

          She is still trying:

          +
          You paid $4.99 to unlock functionality in Overcast 1.0 and you chose to support him with no additional functionality in 2.0
          +

          He is having none of it. IT SNOWED! SNOWWWWWWW!

          +
          Yes. That’s not free. Free is when you choose not to make money. And that can be weaponized. But that’s not what Overcast does.
          +

          She however, is relentless:

          +
          No, it’s still free. You can choose to support it, you are required to pay $4.99 for Pocket Casts. Totally different model.
          +

          Dude seems to give up. (Note: allllll the people bagging on her are men. All of them. Mansplaining like hell. And I’d bet every one of them considers themselves a feminist.)

          +

          We get another guy trying to push the narrative she’s punishing him for his success, which is just…it’s stupid, okay? Stupid.

          +
          It also wasn’t my point in writing my piece today, but it seems to be everyone’s focus.
          +

          (UNDERSTATEMENT OF THE YEAR)

          +
          I think the focus should be more on that fact that while it’s difficult, Marco spent years building his audience.
          +
          It doesn’t matter what he makes it how he charges. If the audience be earned is willing to pay for it, awesome.
          +

          She tries, oh lord, she tries:

          +
          To assert that he isn’t doing anything any other dev couldn’t, is wrong. It’s successful because it’s Marco.
          +

          But no, HE KNOWS HER POINT BETTER THAN SHE DOES:

          +
          No, it’s successful because he busted his ass to make it so. It’s like any other business. He grew it.
          +

          Christ. This is like a field of strawmen. Stupid ones. Very stupid ones.

          +

          One guy tries to blame it all on Apple, another in a string of Wha??? moments:

          +
          the appropriate context is Apple’s App Store policies. Other devs aren’t Marco’s responsibility
          +

          Seriously? Dude, are you even trying to talk about what Samantha actually wrote? At this point, Samantha is clearly mystified at the entire thing:

          +
          Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?
          +

          Because it’s a nit they can pick and allows them to ignore everything you wrote. That’s the only reason.

          +

          One guy is “confused”:

          +
          I see. He does have clout, so are you saying he’s too modest in how he sees himself as a dev?
          +
          Yes. He can’t be equated to the vast majority of other developers. Like calling Gruber, “just another blogger”.
          +
          Alright, that’s fair. I was just confused by the $ and fame angle at first.
          +

          Samantha’s point centers on the benefits Marco gains via his fame and background. HOW DO YOU NOT MENTION THAT? HOW IS THAT CONFUSING?

          +

          People of course are telling her it’s her fault for mentioning a salient fact at all:

          +
          Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?
          +
          Maybe because you went there with your article?
          +
          As a way of rationalizing his ability to gamble with the potential for Overcast to generate income…not the norm at all.
          +

          Of course, had she not brought up those important points, she’d have been bagged on for “not providing proof”. Lose some, lose more. By now, she’s had enough and she just deletes all mention of it. Understandable, but sad she was bullied into doing that.

          +

          Yes, bullied. That’s all this is. Bullying. She didn’t lie, cheat, or exaagerate. If her numbers were wrong, they weren’t wrong in a way she had any ability to do anything about. But there’s blood in the water, and the comments and attacks get worse:

          +
          Because you decided to start a conversation about someone else’s personal shit. You started this war.
          +

          War. THIS. IS. WAR.

          +

          This is a bunch of nerds attacking someone for reasoned, calm, polite criticism of their friend/idol. Samantha is politely pushing back a bit:

          +
          That doesn’t explain why every other part of my article is being pushed aside.
          +

          She’s right. This is all nonsense. This is people ignoring her article completely, just looking for things to attack so it can be dismissed. It’s tribalism at its purest.

          +

          Then some of the other annointed get into it, including Jason Snell in one of the most spectactular displays of “I have special knowledge you can’t be expected to have, therefore you are totally off base and wrong, even though there’s no way for you to know this” I’ve seen in a while. Jason:

          +
          You should never use an ad rate card to estimate ad revenue from any media product ever.
          +
          I learned this when I started working for a magazine — rate cards are mostly fiction, like prices on new cars
          +

          How…exactly…in the name of whatever deity Jason may believe in…is Samantha or anyone not “in the biz” supposed to know this. Also, what exactly does a magazine on paper like Macworld have to do with sponsorships for a podcast? I have done podcasts that were sponsored, and I can retaliate with “we charged what the rate card said we did. Checkmate Elitests!

          +

          Samantha basically abases herself at his feet:

          +
          I understand my mistake, and it’s unfortunate that it has completely diluted the point of my article.
          +

          I think she should have told him where and how to stuff that nonsense, but she’s a nicer person than I am. Also, it’s appropriate that Jason’s twitter avatar has its nose in the air. This is some rank snobbery. It’s disgusting and if anyone pulled that on him, Jason would be very upset. But hey, one cannot criticize The Marco without getting pushback. By “pushback”, I mean “an unrelenting fecal flood”.

          +

          Her only mistake was criticizing one of the Kool Kids. Folks, if you criticize anyone in The Deck Clique, or their friends, expect the same thing, regardless of tone or point.

          +

          Another App Dev, seemingly unable to parse Samantha’s words, needs more explanation:

          +
          so just looking over your mentions, I’m curious what exactly was your main point? Ignoring the podcast income bits.
          +

          Oh wait, he didn’t even read the article. Good on you, Dev Guy, good. on. you. Still, she plays nice with someone who didn’t even read her article:

          +
          That a typical unknown developer can’t depend on patronage to generate revenue, and charging for apps will become a negative.
          +

          Marco comes back of course, and now basically accuses her of lying about other devs talking to her and supporting her point:

          +
          How many actual developers did you hear from, really? Funny how almost nobody wants to give a (real) name on these accusations.
          +

          Really? You’re going to do that? “There’s no name, so I don’t think it’s a real person.” Just…what’s the Joe Welch quote from the McCarthy hearings?

          +
          Let us not assassinate this lad further, Senator. You’ve done enough. Have you no sense of decency, sir? At long last, have you left no sense of decency?
          +

          That is what this is at this point: character assasination because she said something critical of A Popular Person. It’s disgusting. Depressing and disgusting. No one, none of these people have seriously discussed her point, heck, it looks like they barely bothered to read it, if they did at all.

          +

          Marco starts getting really petty with her (no big shock) and Samantha finally starts pushing back:

          +
          Glad to see you be the bigger person and ignore the mindset of so many developers not relating to you, good for you!
          +

          That of course, is what caused Marco to question the validity, if not the existence of her sources. (Funny how anonymous sources are totes okay when they convenience Marco et al, and work for oh, Apple, but when they are inconvenient? Ha! PROVIDE ME PROOF YOU INTEMPERATE WOMAN!)

          +

          Make no mistake, there’s some sexist shit going on here. Every tweet I’ve quoted was authored by a guy.

          +

          Of course, Marco has to play the “I’ve been around longer than you” card with this bon mot:

          +
          Yup, before you existed!
          +

          Really dude? I mean, I’m sorry about the penis, but really?

          +

          Mind you, when the criticism isn’t just bizarrely stupid, Samantha reacts the way Marco and his ilk claim they would to (if they ever got any valid criticism. Which clearly is impossible):

          +
          Not to get into the middle of this, but “income” is not the term you’re looking for. “Revenue” is.
          +
          lol. Noted.
          +
          And I wasn’t intending to be a dick, just a lot of people hear/say “income” when they intend “revenue”, and then discussion …
          +
          … gets derailed by a jedi handwave of “Expenses”. But outside of charitable donation, it is all directly related.
          +
          haha. Thank you for the clarification.
          +

          Note to Marco and the other…whatever they are…that is how one reacts to that kind of criticism. With a bit of humor and self-deprecation. You should try it sometime. For real, not just in your heads or conversations in Irish Pubs in S.F.

          +

          But now, the door has been cracked, and the cheap shots come out:

          +
          @testflight_app: Don’t worry guys, we process @marcoarment’s apps in direct proportion to his megabucks earnings. #fairelephant
          +

          (Note: testflight_app is a parody account. Please do not mess with the actual testflight folks. They are still cool.)

          +

          Or this…conversation:

          +
          +
          +
          +
          +
          +
          +

          Good job guys. Good job. Defend the tribe. Attack the other. Frederico attempts to recover from his stunning display of demeaning douchery: ‏@viticci: @s_bielefeld I don’t know if it’s an Italian thing, but counting other people’s money is especially weird for me. IMO, bad move in the post.

          +

          Samantha is clearly sick of his crap: ‏@s_bielefeld: @viticci That’s what I’m referring to, the mistake of ever having mentioned it. So, now, Marco can ignore the bigger issue and go on living.

          +

          Good for her. There’s being patient and being roadkill.

          +

          Samantha does put the call out for her sources to maybe let her use their names:

          +
          From all of you I heard from earlier, anyone care to go on record?
          +

          My good friend, The Angry Drunk points out the obvious problem:

          +
          Nobody’s going to go on record when they count on Marco’s friends for their PR.
          +

          This is true. Again, the sites that are Friends of Marco:

          +

          Daring Fireball

          +

          The Loop

          +

          SixColors

          +

          iMore

          +

          MacStories

          +

          A few others, but I want this post to end one day.

          +

          You piss that crew off, and given how petty rather a few of them have demonstrated they are, good luck on getting any kind of notice from them.

          +

          Of course, the idea this could happen is just craycray:

          +
          @KevinColeman .@Angry_Drunk @s_bielefeld @marcoarment Wow, you guys are veering right into crazy conspiracy theory territory. #JetFuelCantMeltSteelBeams
          +

          Yeah. Because a mature person like Marco would never do anything like that.

          +

          Of course, the real point on this is starting to happen:

          +
          you’re getting a lot of heat now but happy you are writing things that stir up the community. Hope you continue to be a voice!
          +
          I doubt I will.
          +

          See, they’ve done their job. Mess with the bull, you get the horns. Maybe you should find another thing to write about, this isn’t a good place for you. Great job y’all.

          +

          Some people aren’t even pretending. They’re just in full strawman mode:

          +
          @timkeller: Unfair to begrudge a person for leveraging past success, especially when that success is earned. No ‘luck’ involved.
          +
          @s_bielefeld: @timkeller I plainly stated that I don’t hold his doing this against him. Way to twist words.
          +

          I think she’s earned her anger at this point.

          +

          Don’t worry, Marco knows what the real problem is: most devs just suck —

          +
          +
          +
          +
          +
          +
          +

          I have a saying that applies in this case: don’t place your head so far up your nethers that you go full Klein Bottle. Marco has gone full Klein Bottle. (To be correct, he went FKB some years ago.)

          +

          There are some bright spots. My favorite is when Building Twenty points out the real elephant in the room:

          +
          @BuildingTwenty: Both @s_bielefeld & I wrote similar critiques of @marcoarment’s pricing model yet the Internet pilloried only the woman. Who’d have guessed?
          +

          Yup.

          +

          Another bright spot are these comments from Ian Betteridge, who has been doing this even longer than Marco:

          +
          You know, any writer who has never made a single factual error in a piece hasn’t ever written anything worth reading.
          +
          I learned my job with the support of people who helped me. Had I suffered an Internet pile on for every error I wouldn’t have bothered.
          +

          To which Samantha understandably replies:

          +
          and it’s honestly something I’m contemplating right now, whether to continue…
          +

          Gee, I can’t imagine why. Why with comments like this from Chris Breen that completely misrepresent Samantha’s point, (who until today, I would have absolutely defended as being better than this, something I am genuinely saddened to be wrong about), why wouldn’t she want to continue doing this?

          +
          If I have this right, some people are outraged that a creator has decided to give away his work.
          +

          No Chris, you don’t have this right. But hey, who has time to find out the real issue and read an article. I’m sure your friends told you everything you need to know.

          +

          Noted Feminist Glenn Fleishman gets a piece of the action too:

          +
          +
          +
          +
          +
          +
          +

          I’m not actually surprised here. I watched Fleishman berate a friend of mine who has been an engineer for…heck, waaaaay too long on major software products in the most condescending way because she tried to point out that as a very technical woman, “The Magazine” literally had nothing to say to her and maybe he should fix that. “Impertinent” was I believe what he called her, but I may have the specific word wrong. Not the attitude mind you. Great Feminists like Glenn do not like uppity women criticizing Great Feminists who are their Great Allies.

          +

          Great Feminists are often tools.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          Luckily, I hope, the people who get Samantha’s point also started chiming in (and you get 100% of the women commenting here that I’ve seen):

          +
          I don’t think he’s wrong for doing it, he just discusses it as if the market’s a level playing field — it isn’t
          +
          This is a great article with lots of great points about the sustainability of iOS development. Thank you for publishing it.
          +
          Regardless of the numbers and your view of MA, fair points here about confirmation bias in app marketing feasibility http://samanthabielefeld.com/the-elephant-in-the-room …
          +
          thank you for posting this, it covers a lot of things people don’t like to talk about.
          +
          I’m sure you have caught untold amounts of flak over posting this because Marco is blind to his privilege as a developer.
          +
          Catching up on the debate, and agreeing with Harry’s remark. (Enjoyed your article, Samantha, and ‘got’ your point.)
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          I would like to say I’m surprised at the reaction to Samantha’s article, but I’m not. In spite of his loud declarations of support for The Big Lie, Marco Arment is as bad at any form of criticism that he hasn’t already approved as a very insecure tween. An example from 2011: http://www.businessinsider.com/marco-arment-2011-9

          +

          Marco is great with criticism as long as it never actually criticizes him. If it does, be prepared a flood of petty, petulant whining that a room full of bored preschoolers on a hot day would be hard-pressed to match.

          +

          Today has been…well, it sucks. It sucks because someone doing what all the Arments of the world claim to want was naive enough to believe what they were told, and found out the hard way just how big a lie The Big Lie is, and how vicious people are when you’re silly enough to believe anything they say about criticism.

          +

          And note again, every single condescending crack, misrepresentation, and strawman had an exclusively male source. Most of them have, at one point or another, loudly trumpted themselves as Feminist Allies, as a friend to women struggling with the sexism and misogyny in tech. Congratulations y’all on being just as bad as the people you claim to oppose.

          +

          Samantha has handled this better than anyone else could have. My respect for her as a person and a writer is off the charts. If she choses to walk away from blogging in the Apple space, believe me I understand. As bad as today was for her, I’ve seen worse. Much worse.

          +

          But I hope she doesn’t. I hope she stays, because she is Doing This Right, and in a corner of the internet that has become naught but an endless circle jerk, a cliquish collection, a churlish, childish cohort interested not in writing or the truth, but in making sure The Right People are elevated, and The Others put down, she is someone worth reading and listening to. The number people who owe her apologies goes around the block, and I don’t think she’ll ever see a one. I’m sure as heck not apologizing for them, I’ll not make their lives easier in the least.

          +

          All of you, all. of. you…Marco, Breen, Snell, Vittici, had a chance to live by your words. You were faced with reasoned, polite, respectful criticism and instead of what you should have done, you all dropped trou and sprayed an epic diarrheal discharge all over someone who had done nothing to deserve it. Me, I earned most of my aggro, Samantha did not earn any of the idiocy I’ve seen today. I hope you’re all proud of yourselves. Someone should be, it won’t be me. Ever.

          +

          So I hope she stays, but if she goes, I understand. For what it’s worth, I don’t think she’s wrong either way.

          +
          +
          +
          +
          + +
          +
          +
          +
          +
            +
          • Share
          • +
          • +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          +
          + Go to the profile of John C. Welch +
          +
          +
          Never miss a story from John C. Welch, when you sign up for Medium. Learn more
          +
          Never miss a story from John C. Welch
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + + + +
          + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json new file mode 100644 index 000000000..b0ef9465b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Henri Sivonen", + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy\n eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam\n voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet\n clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit\n amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam\n nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,\n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.\n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor\n sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed\n diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,\n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.\n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor\n sit amet.", + "Image": null, + "Title": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy\n eirmod tempor invidunt", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected.html new file mode 100644 index 000000000..39e027e47 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected.html @@ -0,0 +1,50 @@ +
          + + + +

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed + diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

          + +

          Secondary header

          + +

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed + diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

          + +

          Secondary header

          + +

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed + diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/source.html new file mode 100644 index 000000000..f5f8ca6c2 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/source.html @@ -0,0 +1,64 @@ + + + + + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt + + + + + + +

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt

          + +

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed + diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

          + +

          Secondary header

          + +

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed + diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

          + +

          Secondary header

          + +

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed + diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-images.json new file mode 100644 index 000000000..8ee13b8e5 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-images.json @@ -0,0 +1,9 @@ +[ + "https:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/template\/page-image.af8027a425de.png", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/desktop\/customize\/animations\/flexible-top-fallback.c960365ba781.png", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/desktop\/customize\/designed-redesigned.fbd3ee9402e6.png", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/desktop\/customize\/animations\/flexible-bottom-fallback.cafd48a3d0a4.png", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/desktop\/customize\/theme-red.61611c5734ab.png", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/desktop\/customize\/add-ons.63a4b761f822.png", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/desktop\/customize\/awesome-bar.437df162126c.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-metadata.json new file mode 100644 index 000000000..1b17f9b16 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": "ltr", + "Excerpt": "It’s easier than ever to personalize Firefox and make it work the way\n you do.\n No other browser gives you so much choice and flexibility.", + "Image": "https:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/template\/page-image.af8027a425de.png", + "Title": "Firefox — Customize and make it your own — The most flexible browser on the Web", + "SiteName": "Mozilla" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected.html new file mode 100644 index 000000000..ba1896ea7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected.html @@ -0,0 +1,67 @@ +
          + + +

          It’s easier than ever to personalize Firefox and make it work the way + you do. +

          No other browser gives you so much choice and flexibility.

          +
          +

          +
          +
          +
          +
          +

          Designed to

          be redesigned

          + +

          Get fast and easy access to the features you use most in the new menu. + Open the “Customize” panel to add, move or remove any button you want. + Keep your favorite features — add-ons, private browsing, Sync and more + — one quick click away.

          +

          +
          +

          +
          +
          +
          +
          +
          +
          +

          Themes

          + +

          Make Firefox match your style. Choose from thousands of themes and dress + up your browser with a single click.

          +

          Try it now + +

          Learn more + +

          Next

          Preview of the currently selected theme

          +
          +
          +
          +

          Add-ons

          +

          Next

          Add-ons are like apps that you install to add features to Firefox. They + let you compare prices, check the weather, listen to music, send a tweet + and more.

          +
          • Read the latest news & blogs
          • +
          • Manage your downloads
          • +
          • Watch videos & view photos
          • +

          Here are a few of our favorites + +

          Learn more + +

          + +

          +
          +
          +
          +

          Awesome Bar

          +

          Next

          The Awesome Bar learns as you browse to make your version of Firefox unique. + Find and return to your favorite sites without having to remember a URL.

          +

          See what it can do for you +

          +

          Firefox Awesome Bar

          +
          +
          + +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/source.html new file mode 100644 index 000000000..b8ff3df17 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/source.html @@ -0,0 +1,1348 @@ + + + + + + + + Firefox — Customize and make it your own — The most flexible browser on + the Web — Mozilla + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          +
          + + + +
          + + +
          +
          +
          +
          + + + +
          + + +
          +
          +
          +
          +
          +
          +
          +

          Make your Firefox your own

          + +

          It’s easier than ever to personalize Firefox and make it work the way + you do. +
          No other browser gives you so much choice and flexibility.

          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          Designed to
          be redesigned

          + +

          Get fast and easy access to the features you use most in the new menu. + Open the “Customize” panel to add, move or remove any button you want. + Keep your favorite features — add-ons, private browsing, Sync and more + — one quick click away.

          + +
          +
          + +
          +
          +
          +
          +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          + +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +

          Themes

          + +

          Make Firefox match your style. Choose from thousands of themes and dress + up your browser with a single click.

          +
          + + + + +
          Try it now + +
          Learn more + +
          + +
          + Preview of the currently selected theme +
          +
          +
          +
          +
          +
          +

          Add-ons

          + + +

          Add-ons are like apps that you install to add features to Firefox. They + let you compare prices, check the weather, listen to music, send a tweet + and more.

          +
            +
          • Read the latest news & blogs
          • +
          • Manage your downloads
          • +
          • Watch videos & view photos
          • +
          Here are a few of our favorites + +
          Learn more + +
          + +
          + +
          +
          +
          +
          +
          +
          +

          Awesome Bar

          + + +

          The Awesome Bar learns as you browse to make your version of Firefox unique. + Find and return to your favorite sites without having to remember a URL.

          + See what it can do for you +
          +
          + Firefox Awesome Bar +
          +
          +
          +
          + +
          +
          +

          Keep your Firefox in Sync

          + +

          Access your bookmarks, history, passwords and more from any device to +
          make Firefox your own wherever you use it.

          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          Learn more about Sync + +
          Get help with Sync + +
          +
          +
          +
          +
          +
          + + + +
          +
          +
          + +
          +
          +

          Download Firefox — English (US)

          + + +
          +
          +

          Your system doesn't meet the requirements to + run Firefox.

          +

          Please follow these instructions to + install Firefox.

          +

          Firefox is coming soon to iOS! Sign up to learn more.

          + + Supported Devices | What’s New | + Privacy + + + Systems & Languages | + What’s New | + Privacy + + +
          +
          +
          +
          +
          + +
          + +
          +
          + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-images.json new file mode 100644 index 000000000..365d4c229 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-images.json @@ -0,0 +1,11 @@ +[ + "https:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/developer\/page-image.03bbe7da3199.png", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-webide.16763db341cb.jpg", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-valence.251f9def4d8d.jpg", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-inspector.c791bf1f1a59.jpg", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-console.42666aaf6d03.jpg", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-debugger.02ed86fb0c9f.jpg", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-network.740d6082b3f6.jpg", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-webaudio.a10ebc48d017.jpg", + "http:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/firstrun\/dev\/feature-style-editor.87c5d2017506.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-metadata.json new file mode 100644 index 000000000..7336ada27 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": "ltr", + "Excerpt": "Built for those who build the Web. Introducing the only browser made for developers.", + "Image": "https:\/\/mozorg.cdn.mozilla.net\/media\/img\/firefox\/developer\/page-image.03bbe7da3199.png", + "Title": "Welcome to Firefox Developer Edition", + "SiteName": "Mozilla" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected.html new file mode 100644 index 000000000..8ce4c0703 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected.html @@ -0,0 +1,77 @@ +
          +

          Get to know the features that make it the most complete browser for building the Web.

          +
          • + + Screenshot +

            WebIDE

            +

            Develop, deploy and debug Firefox OS apps directly in your browser, or on a Firefox OS device, with this tool that replaces App Manager.

            + Learn more about WebIDE + +
          • +
          • + + Screenshot +

            Valence

            +

            Develop and debug your apps across multiple browsers and devices with this powerful extension that comes pre-installed with Firefox Developer Edition.

            + Learn more about Valence + +
          • +
          +

          Important: Sync your new profile

          +

          + Developer Edition comes with a new profile so you can run it alongside other versions of Firefox. To access your bookmarks, browsing history and more, you need to sync the profile with your existing Firefox Account, or create a new one. + Learn more +

          +
          +
          +

          Features and tools

          +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/source.html new file mode 100644 index 000000000..31f30a6b6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/source.html @@ -0,0 +1,408 @@ + + + + + + + + + + + Welcome to Firefox Developer Edition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          + + +
          + +
          + Mozilla + + +

          Firefox Developer Edition

          + + + + +
          + + + + +
          +
          +
          +

          Welcome to Firefox Developer Edition

          +

          Get to know the features that make it the most complete browser for building the Web.

          +
          +
            +
          • + + Screenshot + +

            WebIDE

            +

            Develop, deploy and debug Firefox OS apps directly in your browser, or on a Firefox OS device, with this tool that replaces App Manager.

            + Learn more about WebIDE +
            +
            +
            +
          • +
          • + + Screenshot + +

            Valence

            +

            Develop and debug your apps across multiple browsers and devices with this powerful extension that comes pre-installed with Firefox Developer Edition.

            + Learn more about Valence +
            +
            +
            +
          • +
          +
          +

          Important: Sync your new profile

          +

          + Developer Edition comes with a new profile so you can run it alongside other versions of Firefox. To access your bookmarks, browsing history and more, you need to sync the profile with your existing Firefox Account, or create a new one. + Learn more +

          +
          +
          + +
          +
          +
          +

          Features and tools

          +
          + +
          +
          +
          + + + +
          + + +
          + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-images.json new file mode 100644 index 000000000..176afee89 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-images.json @@ -0,0 +1,4 @@ +[ + "http:\/\/img-s-msn-com.akamaized.net\/tenant\/amp\/entityid\/AAkk5fh.img", + "http:\/\/img-s-msn-com.akamaized.net\/tenant\/amp\/entityid\/AAkk5fh.img?h=820&w=1456&m=6&q=60&o=f&l=f&x=1162&y=540" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-metadata.json new file mode 100644 index 000000000..673d99512 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Alex Perry\n \n 1 day ago", + "Direction": null, + "Excerpt": "Nintendo and Apple shocked the world earlier this year by announcing \"Super Mario Run,\" the legendary gaming company's first foray into mobile gaming. ", + "Image": "http:\/\/img-s-msn-com.akamaized.net\/tenant\/amp\/entityid\/AAkk5fh.img", + "Title": "Nintendo's first iPhone game will launch in December for $10", + "SiteName": "MSN" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected.html new file mode 100644 index 000000000..3ed4d696c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected.html @@ -0,0 +1,18 @@ +

          + + + <span style="font-size:13px;">Nintendo/Apple</span> + + © Provided by Business Insider Inc + Nintendo/Apple + + + Nintendo and Apple shocked the world earlier this year by announcing "Super Mario Run," the legendary gaming company's first foray into mobile gaming. It's a Mario game you can play on your phone with just one hand, so what's not to love?

          +

          Thankfully, now we know when you can get it and for how much: "Super Mario Run" will launch on iPhone and iPad on December 15, for a flat fee of $9.99. You can play a sample of the game modes for free, but unlike most other mobile games that let you download for free but require money to keep playing, or access parts of the game, you can pay $10 to get everything right away.

          +

          In case you haven't heard, "Super Mario Run" is essentially a regular, side-scrolling "Super Mario" game with one key difference: You don't control Mario's movement. He runs automatically and all you do is tap the screen to jump.

          +

          The name and basic idea might sound like one of those endless score attack games like "Temple Run," but that's not the case. "Super Mario Run" is divided into hand-crafted levels with a clear end-point like any other Mario game, meaning you're essentially getting the Mario experience for $10 without needing to control his movement.

          +

          $10 might seem like a bit much compared to the $0 people pay for most mobile games, but it's possible the game has $10 worth of levels to play in it. It's also not iPhone exclusive, but the Android version will launch at a later, currently unknown date.

          +

          To see "Super Mario Run" in action, check out the footage below:

          +

          + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/source.html new file mode 100644 index 000000000..be55bf3fa --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/source.html @@ -0,0 +1,13010 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nintendo's first iPhone game will launch in December for $10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + + +
          + + + + + +
          + + + + + +
          + + +
          + +
          +
          +

          + Nintendo's first iPhone game will launch in December for $10 +

          +
          + +
          +
          +
          + + + + +
          + + +
          +
          + + +
          +
          + + + + + +
          + + +
          +
          +
          + + + + + + +
          +
          +

          + + + <span style="font-size:13px;">Nintendo/Apple</span> + + + © Provided by Business Insider Inc + Nintendo/Apple + + + Nintendo and Apple shocked the world earlier this year by announcing "Super Mario Run," the legendary gaming company's first foray into mobile gaming. It's a Mario game you can play on your phone with just one hand, so what's not to love?

          +

          Thankfully, now we know when you can get it and for how much: "Super Mario Run" will launch on iPhone and iPad on December 15, for a flat fee of $9.99. You can play a sample of the game modes for free, but unlike most other mobile games that let you download for free but require money to keep playing, or access parts of the game, you can pay $10 to get everything right away.

          +

          In case you haven't heard, "Super Mario Run" is essentially a regular, side-scrolling "Super Mario" game with one key difference: You don't control Mario's movement. He runs automatically and all you do is tap the screen to jump.

          +

          The name and basic idea might sound like one of those endless score attack games like "Temple Run," but that's not the case. "Super Mario Run" is divided into hand-crafted levels with a clear end-point like any other Mario game, meaning you're essentially getting the Mario experience for $10 without needing to control his movement.

          +

          $10 might seem like a bit much compared to the $0 people pay for most mobile games, but it's possible the game has $10 worth of levels to play in it. It's also not iPhone exclusive, but the Android version will launch at a later, currently unknown date.

          +

          To see "Super Mario Run" in action, check out the footage below:

          +
          +


          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + + + +
          + + + + +
          + + + + + Feedback + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          +

          Report inappropriate content

          +
          +
          +
          +
          Sorry!
          +
          There was a problem. Please try again.
          +
          +
          +

          + Help us maintain a healthy and vibrant community by reporting any illegal or inappropriate behavior that violates MSN’s Code of Conduct. +

          +
          + + + + + + + + + + +
          +
          +
          + + +
          +
          + + Leave your comment + +
          +
          +
          + + + + + + +
          + + +
          +
          + +
          + +
          + + + + +
          +
          + +

          Found the story interesting?

          +

          Like us on Facebook to see similar stories

          +
          +
          +
          +
          +
          +
          + +
          + +
          +

          Send Feedback

          + + +
          +
          +

          We appreciate your input!

          +
          +
          +
          + +
            +
          • +

            I'm having problems with Top Destinations

            +
          • +
          • +

            I'm having issues searching

            +
          • +
          • +

            I'm having problems with Featured Apps

            +
          • +
          • +

            My Topics feedback

            +
          • +
          • +

            Other

            +
          • +
          +
          +
          + + +
          +
          +
          +
          +

          Please give an overall site rating:

          +
            +
          • +
          • +
          • +
          • +
          • +
          +
          +
          + + +
          + + + +
          + +
          + +
          + +
          +
          +
          + +

          Make MSN my homepage

          +
            +
          • + On the toolbar, click Firefox Then, click Preferences. +
            + On the toolbar, click Firefox Then, click Preferences. +
            +
          • +
          • + In the Preferences window, select General. +
            + In the Preferences window, select General. +
            +
          • +
          • + In the text box next to Home page, simply type www.msn.com. +
            + In the text box next to Home page, simply type www.msn.com. +
            +
          • +
          +
          + +
          + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-images.json new file mode 100644 index 000000000..c89c43ca2 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-images.json @@ -0,0 +1,4 @@ +[ + "https:\/\/static01.nyt.com\/images\/2017\/01\/14\/world\/13SUDAN-1\/13SUDAN-1-videoSixteenByNineJumbo1600.jpg", + "https:\/\/static01.nyt.com\/images\/2017\/01\/14\/world\/13SUDAN-1\/13SUDAN-1-master768.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-metadata.json new file mode 100644 index 000000000..36da83868 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Jeffrey Gettleman", + "Direction": null, + "Excerpt": "For the first time since the 1990s, the country will be able to trade extensively with the United States.", + "Image": "https:\/\/static01.nyt.com\/images\/2017\/01\/14\/world\/13SUDAN-1\/13SUDAN-1-videoSixteenByNineJumbo1600.jpg", + "Title": "United States to Lift Sudan Sanctions", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected.html new file mode 100644 index 000000000..60f7148bc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected.html @@ -0,0 +1,37 @@ +
          +
          +
          Photo +
          +

          +
          +
          United Nations peacekeepers at a refugee camp in Sudan on Monday. In exchange for the lifting of United States trade sanctions, Sudan has said it will improve access for aid groups, stop supporting rebels in neighboring South Sudan and cooperate with American intelligence agents. + + Credit Ashraf Shazly/Agence France-Presse — Getty Images +

          LONDON — After nearly 20 years of hostile relations, the American government plans to reverse its position on Sudan and lift trade sanctions, Obama administration officials said late Thursday.

          +

          Sudan is one of the poorest, most isolated and most violent countries in Africa, and for years the United States has imposed punitive measures against it in a largely unsuccessful attempt to get the Sudanese government to stop killing its own people.

          +

          On Friday, the Obama administration will announce a new Sudan strategy. For the first time since the 1990s, the nation will be able to trade extensively with the United States, allowing it to buy goods like tractors and spare parts and attract much-needed investment in its collapsing economy.

          +

          In return, Sudan will improve access for aid groups, stop supporting rebels in neighboring South Sudan, cease the bombing of insurgent territory and cooperate with American intelligence agents.

          +

          American officials said Sudan had already shown important progress on a number of these fronts. But to make sure the progress continues, the executive order that President Obama plans to sign on Friday, days before leaving office, will have a six-month review period. If Sudan fails to live up to its commitments, the embargo can be reinstated.

          + +

          Analysts said good relations with Sudan could strengthen moderate voices within the country and give the Sudanese government incentives to refrain from the brutal tactics that have defined it for decades.

          +

          In 1997, President Bill Clinton imposed a comprehensive trade embargo against Sudan and blocked the assets of the Sudanese government, which was suspected of sponsoring international terrorism. In the mid-1990s, Osama bin Laden lived in Khartoum, the capital, as a guest of Sudan’s government.

          +

          In 1998, Bin Laden’s agents blew up the United States Embassies in Kenya and Tanzania, killing more than 200 people. In retaliation, Mr. Clinton ordered a cruise missile strike against a pharmaceutical factory in Khartoum.

          +

          Since then, American-Sudanese relations have steadily soured. The conflict in Darfur, a vast desert region of western Sudan, was a low point. After rebels in Darfur staged an uprising in 2003, Sudanese security services and their militia allies slaughtered tens of thousands of civilians, leading to condemnation around the world, genocide charges at the International Criminal Court against Sudan’s president, Omar Hassan al-Bashir, and a new round of American sanctions.

          +

          American officials said Thursday that the American demand that Mr. Bashir be held accountable had not changed. Neither has Sudan’s status as one of the few countries, along with Iran and Syria, that remain on the American government’s list of state sponsors of terrorism.

          +

          Sales of military equipment will still be prohibited, and some Sudanese militia and rebel leaders will still face sanctions.

          +

          But the Obama administration is clearly trying to open a door to Sudan. There is intense discontent across the country, and its economy is imploding. American officials have argued for years that it was time to help Sudan dig itself out of the hole it had created.

          +

          Officials divulged Thursday that the Sudanese government had allowed two visits by American operatives to a restricted border area near Libya, which they cited as evidence of a new spirit of cooperation on counterterrorism efforts.

          + +

          In addition to continuing violence in Darfur, several other serious conflicts are raging in southern and central Sudan, along with a civil war in newly independent South Sudan, which Sudan has been suspected of inflaming with covert arms shipments.

          +

          Eric Reeves, one of the leading American academic voices on Sudan, said he was “appalled” that the American government was lifting sanctions.

          +

          He said that Sudan’s military-dominated government continued to commit grave human rights abuses and atrocities, and he noted that just last week Sudanese security services killed more than 10 civilians in Darfur.

          +

          “There is no reason to believe the guys in charge have changed their stripes,” said Mr. Reeves, a senior fellow at the François-Xavier Bagnoud Center for Health and Human Rights at Harvard University. “These guys are the worst of the worst.”

          +

          Obama administration officials said that they had briefed President-elect Donald J. Trump’s transition team, but that they did not know if Mr. Trump would stick with a policy of warmer relations with Sudan.

          +

          They said that Sudan had a long way to go in terms of respecting human rights, but that better relations could help increase American leverage.

          +

          Mr. Reeves said he thought that the American government was being manipulated and that the Obama administration had made a “deal with the devil.”

          +

          Continue reading the main story +

          + + + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/source.html new file mode 100644 index 000000000..d8d12436b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/source.html @@ -0,0 +1,5530 @@ + + + + + + + + + + + + United States to Lift Sudan Sanctions - The New York Times + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          + + + + + +
          + + + + + + + + + + + +
          + + +
          +
          + + + + +
          + + +
          + + + + +
          +
          +
          + Photo +
          + +
          + +
          + + +
          +
          + United Nations peacekeepers at a refugee camp in Sudan on Monday. In exchange for the lifting of United States trade sanctions, Sudan has said it will improve access for aid groups, stop supporting rebels in neighboring South Sudan and cooperate with American intelligence agents. + + Credit Ashraf Shazly/Agence France-Presse — Getty Images +
          +
          +

          LONDON — After nearly 20 years of hostile relations, the American government plans to reverse its position on Sudan and lift trade sanctions, Obama administration officials said late Thursday.

          +

          Sudan is one of the poorest, most isolated and most violent countries in Africa, and for years the United States has imposed punitive measures against it in a largely unsuccessful attempt to get the Sudanese government to stop killing its own people.

          +

          On Friday, the Obama administration will announce a new Sudan strategy. For the first time since the 1990s, the nation will be able to trade extensively with the United States, allowing it to buy goods like tractors and spare parts and attract much-needed investment in its collapsing economy.

          +

          In return, Sudan will improve access for aid groups, stop supporting rebels in neighboring South Sudan, cease the bombing of insurgent territory and cooperate with American intelligence agents.

          +

          American officials said Sudan had already shown important progress on a number of these fronts. But to make sure the progress continues, the executive order that President Obama plans to sign on Friday, days before leaving office, will have a six-month review period. If Sudan fails to live up to its commitments, the embargo can be reinstated.

          + +

          Analysts said good relations with Sudan could strengthen moderate voices within the country and give the Sudanese government incentives to refrain from the brutal tactics that have defined it for decades.

          +

          In 1997, President Bill Clinton imposed a comprehensive trade embargo against Sudan and blocked the assets of the Sudanese government, which was suspected of sponsoring international terrorism. In the mid-1990s, Osama bin Laden lived in Khartoum, the capital, as a guest of Sudan’s government.

          +

          In 1998, Bin Laden’s agents blew up the United States Embassies in Kenya and Tanzania, killing more than 200 people. In retaliation, Mr. Clinton ordered a cruise missile strike against a pharmaceutical factory in Khartoum.

          +

          Since then, American-Sudanese relations have steadily soured. The conflict in Darfur, a vast desert region of western Sudan, was a low point. After rebels in Darfur staged an uprising in 2003, Sudanese security services and their militia allies slaughtered tens of thousands of civilians, leading to condemnation around the world, genocide charges at the International Criminal Court against Sudan’s president, Omar Hassan al-Bashir, and a new round of American sanctions.

          +

          American officials said Thursday that the American demand that Mr. Bashir be held accountable had not changed. Neither has Sudan’s status as one of the few countries, along with Iran and Syria, that remain on the American government’s list of state sponsors of terrorism.

          +

          Sales of military equipment will still be prohibited, and some Sudanese militia and rebel leaders will still face sanctions.

          +

          But the Obama administration is clearly trying to open a door to Sudan. There is intense discontent across the country, and its economy is imploding. American officials have argued for years that it was time to help Sudan dig itself out of the hole it had created.

          +

          Officials divulged Thursday that the Sudanese government had allowed two visits by American operatives to a restricted border area near Libya, which they cited as evidence of a new spirit of cooperation on counterterrorism efforts.

          + +

          In addition to continuing violence in Darfur, several other serious conflicts are raging in southern and central Sudan, along with a civil war in newly independent South Sudan, which Sudan has been suspected of inflaming with covert arms shipments.

          +

          Eric Reeves, one of the leading American academic voices on Sudan, said he was “appalled” that the American government was lifting sanctions.

          +

          He said that Sudan’s military-dominated government continued to commit grave human rights abuses and atrocities, and he noted that just last week Sudanese security services killed more than 10 civilians in Darfur.

          +

          “There is no reason to believe the guys in charge have changed their stripes,” said Mr. Reeves, a senior fellow at the François-Xavier Bagnoud Center for Health and Human Rights at Harvard University. “These guys are the worst of the worst.”

          +

          Obama administration officials said that they had briefed President-elect Donald J. Trump’s transition team, but that they did not know if Mr. Trump would stick with a policy of warmer relations with Sudan.

          +

          They said that Sudan had a long way to go in terms of respecting human rights, but that better relations could help increase American leverage.

          +

          Mr. Reeves said he thought that the American government was being manipulated and that the Obama administration had made a “deal with the devil.”

          +
          + + +
          + Continue reading the main story +
          + + + +
          + + + + + + + +
          + + + + + +
          + +
          + +
          +
          +

          Go to Home Page »

          +

          + Site Index + + The New York Times + The New York Times +

          + +
          + + + + +
          + + + +
          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + + + + +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-images.json new file mode 100644 index 000000000..e4b49d00e --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-images.json @@ -0,0 +1,4 @@ +[ + "https:\/\/static01.nyt.com\/images\/2016\/07\/30\/business\/db-dealprof\/db-dealprof-videoSixteenByNineJumbo1600.jpg", + "https:\/\/static01.nyt.com\/images\/2016\/07\/30\/business\/db-dealprof\/db-dealprof-master315.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-metadata.json new file mode 100644 index 000000000..7fbcf29ee --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Steven Davidoff Solomon", + "Direction": null, + "Excerpt": "The internet giant’s decision to sell its business is plagued with challenges that reveal how unusual deal structures can affect shareholders.", + "Image": "https:\/\/static01.nyt.com\/images\/2016\/07\/30\/business\/db-dealprof\/db-dealprof-videoSixteenByNineJumbo1600.jpg", + "Title": "Yahoo’s Sale to Verizon Leaves Shareholders With Little Say", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected.html new file mode 100644 index 000000000..1584ca437 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected.html @@ -0,0 +1,41 @@ +
          +
          +
          Photo +
          +

          +
          +
          + Credit Harry Campbell +

          Yahoo’s $4.8 billion sale to Verizon is a complicated beast, showing how different acquisition structures can affect how shareholders are treated.

          +

          First, let’s say what the Yahoo sale is not. It is not a sale of the publicly traded company. Instead, it is a sale of the Yahoo subsidiary and some related assets to Verizon.

          +

          The sale is being done in two steps. The first step will be the transfer of any assets related to Yahoo business to a singular subsidiary. This includes the stock in the business subsidiaries that make up Yahoo that are not already in the single subsidiary, as well as the odd assets like benefit plan rights. This is what is being sold to Verizon. A license of Yahoo’s oldest patents is being held back in the so-called Excalibur portfolio. This will stay with Yahoo, as will Yahoo’s stakes in Alibaba Group and Yahoo Japan.

          +

          It is hard to overestimate how complex an asset sale like this is. Some of the assets are self-contained, but they must be gathered up and transferred. Employees need to be shuffled around and compensation arrangements redone. Many contracts, like the now-infamous one struck with the search engine Mozilla, which may result in a payment of up to a $1 billion, will contain change-of-control provisions that will be set off and have to be addressed. Tax issues always loom large.

          Continue reading the main story +

          + + + +
          +
          +

          In the second step, at the closing, Yahoo will sell the stock in the single subsidiary to Verizon. At that point, Yahoo will change its name to something without “Yahoo” in it. My favorite is simply Remain Co., the name Yahoo executives are using. Remain Co. will become a holding company for the Alibaba and Yahoo Japan stock. Included will also be $10 billion in cash, plus the Excalibur patent portfolio and a number of minority investments including Snapchat. Ahh, if only Yahoo had bought Snapchat instead of Tumblr (indeed, if only Yahoo had bought Google or Facebook when it had the chance).

          + +

          Because it is a sale of a subsidiary, the $4.8 billion will be paid to Yahoo. Its shareholders will not receive any money unless Yahoo pays it out in a dividend (after paying taxes). Instead, Yahoo shareholders will be left holding shares in the renamed company.

          +

          Verizon’s Yahoo will then be run under the same umbrella as AOL. It is unclear whether there will be a further merger of the two businesses after the acquisition. Plans for Yahoo are still a bit in flux in part because of the abnormal sale process.

          +

          As for Remain Co., it will become a so-called investment company. This is a special designation for a company that holds securities for investment but does not operate a working business. Investment companies are subject to special regulation under the Investment Company Act of 1940. Remain Co. will probably just sit there, returning cash to shareholders and waiting for Alibaba to buy it in a tax-free transaction. (Alibaba says it has no plans to do this, but most people do not believe this).

          +

          The rights of Yahoo shareholders in this sale will be different from those in an ordinary sale, when an entire company is bought.

          +

          Ordinary sales are done in one of two ways: in a merger where the target is merged into a subsidiary of the buyer and the target shareholders receive the cash (or other consideration), or in a tender offer that gives the target shareholders a choice to tender into the offer or not. Then there will be a merger where the target is merged into the buyer’s subsidiary and the target shareholders are forcibly squeezed out, receiving the merger consideration. (if you want to know why you would choose one structure over another, I wrote a good primer in 2009.)

          +

          In either case, shareholders get a say. They either vote on the merger or decide whether to tender into the offer.

          +

          In both cases, there would be appraisal rights if the buyer pays cash. This means that shareholders can object to the deal by not voting for it or not tendering into the offer and instead asking a court to value their shares – this is what happened in Dell’s buyout in 2013.

          +

          The Yahoo deal, however, is not a sale of the public company. It is an asset sale, in which there is only a shareholder vote if there is a sale of “all” or “substantially all” of the assets of the company. Yahoo is not all of the assets or even “substantially all” – the Alibaba shares being left behind in Remain Co. are worth about $28 billion, or six times the value of the cash Verizon is paying for the Yahoo assets it is buying.

          + +

          The courts have held that the definition of “substantially all” includes a change of business in a company because of an asset sale where the assets are “qualitatively vital.” And that certainly applies here. So there will be a vote – indeed, Yahoo has no problem with a vote – and shareholders are desperate to sell at this point.

          +

          There will be no appraisal rights, however. Again, in an asset sale, there are no appraisal rights. So anyone who votes against the deal and thinks this is a bum price is out of luck.

          +

          The different standards for voting and appraisal rights apply because the structure of the deal is a quirk of the law in Delaware, where Yahoo is incorporated, that allows lawyers to sometimes work around these issues simply by changing the way a deal is done.

          +

          In Yahoo’s case, this is not deliberate, though. It is simply the most expedient way to get rid of the assets.

          +

          Whether this is the most tax-efficient way is unclear to me as a nontax lawyer (email me if you know). Yahoo is likely to have a tax bill on the sale, possibly a substantial one. And I presume there were legal reasons for not using a Morris Trust structure, in which Yahoo would have been spun off and immediately sold to Verizon so that only Yahoo’s shareholders paid tax on the deal. In truth, the Yahoo assets being sold are only about 10 percent of the value of the company, so the time and logistics for such a sale when Yahoo is a melting ice cube may not have been worth it.

          +

          Finally, if another bidder still wants to acquire Yahoo, it has time. The agreement with Verizon allows Yahoo to terminate the deal and accept a superior offer by paying a $144 million breakup fee to Verizon. And if Yahoo shareholders change their minds and want to stick with Yahoo’s chief executive, Marissa Mayer, and vote down the deal, there is a so-called naked no-vote termination fee of $15 million payable to Verizon to reimburse expenses.

          +

          All in all, this was as hairy a deal as they come. There was the procedural and logistical complications of selling a company when the chief executive wanted to stay. Then there was the fact that this was an asset sale, including all of the challenges that go with it. Throw in all of the tax issues and the fact that this is a public company, and it is likely that the lawyers involved will have nightmares for years to come.

          Continue reading the main story +

          + + + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/source.html new file mode 100644 index 000000000..07dd7484d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/source.html @@ -0,0 +1,5236 @@ + + + + + + + + + + Yahoo’s Sale to Verizon Leaves Shareholders With Little Say - The New York Times + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          + + + + + +
          + + + + + + + + + + + +
          + + +
          +
          + + + +
          +

          + + + +

          +
          + + +
          + + +
          + + + + +
          +
          +
          + Photo +
          + +
          + +
          + + +
          +
          + + Credit Harry Campbell +
          +
          +

          Yahoo’s $4.8 billion sale to Verizon is a complicated beast, showing how different acquisition structures can affect how shareholders are treated.

          +

          First, let’s say what the Yahoo sale is not. It is not a sale of the publicly traded company. Instead, it is a sale of the Yahoo subsidiary and some related assets to Verizon.

          +

          The sale is being done in two steps. The first step will be the transfer of any assets related to Yahoo business to a singular subsidiary. This includes the stock in the business subsidiaries that make up Yahoo that are not already in the single subsidiary, as well as the odd assets like benefit plan rights. This is what is being sold to Verizon. A license of Yahoo’s oldest patents is being held back in the so-called Excalibur portfolio. This will stay with Yahoo, as will Yahoo’s stakes in Alibaba Group and Yahoo Japan.

          +

          It is hard to overestimate how complex an asset sale like this is. Some of the assets are self-contained, but they must be gathered up and transferred. Employees need to be shuffled around and compensation arrangements redone. Many contracts, like the now-infamous one struck with the search engine Mozilla, which may result in a payment of up to a $1 billion, will contain change-of-control provisions that will be set off and have to be addressed. Tax issues always loom large.

          Continue reading the main story +
          + + + +
          + +
          + +
          +
          +
          +

          In the second step, at the closing, Yahoo will sell the stock in the single subsidiary to Verizon. At that point, Yahoo will change its name to something without “Yahoo” in it. My favorite is simply Remain Co., the name Yahoo executives are using. Remain Co. will become a holding company for the Alibaba and Yahoo Japan stock. Included will also be $10 billion in cash, plus the Excalibur patent portfolio and a number of minority investments including Snapchat. Ahh, if only Yahoo had bought Snapchat instead of Tumblr (indeed, if only Yahoo had bought Google or Facebook when it had the chance).

          + +

          Because it is a sale of a subsidiary, the $4.8 billion will be paid to Yahoo. Its shareholders will not receive any money unless Yahoo pays it out in a dividend (after paying taxes). Instead, Yahoo shareholders will be left holding shares in the renamed company.

          +

          Verizon’s Yahoo will then be run under the same umbrella as AOL. It is unclear whether there will be a further merger of the two businesses after the acquisition. Plans for Yahoo are still a bit in flux in part because of the abnormal sale process.

          +

          As for Remain Co., it will become a so-called investment company. This is a special designation for a company that holds securities for investment but does not operate a working business. Investment companies are subject to special regulation under the Investment Company Act of 1940. Remain Co. will probably just sit there, returning cash to shareholders and waiting for Alibaba to buy it in a tax-free transaction. (Alibaba says it has no plans to do this, but most people do not believe this).

          +

          The rights of Yahoo shareholders in this sale will be different from those in an ordinary sale, when an entire company is bought.

          +

          Ordinary sales are done in one of two ways: in a merger where the target is merged into a subsidiary of the buyer and the target shareholders receive the cash (or other consideration), or in a tender offer that gives the target shareholders a choice to tender into the offer or not. Then there will be a merger where the target is merged into the buyer’s subsidiary and the target shareholders are forcibly squeezed out, receiving the merger consideration. (if you want to know why you would choose one structure over another, I wrote a good primer in 2009.)

          +

          In either case, shareholders get a say. They either vote on the merger or decide whether to tender into the offer.

          +

          In both cases, there would be appraisal rights if the buyer pays cash. This means that shareholders can object to the deal by not voting for it or not tendering into the offer and instead asking a court to value their shares – this is what happened in Dell’s buyout in 2013.

          +

          The Yahoo deal, however, is not a sale of the public company. It is an asset sale, in which there is only a shareholder vote if there is a sale of “all” or “substantially all” of the assets of the company. Yahoo is not all of the assets or even “substantially all” – the Alibaba shares being left behind in Remain Co. are worth about $28 billion, or six times the value of the cash Verizon is paying for the Yahoo assets it is buying.

          + +

          The courts have held that the definition of “substantially all” includes a change of business in a company because of an asset sale where the assets are “qualitatively vital.” And that certainly applies here. So there will be a vote – indeed, Yahoo has no problem with a vote – and shareholders are desperate to sell at this point.

          +

          There will be no appraisal rights, however. Again, in an asset sale, there are no appraisal rights. So anyone who votes against the deal and thinks this is a bum price is out of luck.

          +

          The different standards for voting and appraisal rights apply because the structure of the deal is a quirk of the law in Delaware, where Yahoo is incorporated, that allows lawyers to sometimes work around these issues simply by changing the way a deal is done.

          +

          In Yahoo’s case, this is not deliberate, though. It is simply the most expedient way to get rid of the assets.

          +

          Whether this is the most tax-efficient way is unclear to me as a nontax lawyer (email me if you know). Yahoo is likely to have a tax bill on the sale, possibly a substantial one. And I presume there were legal reasons for not using a Morris Trust structure, in which Yahoo would have been spun off and immediately sold to Verizon so that only Yahoo’s shareholders paid tax on the deal. In truth, the Yahoo assets being sold are only about 10 percent of the value of the company, so the time and logistics for such a sale when Yahoo is a melting ice cube may not have been worth it.

          +

          Finally, if another bidder still wants to acquire Yahoo, it has time. The agreement with Verizon allows Yahoo to terminate the deal and accept a superior offer by paying a $144 million breakup fee to Verizon. And if Yahoo shareholders change their minds and want to stick with Yahoo’s chief executive, Marissa Mayer, and vote down the deal, there is a so-called naked no-vote termination fee of $15 million payable to Verizon to reimburse expenses.

          +

          All in all, this was as hairy a deal as they come. There was the procedural and logistical complications of selling a company when the chief executive wanted to stay. Then there was the fact that this was an asset sale, including all of the challenges that go with it. Throw in all of the tax issues and the fact that this is a public company, and it is likely that the lawyers involved will have nightmares for years to come.

          Continue reading the main story +
          + + + +
          + + + + + + + +
          + + + + + +
          + +
          + +
          +
          +

          Go to Home Page »

          +

          + Site Index + + The New York Times + The New York Times +

          + +
          + + + + +
          + + + +
          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-images.json new file mode 100644 index 000000000..d36dedeb1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-images.json @@ -0,0 +1,48 @@ +[ + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895093-631461272.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894842-1217674167.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894971-1486345289.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894979-1252095111.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387971416-4261675924.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387971406-2480195851.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894752-3567294980.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894771-2897027724.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894778-2035483089.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387897405-3236217457.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894848-3695967443.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894863-3269042540.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894868-3997219746.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894873-1524806724.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894788-105924953.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894798-1063855065.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894807-309560703.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894882-1881930036.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894887-407829597.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894857-470378275.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895099-4119123008.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387971426-4277312474.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387971436-2828193592.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894823-4061326865.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894911-3706194096.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894894-1173705525.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894901-1058040075.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894925-1582979930.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894989-1689510758.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894933-2886337976.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895113-4041265313.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894940-3359449338.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895106-1387217970.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894947-2636431527.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894956-618198074.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894961-2201609427.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387971396-2999285851.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387894999-1588465034.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895007-4184988815.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895016-2193615729.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895047-92554161.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387971446-966387512.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895036-848978834.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895067-717977929.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895083-1227791497.jpg", + "http:\/\/pic.pimg.tw\/stevenhgm\/1387895075-2647157523.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-metadata.json new file mode 100644 index 000000000..dafb56b44 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "史蒂文的家_藍天 (stevenhgm)", + "Direction": null, + "Excerpt": "一波波接續性低溫寒流報到 已將新竹尖石鄉後山一帶層層山巒披上嫣紅的彩衣 玉峰道路一路上雲氣山嵐滯留山頭 順路下切蜿蜒道路後不久即抵達來到"玉峰國小" "美樹"美", + "Image": "http:\/\/pic.pimg.tw\/stevenhgm\/1387895093-631461272.jpg", + "Title": "新竹尖石_美樹營地賞楓 (2) @ 史蒂文的家_藍天 :: 痞客邦 PIXNET ::", + "SiteName": "史蒂文的家_藍天" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected.html new file mode 100644 index 000000000..ffa81c794 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected.html @@ -0,0 +1,280 @@ +
          +

          + 12-IMG_3886.jpg +

          +

          一波波接續性低溫寒流報到 已將新竹尖石鄉後山一帶層層山巒披上嫣紅的彩衣 +

          +

          玉峰道路一路上雲氣山嵐滯留山頭 順路下切蜿蜒道路後不久即抵達來到"玉峰國小" +

          +

          "美樹"美如其名偌大楓香樹早已呈現金黃 泛紅色彩也是愛攝人仕所喜愛造訪之地

          +

          第二次造訪美樹發現到營區變了 印象中以前生冷招牌換成了原木招牌可謂匠心獨運 +

          +

          燻黑原木加上金黃色醒目字體 加上了貓頭鷹原木創作也充分發揮了裝飾藝術功力 +

          +

          營區內除了露營、民宿、餐飲賞楓項目多了許多原木飾品更有畫龍點睛加乘效果 +

          + +

          30-IMG_4228.jpg

          +

          廣受歡迎的美樹營地有個很大特色就是楓紅時期楓香樹由綠轉黃、轉紅到楓紅層層 +

          +

          一來到"美樹"馬上眼睛為之一亮 也會深深地為那多種顏色多層次渲染之下楓紅而迷惑 +

          +

          不同格調就是從入口處這塊招牌第一眼開始 + + 木頭招牌 + + + 、貓頭鷹裝飾品勾勒出美樹的風格 + +

          + + +

          31-IMG_4231.jpg

          +

          每年12月向來是攝影班外拍的絕佳場所之一 楓紅期間入園費$50元

          +

          園區給愛攝一族淨空場景而不是散搭帳蓬之下反而影響拍照畫面與構圖取景

          +

          露營的話則須待中午過後再進場搭帳的彈性做法個人也相當支持這樣的權宜之計

          + + +

          + P1610088.jpg +

          +

          來到現場已是落葉飄飄堆疊滿地 不時隨著風吹雨襲而葉落垂地

          + + +

          + P1610069.jpg +

          +

          不忍踩過剛剛掉落的樹葉 沿著前人足跡踏痕輕踩而行

          +

          雖然只是一廂情願的想法 終究還是不可避免地將會化為塵土

          + + +

          02-P1610080.jpg

          +

          葉落繽紛顯得幾分蕭瑟氣息 空氣中可以嗅得出來依然瀰漫著濕寒水氣 +

          +

          偶而還會飄下來一些霧氣水滴 不時張望尋找最佳楓葉主題

          + + +

          04-P1610087.jpg

          +

          外拍的攝影班學員一堆早已不時穿梭其間

          +

          各自努力地找尋自認為最好的拍攝角度

          + + +

          05-P1610099.jpg

          + + +

          P1610095.jpg

          + + +

          13-IMG_3891.jpg

          + + +

          15-IMG_3906.jpg

          +

          "水槽"上面的這幾隻彩繪版貓頭鷹也太可愛了

          +

          同樣的造型加上不同色彩宛如賦予不同的生命力一般 cool!

          + + +

          16-IMG_3916.jpg

          +

          雨水洗塵後的枝頭固然掉落些葉片是否也洗去塵勞憂傷

          + + +

          17-IMG_3919.jpg

          + + +

          06-IMG_3853.jpg

          +

          喜歡拍照的不論是平面掃描、天空搜尋、地上地毯式搜索

          +

          有如小說偵探一般 不放過蛛絲馬跡地用力尋尋覓覓找尋最美角度

          + + +

          07-P1610104.jpg

          + + +

          08-IMG_3862.jpg

          +

          原本這周是由小朱團長早在一年前就跟"簍信"預定下來的場子

          +

          早上從台北出門之際還是小雨不斷細雨紛飛來到此地雖雨已停

          +

          但多日來的雨勢不斷已有部分區域水漬成攤並不適合落置帳篷

          +

          這個季節正是"控溪吊橋"一帶的楓紅變葉時刻 先行走一趟秀巒賞景 + + +

          + + +

          18-P1610141.jpg

          +

          午後從"秀巒"回到美樹之際已經全數撤退只剩下我們三車留下來

          +

          唯有"離開地球表面"睡車上的才可以不受到地上泥濘而影響

          + + +

          19-IMG_3933.jpg

          + + +

          14-P1610134.jpg

          +

          午後山嵐興起雲氣遊蕩盤旋在對岸山頭 人潮來來去去似乎也沒有減少 +

          + + +

          44-P1610283.jpg

          +

          美樹民宿有開設餐廳 室內簡單佈置提供伙食餐飲

          + + +

          + P1610212.jpg +

          +

          這兩間是民宿房間 跟著民宿主人"簍信"聊起來還提到日後將改變成兩層木屋

          +

          一樓則是咖啡飲料/賣店提供訪客來賓有個落腳席座之地 二樓才會是民宿房間

          +

          心中有了計畫想法才會有日後的夢想藍圖 相信將會改變得更好的民宿露營環境

          + +

          + P1610219.jpg +

          +

          民宿前這一大區楓香林為土質營位 大致區分前、後兩個營區

          +

          前面這一區約可搭上十二帳/車/廳 後面那區也大約4~5帳/車/廳

          +

          正前方小木屋即是衛浴區 男女分別以左右兩側分開(燒材鍋爐) +

          + + +

          10-P1610114.jpg

          +

          營區水電方便 水槽也很有特色

          + + +

          22-P1610245.jpg

          +

          這次選擇左側地勢高些以防午夜下雨泥濘

          + + +

          20-P1610238.jpg

          +

          "野馬"特地帶來了冬至應景食材ㄜ---湯圓 +

          +

          這家還是最近被評比第一名氣的湯圓專賣店

          + + +

          21-P1610241.jpg

          +

          向來對於湯圓是敬謝不敏 沒想到是出乎意料之外的好吃 沒話說!

          +

          + + +

          24-IMG_4113.jpg

          +

          喜歡原住民朋友的坦率、真誠 要將民宿營地經營的有聲有色並非容易之事

          +

          午茶時間與"簍信"閒聊分享著他的觀點理念之時很支持對於環境應有生態保護 +

          +

          環保維護是人人有責 勿以善小而不為不計涓滴之水才可匯集成河  + +

          + + +

          32-IMG_4248.jpg

          + + +

          25-IMG_4152.jpg

          +

          入夜前雨絲終於漸漸緩和下來 雖然氣溫很低卻沒感受到寒冷的跡象

          +

          是山谷中少了寒氣還是美樹營區裡的人熱情洋溢暖化了不少寒意

          + +

          IMG_4158.jpg

          +

          聖誕前夕裝點些聖誕飾品 感受一下節慶的氛圍

          + + +

          26-P1610261.jpg

          +

          晚餐準備了砂鍋魚頭

          + + +

          46-1021221美樹露營.jpg

          +

          "蒯嫂"還特地準備著羊肩排、鹹豬肉、柳葉魚...哇!這哩澎湃哩...

          +

           "永老爺"早已備妥了好酒為遠自台南來的蒯兄嫂敬一杯囉

          +

          感謝蒯嫂精心準備的好料理 食指大動好菜色感恩ㄟ!

          + + +

          27-IMG_4173.jpg

          +

          吃得快精光之際...才想到忘了拍合照...(哇哩咧 ^&*()

          + +

          28-IMG_4178.jpg

          + + +

          29-IMG_4188.jpg

          +

          隔日睡到很晚才起床 不用拍日出晨光的營地對我來說都是個幸福的睡眠

          +

          哪怕是葉落飄零落滿地還是睡夢周公召見而去 起床的事~差點都忘記了

          + + +

          + IMG_4205.jpg +

          +

          昨天細雨紛飛依然打落了不少落葉中間這株整個都快變成枯枝了

          +

          昨天依稀凋零稀疏的楓葉殘留今兒個完全不復存在(上周是最美的代名詞)

          + + +

          33-IMG_4255.jpg

          +

          上回來得太早沒能見到楓葉泛紅 這次晚了一周已陸續落葉也無從比對楓葉差異性  +

          +

          另一種角度看不論青楓、金黃葉紅的楓香、葉落飄零秋滿霜、落葉枯枝的蕭瑟 +

          +

          只要心中自認為是最美最浪漫的一刻 都是美的表徵也是最美的時分 +

          + + +

          34-P1610269.jpg

          +

          早起的"蒯嫂"已經備好熱騰騰中式稀飯、包子、蔬果 頓時~有幸福的感覺

          + + +

          35-IMG_4303.jpg

          +

          星期天早上趁著攝影團還沒入場先來人物場景特寫

          +

          野馬家兩張新"座椅"就當作是試坐囉!拍謝哩

          + + +

          38-IMG_4330.jpg

          + + +

          + P1610279.jpg +

          +

          難得有此無人美景在楓樹下的聖誕氛圍也一定要來一張才行

          + + +

          37-IMG_4323.jpg

          +

          三家合照(Hero也一定要入鏡的)

          + + +

          40-IMG_4342.jpg

          +

          接著攝影團入場帶隊老師請求借個時間也來讓學員練習楓樹下的聖誕飾品

          +

          此時剛好也遇到早在FB社團相互回應卻頭一次謀面的Mr."大雄"真是幸會了

          + + +

          42-IMG_4382.jpg

          +

          接近中午時分陽光漸露 藍天帷幕再次嶄露頭角 ~ 久違了!

          +

          期盼下的天空終於放晴 沒有缺席的藍天還是準時赴約如期出席

          + + +

          41-IMG_4366.jpg

          +

          這兩天肉肉(Hero)天雨濕滑無法自由奔跑都快悶壞了

          +

          天晴後"蒯嫂"帶著散步遊園也好解解悶

          + + +

          43-IMG_4383.jpg

          +

          收拾好裝備準備離開營地 亮麗的天空鮮明對比下的楓樹林又讓人覺得有點捨不得離開

          +

          道別了"美樹營地"準備前往而行"石磊國小"一個很生疏的小學座落在這深山部落裡 +

          +

          北橫"石磊部落" 一個從未踏入的陌生之地因為露營之故否則畢生大概也不會路過

          +

          三位大叔同行準備走著這段遙遠的路段 下次找機會再來重溫舊夢了.......

          + +

          美樹營地 + + 資訊 +

          +

          聯絡電話:03-584-7231  行動: 0937-141993

          林錦武 (泰雅族名: 摟信)

          營地地址:新竹縣尖石鄉玉峰村6鄰20號 + +
          +
          +

          +

          每帳$600 兩間衛浴使用燒材鍋爐/ 兩間全天瓦斯 廁所蹲式X 3 +

          +

          楓紅期間須過中午才可搭帳 水電便利

          +

          GPS: N24 39 16.4 E121 18 19.5

          + + +

          如果您喜歡"史蒂文的家"圖文分享 邀請您到 FB 粉絲團 + 按個"讚"! +

          +

          內文有不定期的更新旅遊、露營圖文訊息 謝謝! + +

          + + + + + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/source.html new file mode 100644 index 000000000..e1849a93d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/source.html @@ -0,0 +1,4372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新竹尖石_美樹營地賞楓 (2) @ 史蒂文的家_藍天 :: 痞客邦 PIXNET :: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          + +
          + + + + +
          + + + +
          + +
          + + +
          +
          + +
          + +
          + +
          + +
          + +
          + +
          + +
          + +
          +
          +
          + + +
          +
          +
          +
          相關文章
          +
          +
          + + +
          + +
          + +
          +
          +
          + +
          +

          + +
          +

          + 12-IMG_3886.jpg +

          +

          一波波接續性低溫寒流報到 已將新竹尖石鄉後山一帶層層山巒披上嫣紅的彩衣 +

          +

          玉峰道路一路上雲氣山嵐滯留山頭 順路下切蜿蜒道路後不久即抵達來到"玉峰國小" +

          +

          "美樹"美如其名偌大楓香樹早已呈現金黃 泛紅色彩也是愛攝人仕所喜愛造訪之地

          +

          第二次造訪美樹發現到營區變了 印象中以前生冷招牌換成了原木招牌可謂匠心獨運 +

          +

          燻黑原木加上金黃色醒目字體 加上了貓頭鷹原木創作也充分發揮了裝飾藝術功力 +

          +

          營區內除了露營、民宿、餐飲賞楓項目多了許多原木飾品更有畫龍點睛加乘效果 +

          +


          +

          30-IMG_4228.jpg

          +

          廣受歡迎的美樹營地有個很大特色就是楓紅時期楓香樹由綠轉黃、轉紅到楓紅層層 +

          +

          一來到"美樹"馬上眼睛為之一亮 也會深深地為那多種顏色多層次渲染之下楓紅而迷惑 +

          +

          不同格調就是從入口處這塊招牌第一眼開始 + + 木頭招牌 + + + 、貓頭鷹裝飾品勾勒出美樹的風格 + +

          +

          +

          +

          31-IMG_4231.jpg

          +

          每年12月向來是攝影班外拍的絕佳場所之一 楓紅期間入園費$50元

          +

          園區給愛攝一族淨空場景而不是散搭帳蓬之下反而影響拍照畫面與構圖取景

          +

          露營的話則須待中午過後再進場搭帳的彈性做法個人也相當支持這樣的權宜之計

          +

          +

          +

          + P1610088.jpg +

          +

          來到現場已是落葉飄飄堆疊滿地 不時隨著風吹雨襲而葉落垂地

          +

          +

          +

          + P1610069.jpg +

          +

          不忍踩過剛剛掉落的樹葉 沿著前人足跡踏痕輕踩而行

          +

          雖然只是一廂情願的想法 終究還是不可避免地將會化為塵土

          +

          +

          +

          02-P1610080.jpg

          +

          葉落繽紛顯得幾分蕭瑟氣息 空氣中可以嗅得出來依然瀰漫著濕寒水氣 +

          +

          偶而還會飄下來一些霧氣水滴 不時張望尋找最佳楓葉主題

          +

          +

          +

          04-P1610087.jpg

          +

          外拍的攝影班學員一堆早已不時穿梭其間

          +

          各自努力地找尋自認為最好的拍攝角度

          +

          +

          +

          05-P1610099.jpg

          +

          +

          +

          P1610095.jpg

          +

          +

          +

          13-IMG_3891.jpg

          +

          +

          +

          15-IMG_3906.jpg

          +

          "水槽"上面的這幾隻彩繪版貓頭鷹也太可愛了

          +

          同樣的造型加上不同色彩宛如賦予不同的生命力一般 cool!

          +

          +

          +

          16-IMG_3916.jpg

          +

          雨水洗塵後的枝頭固然掉落些葉片是否也洗去塵勞憂傷

          +

          +

          +

          17-IMG_3919.jpg

          +

          +

          +

          06-IMG_3853.jpg

          +

          喜歡拍照的不論是平面掃描、天空搜尋、地上地毯式搜索

          +

          有如小說偵探一般 不放過蛛絲馬跡地用力尋尋覓覓找尋最美角度

          +

          +

          +

          07-P1610104.jpg

          +

          +

          +

          08-IMG_3862.jpg

          +

          原本這周是由小朱團長早在一年前就跟"簍信"預定下來的場子

          +

          早上從台北出門之際還是小雨不斷細雨紛飛來到此地雖雨已停

          +

          但多日來的雨勢不斷已有部分區域水漬成攤並不適合落置帳篷

          +

          這個季節正是"控溪吊橋"一帶的楓紅變葉時刻 先行走一趟秀巒賞景 + + +

          +

          +

          +

          18-P1610141.jpg

          +

          午後從"秀巒"回到美樹之際已經全數撤退只剩下我們三車留下來

          +

          唯有"離開地球表面"睡車上的才可以不受到地上泥濘而影響

          +

          +

          +

          19-IMG_3933.jpg

          +

          +

          +

          14-P1610134.jpg

          +

          午後山嵐興起雲氣遊蕩盤旋在對岸山頭 人潮來來去去似乎也沒有減少 +

          +

          +

          +

          +

          44-P1610283.jpg

          +

          美樹民宿有開設餐廳 室內簡單佈置提供伙食餐飲

          +

          +

          +

          + P1610212.jpg +

          +

          這兩間是民宿房間 跟著民宿主人"簍信"聊起來還提到日後將改變成兩層木屋

          +

          一樓則是咖啡飲料/賣店提供訪客來賓有個落腳席座之地 二樓才會是民宿房間

          +

          心中有了計畫想法才會有日後的夢想藍圖 相信將會改變得更好的民宿露營環境

          +

          +

          + P1610219.jpg +

          +

          民宿前這一大區楓香林為土質營位 大致區分前、後兩個營區

          +

          前面這一區約可搭上十二帳/車/廳 後面那區也大約4~5帳/車/廳

          +

          正前方小木屋即是衛浴區 男女分別以左右兩側分開(燒材鍋爐) +

          +

          +

          +

          10-P1610114.jpg

          +

          營區水電方便 水槽也很有特色

          +

          +

          +

          22-P1610245.jpg

          +

          這次選擇左側地勢高些以防午夜下雨泥濘

          +

          +

          +

          20-P1610238.jpg

          +

          "野馬"特地帶來了冬至應景食材ㄜ---湯圓 +

          +

          這家還是最近被評比第一名氣的湯圓專賣店

          +

          +

          +

          21-P1610241.jpg

          +

          向來對於湯圓是敬謝不敏 沒想到是出乎意料之外的好吃 沒話說!
          +

          +

          +

          +

          24-IMG_4113.jpg

          +

          喜歡原住民朋友的坦率、真誠 要將民宿營地經營的有聲有色並非容易之事

          +

          午茶時間與"簍信"閒聊分享著他的觀點理念之時很支持對於環境應有生態保護 +

          +

          環保維護是人人有責 勿以善小而不為不計涓滴之水才可匯集成河  + +

          +

          +

          +

          32-IMG_4248.jpg

          +

          +

          +

          25-IMG_4152.jpg

          +

          入夜前雨絲終於漸漸緩和下來 雖然氣溫很低卻沒感受到寒冷的跡象

          +

          是山谷中少了寒氣還是美樹營區裡的人熱情洋溢暖化了不少寒意

          +


          +

          IMG_4158.jpg

          +

          聖誕前夕裝點些聖誕飾品 感受一下節慶的氛圍

          +

          +

          +

          26-P1610261.jpg

          +

          晚餐準備了砂鍋魚頭

          +

          +

          +

          46-1021221美樹露營.jpg

          +

          "蒯嫂"還特地準備著羊肩排、鹹豬肉、柳葉魚...哇!這哩澎湃哩...

          +

           "永老爺"早已備妥了好酒為遠自台南來的蒯兄嫂敬一杯囉

          +

          感謝蒯嫂精心準備的好料理 食指大動好菜色感恩ㄟ!

          +

          +

          +

          27-IMG_4173.jpg

          +

          吃得快精光之際...才想到忘了拍合照...(哇哩咧 ^&*()

          +

          +

          28-IMG_4178.jpg

          +

          +

          +

          29-IMG_4188.jpg

          +

          隔日睡到很晚才起床 不用拍日出晨光的營地對我來說都是個幸福的睡眠

          +

          哪怕是葉落飄零落滿地還是睡夢周公召見而去 起床的事~差點都忘記了

          +

          +

          +

          + IMG_4205.jpg +

          +

          昨天細雨紛飛依然打落了不少落葉中間這株整個都快變成枯枝了

          +

          昨天依稀凋零稀疏的楓葉殘留今兒個完全不復存在(上周是最美的代名詞)

          +

          +

          +

          33-IMG_4255.jpg

          +

          上回來得太早沒能見到楓葉泛紅 這次晚了一周已陸續落葉也無從比對楓葉差異性  +

          +

          另一種角度看不論青楓、金黃葉紅的楓香、葉落飄零秋滿霜、落葉枯枝的蕭瑟 +

          +

          只要心中自認為是最美最浪漫的一刻 都是美的表徵也是最美的時分 +

          +

          +

          +

          34-P1610269.jpg

          +

          早起的"蒯嫂"已經備好熱騰騰中式稀飯、包子、蔬果 頓時~有幸福的感覺

          +

          +

          +

          35-IMG_4303.jpg

          +

          星期天早上趁著攝影團還沒入場先來人物場景特寫

          +

          野馬家兩張新"座椅"就當作是試坐囉!拍謝哩

          +

          +

          +

          38-IMG_4330.jpg

          +

          +

          +

          + P1610279.jpg +

          +

          難得有此無人美景在楓樹下的聖誕氛圍也一定要來一張才行

          +

          +

          +

          37-IMG_4323.jpg

          +

          三家合照(Hero也一定要入鏡的)

          +

          +

          +

          40-IMG_4342.jpg

          +

          接著攝影團入場帶隊老師請求借個時間也來讓學員練習楓樹下的聖誕飾品

          +

          此時剛好也遇到早在FB社團相互回應卻頭一次謀面的Mr."大雄"真是幸會了

          +

          +

          +

          42-IMG_4382.jpg

          +

          接近中午時分陽光漸露 藍天帷幕再次嶄露頭角 ~ 久違了!

          +

          期盼下的天空終於放晴 沒有缺席的藍天還是準時赴約如期出席

          +

          +

          +

          41-IMG_4366.jpg

          +

          這兩天肉肉(Hero)天雨濕滑無法自由奔跑都快悶壞了

          +

          天晴後"蒯嫂"帶著散步遊園也好解解悶

          +

          +

          +

          43-IMG_4383.jpg

          +

          收拾好裝備準備離開營地 亮麗的天空鮮明對比下的楓樹林又讓人覺得有點捨不得離開

          +

          道別了"美樹營地"準備前往而行"石磊國小"一個很生疏的小學座落在這深山部落裡 +

          +

          北橫"石磊部落" 一個從未踏入的陌生之地因為露營之故否則畢生大概也不會路過

          +

          三位大叔同行準備走著這段遙遠的路段 下次找機會再來重溫舊夢了.......

          +

          +

          美樹營地 + + 資訊 +

          +

          聯絡電話:03-584-7231  行動: 0937-141993
          林錦武 (泰雅族名: 摟信)
          營地地址:新竹縣尖石鄉玉峰村6鄰20號 + +
          +
          +

          +

          每帳$600 兩間衛浴使用燒材鍋爐/ 兩間全天瓦斯 廁所蹲式X 3 +

          +

          楓紅期間須過中午才可搭帳 水電便利

          +

          GPS: N24 39 16.4 E121 18 19.5

          +

          +

          +

          如果您喜歡"史蒂文的家"圖文分享 邀請您到 FB 粉絲團 + 按個"讚"! +

          +

          內文有不定期的更新旅遊、露營圖文訊息 謝謝! + +

          +

          +

          + +
          + + + , , , ,
          + +
          +
          +
          上一篇文章與下一篇文章
          + +
          +
          +
          + +
          + + +

          + 史蒂文的家_藍天 發表在 痞客邦 PIXNET 留言(42) 人氣(23925) +

          + + + +
          +
          +
          +
          +
          + +
          + +
          + + + +
          +
          +
          + +
          + +
          +
          +
          + +
          +
          + + + +
          + + + +
          + +
          +
          + +

          留言列表 (42)

          +
          發表留言
          + +
          +
            + +
          • + 小鳳 +
          • +
          • +

            + 露營兼賞楓,好棒的生活
          • +
          • + 謝謝小鳳的來訪! +

            史蒂文的家_藍天 於 2014/01/01 20:31 回覆

            +
          • +
          +
            + +
          • + 茜媽咪 +
          • +
          • +

            + 嚮往大自然....再濕冷的天依舊衝衝衝
            每每分享藍天大哥捕捉的鏡頭 +
            總是特別的吸引目光....真得好美 +
            對了....我家女兒說....伯伯的露營餐點 +
            看起來好豐盛喔 +
            +
          • +
          • + 茜媽咪晚安:
            您過獎了,我們不是專業攝影師只是喜歡拍照而已, +
            雨天過後的楓葉蕭瑟感變厚重了,也顯得很鮮明色澤而已! +
            這次還是南部上來的朋友帶來豐盛的晚餐,真是不好意思ㄋ! +
            (拍謝!外出帶著平板電腦不容易回應..才剛剛回家回覆) +

            史蒂文的家_藍天 於 2014/01/01 20:37 回覆

            +
          • +
          +
            + +
          • + 訪客
          • +
          • +

            + 藍天哥
            +
            您的文筆真是讚 +
            +
            大雄
          • +
          • + 大雄 晚安:
            毋影啦~只是有感而發的抒發一點所見所聞而已! +

            史蒂文的家_藍天 於 2014/01/01 20:39 回覆

            +
          • +
          +
            + +
          • + linghua +
          • +
          • +

            + 哇!好厚的紅毯 趴在地上取景辛苦了!
            近年天氣消笑 忽冷忽熱
            外拍能遇到最美的藍天和紅葉 可遇不可求....
            桌上的砂鍋魚頭看起來超讚 +
            冷冷的寒冬享用 一定過癮極了!
          • +
          • + 哈~我的相機可以翻轉螢幕ㄜ,當初也有考慮到這場景的辛苦...
            所以螢幕可以折疊就輕鬆多囉! +
            楓紅總是不等人的,我們這一周跟上周相比較的話就差很大, +
            選對時間才是做重要! 天寒之際吃火鍋最方便,也是偷懶... +

            史蒂文的家_藍天 於 2014/01/01 20:59 回覆

            +
          • +
          +
          +
          + + +
          + + +
          + + + +
          +
            + +
          • + 青草 +
          • +
          • +

            + 大哥晚安~
            今天路過美樹營地,真的很美! +
            可惜現在楓已落的差不多了!! +
            好深山那內的地方,我們由秀巒下玉峰 +
            再由北橫三光回家,一路的山景秀麗!!
          • +
          • + 青草晚安:
            上週幾天下來又是風又是雨, +
            "花落知多少..."就算差一周也 +
            差很大呢!明年算準時間再訪 +
            就一定很棒的! +

            史蒂文的家_藍天 於 2014/01/01 20:56 回覆

            +
          • +
          +
            + +
          • + 阿蒯 +
          • +
          • +

            + 大推
            不是因為文中的很多”蒯嫂” +
            回家之後發現我的”恐山症”竟然好了八成 +
            那段石磊產業道路 心理暗唸”阿彌陀佛”不只百遍除了感謝
            我詞窮了 +
            你們與野馬伉儷的友誼讓我們在陰雨寒冷中覺得溫暖 +
            這是一次另人感動的旅程 +
            有你們真好!
          • +
          • + 蒯兄嫂晚安:
            這趟路讓您辛苦了,雖然天氣不佳依然如期赴約, +
            讓蒯嫂處處打點得得這麼好,真有點過意不去... +
            感恩!相信"之前"的車況給受驚擾了,如今應該 +
            是恢復信心,有藍天在的話,出門都是安全無虞的! +

            史蒂文的家_藍天 於 2014/01/01 20:54 回覆

            +
          • +
          +
            + +
          • + 甄妮佛 +
          • +
          • +

            + 山嵐 楓樹 落葉 ... 這地方太美了!! 太美了!!
          • +
          • + 甄妮佛 晚安:
            如果有露營的朋友一定也聽過有這個地方, +
            時令季節一到就是楓紅滿地...尖石秀巒一帶 +
            很有秋天的氣息哦.... +

            史蒂文的家_藍天 於 2014/01/01 20:48 回覆

            +
          • +
          +
            + +
          • + Cora +
          • +
          • +

            + 雨霧飄渺中的楓黃楓紅另有一番風韻
          • +
          • + Cora晚安:
            幾天下來楓葉經過雨後洗滌變得很鮮明, +
            當然也帶走許多落葉..蕭瑟唯美另一種風情! +

            史蒂文的家_藍天 於 2014/01/01 20:46 回覆

            +
          • +
          +
            + +
          • + tinned +
          • +
          • +

            + 真是拍的漂亮 我是北七強
          • +
          • + 北七強 晚安:
            謝謝不吝讚美,其實我們只是喜歡拍而已,畢竟跟專業攝影還是有段距離, +
            簍信能有有您這些朋友真是太幸福了...,美樹愈來愈進步您是功不可沒... +
            (哈~這個名稱取得...似乎很有玄機呢?) +

            史蒂文的家_藍天 於 2014/01/01 20:44 回覆

            +
          • +
          +
            + +
          • + 莉莉夫子 +
          • +
          • +

            + 藍天大哥:晚安~
            哇~睡車上.機動性很強咧~ +
            今年的美樹 好美啊~
          • +
          • + LiLi夫子晚安:
            是呀!改裝成車中床離開"地球表面",力克 +
            潮溼地表(懶得收帳篷才是事實).. +
            今年的"美樹"楓紅狀況很優,我們去的上一周 +
            更是最大值,看到FB有朋友分享..美的驚豔! +

            史蒂文的家_藍天 於 2014/01/01 20:25 回覆

            +
          • +
          +
            + +
          • + 黑傑克 +
          • +
          • +

            + 在藍天大的掌鏡下,美樹果然是仙境呀~
          • +
          • + 黑傑克晚安:
            拍謝!出門五天才剛剛入門,外出使用平板電腦 +
            實在很不方便中文輸入跟回應.... +
            您客氣了,我們只是很一般的而已,看了您的 +
            瑞士之行...才是仙境,會流口水哦! +

            史蒂文的家_藍天 於 2014/01/01 20:17 回覆

            +
          • +
          +
            +
          • + 悄悄話
          • +
          +
            + +
          • + 飛兒 +
          • +
          • +

            + 那年 我不是才不約而同到美樹賞楓
            好快 又過了一年
            山嵐在遠方飄移 讓秋楓更有意境
            美樹的楓香 不管怎麼拍都很美
            石磊部落 我在原民台看過介紹
            是一個以種植有機蔬果為主的部落 +
            也是一個很美的地方 我還沒去過
            期待藍天大哥的分享
          • +
          • + 飛兒晚安:
            說的也是,那年真的是不約而同, +
            只差沒真的碰面而已..如今又已 +
            倏逾兩年了... +
            回程走"石磊道路"再轉回北橫巴崚, +
            切回三峽回台北,路況好遠喲... +

            史蒂文的家_藍天 於 2014/01/02 23:36 回覆

            +
          • +
          +
            + +
          • + 王昆 +
          • +
          • +

            + 欣賞好圖文唷~
            安安~工作愉快~~順心~
          • +
          • + 謝謝賞圖!
            祝福~順遂 +

            史蒂文的家_藍天 於 2014/01/13 23:05 回覆

            +
          • +
          +
            + +
          • + 大小姐 +
          • +
          • +

            + 真是讓人羨慕的生活喔
          • +
          • + 大小姐 晚安:
            露營是另外一種戶外生活,您的餐飲美食生活 +
            也是不遑多讓ㄜ... +

            史蒂文的家_藍天 於 2014/01/02 23:30 回覆

            +
          • +
          +
            + +
          • + 王昆 +
          • +
          • +

            + 賞圖文唷~美唷!! 善知識晚安安
            +
            祝您馬年行大運馬上賺大錢唷~ +
            +
          • +
          • + 也祝您 新春愉快,新的一年心想事成,萬事如意 +

            史蒂文的家_藍天 於 2014/01/02 23:59 回覆

            +
          • +
          +
            + +
          • + 光頭 +
          • +
          • +

            + 楓樹 落葉~這地方太美~拍照真美
          • +
          • + 光頭 晚安:
            這格地點的楓香泛紅之際是最美的時刻, +
            人在現場看更是會感動的地方... +

            史蒂文的家_藍天 於 2014/01/02 23:32 回覆

            +
          • +
          +
            +
          • + 悄悄話
          • +
          +
            + +
          • + Sheila Teng +
          • +
          • +

            + 台灣能找到這麼厚實的楓葉地毯...不容易呀!!
            此時若想低拍就會羨慕起那些螢幕可翻轉的相機了~ +
            +
            控溪吊橋那邊我拍過, 風景真的很棒!
            美樹名字取得簡單乾脆... +
            這個地方記下來了, 不必去石門水庫人擠人
            這裡的楓葉更有看頭哩!!! +
            +
          • +
          • + Sheila晚安:
            來到秀巒軍艦岩、控溪吊橋拍秋楓的話, +
            那就得順道去"美樹"拍楓香林才不需此行, +
            一個簡單的營地卻是愛攝人士每年必訪之地, +
            攝影老師總是帶著學員來此地外拍練習, +
            要是妳來拍攝的話,必然精彩可期,"另眼看待"ㄜ! +

            史蒂文的家_藍天 於 2014/01/03 22:07 回覆

            +
          • +
          +
            + +
          • + 阿麗瑪 +
          • +
          • +

            + 先來說個老梗~落花並非無情物,化作春泥更護花!♥
            落葉鋪成的地毯真的感覺粉溫馨吼? +
            哦~你們南來北往大會師噢? +
            美樹營地好美呢!偶們一心一意直奔司馬庫斯所以沒有近來賞景... +
            伙食好讚噢!偶們四餐有兩餐試吃泡麵,早餐是吃隔夜飯泡水的硬硬不濃稠稀飯...☹ +
            恭喜你們收穫滿行曩♣★ +
            噢對!還有怎麼睡車上呢?露營車嗎?偶們去年元旦去國境之南找不到旅館也是當了車床族~睡車上...好累!︿_*
          • +
          • + 阿麗瑪晚安:
            這個季節的楓香林剛好泛紅,剛好連日來雨勢不斷變成 +
            落葉成塚,否則滿滿色彩的楓樹是最美的! 阿蒯之家特地
            從南部北上一起同露,蒯嫂手藝很棒我們才有口福哩! +
            我們是休旅車,經由專門店家改裝成"活動式車床",拆卸快速 +
            只需要五分鐘就可以搞定,長度180公分(含海棉墊)這樣睡眠 +
            才有品質,一覺到天亮甚至會睡過頭... +

            史蒂文的家_藍天 於 2014/01/03 23:11 回覆

            +
          • +
          + +
            +
          • + 悄悄話
          • +
          +
            + +
          • + lily +
          • +
          • +

            + 第一張相片的貓頭鷹實在是太吸睛了~~
            這裡賞楓露營真是好地方 +
            出去露營能吃到如此豐盛 +
            真是超級羨慕ㄋ
          • +
          • + Lily 晚安:
            美樹營地招牌上分別佈置了幾隻貓頭鷹, +
            顏色鮮豔也很可愛,也成為愛攝人士的鏡頭 +
            追逐焦點,有機會可以去看一看! +

            史蒂文的家_藍天 於 2014/01/09 21:10 回覆

            +
          • +
          +
            + +
          • + tinned +
          • +
          • +

            + 北七強的由來ㄚ
            就很簡單ㄚ 畫圖的時候很單純 很少去想最後的結果
            +
            北七 還挺不錯的ㄚ 可能是指ㄧ個心境問題喔
          • +
          • + 簍信,有緣認識你們這些朋友真是幸運了!
            "北七" 的取名太有意思了~~
            (拍謝, 今早上才見到有漏回覆的,金害ㄟ) +

            史蒂文的家_藍天 於 2014/02/10 10:22 回覆

            +
          • +
          + +
            + +
          • + 訪客
          • +
          • +

            + 真的拍得好棒好溫馨~~
          • +
          • + 謝謝賞圖/文! +

            史蒂文的家_藍天 於 2015/11/30 17:40 回覆

            +
          • +
          +
            + +
          • + qiqichoi +
          • +
          • +

            + 真是太美了
          • +
          • + 謝謝你的喜歡~
            +

            史蒂文的家_藍天 於 2016/07/05 19:26 回覆

            +
          • +
          + +
            + +
          • + 米可 +
          • +
          • +

            + 這太美了!好喜歡,我從沒看過,希望有一天可以去看看走一趟!
          • +
          • + 這裡是新竹縣秀巒鄉很著名的攝影景點,
            如果不是露營的話也可以趁著早上開放時間拍照, +
            付入園會即可入內盡情拍照... +
            PS:每年楓紅時間"大約"是12月中...左右, +
            實際還得視當地氣溫而定 +

            史蒂文的家_藍天 於 2016/08/02 10:37 回覆

            +
          • +
          + + +
            + +
          • + Quby +
          • +
          • +

            + 再過不久又進入秋天了
            楓葉照令人很期待呢 +
            而且到時候的天氣適合露營 +
            不會很濕熱也不會太冷
          • +
          • + 入秋之後寒流來襲就容易讓秋楓變色,
            秋高氣爽野正是露營的好時節 +

            史蒂文的家_藍天 於 2016/09/08 18:37 回覆

            +
          • +
          +
            + +
          • + 面面 +
          • +
          • +

            + 拍的照片真的好美 謝謝
          • +
          • + 謝謝妳的喜歡~ +

            史蒂文的家_藍天 於 2016/09/13 18:13 回覆

            +
          • +
          +
            + +
          • + 木博士 +
          • +
          • +

            + 很美~美術營是帶小朋友去玩的好地方!!
          • +
          • + 美樹營地有奇迷人之處,春夏秋冬各有其特色,
            小朋友玩耍也很安全的! +

            史蒂文的家_藍天 於 2016/09/23 09:38 回覆

            +
          • +
          +
            + +
          • + tw27003265 +
          • +
          • +

            + 秋之景好美呢
          • +
          • + 新竹秀巒一帶的熱門楓紅景點之一 +

            史蒂文的家_藍天 於 2016/10/04 09:47 回覆

            +
          • +
          + +
            + +
          • + Jenny10113 +
          • +
          • +

            + 好夢幻喔!!!!!
          • +
          • + 很美的楓香營地,楓紅時節也是熱門的拍照景點 +

            史蒂文的家_藍天 於 2016/10/04 09:46 回覆

            +
          • +
          +
            + +
          • + GE台北車庫-小壕 +
          • +
          • +

            + 好適合約會的地方~
          • +
          • + 小而美的營地,一年四季的楓箱各有特色,
            適合各式各樣的聚會ㄜ +

            史蒂文的家_藍天 於 2016/10/04 09:45 回覆

            +
          • +
          +
            + +
          • + 廣州十大旅遊景點
          • +
          • +

            + 這篇寫的很好
            歡迎回訪喔
          • +
          • + 謝謝你!
            +
            +

            史蒂文的家_藍天 於 2016/10/12 14:25 回覆

            +
          • +
          +
            + +
          • + tw27003265 +
          • +
          • +

            + 又是看秋景的季節
          • +
          + +
            + +
          • + 蔡敏嫻 +
          • +
          • +

            + 真是個美麗的好地方,感謝分享~
          • +
          • + 謝謝賞圖文! +

            史蒂文的家_藍天 於 2017/01/19 21:05 回覆

            +
          • +
          +
          + +
          + +
          + +
          +
          + +
          + +
          +
          +

          您尚未登入,將以訪客身份留言。亦可登入留言

          + +
          + +
          +
          +
          登入可留悄悄話
          +
          +
          + + + +
          +
          其他選項
          + +
          + + +
          + +
          + +
          + +
          + + +
          +
          + +
          + + + + +
          + +
          + + + +
          + + + +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json new file mode 100644 index 000000000..9a7e3d102 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua.", + "Image": null, + "Title": "Remove trailing brs test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected.html new file mode 100644 index 000000000..e064a49ee --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected.html @@ -0,0 +1,16 @@ +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

          +

          Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          +

          Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/source.html new file mode 100644 index 000000000..ac6ffc793 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/source.html @@ -0,0 +1,32 @@ + + + + + Remove trailing brs test + + +
          +

          Lorem

          +
          +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

          +

          Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.


          +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          +

          Foo

          +
          +

          Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json new file mode 100644 index 000000000..2e6f722f5 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua.", + "Image": null, + "Title": "Replace font tags test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected.html new file mode 100644 index 000000000..a7c631809 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected.html @@ -0,0 +1,23 @@ +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

          + +

          Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          + + +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          + +
          +

          Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          + +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/source.html new file mode 100644 index 000000000..339d84b3f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/source.html @@ -0,0 +1,41 @@ + + + + + Replace font tags test + + +
          +

          Lorem

          +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

          +

          +

          Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          +

          +

          +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          +
          +

          Foo

          +
          +

          Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          +

          +

          +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          + + +

          +
          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-metadata.json new file mode 100644 index 000000000..13cd351c7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua.", + "Image": null, + "Title": "Remove script tags test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected.html new file mode 100644 index 000000000..769cc0629 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected.html @@ -0,0 +1,19 @@ +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

          +

          Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          +

          Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. + + Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/source.html new file mode 100644 index 000000000..cacb3df7a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/source.html @@ -0,0 +1,43 @@ + + + + + Remove script tags test + + + +
          +

          Lorem

          +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua.

          +

          Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          + +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          + +

          Foo

          +
          +

          Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.

          + +

          Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. + + Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json new file mode 100644 index 000000000..4878f5da1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Regarding item# 11111, under sufficiently extreme conditions, quarks may\n become deconfined and exist as free particles. In the course of asymptotic\n freedom, the strong interaction becomes weaker at higher temperatures.\n Eventually, color confinement would be lost and an extremely hot plasma\n of freely moving quarks and gluons would be formed. This theoretical phase\n of matter is called quark-gluon plasma.[81] The exact conditions needed\n to give rise to this state are unknown and have been the subject of a great\n deal of speculation and experimentation.", + "Image": null, + "Title": null, + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected.html new file mode 100644 index 000000000..4a46dd585 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected.html @@ -0,0 +1,26 @@ +
          +

          Regarding item# 11111, under sufficiently extreme conditions, quarks may + become deconfined and exist as free particles. In the course of asymptotic + freedom, the strong interaction becomes weaker at higher temperatures. + Eventually, color confinement would be lost and an extremely hot plasma + of freely moving quarks and gluons would be formed. This theoretical phase + of matter is called quark-gluon plasma.[81] The exact conditions needed + to give rise to this state are unknown and have been the subject of a great + deal of speculation and experimentation.

          +

          Regarding item# 22222, under sufficiently extreme conditions, quarks may + become deconfined and exist as free particles. In the course of asymptotic + freedom, the strong interaction becomes weaker at higher temperatures. + Eventually, color confinement would be lost and an extremely hot plasma + of freely moving quarks and gluons would be formed. This theoretical phase + of matter is called quark-gluon plasma.[81] The exact conditions needed + to give rise to this state are unknown and have been the subject of a great + deal of speculation and experimentation.

          +

          Regarding item# 33333, under sufficiently extreme conditions, quarks may + become deconfined and exist as free particles. In the course of asymptotic + freedom, the strong interaction becomes weaker at higher temperatures. + Eventually, color confinement would be lost and an extremely hot plasma + of freely moving quarks and gluons would be formed. This theoretical phase + of matter is called quark-gluon plasma.[81] The exact conditions needed + to give rise to this state are unknown and have been the subject of a great + deal of speculation and experimentation.

          +

          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/source.html new file mode 100644 index 000000000..d081a9436 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/source.html @@ -0,0 +1,34 @@ + + + + + +
          +

          Regarding item# 11111, under sufficiently extreme conditions, quarks may + become deconfined and exist as free particles. In the course of asymptotic + freedom, the strong interaction becomes weaker at higher temperatures. + Eventually, color confinement would be lost and an extremely hot plasma + of freely moving quarks and gluons would be formed. This theoretical phase + of matter is called quark-gluon plasma.[81] The exact conditions needed + to give rise to this state are unknown and have been the subject of a great + deal of speculation and experimentation.

          +

          Regarding item# 22222, under sufficiently extreme conditions, quarks may + become deconfined and exist as free particles. In the course of asymptotic + freedom, the strong interaction becomes weaker at higher temperatures. + Eventually, color confinement would be lost and an extremely hot plasma + of freely moving quarks and gluons would be formed. This theoretical phase + of matter is called quark-gluon plasma.[81] The exact conditions needed + to give rise to this state are unknown and have been the subject of a great + deal of speculation and experimentation.

          +

          Regarding item# 33333, under sufficiently extreme conditions, quarks may + become deconfined and exist as free particles. In the course of asymptotic + freedom, the strong interaction becomes weaker at higher temperatures. + Eventually, color confinement would be lost and an extremely hot plasma + of freely moving quarks and gluons would be formed. This theoretical phase + of matter is called quark-gluon plasma.[81] The exact conditions needed + to give rise to this state are unknown and have been the subject of a great + deal of speculation and experimentation.

          +
          + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-metadata.json new file mode 100644 index 000000000..2f31b060c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsumdolor sit", + "Image": null, + "Title": "Replace brs test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected.html new file mode 100644 index 000000000..56e36a4bc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected.html @@ -0,0 +1,14 @@ +

          + Lorem ipsum

          dolor sit

          amet, consectetur adipisicing elit, sed do eiusmod

          + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,

          + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo

          + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse

          + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non

          + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          + Tempor

          incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,

          + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo

          + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse

          + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non

          + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/source.html new file mode 100644 index 000000000..2283d6542 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/source.html @@ -0,0 +1,28 @@ + + + + + Replace brs test + + +
          +

          Lorem

          +
          + Lorem ipsum
          dolor sit


          amet, consectetur adipisicing elit, sed do eiusmod
          + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
          + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo

          + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
          + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
          + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          +

          Foo

          +
          + Tempor

          incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
          + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
          + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse

          + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
          + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-metadata.json new file mode 100644 index 000000000..18f46ddb8 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Replace font tags test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected.html new file mode 100644 index 000000000..a36b1a252 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected.html @@ -0,0 +1,17 @@ +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          Foo

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/source.html new file mode 100644 index 000000000..5789e5676 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/source.html @@ -0,0 +1,28 @@ + + + + + Replace font tags test + + +
          +

          Lorem

          +
          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          +

          Foo

          +
          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-metadata.json new file mode 100644 index 000000000..f9613b2bf --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": "rtl", + "Excerpt": "Lorem ipsum dolor sit amet.", + "Image": null, + "Title": "RTL Test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected.html new file mode 100644 index 000000000..eba1686e9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected.html @@ -0,0 +1,11 @@ +
          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/source.html new file mode 100644 index 000000000..597c427ac --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/source.html @@ -0,0 +1,26 @@ + + + + + + RTL Test + + + +
          +
          +

          Lorem

          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-metadata.json new file mode 100644 index 000000000..f9613b2bf --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": "rtl", + "Excerpt": "Lorem ipsum dolor sit amet.", + "Image": null, + "Title": "RTL Test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected.html new file mode 100644 index 000000000..eba1686e9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected.html @@ -0,0 +1,11 @@ +
          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/source.html new file mode 100644 index 000000000..c888309eb --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/source.html @@ -0,0 +1,26 @@ + + + + + + RTL Test + + + +
          +
          +

          Lorem

          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-metadata.json new file mode 100644 index 000000000..f9613b2bf --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": "rtl", + "Excerpt": "Lorem ipsum dolor sit amet.", + "Image": null, + "Title": "RTL Test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected.html new file mode 100644 index 000000000..75448882b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected.html @@ -0,0 +1,11 @@ +
          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/source.html new file mode 100644 index 000000000..ac68451c7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/source.html @@ -0,0 +1,26 @@ + + + + + + RTL Test + + + +
          +
          +

          Lorem

          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-metadata.json new file mode 100644 index 000000000..c8358d561 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet.", + "Image": null, + "Title": "RTL Test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected.html new file mode 100644 index 000000000..14724e72d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected.html @@ -0,0 +1,11 @@ +
          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/source.html new file mode 100644 index 000000000..677bca906 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/source.html @@ -0,0 +1,26 @@ + + + + + + RTL Test + + + +
          +
          +

          Lorem

          +

          + Lorem ipsum dolor sit amet. +

          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-images.json new file mode 100644 index 000000000..f2c796a72 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/media.salon.com\/2014\/12\/uber_rand_paul.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-metadata.json new file mode 100644 index 000000000..63cf935cf --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Joanna Rothkopf", + "Direction": null, + "Excerpt": "Disruptive companies talk a good game about sharing. Uber's really just an under-regulated company making riches", + "Image": "http:\/\/media.salon.com\/2014\/12\/uber_rand_paul.jpg", + "Title": "The sharing economy is a lie: Uber, Ayn Rand and the truth about tech and libertarians", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected.html new file mode 100644 index 000000000..d1cb60ef1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected.html @@ -0,0 +1,206 @@ +

          Horror stories about the increasingly unpopular taxi service Uber have + been commonplace in recent months, but there is still much to be learned + from its handling of the recent hostage drama in downtown Sydney, Australia. + We’re told that we reveal our true character in moments of crisis, and + apparently that’s as true for companies as it is for individuals.

          A number of experts have challenged the idea that the horrific explosion + of violence in a Sydney café was “terrorism,” since the attacker was mentally + unbalanced and acted alone. But, terror or not, the ordeal was certainly + terrifying. Amid the chaos and uncertainty, the city believed itself to + be under a coordinated and deadly attack.

          Uber had an interesting, if predictable, response to the panic and mayhem: + It raised prices. A lot.

          In case you missed the story, the facts are these: Someone named Man Haron + Monis, who was considered mentally unstable and had been investigated for + murdering his ex-wife, seized hostages in a café that was located in Sydney’s + Central Business District or “CBD.” In the process he put up an Islamic + flag – “igniting,” as Reuters reported, + “fears of a jihadist attack in the heart of the country’s biggest city.”

          In the midst of the fear, Uber stepped in and tweeted this announcement:  + “We are all concerned with events in CBD. Fares have increased to encourage + more drivers to come online & pick up passengers in the area.” +

          As Mashable reports, + the company announced that it would charge a minimum of $100 Australian + to take passengers from the area immediately surrounding the ongoing crisis, + and prices increased by as much as four times the standard amount. A firestorm + of criticism quickly erupted – “@Uber_Sydney stop + being assholes,” one Twitter response began – and Uber soon found itself + offering free rides out of the troubled area instead.

          That opener suggests that Uber, as part of a community under siege, is + preparing to respond in a civic manner. +

          “… Fares have increased to encourage more drivers to come online & pick up passengers in the area.” +

          +

          But, despite the expression of shared concern, there is no sense of civitas to + be found in the statement that follows. There is only a transaction, executed + at what the corporation believes to be market value. Lesson #1 about Uber + is, therefore, that in its view there is no heroism, only self-interest. + This is Ayn Rand’s brutal, irrational and primitive philosophy in its purest + form: altruism is evil, and self-interest is the only true heroism. +

          +

          There was once a time when we might have read of “hero cabdrivers” or + “hero bus drivers” placing themselves in harm’s way to rescue their fellow + citizens. For its part, Uber might have suggested that it would use its + network of drivers and its scheduling software to recruit volunteer drivers + for a rescue mission. +

          +

          Instead, we are told that Uber’s pricing surge was its expression + of concern. Uber’s way to address a human crisis is apparently by letting + the market govern human behavior, as if there were (in libertarian economist + Tyler Cowen’s phrase) “markets in everything” – including the lives of + a city’s beleaguered citizens (and its Uber drivers). +

          +

          Where would this kind of market-driven practice leave poor or middle-income + citizens in a time of crisis? If they can’t afford the “surged” price, + apparently it would leave them squarely in the line of fire. And come to + think of it, why would Uber drivers value their lives so cheaply, unless + they’re underpaid? +

          +

          One of the lessons of Sydney is this: Uber’s philosophy, whether consciously + expressed or not, is that life belongs to the highest bidder – and therefore, + by implication, the highest bidder’s life has the greatest value. Society, + on the other hand, may choose to believe that every life has equal value + – or that lifesaving services should be available at affordable prices. +

          +

          If nothing else, the Sydney experience should prove once and for all that + there is no such thing as “the sharing economy.” Uber is a taxi company, + albeit an under-regulated one, and nothing more. It’s certainly not a “ride + sharing” service, where someone who happens to be going in the same direction + is willing to take along an extra passenger and split gas costs. A ride-sharing + service wouldn’t find itself “increasing fares to encourage more drivers” + to come into Sydney’s terrorized Central Business District. +

          +

          A “sharing economy,” by definition, is lateral in structure. It is a peer-to-peer + economy. But Uber, as its name suggests, is hierarchical in structure. + It monitors and controls its drivers, demanding that they purchase services + from it while guiding their movements and determining their level of earnings. + And its pricing mechanisms impose unpredictable costs on its customers, + extracting greater amounts whenever the data suggests customers can be + compelled to pay them. +

          +

          This is a top-down economy, not a “shared” one. +

          +

          A number of Uber’s fans and supporters defended the company on the grounds + that its “surge prices,” including those seen during the Sydney crisis, + are determined by an algorithm. But an algorithm can be an ideological + statement, and is always a cultural artifact. As human creations, algorithms + reflect their creators. +

          +

          Uber’s tweet during the Sydney crisis made it sound as if human intervention, + rather than algorithmic processes, caused prices to soar that day. But + it doesn’t really matter if that surge was manually or algorithmically + driven. Either way the prices were Uber’s doing – and its moral choice. +

          +

          Uber has been strenuously defending its surge pricing in the wake of accusations + (apparently justified) + that the company enjoyed windfall profits during Hurricane Sandy. It has + now promised the state of New York that it will cap its surge prices (at + three times the highest rate on two non-emergency days). But if Uber has + its way, it will soon enjoy a monopolistic stranglehold on car service + rates in most major markets. And it has demonstrated its willingness to + ignore rules and regulations. That means predictable and affordable + taxi fares could become a thing of the past. +

          +

          In practice, surge pricing could become a new, privatized form of taxation + on middle-class taxi customers. +

          +

          Even without surge pricing, Uber and its supporters are hiding its full + costs. When middle-class workers are underpaid or deprived of benefits + and full working rights, as Uber’s reportedly are, + the entire middle-class economy suffers. Overall wages and benefits are + suppressed for the majority, while the wealthy few are made even richer. + The invisible costs of ventures like Uber are extracted over time, far + surpassing whatever short-term savings they may occasionally offer. +

          +

          Like Walmart, Uber underpays its employees – many of its drivers are employees, + in everything but name – and then drains the social safety net to make + up the difference. While Uber preaches libertarianism, it practices a form + of corporate welfare. It’s reportedly celebrating Obamacare, + for example, since the Affordable Care Act allows it to avoid providing + health insurance to its workforce. But the ACA’s subsidies, together with + Uber’s often woefully insufficient wages, mean that the rest of us are + paying its tab instead. And the lack of income security among Uber’s drivers + creates another social cost for Americans – in lost tax revenue, and possibly + in increased use of social services. +

          +

          The company’s war on regulation will also carry a social price. Uber and + its supporters don’t seem to understand that regulations exist + for a reason. It’s true that nobody likes excessive bureaucracy, but not + all regulations are excessive or onerous. And when they are, it’s a flaw + in execution rather than principle. +

          +

          Regulations were created because they serve a social purpose, ensuring + the free and fair exchange of services and resources among all segments + of society. Some services, such as transportation, are of such importance + that the public has a vested interest in ensuring they will be readily + available at reasonably affordable prices. That’s not unreasonable for + taxi services, especially given the fact that they profit from publicly + maintained roads and bridges. +

          +

          Uber has presented itself as a modernized, efficient alternative to government + oversight. But it’s an evasion of regulation, not its replacement. As + Alexis Madrigalreports, Uber has deliberately ignored city regulators + and used customer demand to force its model of inadequate self-governance + (my conclusion, not his) onto one city after another. +

          +

          Uber presented itself as a refreshing alternative to the over-bureaucratized + world of urban transportation. But that’s a false choice. We can streamline + sclerotic city regulators, upgrade taxi fleets and even provide users with + fancy apps that make it easier to call a cab. The company’s binary presentation + – us, or City Hall – frames the debate in artificial terms. +

          +

          Uber claims that its driver rating system is a more efficient way to monitor + drivers, but that’s an entirely unproven assumption. While taxi drivers + have been known to misbehave, the worldwide litany of complaints against + Uber drivers – for everything from dirty cars and spider bites to + assault with a hammer, fondling and + rape– suggest that Uber’s system may not work as well as old-fashioned + regulation. It’s certainly not noticeably superior. +

          +

          In fact, prosecutors in San Francisco and Los Angeles say + Uber has been lying to its customers about the level and quality of its + background checks. The company now promises it will do a better job at + screening drivers. But it won’t tell us what + measures its taking to improve its safety record, and it’s fighting the kind of driver scrutiny that + taxicab companies have been required to enforce for many decades. +

          +

          Many reports suggest that beleaguered drivers don’t feel much better about + the company than victimized passengers do. They tell horror stories about + the company’s hiring and management practices. Uber unilaterally slashes drivers’ rates, + while claiming they don’t need to unionize. (The Teamsters disagree.) +

          +

          The company also pushes sketchy, substandard loans onto + its drivers – but hey, what could go wrong? +

          +

          Uber has many libertarian defenders. And yet, it deceives the press and + threatens to spy on journalists, lies to its own employees, + keeps its practices a secret and routinely invades the privacy of civilians + – sometimes merely for entertainment. (It has a tool, with the Orwellian + name the “God View,” + that it can use for monitoring customers’ personal movements.) +

          +

          Aren’t those the kinds of things libertarians say they hate about government? +

          +

          This isn’t a “gotcha” exercise. It matters. Uber is the poster child for + the pro-privatization, anti-regulatory ideology that ascribes magical powers + to technology and the private sector. It is deeply a political entity, + from its Nietzschean name to its recent hiring of White House veteran David + Plouffe. Uber is built around a relatively simple app (which relies on + government-created technology), but it’s not really a tech company. Above + all else Uber is an ideological campaign, a neoliberal project whose real + products are deregulation and the dismantling of the social contract. +

          +

          Or maybe, as that tweeter in Sydney suggested, they’re just assholes. +

          +

          Either way, it’s important that Uber’s worldview and business practices + not be allowed to “disrupt” our economy or our social fabric. People who + work hard deserve to make a decent living. Society at large deserves access + to safe and affordable transportation. And government, as the collective + expression of a democratic society, has a role to play in protecting its + citizens. +

          +

          And then there’s the matter of our collective psyche. In her book “A Paradise + Built in Hell: The Extraordinary Communities that Arise in Disaster,” Rebecca + Solnit wrote of the purpose, meaning and deep satisfaction people find + when they pull together to help one another in the face of adversity.  + But in the world Uber seeks to create, those surges of the spirit would + be replaced by surge pricing. +

          +

          You don’t need a “God view” to see what happens next. When heroism is + reduced to a transaction, the soul of a society is sold cheap. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/source.html new file mode 100644 index 000000000..3bfa3fe31 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/source.html @@ -0,0 +1,2513 @@ + + + + + The sharing economy is a lie: Uber, Ayn Rand and the truth about tech + and libertarians - Salon.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          + +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +

          + The sharing economy is a lie: Uber, Ayn Rand and the truth about tech and libertarians

          + +

          + Disruptive companies talk a good game about sharing. Uber's really just an under-regulated company making riches

          + + +
          + +
          +

          Topics: uber, + libertarians, Sydney, + Editor's Picks, sharing economy, + +

          +
          The sharing economy is a lie: Uber, Ayn Rand and the truth about tech and libertarians + Ayn Rand, Rand Paul (Credit: AP/Manuel Balce Ceneta/Photo montage by Salon) +
          +
          +

          Horror stories about the increasingly unpopular taxi service Uber have + been commonplace in recent months, but there is still much to be learned + from its handling of the recent hostage drama in downtown Sydney, Australia. + We’re told that we reveal our true character in moments of crisis, and + apparently that’s as true for companies as it is for individuals.

          +
          +
          +

          A number of experts have challenged the idea that the horrific explosion + of violence in a Sydney café was “terrorism,” since the attacker was mentally + unbalanced and acted alone. But, terror or not, the ordeal was certainly + terrifying. Amid the chaos and uncertainty, the city believed itself to + be under a coordinated and deadly attack.

          +

          Uber had an interesting, if predictable, response to the panic and mayhem: + It raised prices. A lot.

          +

          In case you missed the story, the facts are these: Someone named Man Haron + Monis, who was considered mentally unstable and had been investigated for + murdering his ex-wife, seized hostages in a café that was located in Sydney’s + Central Business District or “CBD.” In the process he put up an Islamic + flag – “igniting,” as Reuters reported, + “fears of a jihadist attack in the heart of the country’s biggest city.”

          +

          In the midst of the fear, Uber stepped in and tweeted this announcement:  + “We are all concerned with events in CBD. Fares have increased to encourage + more drivers to come online & pick up passengers in the area.” +

          +

          As Mashable reports, + the company announced that it would charge a minimum of $100 Australian + to take passengers from the area immediately surrounding the ongoing crisis, + and prices increased by as much as four times the standard amount. A firestorm + of criticism quickly erupted – “@Uber_Sydney stop + being assholes,” one Twitter response began – and Uber soon found itself + offering free rides out of the troubled area instead.

          +

          What can we learn from this incident? Let’s start by parsing that tweet:

          +

          “We are all concerned with events in CBD …” +

          +

          That opener suggests that Uber, as part of a community under siege, is + preparing to respond in a civic manner. +

          +

          “… Fares have increased to encourage more drivers to come online & pick up passengers in the area.” +

          +
          +
          +
          +
          +
          +

          But, despite the expression of shared concern, there is no sense of civitas to + be found in the statement that follows. There is only a transaction, executed + at what the corporation believes to be market value. Lesson #1 about Uber + is, therefore, that in its view there is no heroism, only self-interest. + This is Ayn Rand’s brutal, irrational and primitive philosophy in its purest + form: altruism is evil, and self-interest is the only true heroism. +

          +

          There was once a time when we might have read of “hero cabdrivers” or + “hero bus drivers” placing themselves in harm’s way to rescue their fellow + citizens. For its part, Uber might have suggested that it would use its + network of drivers and its scheduling software to recruit volunteer drivers + for a rescue mission. +

          +

          Instead, we are told that Uber’s pricing surge was its expression + of concern. Uber’s way to address a human crisis is apparently by letting + the market govern human behavior, as if there were (in libertarian economist + Tyler Cowen’s phrase) “markets in everything” – including the lives of + a city’s beleaguered citizens (and its Uber drivers). +

          +

          Where would this kind of market-driven practice leave poor or middle-income + citizens in a time of crisis? If they can’t afford the “surged” price, + apparently it would leave them squarely in the line of fire. And come to + think of it, why would Uber drivers value their lives so cheaply, unless + they’re underpaid? +

          +

          One of the lessons of Sydney is this: Uber’s philosophy, whether consciously + expressed or not, is that life belongs to the highest bidder – and therefore, + by implication, the highest bidder’s life has the greatest value. Society, + on the other hand, may choose to believe that every life has equal value + – or that lifesaving services should be available at affordable prices. +

          +

          If nothing else, the Sydney experience should prove once and for all that + there is no such thing as “the sharing economy.” Uber is a taxi company, + albeit an under-regulated one, and nothing more. It’s certainly not a “ride + sharing” service, where someone who happens to be going in the same direction + is willing to take along an extra passenger and split gas costs. A ride-sharing + service wouldn’t find itself “increasing fares to encourage more drivers” + to come into Sydney’s terrorized Central Business District. +

          +

          A “sharing economy,” by definition, is lateral in structure. It is a peer-to-peer + economy. But Uber, as its name suggests, is hierarchical in structure. + It monitors and controls its drivers, demanding that they purchase services + from it while guiding their movements and determining their level of earnings. + And its pricing mechanisms impose unpredictable costs on its customers, + extracting greater amounts whenever the data suggests customers can be + compelled to pay them. +

          +

          This is a top-down economy, not a “shared” one. +

          +

          A number of Uber’s fans and supporters defended the company on the grounds + that its “surge prices,” including those seen during the Sydney crisis, + are determined by an algorithm. But an algorithm can be an ideological + statement, and is always a cultural artifact. As human creations, algorithms + reflect their creators. +

          +

          Uber’s tweet during the Sydney crisis made it sound as if human intervention, + rather than algorithmic processes, caused prices to soar that day. But + it doesn’t really matter if that surge was manually or algorithmically + driven. Either way the prices were Uber’s doing – and its moral choice. +

          +

          Uber has been strenuously defending its surge pricing in the wake of accusations + (apparently justified) + that the company enjoyed windfall profits during Hurricane Sandy. It has + now promised the state of New York that it will cap its surge prices (at + three times the highest rate on two non-emergency days). But if Uber has + its way, it will soon enjoy a monopolistic stranglehold on car service + rates in most major markets. And it has demonstrated its willingness to + ignore rules and regulations. That means predictable and affordable + taxi fares could become a thing of the past. +

          +

          In practice, surge pricing could become a new, privatized form of taxation + on middle-class taxi customers. +

          +

          Even without surge pricing, Uber and its supporters are hiding its full + costs. When middle-class workers are underpaid or deprived of benefits + and full working rights, as Uber’s reportedly are, + the entire middle-class economy suffers. Overall wages and benefits are + suppressed for the majority, while the wealthy few are made even richer. + The invisible costs of ventures like Uber are extracted over time, far + surpassing whatever short-term savings they may occasionally offer. +

          +

          Like Walmart, Uber underpays its employees – many of its drivers are employees, + in everything but name – and then drains the social safety net to make + up the difference. While Uber preaches libertarianism, it practices a form + of corporate welfare. It’s reportedly celebrating Obamacare, + for example, since the Affordable Care Act allows it to avoid providing + health insurance to its workforce. But the ACA’s subsidies, together with + Uber’s often woefully insufficient wages, mean that the rest of us are + paying its tab instead. And the lack of income security among Uber’s drivers + creates another social cost for Americans – in lost tax revenue, and possibly + in increased use of social services. +

          +

          The company’s war on regulation will also carry a social price. Uber and + its supporters don’t seem to understand that regulations exist + for a reason. It’s true that nobody likes excessive bureaucracy, but not + all regulations are excessive or onerous. And when they are, it’s a flaw + in execution rather than principle. +

          +

          Regulations were created because they serve a social purpose, ensuring + the free and fair exchange of services and resources among all segments + of society. Some services, such as transportation, are of such importance + that the public has a vested interest in ensuring they will be readily + available at reasonably affordable prices. That’s not unreasonable for + taxi services, especially given the fact that they profit from publicly + maintained roads and bridges. +

          +

          Uber has presented itself as a modernized, efficient alternative to government + oversight. But it’s an evasion of regulation, not its replacement. As + Alexis Madrigalreports, Uber has deliberately ignored city regulators + and used customer demand to force its model of inadequate self-governance + (my conclusion, not his) onto one city after another. +

          +

          Uber presented itself as a refreshing alternative to the over-bureaucratized + world of urban transportation. But that’s a false choice. We can streamline + sclerotic city regulators, upgrade taxi fleets and even provide users with + fancy apps that make it easier to call a cab. The company’s binary presentation + – us, or City Hall – frames the debate in artificial terms. +

          +

          Uber claims that its driver rating system is a more efficient way to monitor + drivers, but that’s an entirely unproven assumption. While taxi drivers + have been known to misbehave, the worldwide litany of complaints against + Uber drivers – for everything from dirty cars and spider bites to + assault with a hammer, fondling and + rape– suggest that Uber’s system may not work as well as old-fashioned + regulation. It’s certainly not noticeably superior. +

          +

          In fact, prosecutors in San Francisco and Los Angeles say + Uber has been lying to its customers about the level and quality of its + background checks. The company now promises it will do a better job at + screening drivers. But it won’t tell us what + measures its taking to improve its safety record, and it’s fighting the kind of driver scrutiny that + taxicab companies have been required to enforce for many decades. +

          +

          Many reports suggest that beleaguered drivers don’t feel much better about + the company than victimized passengers do. They tell horror stories about + the company’s hiring and management practices. Uber unilaterally slashes drivers’ rates, + while claiming they don’t need to unionize. (The Teamsters disagree.) +

          +

          The company also pushes sketchy, substandard loans onto + its drivers – but hey, what could go wrong? +

          +

          Uber has many libertarian defenders. And yet, it deceives the press and + threatens to spy on journalists, lies to its own employees, + keeps its practices a secret and routinely invades the privacy of civilians + – sometimes merely for entertainment. (It has a tool, with the Orwellian + name the “God View,” + that it can use for monitoring customers’ personal movements.) +

          +

          Aren’t those the kinds of things libertarians say they hate about government? +

          +

          This isn’t a “gotcha” exercise. It matters. Uber is the poster child for + the pro-privatization, anti-regulatory ideology that ascribes magical powers + to technology and the private sector. It is deeply a political entity, + from its Nietzschean name to its recent hiring of White House veteran David + Plouffe. Uber is built around a relatively simple app (which relies on + government-created technology), but it’s not really a tech company. Above + all else Uber is an ideological campaign, a neoliberal project whose real + products are deregulation and the dismantling of the social contract. +

          +

          Or maybe, as that tweeter in Sydney suggested, they’re just assholes. +

          +

          Either way, it’s important that Uber’s worldview and business practices + not be allowed to “disrupt” our economy or our social fabric. People who + work hard deserve to make a decent living. Society at large deserves access + to safe and affordable transportation. And government, as the collective + expression of a democratic society, has a role to play in protecting its + citizens. +

          +

          And then there’s the matter of our collective psyche. In her book “A Paradise + Built in Hell: The Extraordinary Communities that Arise in Disaster,” Rebecca + Solnit wrote of the purpose, meaning and deep satisfaction people find + when they pull together to help one another in the face of adversity.  + But in the world Uber seeks to create, those surges of the spirit would + be replaced by surge pricing. +

          +

          You don’t need a “God view” to see what happens next. When heroism is + reduced to a transaction, the soul of a society is sold cheap. +

          +
          + + +
          + +
          +
          + +
          + + +
          +

          More Related Stories

          + +
          +
          + + + +
          +
          +
          +

          Featured Slide Shows

          + +
          +
          +
            +
          • Share on Twitter
          • +
          • Share on Facebook
          • +
          • 1 +of 5 + +
          • +
          • Close
          • +
          • Fullscreen
          • +
          • Thumbnails
          • +
          +
            +
          • + +
            + + +
              + + +
            +
            +
            +

            “One girl can be silenced, but a nation of girls telling their stories becomes free” slideshow

            + +

            A photo contest winner

            +
            +
          • +
          • + +
            + + +
              + + +
            +
            +
            +

            “One girl can be silenced, but a nation of girls telling their stories becomes free” slideshow

            + +

            A photo contest winner

            +
            +
          • +
          • + +
            + + +
              + + +
            +
            +
            +

            “One girl can be silenced, but a nation of girls telling their stories becomes free” slideshow

            + +

            Superhero Project

            +

            “In life many people have two faces. You think you know someone, but they + are not always what they seem. You can’t always trust people. My hero would + be someone who is trustworthy, honest and always has their heart in the + right place.” Ateya Grade 9 @ Mirman Hayati School (Herat, Afghanistan)

            +
            +
          • +
          • + +
            + + +
              + + +
            +
            +
            +

            “One girl can be silenced, but a nation of girls telling their stories becomes free” slideshow

            + +

            Superhero Project

            +

            “I pray every night before I go to bed for a hero or an angel capable + of helping defenseless children and bringing them happiness. I reach up + into the sky hoping to touch a spirit who can make my wish come true.” + Fatimah Grade 9 @ Majoba Hervey (Herat, Afghanistan)

            +
            +
          • +
          • +

            Recent Slide Shows

            + + +
          • +
          +
          +
          +
          +
            +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          +
          +
          + +
          + +
          +

          Comments

          +
          + +

          Loading Comments...

          +
          +
          + +
          +
          + +
          + +
          +
          +
          +
          + +
          + + + + + + + +
          +
          + +
          + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-images.json new file mode 100644 index 000000000..469dde59f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "https:\/\/d34hb2g9mvfppu.cloudfront.net\/m\/images\/cache\/images\/2016\/02\/29\/apcnews2012raspberry_pi_logo_mainimage8_jpg8_322_27630a8388eb_lg.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-metadata.json new file mode 100644 index 000000000..b024aa854 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "The Raspberry Pi Foundation started by a handful of volunteers in 2012 when they released the original Raspberry Pi 256MB Model B without knowing what to expect. In a short four-year period they have grown to over sixty full-time employees and ha...", + "Image": "https:\/\/d34hb2g9mvfppu.cloudfront.net\/m\/images\/cache\/images\/2016\/02\/29\/apcnews2012raspberry_pi_logo_mainimage8_jpg8_322_27630a8388eb_lg.jpg", + "Title": "Raspberry Pi 3 - The credit card sized PC that cost only $35 - All-time bestselling computer in UK", + "SiteName": "SIMPLYFOUND.COM | BY: JOE WEE" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected.html new file mode 100644 index 000000000..55b74a98c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected.html @@ -0,0 +1,18 @@ +
          +

          The Raspberry Pi Foundation started by a handful of volunteers in 2012 when they released the original Raspberry Pi 256MB Model B without knowing what to expect.  In a short four-year period they have grown to over sixty full-time employees and have shipped over eight million units to-date.  Raspberry Pi has achieved new heights by being shipped to the International Space Station for research and by being an affordable computing platforms used by teachers throughout the world.  "It has become the all-time best-selling computer in the UK".

          + + +

          Raspberry Pi 3 - A credit card sized PC that only costs $35 - Image: Raspberry Pi Foundation

          + +

          Raspberry Pi Foundation is charity organization that pushes for a digital revolution with a mission to inspire kids to learn by creating computer-powered objects.  The foundation also helps teachers learn computing  skills through free training and readily available tutorials & example code for creating cool things such as music.

          + + +

          Raspberry Pi in educations - Image: Raspberry Pi Foundation

          + +

          In celebration of their 4th year anniversary, the foundation has released Raspberry Pi 3 with the same price tag of $35 USD.  The 3rd revision features a 1.2GHz 64-bit quad-core ARM CPU with integrated Bluetooth 4.1 and 802.11n wireless LAN chipsets.  The ARM Cortex-A53 CPU along with other architectural enhancements making it the fastest Raspberry Pi to-date.  The 3rd revision is reportedly about 50-60% times faster than its predecessor Raspberry Pi 2 and about 10 times faster then the original Raspberry PI.

          + + +

          Raspberry Pi - Various Usage

          + +

          Raspberry Pi 3 is now available via many online resellers.  At this time, you should use a recent 32-bit NOOBS or Raspbian image from their downloads page with a promise of a switch to a 64-bit version only if further investigation proves that there is indeed some value in moving to 64-bit mode.

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/source.html new file mode 100644 index 000000000..f2e26ac95 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/source.html @@ -0,0 +1,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Raspberry Pi 3 - The credit card sized PC that cost only $35 - All-time bestselling computer in UK - SimplyFound + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          +
          + + +
          +
          + +
          +
          +

          + Raspberry Pi 3 - The credit card sized PC that cost only $35 - All-time bestselling computer in UK +

          + + +
          +
          +
          +

          The Raspberry Pi Foundation started by a handful of volunteers in 2012 when they released the original Raspberry Pi 256MB Model B without knowing what to expect.  In a short four-year period they have grown to over sixty full-time employees and have shipped over eight million units to-date.  Raspberry Pi has achieved new heights by being shipped to the International Space Station for research and by being an affordable computing platforms used by teachers throughout the world.  "It has become the all-time best-selling computer in the UK".

          +
          +
          +
          +
          +
          +
          +
          +
          Raspberry Pi 3 - A credit card sized PC that only costs $35 - Image: Raspberry Pi Foundation
          +
          +
          +

          Raspberry Pi Foundation is charity organization that pushes for a digital revolution with a mission to inspire kids to learn by creating computer-powered objects.  The foundation also helps teachers learn computing  skills through free training and readily available tutorials & example code for creating cool things such as music.

          +
          +
          +
          +
          +
          +
          +
          +
          Raspberry Pi in educations - Image: Raspberry Pi Foundation
          +
          +
          +

          In celebration of their 4th year anniversary, the foundation has released Raspberry Pi 3 with the same price tag of $35 USD.  The 3rd revision features a 1.2GHz 64-bit quad-core ARM CPU with integrated Bluetooth 4.1 and 802.11n wireless LAN chipsets.  The ARM Cortex-A53 CPU along with other architectural enhancements making it the fastest Raspberry Pi to-date.  The 3rd revision is reportedly about 50-60% times faster than its predecessor Raspberry Pi 2 and about 10 times faster then the original Raspberry PI.

          +
          +
          +
          + +
          +
          Raspberry Pi - Various Usage
          +
          +
          +

          Raspberry Pi 3 is now available via many online resellers.  At this time, you should use a recent 32-bit NOOBS or Raspbian image from their downloads page with a promise of a switch to a 64-bit version only if further investigation proves that there is indeed some value in moving to 64-bit mode.

          +
          +
          +
          +
          137
          + 1 + Share + +
          +
          +
          + + + +
          +
          + +
          +
          +
          +
          + + + + + + + + + + +
          +
          +
          + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-metadata.json new file mode 100644 index 000000000..7a80654bf --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Share buttons removal test", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected.html new file mode 100644 index 000000000..6d135be2c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected.html @@ -0,0 +1,33 @@ +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          + +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/source.html new file mode 100644 index 000000000..ee9d660c5 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/source.html @@ -0,0 +1,54 @@ + + + + Share buttons removal test + + +
          +

          Lorem ipsum dolor

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          + +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-metadata.json new file mode 100644 index 000000000..47039a9a9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "Style tags removal", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected.html new file mode 100644 index 000000000..d3a8806b4 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected.html @@ -0,0 +1,18 @@ +
          +

          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          Foo

          +

          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/source.html new file mode 100644 index 000000000..687ca39be --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/source.html @@ -0,0 +1,42 @@ + + + + + Style tags removal + + + +
          +

          Lorem

          + +
          + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          + +

          Foo

          +
          + Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          +
          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-metadata.json new file mode 100644 index 000000000..321414f8b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "SVG parsing", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected.html new file mode 100644 index 000000000..1cc45591b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected.html @@ -0,0 +1,32 @@ +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/source.html new file mode 100644 index 000000000..e4fb905f1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/source.html @@ -0,0 +1,44 @@ + + + + SVG parsing + + +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          + + + + + + +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-images.json new file mode 100644 index 000000000..c2a1ea915 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/fakehost\/test\/..\/compass1.gif" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-metadata.json new file mode 100644 index 000000000..cdb8fc396 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "linux usability\n ...or, why do I bother. © 2002, 2003\n Jamie Zawinski", + "Image": null, + "Title": "linux video", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected.html new file mode 100644 index 000000000..77c083b21 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected.html @@ -0,0 +1,102 @@ +
          +

          + linux usability +

          ...or, why do I bother.


          © 2002, 2003 + Jamie Zawinski

          + + +
          + + +
          +

          In December 2002, I tried to install some software on my computer. The experience was, shall we say, less than pleasant. On many levels. I wrote about my experience, as I so often do.

          +

          Then in January, the jackasses over at Slashdot posted a link to it, calling it a "review" of Linux video software. I guess you could consider it a review, if you were to squint at it just right. But really what it is is a rant about how I had an evening stolen from me by crap software design. It is a flame about the pathetic state of Linux usability in general, and the handful of video players I tried out in particular. It makes no attempt to be balanced or objective or exhaustive. It is a description of my experience. Perhaps your experience was different. Good for you.

          +

          So of course that day I got hundreds of emails about it. Every Linux apologist in the world wanted to make sure I was fully informed of their opinion. The replies were roughly in the following groups:

          + +
          • "Right on! I had exactly the same experience! Thank you for putting it into words." (This was about 1/3 of the replies.) + +
          • +
          • "You're clearly an idiot, Linux is too sophisticated for you, you clearly are incapable of understanding anything, you should go back to kindergarten and/or use a Mac." (Oddly, all of these messages used the word `clearly' repeatedly.) + +
          • +
          • "If you don't like it, fix it yourself." + +
          • +
          • "Netscape sucks! XEmacs sucks! You suck! I never liked you anyway! And you swear too much!" + +
          • +
          • "How dare you criticize someone else's work! You got it for free! You should be on your knees thanking them for wasting your time!" + +
          • +
          • "While you have some valid complaints, I'm going to focus on this one inconsequential error you made in your characterization of one of the many roadblocks you encountered. You suck!" + +
          • +
          • "It's your fault for using Red Hat! You should be using Debian/Mandrake/Gentoo instead!" + +
          • +
          • "Red Hat 7.2 is totally obsolete! It's almost 14 months old! What were you expecting!"
          • +
          +

          While I am flattered that so many logorrheic Linux fanboys are sufficiently interested in my opinions and experiences to share their deeply heartfelt views with me, you can all rest assured that:

          + +
            • I've heard it before; and
            • +
            • I didn't care the first time.
            • +

          So please. Don't bother sending me any more mail about this. It's a near certainty that I will just delete it unread, so you might as well not waste your time. Feel free to call me names on your own web page if you feel the need to get it out of your system. But kindly stay out of my inbox. + + +

          +
          + +

          + that said... +

          +

          I understand that one can play videos on one's computer. I understand these videos come in many different formats. Every now and then I try to figure out what the Done Thing is, as far as playing movies on one's Linux machine.

          + +

          I finally found RPMs of mplayer that would consent to install themselves on a Red Hat 7.2 machine, and actually got it to play some videos. Amazing. But it's a total pain in the ass to use due to rampant "themeing." Why do people do this? They map this stupid shaped window with no titlebar (oh, sorry, your choice of a dozen stupidly-shaped windows without titlebars) all of which use fonts that are way too small to read. But, here's the best part, there's no way to raise the window to the top. So if another window ever gets on top of it, well, sorry, you're out of luck. And half of the themes always map the window at the very bottom of the + screen -- conveniently under my panel where I can't reach it.

          +

          Resizing the window changes the aspect ratio of the video! Yeah, I'm sure someone has ever wanted that.

          +

          It moves the mouse to the upper left corner of every dialog box it creates! Which is great, because that means that when it gets into this cute little state of popping up a blank dialog that says "Error" five times a second, you can't even move the mouse over to another window to kill the program, you have to log in from another machine.

          +

          Fucking morons.

          +

          So I gave up on that, and tried to install gstreamer. Get this. Their propose ``solution'' for distributing binaries on Red Hat systems? They point you at an RPM that installs apt, the Debian package system! Yeah, that's a good idea, I want to struggle with two competing packaging systems on my machine just to install a single app. Well, I found some +RPMs for Red Hat 7.2, but apparently they expect you to have already rectally inserted Gnome2 on that 7.2 system first. Uh, no. I've seen the horror of Red Hat 8.0, and there's no fucking way I'm putting Gnome2 on any more of my machines for at least another six months, maybe a year.

          +

          Ok, no gstreamer. Let's try Xine. I found +RPMs, and it sucks about the same as mplayer, and in about the same ways, though slightly less bad: it doesn't screw the aspect ratio when you resize the window; and at least its stupidly-shaped window is always forced to be on top. I don't like that either, but it's better than never being on top. It took me ten minutes to figure out where the "Open File" dialog was. It's on the button labeled "://" whose tooltip says "MRL Browser". Then you get to select file names from an oh-so-cute window that I guess is supposed to look like a tty, or maybe an LCD screen. It conveniently centers the file names in the list, and truncates them at about 30 characters. The scrollbar is also composed of "characters": it's an underscore.

          +

          What are these fucktards thinking???

          +

          Then I checked out Ogle again, and it hasn't been updated since the last time I tried, six months ago. It's a pretty decent DVD player, if you have the physical DVD. It does on-screen menus, and you can click on them with the mouse. But I don't need a DVD player (I have a hardware DVD player that works just fine.) It can't, as far as I can tell, play anything but actual discs.

          +

          Oh, and even though I have libdvdcss installed (as evidenced by the fact that Ogle actually works) Xine won't play the same disc that Ogle will play. It seems to be claiming that the CSS stuff isn't installed, which it clearly is.

          +

          An idiocy that all of these programs have in common is that, in addition to opening a window for the movie, and a window for the control panel, they also spray a constant spatter of curses crud on the terminal they were started from. I imagine at some point, there was some user who said, ``this program is pretty nice, but you know what it's missing? It's missing a lot of pointless chatter about what plugins and fonts have been loaded!''

          + +
          And here's the Random Commentary section: + +
          Makali wrote: +
            + Whenever a programmer thinks, "Hey, skins, what a cool idea", their + computer's speakers should create some sort of cock-shaped soundwave + and plunge it repeatedly through their skulls. +

          I am fully in support of this proposed audio-cock technology.

          +

          Various people wrote:

          +
            + You shouldn't even bother compiling the GUI into mplayer! +

          So I should solve the problem of ``crappy GUI'' by replacing it with ``no GUI at all?'' I should use the program only from the command line, or by memorizing magic keystrokes? Awesome idea.

          +

          Various other people wrote:

          +
            + You didn't try vlc! +

          True, I hadn't. Now I have. It has an overly-complicated UI, (the Preferences panel is a festival of overkill) but at least it uses standard menus and buttons, so it doesn't make you want to claw your eyes out immediately. But, it can only play a miniscule number of video formats, so it's mostly useless. *plonk*

          +

          Someone else wrote:

          +
            + Have you considered changing distributions? +

          Yes, every single time I try something like this, I very seriously consider getting a Mac.

          +

          Really the only thing that's stopping me is that I fear the Emacs situation.

          +

          (By which I mean, ``Lack of a usable version thereof.'' No, running RMSmacs inside a terminal window doesn't qualify. Nor does running an X server on the Mac: if I were going to switch, why in the world would I continue inflicting the X Windows Disaster on myself? Wouldn't getting away from that be the whole + point?)

          + +
            (I understand there is an almost-functional Aqua version of + RMSmacs now. I'll probably check it out at some point, but the problem with me switching from XEmacs to RMSmacs is that it would probably result in another + Slashdork post, meaning I'd wake up to another 150+ poorly spelled flames in my inbox... I'm hoping for a Aquafied XEmacs, but I know that's not likely to happen any time soon.) +

          By the way, the suggestion to switch Linux distrubutions in order to get a single app to work might sound absurd at first. And that's because it is. But I've been saturated with Unix-peanut-gallery effluvia for so long that it no longer even surprises me when every + question -- no matter how + simple -- results in someone suggesting that you either A) patch your kernel or B) change distros. It's inevitable and inescapable, like Hitler.

          +
          + +
          +

          [ up ]

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/source.html new file mode 100644 index 000000000..0e20275b6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/source.html @@ -0,0 +1,167 @@ + + + + + linux video + + + + + + +

          + linux usability +
          ...or, why do I bother.

          © 2002, 2003 + Jamie Zawinski

          + +


          +
          + + + + + + + +
          +

          In December 2002, I tried to install some software on my computer. The experience was, shall we say, less than pleasant. On many levels. I wrote about my experience, as I so often do.

          +

          Then in January, the jackasses over at Slashdot posted a link to it, calling it a "review" of Linux video software. I guess you could consider it a review, if you were to squint at it just right. But really what it is is a rant about how I had an evening stolen from me by crap software design. It is a flame about the pathetic state of Linux usability in general, and the handful of video players I tried out in particular. It makes no attempt to be balanced or objective or exhaustive. It is a description of my experience. Perhaps your experience was different. Good for you.

          +

          So of course that day I got hundreds of emails about it. Every Linux apologist in the world wanted to make sure I was fully informed of their opinion. The replies were roughly in the following groups:

          +

          +
            +
          • "Right on! I had exactly the same experience! Thank you for putting it into words." (This was about 1/3 of the replies.) +

            +
          • +
          • "You're clearly an idiot, Linux is too sophisticated for you, you clearly are incapable of understanding anything, you should go back to kindergarten and/or use a Mac." (Oddly, all of these messages used the word `clearly' repeatedly.) +

            +
          • +
          • "If you don't like it, fix it yourself." +

            +
          • +
          • "Netscape sucks! XEmacs sucks! You suck! I never liked you anyway! And you swear too much!" +

            +
          • +
          • "How dare you criticize someone else's work! You got it for free! You should be on your knees thanking them for wasting your time!" +

            +
          • +
          • "While you have some valid complaints, I'm going to focus on this one inconsequential error you made in your characterization of one of the many roadblocks you encountered. You suck!" +

            +
          • +
          • "It's your fault for using Red Hat! You should be using Debian/Mandrake/Gentoo instead!" +

            +
          • +
          • "Red Hat 7.2 is totally obsolete! It's almost 14 months old! What were you expecting!"
          • +
          +
          +

          While I am flattered that so many logorrheic Linux fanboys are sufficiently interested in my opinions and experiences to share their deeply heartfelt views with me, you can all rest assured that:

          +

          +
            +
              +
            • I've heard it before; and
            • +
            • I didn't care the first time.
            • +
            +
          +

          So please. Don't bother sending me any more mail about this. It's a near certainty that I will just delete it unread, so you might as well not waste your time. Feel free to call me names on your own web page if you feel the need to get it out of your system. But kindly stay out of my inbox. + + +

          +
          +
          +


          +

          + that said... +

          +

          I understand that one can play videos on one's computer. I understand these videos come in many different formats. Every now and then I try to figure out what the Done Thing is, as far as playing movies on one's Linux machine.

          +

          + +

          I finally found RPMs of mplayer that would consent to install themselves on a Red Hat 7.2 machine, and actually got it to play some videos. Amazing. But it's a total pain in the ass to use due to rampant "themeing." Why do people do this? They map this stupid shaped window with no titlebar (oh, sorry, your choice of a dozen stupidly-shaped windows without titlebars) all of which use fonts that are way too small to read. But, here's the best part, there's no way to raise the window to the top. So if another window ever gets on top of it, well, sorry, you're out of luck. And half of the themes always map the window at the very bottom of the + screen -- conveniently under my panel where I can't reach it.

          +

          Resizing the window changes the aspect ratio of the video! Yeah, I'm sure someone has ever wanted that.

          +

          It moves the mouse to the upper left corner of every dialog box it creates! Which is great, because that means that when it gets into this cute little state of popping up a blank dialog that says "Error" five times a second, you can't even move the mouse over to another window to kill the program, you have to log in from another machine.

          +

          Fucking morons.

          +

          So I gave up on that, and tried to install gstreamer. Get this. Their propose ``solution'' for distributing binaries on Red Hat systems? They point you at an RPM that installs apt, the Debian package system! Yeah, that's a good idea, I want to struggle with two competing packaging systems on my machine just to install a single app. Well, I found some +RPMs for Red Hat 7.2, but apparently they expect you to have already rectally inserted Gnome2 on that 7.2 system first. Uh, no. I've seen the horror of Red Hat 8.0, and there's no fucking way I'm putting Gnome2 on any more of my machines for at least another six months, maybe a year.

          +

          Ok, no gstreamer. Let's try Xine. I found +RPMs, and it sucks about the same as mplayer, and in about the same ways, though slightly less bad: it doesn't screw the aspect ratio when you resize the window; and at least its stupidly-shaped window is always forced to be on top. I don't like that either, but it's better than never being on top. It took me ten minutes to figure out where the "Open File" dialog was. It's on the button labeled "://" whose tooltip says "MRL Browser". Then you get to select file names from an oh-so-cute window that I guess is supposed to look like a tty, or maybe an LCD screen. It conveniently centers the file names in the list, and truncates them at about 30 characters. The scrollbar is also composed of "characters": it's an underscore.

          +

          What are these fucktards thinking???

          +

          Then I checked out Ogle again, and it hasn't been updated since the last time I tried, six months ago. It's a pretty decent DVD player, if you have the physical DVD. It does on-screen menus, and you can click on them with the mouse. But I don't need a DVD player (I have a hardware DVD player that works just fine.) It can't, as far as I can tell, play anything but actual discs.

          +

          Oh, and even though I have libdvdcss installed (as evidenced by the fact that Ogle actually works) Xine won't play the same disc that Ogle will play. It seems to be claiming that the CSS stuff isn't installed, which it clearly is.

          +

          An idiocy that all of these programs have in common is that, in addition to opening a window for the movie, and a window for the control panel, they also spray a constant spatter of curses crud on the terminal they were started from. I imagine at some point, there was some user who said, ``this program is pretty nice, but you know what it's missing? It's missing a lot of pointless chatter about what plugins and fonts have been loaded!''

          +

          +
          And here's the Random Commentary section: +

          +
          Makali wrote: + +

          I am fully in support of this proposed audio-cock technology.

          +

          Various people wrote:

          + +

          So I should solve the problem of ``crappy GUI'' by replacing it with ``no GUI at all?'' I should use the program only from the command line, or by memorizing magic keystrokes? Awesome idea.

          +

          Various other people wrote:

          + +

          True, I hadn't. Now I have. It has an overly-complicated UI, (the Preferences panel is a festival of overkill) but at least it uses standard menus and buttons, so it doesn't make you want to claw your eyes out immediately. But, it can only play a miniscule number of video formats, so it's mostly useless. *plonk*

          +

          Someone else wrote:

          + +

          Yes, every single time I try something like this, I very seriously consider getting a Mac.

          +

          Really the only thing that's stopping me is that I fear the Emacs situation.

          +

          (By which I mean, ``Lack of a usable version thereof.'' No, running RMSmacs inside a terminal window doesn't qualify. Nor does running an X server on the Mac: if I were going to switch, why in the world would I continue inflicting the X Windows Disaster on myself? Wouldn't getting away from that be the whole + point?)

          +

          + +

          By the way, the suggestion to switch Linux distrubutions in order to get a single app to work might sound absurd at first. And that's because it is. But I've been saturated with Unix-peanut-gallery effluvia for so long that it no longer even surprises me when every + question -- no matter how + simple -- results in someone suggesting that you either A) patch your kernel or B) change distros. It's inevitable and inescapable, like Hitler.

          +
          +

          +
          +

          +

          [ up ]

          + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-images.json new file mode 100644 index 000000000..c52fd8c66 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/www.telegraph.co.uk\/content\/dam\/news\/2017\/11\/16\/TELEMMGLPICT000146889449-xlarge_trans_NvBQzQNjv4BqySoB6nTCgtc7U4LQ_FPO4hKi2sT3vi7ux2-RDZwC4QA.jpeg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-metadata.json new file mode 100644 index 000000000..be19af16d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Our Foreign Staff \n \n\n16 November 2017 • 2:15pm", + "Direction": null, + "Excerpt": "Zimbabwe President Robert Mugabe, his wife Grace and two key figures from her G40 political faction are under house arrest at Mugabe's "Blue House" compound in Harare and are insisting the 93 year-old finishes his presidential term, a source said.", + "Image": "http:\/\/www.telegraph.co.uk\/content\/dam\/news\/2017\/11\/16\/TELEMMGLPICT000146889449-xlarge_trans_NvBQzQNjv4BqySoB6nTCgtc7U4LQ_FPO4hKi2sT3vi7ux2-RDZwC4QA.jpeg", + "Title": "Zimbabwe coup: Robert Mugabe and wife Grace 'insisting he finishes his term', as priest steps in to mediate", + "SiteName": "The Telegraph" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected.html new file mode 100644 index 000000000..23a2a74ed --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected.html @@ -0,0 +1,38 @@ +
          +
          +
          +

          Zimbabwe President Robert Mugabe, his wife Grace and two key figures from her G40 political faction are under house arrest at Mugabe's "Blue House" compound in Harare and are insisting the 93 year-old finishes his presidential term, a source said.

          +

          The G40 figures are cabinet ministers Jonathan Moyo and Saviour Kasukuwere, who fled to the compound after their homes were attacked by troops in Tuesday night's coup, the source, who said he had spoken to people inside the compound, told Reuters.

          +

          Mr Mugabe is resisting mediation by a Catholic priest to allow the former guerrilla a graceful exit after the military takeover.

          +

          The priest, Fidelis Mukonori, is acting as a middle-man between Mr Mugabe and the generals, who seized power in a targeted operation against "criminals" in his entourage, a senior political source told Reuters.

          +

          The source could not provide details of the talks, which appear to be aimed at a smooth and bloodless transition after the departure of Mr Mugabe, who has led Zimbabwe since independence in 1980.

          +

          Mr Mugabe, still seen by many Africans as a liberation hero, is reviled in the West as a despot whose disastrous handling of the economy and willingness to resort to violence to maintain power destroyed one of Africa's most promising states.

          +
          +
          +
          +
          +

          Zimbabwean intelligence reports seen by Reuters suggest that former security chief Emmerson Mnangagwa, who was ousted as vice-president this month, has been mapping out a post-Mugabe vision with the military and opposition for more than a year.

          +
          +
          +
          +
          +

          Fuelling speculation that Mnangagwa's plan might be rolling into action, opposition leader Morgan Tsvangirai, who has been receiving cancer treatment in Britain and South Africa, returned to Harare late on Wednesday, his spokesman said.

          +

          South Africa said Mr Mugabe had told President Jacob Zuma by telephone on Wednesday that he was confined to his home but was otherwise fine and the military said it was keeping him and his family, including wife Grace, safe.

          +
          +
          +
          +
          +
          +

          Despite the lingering admiration for Mr Mugabe, there is little public affection for 52-year-old Grace, a former government typist who started having an affair with Mr Mugabe in the early 1990s as his first wife, Sally, was dying of kidney disease.

          +

          Dubbed "DisGrace" or "Gucci Grace" on account of her reputed love of shopping, she enjoyed a meteoric rise through the ranks of Mugabe's ruling Zanu-PF in the last two years, culminating in Mnangagwa's removal a week ago - a move seen as clearing the way for her to succeed her husband.

          +
          +
          +
          +
          +

          In contrast to the high political drama unfolding behind closed doors, the streets of the capital remained calm, with people going about their daily business, albeit under the watch of soldiers on armoured vehicles at strategic locations.

          +
          +
          +
          +

          Whatever the final outcome, the events could signal a once-in-a-generation change for the former British colony, a regional breadbasket reduced to destitution by economic policies Mr Mugabe's critics have long blamed on him.

          +
          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/source.html new file mode 100644 index 000000000..3aad2a179 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/source.html @@ -0,0 +1,1821 @@ + + + + + + + + + + + + + + + + + + Zimbabwe coup: Robert Mugabe and wife Grace 'insisting he finishes his term', as priest steps in to mediate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          + +
          +
          + +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +

          Zimbabwe coup: Robert Mugabe and wife Grace 'insisting he finishes his term', as priest steps in to mediate

          + +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          + + + +
          +
          + + +
          Zimbabwe president Robert Mugabe with ZDF commander general Constantino Chiwenga at State House in an image the Harare Herald claims was taken on November 16 - the day after the military takeover +Credit: HARARE HERALD +
          +
          +
          +
          +
          +
          +
          + + +
          +
          +
          +
          +

          Zimbabwe President Robert Mugabe, his wife Grace and two key figures from her G40 political faction are under house arrest at Mugabe's "Blue House" compound in Harare and are insisting the 93 year-old finishes his presidential term, a source said.

          +

          The G40 figures are cabinet ministers Jonathan Moyo and Saviour Kasukuwere, who fled to the compound after their homes were attacked by troops in Tuesday night's coup, the source, who said he had spoken to people inside the compound, told Reuters.

          +

          Mr Mugabe is resisting mediation by a Catholic priest to allow the former guerrilla a graceful exit after the military takeover.

          +

          The priest, Fidelis Mukonori, is acting as a middle-man between Mr Mugabe and the generals, who seized power in a targeted operation against "criminals" in his entourage, a senior political source told Reuters.

          +

          The source could not provide details of the talks, which appear to be aimed at a smooth and bloodless transition after the departure of Mr Mugabe, who has led Zimbabwe since independence in 1980.

          +

          Mr Mugabe, still seen by many Africans as a liberation hero, is reviled in the West as a despot whose disastrous handling of the economy and willingness to resort to violence to maintain power destroyed one of Africa's most promising states.

          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          Zimbabwean opposition leader Morgan Tsvangirai, right, meets church leaders Bishop Trevor Manhanga, centre, and Father Fidelis Mukonori in 2006. Father Mukonori is said to be mediating in the current crisis +Credit:  DESMOND KWANDE/ AFP +
          +
          +
          +
          +
          +
          +
          +
          +

          Zimbabwean intelligence reports seen by Reuters suggest that former security chief Emmerson Mnangagwa, who was ousted as vice-president this month, has been mapping out a post-Mugabe vision with the military and opposition for more than a year.

          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Fuelling speculation that Mnangagwa's plan might be rolling into action, opposition leader Morgan Tsvangirai, who has been receiving cancer treatment in Britain and South Africa, returned to Harare late on Wednesday, his spokesman said.

          +

          South Africa said Mr Mugabe had told President Jacob Zuma by telephone on Wednesday that he was confined to his home but was otherwise fine and the military said it was keeping him and his family, including wife Grace, safe.

          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Despite the lingering admiration for Mr Mugabe, there is little public affection for 52-year-old Grace, a former government typist who started having an affair with Mr Mugabe in the early 1990s as his first wife, Sally, was dying of kidney disease.

          +

          Dubbed "DisGrace" or "Gucci Grace" on account of her reputed love of shopping, she enjoyed a meteoric rise through the ranks of Mugabe's ruling Zanu-PF in the last two years, culminating in Mnangagwa's removal a week ago - a move seen as clearing the way for her to succeed her husband.

          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          A man walks past an armoured personnel carrier parked on a Harare street on Thursday +Credit: STR/AFP  +
          +
          +
          +
          +
          +
          +
          +
          +

          In contrast to the high political drama unfolding behind closed doors, the streets of the capital remained calm, with people going about their daily business, albeit under the watch of soldiers on armoured vehicles at strategic locations.

          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Whatever the final outcome, the events could signal a once-in-a-generation change for the former British colony, a regional breadbasket reduced to destitution by economic policies Mr Mugabe's critics have long blamed on him.

          +
          +
          +
          +
          +
          + +
          + + + +
          +
          + + +
          + +
          + +
          +
          +
          + + + + + + + + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json new file mode 100644 index 000000000..07338d0a7 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lorem\n ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "Image": null, + "Title": "This is a long title with a colon: Hello there", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html new file mode 100644 index 000000000..e4fa77ae9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html @@ -0,0 +1,20 @@ +
          +

          + Lorem + ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +

          + Lorem + ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

          +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/source.html new file mode 100644 index 000000000..d91b65844 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/source.html @@ -0,0 +1,30 @@ + + + + + This is a long title with a colon: Hello there + + +
          +

          This is a long title with a colon: But the final text here is different

          +
          + Lorem + ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          +
          + Lorem + ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
          +
          + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-images.json new file mode 100644 index 000000000..fa74f0b81 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-images.json @@ -0,0 +1,6 @@ +[ + "http:\/\/ll-media.tmz.com\/2015\/02\/26\/0225-lupita-nyongo-getty-01-1200x630.jpg", + "http:\/\/ll-media.tmz.com\/2015\/02\/26\/0225-lupita-nyongo-getty-4.jpg", + "http:\/\/ll-media.tmz.com\/2013\/11\/20\/update-graphic-red-bar.jpg", + "http:\/\/ll-media.tmz.com\/2015\/02\/26\/0226-sub-london-hotel-swipe-tmz-11.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-metadata.json new file mode 100644 index 000000000..63d67965b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Lupita Nyong'o's now-famous Oscar dress -- adorned in pearls -- was stolen right out of her hotel room ... TMZ has learned. Law enforcement sources tell…", + "Image": "http:\/\/ll-media.tmz.com\/2015\/02\/26\/0225-lupita-nyongo-getty-01-1200x630.jpg", + "Title": "Lupita Nyong'o's $150K Pearl Oscar Dress -- STOLEN!!!", + "SiteName": "http://www.tmz.com" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected.html new file mode 100644 index 000000000..6eb48b97d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected.html @@ -0,0 +1,34 @@ +
          +

          +

          Lupita Nyong'o

          + +

          $150K Pearl Oscar Dress ... STOLEN!!!!

          + +

          +
          + 2/26/2015 7:11 AM PST BY TMZ STAFF +
          + +
          +

          EXCLUSIVE +

          +

          + 0225-lupita-nyongo-getty-01Lupita Nyong'o's now-famous Oscar dress + -- adorned in pearls -- was stolen right out of her hotel room ... TMZ + has learned.

          +

          Law enforcement sources tell TMZ ... the dress was taken out of Lupita's + room at The London West Hollywood. The dress is made of pearls ... 6,000 + white Akoya pearls. It's valued at $150,000.

          +

          Our sources say Lupita told cops it was taken from her room sometime between + 8 AM and 9 PM Wednesday ... while she was gone.  

          +

          We're told there is security footage that cops are looking at that could + catch the culprit right in the act. 

          +

          + update_graphic_red_bar12:00 PM PT -- Sheriff's deputies were at The London Thursday + morning.  We know they were in the manager's office and we're told + they have looked at security footage to determine if they can ID the culprit.

          +

          + 0226-SUB-london-hotel-swipe-tmz-02

          +
          + +
          \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/source.html new file mode 100644 index 000000000..c2b19f0e0 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/source.html @@ -0,0 +1,1528 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Lupita Nyong'o's $150K Pearl Oscar Dress -- STOLEN!!! | TMZ.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + +
          + +
          +
          + + + + + + + + + + + + +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +TMZ + +
          +
          +
          +

          Our TV Shows

          + +
          +
          + +
          +
          +
          + + + +
          + +
          +
          + +
          + +
          +
            +
            + +
            +
            +
            + +
            + +
            +
              +
              + +
              +
              +
              +
              + + +
              +

              Got a Tip?

              + +

              Call TMZ at (888) 847-9869 or Click Here + +

              +
              + +
              +
              +
              +
              + + + + + + + + + + + +
              + + +
              + +
              +
              +
              +

              Lupita Nyong'o

              + +

              $150K Pearl Oscar Dress ... STOLEN!!!!

              + +
              +
              + 2/26/2015 7:11 AM PST BY TMZ STAFF +
              + +
              +
              EXCLUSIVE +
              +

              + 0225-lupita-nyongo-getty-01Lupita Nyong'o's now-famous Oscar dress + -- adorned in pearls -- was stolen right out of her hotel room ... TMZ + has learned.

              +

              Law enforcement sources tell TMZ ... the dress was taken out of Lupita's + room at The London West Hollywood. The dress is made of pearls ... 6,000 + white Akoya pearls. It's valued at $150,000.

              +

              Our sources say Lupita told cops it was taken from her room sometime between + 8 AM and 9 PM Wednesday ... while she was gone.  

              +

              We're told there is security footage that cops are looking at that could + catch the culprit right in the act. 

              +

              + update_graphic_red_bar12:00 PM PT -- Sheriff's deputies were at The London Thursday + morning.  We know they were in the manager's office and we're told + they have looked at security footage to determine if they can ID the culprit.

              +

              + 0226-SUB-london-hotel-swipe-tmz-02 +

              + + +
              + +
              + + + + +
              +
              +
              + + + + +
              + + +
              + +
              + +
              + +
              + + + + + + +
              +

              Around The Web

              + + + +
              + +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-images.json new file mode 100644 index 000000000..bce09c696 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/assets.tumblr.com\/images\/og\/fb_landscape_share.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-metadata.json new file mode 100644 index 000000000..225236c98 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "+ Added Granite, Andesite, and Diorite stone blocks, with smooth versions\n+ Added Slime Block\n+ Added Iron Trapdoor\n+ Added Prismarine and Sea Lantern blocks\n+ Added the Ocean Monument\n+ Added Red...", + "Image": "http:\/\/assets.tumblr.com\/images\/og\/fb_landscape_share.png", + "Title": "Minecraft 1.8 - The Bountiful Update", + "SiteName": "Minecraft Update News" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected.html new file mode 100644 index 000000000..56df59658 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected.html @@ -0,0 +1,11 @@ +
              +
              + + +
              +

              Minecraft 1.8 - The Bountiful Update

              +

              + Added Granite, Andesite, and Diorite stone blocks, with smooth versions

              + Added Slime Block

              + Added Iron Trapdoor

              + Added Prismarine and Sea Lantern blocks

              + Added the Ocean Monument

              + Added Red Sandstone

              + Added Banners

              + Added Armor Stands

              + Added Coarse Dirt (dirt where grass won’t grow)

              + Added Guardian mobs, with item drops

              + Added Endermite mob

              + Added Rabbits, with item drops

              + Added Mutton and Cooked Mutton

              + Villagers will harvest crops and plant new ones

              + Mossy Cobblestone and Mossy Stone Bricks are now craftable

              + Chiseled Stone Bricks are now craftable

              + Doors and fences now come in all wood type variants

              + Sponge block has regained its water-absorbing ability and becomes wet

              + Added a spectator game mode (game mode 3)

              + Added one new achievement

              + Added “Customized” world type

              + Added hidden “Debug Mode” world type

              + Worlds can now have a world barrier

              + Added @e target selector for Command Blocks

              + Added /blockdata command

              + Added /clone command

              + Added /execute command

              + Added /fill command

              + Added /particle command

              + Added /testforblocks command

              + Added /title command

              + Added /trigger command

              + Added /worldborder command

              + Added /stats command

              + Containers can be locked in custom maps by using the “Lock” data tag

              + Added logAdminCommands, showDeathMessages, reducedDebugInfo, sendCommandFeedback, and randomTickSpeed game rules

              + Added three new statistics

              + Player skins can now have double layers across the whole model, and left/right arms/legs can be edited independently

              + Added a new player model with smaller arms, and a new player skin called Alex?

              + Added options for configuring what pieces of the skin that are visible

              + Blocks can now have custom visual variations in the resource packs

              + Minecraft Realms now has an activity chart, so you can see who has been online

              + Minecraft Realms now lets you upload your maps

              * Difficulty setting is saved per world, and can be locked if wanted

              * Enchanting has been redone, now costs lapis lazuli in addition to enchantment levels

              * Villager trading has been rebalanced

              * Anvil repairing has been rebalanced

              * Considerable faster client-side performance

              * Max render distance has been increased to 32 chunks (512 blocks)

              * Adventure mode now prevents you from destroying blocks, unless your items have the CanDestroy data tag

              * Resource packs can now also define the shape of blocks and items, and not just their textures

              * Scoreboards have been given a lot of new features

              * Tweaked the F3 debug screen

              * Block ID numbers (such as 1 for stone), are being replaced by ID names (such as minecraft:stone)

              * Server list has been improved

              * A few minor changes to village and temple generation

              * Mob heads for players now show both skin layers

              * Buttons can now be placed on the ceiling

              * Lots and lots of other changes

              * LOTS AND LOTS of other changes

              - Removed Herobrine

              +
              + +
              +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/source.html new file mode 100644 index 000000000..14069d241 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/source.html @@ -0,0 +1,793 @@ + + + + + + + + + + Minecraft 1.8 - The Bountiful Update - Minecraft 1.8 - The Bountiful Update - Minecraft Update News + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + + + + + +
              +

              Minecraft News

              +
              + + Powered by Tumblr + +
              +
              +
              +
              +
              +
              +

              Minecraft 1.8 - The Bountiful Update

              +

              + Added Granite, Andesite, and Diorite stone blocks, with smooth versions
              + Added Slime Block
              + Added Iron Trapdoor
              + Added Prismarine and Sea Lantern blocks
              + Added the Ocean Monument
              + Added Red Sandstone
              + Added Banners
              + Added Armor Stands
              + Added Coarse Dirt (dirt where grass won’t grow)
              + Added Guardian mobs, with item drops
              + Added Endermite mob
              + Added Rabbits, with item drops
              + Added Mutton and Cooked Mutton
              + Villagers will harvest crops and plant new ones
              + Mossy Cobblestone and Mossy Stone Bricks are now craftable
              + Chiseled Stone Bricks are now craftable
              + Doors and fences now come in all wood type variants
              + Sponge block has regained its water-absorbing ability and becomes wet
              + Added a spectator game mode (game mode 3)
              + Added one new achievement
              + Added “Customized” world type
              + Added hidden “Debug Mode” world type
              + Worlds can now have a world barrier
              + Added @e target selector for Command Blocks
              + Added /blockdata command
              + Added /clone command
              + Added /execute command
              + Added /fill command
              + Added /particle command
              + Added /testforblocks command
              + Added /title command
              + Added /trigger command
              + Added /worldborder command
              + Added /stats command
              + Containers can be locked in custom maps by using the “Lock” data tag
              + Added logAdminCommands, showDeathMessages, reducedDebugInfo, sendCommandFeedback, and randomTickSpeed game rules
              + Added three new statistics
              + Player skins can now have double layers across the whole model, and left/right arms/legs can be edited independently
              + Added a new player model with smaller arms, and a new player skin called Alex?
              + Added options for configuring what pieces of the skin that are visible
              + Blocks can now have custom visual variations in the resource packs
              + Minecraft Realms now has an activity chart, so you can see who has been online
              + Minecraft Realms now lets you upload your maps
              * Difficulty setting is saved per world, and can be locked if wanted
              * Enchanting has been redone, now costs lapis lazuli in addition to enchantment levels
              * Villager trading has been rebalanced
              * Anvil repairing has been rebalanced
              * Considerable faster client-side performance
              * Max render distance has been increased to 32 chunks (512 blocks)
              * Adventure mode now prevents you from destroying blocks, unless your items have the CanDestroy data tag
              * Resource packs can now also define the shape of blocks and items, and not just their textures
              * Scoreboards have been given a lot of new features
              * Tweaked the F3 debug screen
              * Block ID numbers (such as 1 for stone), are being replaced by ID names (such as minecraft:stone)
              * Server list has been improved
              * A few minor changes to village and temple generation
              * Mob heads for players now show both skin layers
              * Buttons can now be placed on the ceiling
              * Lots and lots of other changes
              * LOTS AND LOTS of other changes
              - Removed Herobrine

              +
              + +
              +
              +
              + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json new file mode 100644 index 000000000..c2be6de58 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json @@ -0,0 +1,3 @@ +[ + "http://fakehost/test/logo.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json new file mode 100644 index 000000000..416d55e4c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "", + "Image": null, + "Title": "Seattle Thunderbirds Hockey", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html new file mode 100644 index 000000000..21644834f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html @@ -0,0 +1,115 @@ +
              +
              +

              +
              +

              + +

              The Seattle Thunderbirds are excited to announce the dates of their + annual Summer Hockey Clinic! This three day hockey school will feature top level + instruction, both on and off-ice, from Thunderbirds players and coaches. Each day + includes 1.5 hours on-ice and 1.25 hours of off-ice instruction, conditioning and + theory!

              +

              Included in your purchase is a 2007 HOCKEY CLINIC JERSEY and the T-BIRDS + SUMMER HOCKEY TICKET SPECIAL! This ticket special includes 6 ticket vouchers for any + Thunderbirds game at KeyArena in 2007, where you can watch your own instructors take on + division rivals such as the Portland Winter Hawks and Everett Silvertips. That\'s 4.5 + hours on-ice, 3.75 hours off-ice, a jersey and 6 Thunderbirds tickets for as little as + $125! Your vouchers will be redeemable at the KeyArena East Box Office or the Hockey + Store at Kingsgate, but expire on December 31, 2007 - so pick out your games soon!

              +
              +

              The Thunderbirds offer 4 sessions, broken down by the age of the participating player. + You will begin your daily training on-ice and complete the day off-ice (see the next + page for a complete schedule). Please come prepared with appropriate work-out gear and + sneakers!

              +

              • GROUP A: 7, 8 & 9 yrs old $125

              • GROUP B: 10 & 11 yrs old $125

              • GROUP + C: 12, 13 & 14 yrs old $125

              • ADULTS: 18 & Over $160

              +
              +

              To reserve your space in the T-Birds Summer Hockey Clinic and receive + your Ticket Special, fill out the registration form on reverse. Space is limited and + fills up fast, so sign-up today!

              +

              Safe Environment: Our goal is to provide a positive, safe environment for + hockey players of all ages to improve their skills and enjoy their time with us. To help + ensure this, the Thunderbirds\' training staff will be at the clinic for its + entirety.

              +

              Elevate your game!

              Improve your skating…

              • lengthen your stride

              + • gain power

              • balance and agility

              +

              Improve your puck skills…

              • puck control and deking

              • power moves + and puck protection

              +

              Improve your passing and team play…

              • puck support and \'ice + vision\'

              • shooting for accuracy vs rebounds

              • game systems

              +



              Instructors: Instructors for the 2007 Summer Hockey Clinics will + include Seattle Thunderbirds Head Coach Rob Sumner, Assistant Coach Turner Stevenson, + past Thunderbirds Ryan Gibbons and Tyler Metcalfe and past and present Seattle + Thunderbirds players.

              + +

              The Thunderbirds Summer Hockey Clinic will take place from Tuesday, + August 14th, through Thursday, August 16th, at Kingsgate Ice Arena, 14326 124th Ave. NE, + Kirkland, WA 98034.

              +

              PLEASE NOTE: All players are required to wear full gear including a HECC + certified helmet with full facemask. Youth players must also wear a mouth guard. Adult + players may wear a half visor, however full cages and mouth guards are highly + recommended.

              + +

              • To register and pay for your clinic online, compelte the form below

              • + To register and pay for your clinic via mail, click here to download the registration + form

              + + +
              +
              +

              + Summer Hockey Clinic Registration Form +

              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Player Name

              Email Address

              Birthdate

              Address

              City/St

              Zip

              Day Phone

              Eve Phone

              Please indicate your curreny hockey association or + league:

              SKAHA   SJHA    KVAHA    + GSHL    Other

              If other, pelase specify:

              Position:

              Forward    Defense    Goalie

              +

              Jersey Size

              S   M    L    XL    + XXL

              I want to purchase the following T-Birds Summer Hockey + Clinic:

              + + + + +

              GROUP A

              7, 8 & 9

              $125

              GROUP B

              10 & 11

              $125

              GROUP C

              12, 13 & 14

              + $125

              ADULTS

              18 & Over

              $160

               

              Waiver and Release

              By checking this box, I understand that participation + of the sport constitutes a risk to me (or my child). I voluntarily + recognize, accept and assume risk and release the Seattle + Thunderbirds and Kingsgate Arena from any and all liability.

              +

              Once you click submit, you will be + given the link to continue to online payment

              +
              +
              +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html new file mode 100644 index 000000000..e4b2d4ac9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html @@ -0,0 +1,421 @@ + + + + Seattle Thunderbirds Hockey + + + + + + + + + + + + + + + + + + + + + + + +
              +
              + Official Website of the Seattle Thunderbirds Hockey Club      + Contact Us | + Site Map | + Sign up for the + E-News! +
              +
              + + + + + + + +
              +
              + +
              +
              +
              + + + + + + + + + +

              General Info

              When/Where

              Sign Up Online

              Downloand + Brochure

              +

               

              +

              General Info

              +

              The Seattle Thunderbirds are excited to announce the dates of their + annual Summer Hockey Clinic! This three day hockey school will feature top level + instruction, both on and off-ice, from Thunderbirds players and coaches. Each day + includes 1.5 hours on-ice and 1.25 hours of off-ice instruction, conditioning and + theory!

              +

              Included in your purchase is a 2007 HOCKEY CLINIC JERSEY and the T-BIRDS + SUMMER HOCKEY TICKET SPECIAL! This ticket special includes 6 ticket vouchers for any + Thunderbirds game at KeyArena in 2007, where you can watch your own instructors take on + division rivals such as the Portland Winter Hawks and Everett Silvertips. That\'s 4.5 + hours on-ice, 3.75 hours off-ice, a jersey and 6 Thunderbirds tickets for as little as + $125! Your vouchers will be redeemable at the KeyArena East Box Office or the Hockey + Store at Kingsgate, but expire on December 31, 2007 - so pick out your games soon!

              +
              +
              +

              The Thunderbirds offer 4 sessions, broken down by the age of the participating player. + You will begin your daily training on-ice and complete the day off-ice (see the next + page for a complete schedule). Please come prepared with appropriate work-out gear and + sneakers!

              +
              +
              +

              • GROUP A: 7, 8 & 9 yrs old $125
              • GROUP B: 10 & 11 yrs old $125
              • GROUP + C: 12, 13 & 14 yrs old $125
              • ADULTS: 18 & Over $160

              +
              +
              +

              To reserve your space in the T-Birds Summer Hockey Clinic and receive + your Ticket Special, fill out the registration form on reverse. Space is limited and + fills up fast, so sign-up today!

              +

              Safe Environment: Our goal is to provide a positive, safe environment for + hockey players of all ages to improve their skills and enjoy their time with us. To help + ensure this, the Thunderbirds\' training staff will be at the clinic for its + entirety.

              +

              Elevate your game!
              Improve your skating…
              • lengthen your stride
              + • gain power
              • balance and agility

              +

              Improve your puck skills…
              • puck control and deking
              • power moves + and puck protection

              +

              Improve your passing and team play…
              • puck support and \'ice + vision\'
              • shooting for accuracy vs rebounds
              • game systems

              +


              Instructors: Instructors for the 2007 Summer Hockey Clinics will + include Seattle Thunderbirds Head Coach Rob Sumner, Assistant Coach Turner Stevenson, + past Thunderbirds Ryan Gibbons and Tyler Metcalfe and past and present Seattle + Thunderbirds players.

              +

              When/Where

              +

              The Thunderbirds Summer Hockey Clinic will take place from Tuesday, + August 14th, through Thursday, August 16th, at Kingsgate Ice Arena, 14326 124th Ave. NE, + Kirkland, WA 98034.

              +

              PLEASE NOTE: All players are required to wear full gear including a HECC + certified helmet with full facemask. Youth players must also wear a mouth guard. Adult + players may wear a half visor, however full cages and mouth guards are highly + recommended.

              +


              Registration

              +

              • To register and pay for your clinic online, compelte the form below
              • + To register and pay for your clinic via mail, click here to download the registration + form

              + + + + + + + + + +
              + + + + + + +
              +
              + Summer Hockey Clinic Registration Form +
              +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Player Name

              Email Address

              Birthdate

              Address

              City/St

              Zip

              Day Phone

              Eve Phone

              Please indicate your curreny hockey association or + league:

               

              SKAHA   SJHA    KVAHA    + GSHL    Other

              If other, pelase specify:

              Position:

              Forward    Defense    Goalie

              +

              Jersey Size

              S   M    L    XL    + XXL

              I want to purchase the following T-Birds Summer Hockey + Clinic:

              + + + + + + + + + +

              GROUP A
              7, 8 & 9
              $125
              +

              GROUP B
              10 & 11
              $125
              +

              GROUP C
              12, 13 & 14
              + $125

              ADULTS
              18 & Over
              $160
              +

              +
               

              Waiver and Release

              By checking this box, I understand that participation + of the sport constitutes a risk to me (or my child). I voluntarily + recognize, accept and assume risk and release the Seattle + Thunderbirds and Kingsgate Arena from any and all liability.

              +

               

              Once you click submit, you will be + given the link to continue to online payment

              +
              +

               

              +
              +
              +
               
              +
              + Seattle Thunderbirds Hockey Club © 2005-06 All Rights Reserved • + Powered by Worldlink • Webmaster Email +
              14326 124th Ave• Kirkland, WA 98034 • Phone: 425.869.7825 • Tix: 206.448.PUCK• Fax: 425.497.0812 +
              +
              + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-images.json new file mode 100644 index 000000000..cc41335ab --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-images.json @@ -0,0 +1,4 @@ +[ + "http:\/\/img.washingtonpost.com\/rw\/2010-2019\/WashingtonPost\/2015\/03\/18\/Foreign\/Images\/Nic6429927.jpg", + "https:\/\/img.washingtonpost.com\/rf\/image_480w\/2010-2019\/WashingtonPost\/2015\/03\/18\/Foreign\/Graphics\/tunisia600.jpg?uuid=1_yuLs2LEeSHME9HNBbnWQ" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-metadata.json new file mode 100644 index 000000000..d3aad6507 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By Erin Cunningham", + "Direction": null, + "Excerpt": "The assault on Tunisia’s most renowned museum, in which gunmen killed at least 19 people, could heighten tensions in a nation that has become deeply divided between pro- and anti-Islamist factions.", + "Image": "http:\/\/img.washingtonpost.com\/rw\/2010-2019\/WashingtonPost\/2015\/03\/18\/Foreign\/Images\/Nic6429927.jpg", + "Title": "Attack stokes instability fears in North Africa", + "SiteName": "Washington Post" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected.html new file mode 100644 index 000000000..ed051e882 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected.html @@ -0,0 +1,144 @@ +
              +

              CAIRO — Gunmen opened fire on visitors at + Tunisia’s most renowned museum on Wednesday, killing at least 19 people, + including 17 foreigners, in an assault that threatened to upset the fragile + stability of a country seen as the lone success of the Arab Spring.

              +

              It was the most deadly terrorist attack in the North African nation in + more than a decade. Although no group claimed responsibility, the bloodshed + raised fears that militants linked to the Islamic State were expanding + their operations.

              +

              The attackers, clad in military uniforms, stormed the Bardo National Museum on + Wednesday afternoon, seizing and gunning down foreign tourists before security + forces raided the building to end the siege. The museum is a major tourist + draw and is near the heavily guarded national parliament in downtown Tunis.

              +

              Tunisian Prime Minister Habib Essid said that in addition to the slain + foreigners — from Italy, Poland, Germany and Spain — a local museum worker + and a security official were killed. Two gunmen died, and three others + may have escaped, officials said. About 50 other people were wounded, according + to local news reports.

              +

              “Our nation is in danger,” Essid declared in a televised address Wednesday + evening. He vowed that the country would be “merciless” in defending itself.

              +

              [Read: Why Tunisia, Arab Spring’s sole success story, suffers from Islamist violence] +

              +

              Tunisia, a mostly Muslim nation of about 11 million people, was governed + for decades by autocrats who imposed secularism. Its sun-drenched Mediterranean + beaches drew thousands of bikini-clad tourists, and its governments promoted + education and other rights for women. But the country has grappled with + rising Islamist militancy since a popular uprising overthrew its dictator + four years ago, setting the stage for the Arab Spring revolts across the + region.

              +

              Thousands of Tunisians have flocked to join jihadist groups in Syria, + including the Islamic State, making the country one of the major sources + of foreign fighters in the conflict. Tunisian security forces have also + fought increasing gunbattles with jihadists at home.

              +

              Despite this, the country has been hailed as a model of democratic transition + as other governments that came to power after the Arab Spring collapsed, + often in bloody confrontations. But the attack Wednesday — on a national + landmark that showcases Tunisia’s rich heritage — could heighten tensions + in a nation that has become deeply divided between pro- and anti-Islamist + political factions.

              +

              Many Tunisians accuse the country’s political Islamists, who held power + from 2011 to 2013, of having been slow to respond to the growing danger + of terrorism. Islamist politicians have acknowledged that they did not + realize the threat that would develop when radical Muslims, who had been + repressed under authoritarian regimes, won the freedom to preach freely + in mosques.

              +

              In Washington, White House press secretary Josh Earnest condemned the attack and + said the U.S. government was willing to assist Tunisian authorities in + the investigation.

              +
              + +

              Gunmen in military uniforms stormed Tunisia's national museum, killing at least 19 people, most of them foreign tourists. (Reuters) +

              +
              +

              “This attack today is meant to threaten authorities, to frighten tourists + and to negatively affect the economy,” said Lotfi Azzouz, Tunisia country + director for Amnesty International, a London-based rights group.

              +

              Tourism is critical to Tunisia’s economy, accounting for 15 percent of + its gross domestic product in 2013, according to the World Travel and Tourism + Council, an industry body. The Bardo museum hosts one of the world’s most + outstanding collections of Roman mosaics and is popular with tourists and + Tunisians alike.

              +

              [Bardo museum houses amazing Roman treasures] +

              +

              The attack is “also aimed at the country’s security and stability during + the transition period,” Azzouz said. “And it could have political repercussions + — like the curtailing of human rights, or even less government transparency + if there’s fear of further attacks.”

              +

              The attack raised concerns that the government, led by secularists, would + be pressured to stage a wider crackdown on Islamists of all stripes. Lawmakers + are drafting an anti-terrorism bill to give security forces additional + tools to fight militants.

              + +

              [Read: Tunisia sends most foreign fighters to Islamic State in Syria] +

              +

              “We must pay attention to what is written” in that law, Azzouz said. “There + is worry the government will use the attack to justify some draconian measures.”

              +

              Tunisian Islamists and secular forces have worked together — often reluctantly + — to defuse the country’s political crises in the years since the revolt.

              +

              Last fall, Tunisians elected a secular-minded president and parliament + dominated by liberal forces after souring on Islamist-led rule. + In 2011, voters had elected a government led by the Ennahda party — a movement + similar to Egypt’s Islamist Muslim Brotherhood. But a political stalemate + developed as the party and others tried to draft the country’s new constitution. + The Islamists failed to improve a slumping economy. And Ennahda came under + fire for what many Tunisians saw as a failure to crack down on Islamist + extremists.

              +
              +

              Map: Flow of foreign fighters to Syria +

              +

              After the collapse of the authoritarian system in 2011, hard-line Muslims + known as Salafists attacked bars and art galleries. Then, in 2012, hundreds + of Islamists assaulted the U.S. Embassy in + Tunis, shattering windows and hurling gasoline bombs, after the release + of a crude online video about the prophet Muhammad. The + government outlawed the group behind the attack — Ansar al-Sharia, an al-Qaeda-linked + organization — and began a crackdown. But the killing of two leftist politicians in + 2013 prompted a fresh political crisis, and Ennahda stepped down, replaced + by a technocratic government.

              +

              Tunisia’s current coalition government includes + an Ennahda minister in the cabinet. Still, many leftist figures openly + oppose collaboration with the movement’s leaders.

              +

              “Ennahda is responsible for the current deterioration of the situation, + because they were careless with the extremists” while they were in power, + Azzouz said.

              +

              The leader of Ennahda, Rachid Ghannouchi, condemned Wednesday’s attack, + saying in a statement that it “will not break our people’s will and will + not undermine our revolution and our democracy.”

              +

              Security officials are particularly concerned by the collapse of Libya, + where various armed groups are vying for influence and jihadist militants + have entrenched themselves in major cities. Tunisians worry that extremists + can easily get arms and training in the neighboring country.

              +

              In January, Libyan militants loyal to the Islamic State beheaded 21 Christians — + 20 of them Egyptian Copts — along the country’s coast. They later seized + the Libyan city of Sirte.

              +



              +

              Officials are worried about the number of Tunisian militants who may have + joined the jihadists in Libya — with the goal of returning home to fight + the Tunis government.

              +

              Ajmi Lourimi, a member of Ennahda’s general secretariat, said he believed + the attack would unite Tunisians in the face of terrorism.

              +

              “There is a consensus here that this [attack] is alien to our culture, + to our way of life. We want to unify against this danger,” Lourimi said. + He said he did not expect a wider government campaign against Islamists.

              +

              “We have nothing to fear,” he said of himself and fellow Ennahda members. + “We believe the Interior Ministry should be trained and equipped to fight + and counter this militancy.”

              +

              The last major attack on a civilian target in Tunisia was in 2002, when + al-Qaeda militants killed more than 20 people in a car bombing outside + a synagogue in the city of Djerba.

              + +

              Heba Habib contributed to this report.

              + + + +

              Read more: +

              +

              Tunisia’s Islamists get a sobering lesson in governing +

              +

              Tunisia sends most foreign fighters to Islamic State in Syria +

              +

              Tunisia’s Bardo museum is home to amazing Roman treasures +

              + +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/source.html new file mode 100644 index 000000000..047505981 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/source.html @@ -0,0 +1,1560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attack stokes instability fears in North Africa - The Washington Post + + + + + + + + + + + + + + + + + + + + + + +
              +
              +
              + + + + + + + +
              +
              +
              +
              +
              +
              + +
              +
              + +
              +
              + +
              +
              +
              +
              + +

              Attack stokes instability fears in North Africa

              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              + March 18 at 3:57 PM +
              +
              + +

              Gunmen opened fire on visitors at + Tunisia’s most renowned museum on Wednesday, killing at least 19 people, + including 17 foreigners, in an assault that threatened to upset the fragile + stability of a country seen as the lone success of the Arab Spring.

              +

              It was the most deadly terrorist attack in the North African nation in + more than a decade. Although no group claimed responsibility, the bloodshed + raised fears that militants linked to the Islamic State were expanding + their operations.

              +

              The attackers, clad in military uniforms, stormed the Bardo National Museum on + Wednesday afternoon, seizing and gunning down foreign tourists before security + forces raided the building to end the siege. The museum is a major tourist + draw and is near the heavily guarded national parliament in downtown Tunis.

              +

              Tunisian Prime Minister Habib Essid said that in addition to the slain + foreigners — from Italy, Poland, Germany and Spain — a local museum worker + and a security official were killed. Two gunmen died, and three others + may have escaped, officials said. About 50 other people were wounded, according + to local news reports.

              +

              “Our nation is in danger,” Essid declared in a televised address Wednesday + evening. He vowed that the country would be “merciless” in defending itself.

              + +

              Tunisia, a mostly Muslim nation of about 11 million people, was governed + for decades by autocrats who imposed secularism. Its sun-drenched Mediterranean + beaches drew thousands of bikini-clad tourists, and its governments promoted + education and other rights for women. But the country has grappled with + rising Islamist militancy since a popular uprising overthrew its dictator + four years ago, setting the stage for the Arab Spring revolts across the + region.

              +

              Thousands of Tunisians have flocked to join jihadist groups in Syria, + including the Islamic State, making the country one of the major sources + of foreign fighters in the conflict. Tunisian security forces have also + fought increasing gunbattles with jihadists at home.

              +

              Despite this, the country has been hailed as a model of democratic transition + as other governments that came to power after the Arab Spring collapsed, + often in bloody confrontations. But the attack Wednesday — on a national + landmark that showcases Tunisia’s rich heritage — could heighten tensions + in a nation that has become deeply divided between pro- and anti-Islamist + political factions.

              +

              Many Tunisians accuse the country’s political Islamists, who held power + from 2011 to 2013, of having been slow to respond to the growing danger + of terrorism. Islamist politicians have acknowledged that they did not + realize the threat that would develop when radical Muslims, who had been + repressed under authoritarian regimes, won the freedom to preach freely + in mosques.

              +

              In Washington, White House press secretary Josh Earnest condemned the attack and + said the U.S. government was willing to assist Tunisian authorities in + the investigation.

              +
              +
              + +
              +
              Gunmen in military uniforms stormed Tunisia's national museum, killing at least 19 people, most of them foreign tourists. (Reuters) +
              +
              +

              “This attack today is meant to threaten authorities, to frighten tourists + and to negatively affect the economy,” said Lotfi Azzouz, Tunisia country + director for Amnesty International, a London-based rights group.

              +

              Tourism is critical to Tunisia’s economy, accounting for 15 percent of + its gross domestic product in 2013, according to the World Travel and Tourism + Council, an industry body. The Bardo museum hosts one of the world’s most + outstanding collections of Roman mosaics and is popular with tourists and + Tunisians alike.

              + +

              The attack is “also aimed at the country’s security and stability during + the transition period,” Azzouz said. “And it could have political repercussions + — like the curtailing of human rights, or even less government transparency + if there’s fear of further attacks.”

              +

              The attack raised concerns that the government, led by secularists, would + be pressured to stage a wider crackdown on Islamists of all stripes. Lawmakers + are drafting an anti-terrorism bill to give security forces additional + tools to fight militants.

              + + +

              “We must pay attention to what is written” in that law, Azzouz said. “There + is worry the government will use the attack to justify some draconian measures.”

              +

              Tunisian Islamists and secular forces have worked together — often reluctantly + — to defuse the country’s political crises in the years since the revolt.

              +

              Last fall, Tunisians elected a secular-minded president and parliament + dominated by liberal forces after souring on Islamist-led rule. + In 2011, voters had elected a government led by the Ennahda party — a movement + similar to Egypt’s Islamist Muslim Brotherhood. But a political stalemate + developed as the party and others tried to draft the country’s new constitution. + The Islamists failed to improve a slumping economy. And Ennahda came under + fire for what many Tunisians saw as a failure to crack down on Islamist + extremists.

              +
              + Map: Flow of foreign fighters to Syria +
              +

              After the collapse of the authoritarian system in 2011, hard-line Muslims + known as Salafists attacked bars and art galleries. Then, in 2012, hundreds + of Islamists assaulted the U.S. Embassy in + Tunis, shattering windows and hurling gasoline bombs, after the release + of a crude online video about the prophet Muhammad. The + government outlawed the group behind the attack — Ansar al-Sharia, an al-Qaeda-linked + organization — and began a crackdown. But the killing of two leftist politicians in + 2013 prompted a fresh political crisis, and Ennahda stepped down, replaced + by a technocratic government.

              +

              Tunisia’s current coalition government includes + an Ennahda minister in the cabinet. Still, many leftist figures openly + oppose collaboration with the movement’s leaders.

              +

              “Ennahda is responsible for the current deterioration of the situation, + because they were careless with the extremists” while they were in power, + Azzouz said.

              +

              The leader of Ennahda, Rachid Ghannouchi, condemned Wednesday’s attack, + saying in a statement that it “will not break our people’s will and will + not undermine our revolution and our democracy.”

              +

              Security officials are particularly concerned by the collapse of Libya, + where various armed groups are vying for influence and jihadist militants + have entrenched themselves in major cities. Tunisians worry that extremists + can easily get arms and training in the neighboring country.

              +

              In January, Libyan militants loyal to the Islamic State beheaded 21 Christians — + 20 of them Egyptian Copts — along the country’s coast. They later seized + the Libyan city of Sirte.

              +
              + +
              +
              +

              Officials are worried about the number of Tunisian militants who may have + joined the jihadists in Libya — with the goal of returning home to fight + the Tunis government.

              +

              Ajmi Lourimi, a member of Ennahda’s general secretariat, said he believed + the attack would unite Tunisians in the face of terrorism.

              +

              “There is a consensus here that this [attack] is alien to our culture, + to our way of life. We want to unify against this danger,” Lourimi said. + He said he did not expect a wider government campaign against Islamists.

              +

              “We have nothing to fear,” he said of himself and fellow Ennahda members. + “We believe the Interior Ministry should be trained and equipped to fight + and counter this militancy.”

              +

              The last major attack on a civilian target in Tunisia was in 2002, when + al-Qaeda militants killed more than 20 people in a car bombing outside + a synagogue in the city of Djerba.

              +

              +

              Heba Habib contributed to this report.

              +

              +

              +

              +

              +

              Read more: +

              +

              Tunisia’s Islamists get a sobering lesson in governing +

              +

              Tunisia sends most foreign fighters to Islamic State in Syria +

              +

              Tunisia’s Bardo museum is home to amazing Roman treasures +

              +

              +
              +
              +
              +
              Erin Cunningham is an Egypt-based correspondent for The Post. She previously + covered conflicts in the Middle East and Afghanistan for the Christian + Science Monitor, GlobalPost and The National.
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              + +
              +
              Comments + +
              +
              +
              + +
              +
              + + +
              +
              + + +
              +
              +
              +
              +
              + +
              +
              Show Comments + +
              +
              +
              +
              +
              + +
              Comments
              +
              +
              +
              + + + + +
              +
              + +
              +
              +
              +
              +
              +

              world

              +

              middle_east

              +

              +

              +

              +
              + + + + + + + +
              + +
              +
              +
              + +
              +
              +
              +
              +
              Most Read World + +
              + + + +
              +
              +
              + + +
              +
              + +
              +
              + +
              +
              +
              + +
              +
              + +
              +
              +
              +
              + +
              +
              + +
              +
              +
              + +
              +
              + +
              +
              +
              + + +
              +
              + + + +
              +
              + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-images.json new file mode 100644 index 000000000..a8602d503 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-images.json @@ -0,0 +1,5 @@ +[ + "http:\/\/img.washingtonpost.com\/rw\/2010-2019\/WashingtonPost\/2015\/03\/18\/National-Economy\/Images\/Nic6429750-1138.jpg", + "https:\/\/img.washingtonpost.com\/rf\/image_400w\/2010-2019\/WashingtonPost\/2015\/03\/18\/National-Economy\/Images\/Nic6429750-1140.jpg?uuid=zLIZQs2KEeSip5UXo6cFBg", + "http:\/\/img.washingtonpost.com\/wp-apps\/imrs.php?src=http:\/\/www.washingtonpost.com\/blogs\/wonkblog\/files\/2014\/07\/mufson_steve.jpg&h=180&w=180" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-metadata.json new file mode 100644 index 000000000..57f81c1dc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By Steven Mufson", + "Direction": null, + "Excerpt": "Few foreign leaders have so brazenly stood up to President Obama and the relationship could face its next test this month.", + "Image": "http:\/\/img.washingtonpost.com\/rw\/2010-2019\/WashingtonPost\/2015\/03\/18\/National-Economy\/Images\/Nic6429750-1138.jpg", + "Title": "Where do strained U.S.-Israeli relations go after Netanyahu’s victory?", + "SiteName": "Washington Post" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected.html new file mode 100644 index 000000000..cb2a8ceda --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected.html @@ -0,0 +1,101 @@ +

              +

              Israeli Prime Minister Benjamin Netanyahu reacts as he visits the Western Wall in Jerusalem on March 18 following his party's victory in Israel's general election. (Thomas Coex/AFP/Getty Images) +

              President Obama told the U.N. General Assembly 18 months ago that he would + seek “real breakthroughs on these two issues — Iran’s nuclear program and + ­Israeli-Palestinian peace.”

              +

              But Benjamin Netanyahu’s triumph in Tuesday’s + parliamentary elections keeps in place an Israeli prime minister who has + declared his intention to resist Obama on both of these fronts, guaranteeing + two more years of difficult diplomacy between leaders who barely conceal + their personal distaste for each other.

              +

              The Israeli election results also suggest that most voters there support + Netanyahu’s tough stance on U.S.-led negotiations to limit Iran’s nuclear + program and his vow on Monday that there would be no independent Palestinian state as long + as he is prime minister.

              +

              “On the way to his election victory, Netanyahu broke a lot of crockery + in the relationship,” said Martin Indyk, executive vice president of the + Brookings Institution and a former U.S. ambassador to Israel. “It can’t + be repaired unless both sides have an interest and desire to do so.”

              +

              Aside from Russian President Vladi­mir Putin, few foreign leaders so brazenly + stand up to Obama and even fewer among longtime allies.

              +
              + +

              Israeli Prime Minister Benjamin Netanyahu pledged to form a new governing coalition quickly after an upset election victory that was built on a shift to the right. (Reuters) +

              +
              +

              In the past, Israeli leaders who risked damaging the country’s most important + relationship, that with Washington, tended to pay a price. In 1991, when + Prime Minister Yitzhak Shamir opposed the Madrid peace talks, President + George H.W. Bush held back loan guarantees to help absorb immigrants from + the former Soviet Union. Shamir gave in, but his government soon collapsed.

              +

              But this time, Netanyahu was not hurt by his personal and substantive + conflicts with the U.S. president.

              +

              “While the United States is loved and beloved in Israel, President Obama + is not,” said Robert M. Danin, a senior fellow at the Council on Foreign + Relations. “So the perceived enmity didn’t hurt the way it did with Shamir + when he ran afoul of Bush in ’91.”

              +

              Where do U.S.-Israeli relations go from here?

              +

              In the immediate aftermath of Tuesday’s elections, tensions between the + two sides continued to run hot. The Obama administration’s first comments + on the Israeli election came with a tough warning about some of the pre-election + rhetoric from Netanyahu’s Likud party, which tried to rally right-wing + support by saying that Arab Israeli voters were “coming out in droves.”

              +

              “The United States and this administration is deeply concerned about rhetoric + that seeks to marginalize Arab Israeli citizens,” White House press secretary + Josh Earnest told reporters aboard Air Force One. “It undermines the values + and democratic ideals that have been important to our democracy and an + important part of what binds the United States and Israel together.”

              +

              Earnest added that Netan­yahu’s election-eve disavowal of a two-state + solution for Israelis and Palestinians would force the administration to + reconsider its approach to peace in the region.

              + +

              Over the longer term, a number of analysts say that Obama and Netan­yahu + will seek to play down the friction between them and point to areas of + continuing cooperation on military and economic issues.

              +

              “Both sides are going to want to turn down the rhetoric,” Danin said. + “But it is also a structural problem. They have six years of accumulated + history. That’s going to put limits on how far they can go together.”

              +

              The first substantive test could come as early as this month, when the + United States hopes that it can finish hammering out the framework of an + agreement with Iran.

              +

              Netanyahu strongly warned against making a “bad deal” during his March + 3 address to a joint meeting of Congress, an appearance arranged by Republican + congressional leaders and criticized by the Obama administration for making + U.S.-Israeli relations partisan on both sides so close to the Israeli election.

              +

              If a deal is reached and does not pass muster with Netanyahu, he is likely + to work with congressional Republicans to try to scuttle the accord.

              +

              “The Republicans have said they will do what they can to block a deal, + and the prime minister has already made clear that he will work with the + Republicans against the president,” Indyk said. “That’s where a clash could + come, and it’s coming very quickly.”

              +

              The second test — talks with Palestinians — could be even more difficult. + In his September 2013 address to the United Nations, Obama hailed signs + of hope.

              +

              “Already, Israeli and Palestinian leaders have demonstrated a willingness + to take significant political risks,” Obama said in his speech. Palestinian + Authority President Mahmoud Abbas “has put aside efforts to shortcut the + pursuit of peace and come to the negotiating table. Prime Minister Netanyahu + has released Palestinian prisoners and reaffirmed his commitment to a Palestinian + state.”

              +

              Today, the signals could not differ more. The + Palestinian Authority has said that after it joins the International Criminal + Court at The Hague on April 1, it will press war crimes charges against + Israel for the bloody Gaza conflict during the summer. Israel, which controls + tax receipts, has pledged to punish the Palestinian Authority by freezing + its tax revenue.

              +

              The United States, which gives hundreds of millions of dollars of economic + aid to the Palestinian Authority, would be caught in the middle. It has + been trying to persuade both sides to stand down, but Netanyahu’s declaration + that there would be no Palestinian state on his watch makes that more difficult.

              +

              “Now it’s hard to see what could persuade the Palestinians” to hold up + on their ICC plans, Indyk said. “That has nothing to do with negotiations, + but if both sides can’t be persuaded to back down, then they will be on + a trajectory that could lead to the collapse of the Palestinian Authority + because it can’t pay wages anymore.

              +

              “That could be an issue forced onto the agenda about the same time as + a potential nuclear deal.”

              + +

              Steven Mufson covers the White House. Since joining The Post, he has covered + economics, China, foreign policy and energy.

              + +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/source.html new file mode 100644 index 000000000..1d4dd7bdb --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/source.html @@ -0,0 +1,1038 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Where do strained U.S.-Israeli relations go after Netanyahu’s victory? + - The Washington Post + + + + + + + + + + + + + + + + + + + + + +
              +
              +
              + + + + + + + +
              +
              +
              +
              +
              +
              + +
              +
              + +
              +
              + +
              +
              +
              +
              + +

              Where do strained U.S.-Israeli relations go after Netanyahu’s victory?

              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              + +
              Israeli Prime Minister Benjamin Netanyahu reacts as he visits the Western Wall in Jerusalem on March 18 following his party's victory in Israel's general election. (Thomas Coex/AFP/Getty Images) +
              +
              + March 18 at 12:22 PM +
              +
              +

              President Obama told the U.N. General Assembly 18 months ago that he would + seek “real breakthroughs on these two issues — Iran’s nuclear program and + ­Israeli-Palestinian peace.”

              +

              But Benjamin Netanyahu’s triumph in Tuesday’s + parliamentary elections keeps in place an Israeli prime minister who has + declared his intention to resist Obama on both of these fronts, guaranteeing + two more years of difficult diplomacy between leaders who barely conceal + their personal distaste for each other.

              +

              The Israeli election results also suggest that most voters there support + Netanyahu’s tough stance on U.S.-led negotiations to limit Iran’s nuclear + program and his vow on Monday that there would be no independent Palestinian state as long + as he is prime minister.

              +

              “On the way to his election victory, Netanyahu broke a lot of crockery + in the relationship,” said Martin Indyk, executive vice president of the + Brookings Institution and a former U.S. ambassador to Israel. “It can’t + be repaired unless both sides have an interest and desire to do so.”

              +

              Aside from Russian President Vladi­mir Putin, few foreign leaders so brazenly + stand up to Obama and even fewer among longtime allies.

              +
              +
              + +
              +
              Israeli Prime Minister Benjamin Netanyahu pledged to form a new governing coalition quickly after an upset election victory that was built on a shift to the right. (Reuters) +
              +
              +

              In the past, Israeli leaders who risked damaging the country’s most important + relationship, that with Washington, tended to pay a price. In 1991, when + Prime Minister Yitzhak Shamir opposed the Madrid peace talks, President + George H.W. Bush held back loan guarantees to help absorb immigrants from + the former Soviet Union. Shamir gave in, but his government soon collapsed.

              +

              But this time, Netanyahu was not hurt by his personal and substantive + conflicts with the U.S. president.

              +

              “While the United States is loved and beloved in Israel, President Obama + is not,” said Robert M. Danin, a senior fellow at the Council on Foreign + Relations. “So the perceived enmity didn’t hurt the way it did with Shamir + when he ran afoul of Bush in ’91.”

              +

              Where do U.S.-Israeli relations go from here?

              +

              In the immediate aftermath of Tuesday’s elections, tensions between the + two sides continued to run hot. The Obama administration’s first comments + on the Israeli election came with a tough warning about some of the pre-election + rhetoric from Netanyahu’s Likud party, which tried to rally right-wing + support by saying that Arab Israeli voters were “coming out in droves.”

              +

              “The United States and this administration is deeply concerned about rhetoric + that seeks to marginalize Arab Israeli citizens,” White House press secretary + Josh Earnest told reporters aboard Air Force One. “It undermines the values + and democratic ideals that have been important to our democracy and an + important part of what binds the United States and Israel together.”

              +

              Earnest added that Netan­yahu’s election-eve disavowal of a two-state + solution for Israelis and Palestinians would force the administration to + reconsider its approach to peace in the region.

              +
              +

              Over the longer term, a number of analysts say that Obama and Netan­yahu + will seek to play down the friction between them and point to areas of + continuing cooperation on military and economic issues.

              +

              “Both sides are going to want to turn down the rhetoric,” Danin said. + “But it is also a structural problem. They have six years of accumulated + history. That’s going to put limits on how far they can go together.”

              +

              The first substantive test could come as early as this month, when the + United States hopes that it can finish hammering out the framework of an + agreement with Iran.

              +

              Netanyahu strongly warned against making a “bad deal” during his March + 3 address to a joint meeting of Congress, an appearance arranged by Republican + congressional leaders and criticized by the Obama administration for making + U.S.-Israeli relations partisan on both sides so close to the Israeli election.

              +

              If a deal is reached and does not pass muster with Netanyahu, he is likely + to work with congressional Republicans to try to scuttle the accord.

              +

              “The Republicans have said they will do what they can to block a deal, + and the prime minister has already made clear that he will work with the + Republicans against the president,” Indyk said. “That’s where a clash could + come, and it’s coming very quickly.”

              +

              The second test — talks with Palestinians — could be even more difficult. + In his September 2013 address to the United Nations, Obama hailed signs + of hope.

              +

              “Already, Israeli and Palestinian leaders have demonstrated a willingness + to take significant political risks,” Obama said in his speech. Palestinian + Authority President Mahmoud Abbas “has put aside efforts to shortcut the + pursuit of peace and come to the negotiating table. Prime Minister Netanyahu + has released Palestinian prisoners and reaffirmed his commitment to a Palestinian + state.”

              +

              Today, the signals could not differ more. The + Palestinian Authority has said that after it joins the International Criminal + Court at The Hague on April 1, it will press war crimes charges against + Israel for the bloody Gaza conflict during the summer. Israel, which controls + tax receipts, has pledged to punish the Palestinian Authority by freezing + its tax revenue.

              +

              The United States, which gives hundreds of millions of dollars of economic + aid to the Palestinian Authority, would be caught in the middle. It has + been trying to persuade both sides to stand down, but Netanyahu’s declaration + that there would be no Palestinian state on his watch makes that more difficult.

              +

              “Now it’s hard to see what could persuade the Palestinians” to hold up + on their ICC plans, Indyk said. “That has nothing to do with negotiations, + but if both sides can’t be persuaded to back down, then they will be on + a trajectory that could lead to the collapse of the Palestinian Authority + because it can’t pay wages anymore.

              +

              “That could be an issue forced onto the agenda about the same time as + a potential nuclear deal.”

              +
              +

              +
              +
              +
              +
              +
              Steven Mufson covers the White House. Since joining The Post, he has covered + economics, China, foreign policy and energy.
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              Comments +
              +
              +
              + +
              +
              + + +
              +
              + + +
              +
              +
              +
              +
              +
              +
              Show Comments +
              +
              +
              +
              +
              + +
              Comments
              +
              +
              +
              + + + + +
              +
              +
              +
              +
              +
              +
              +

              world

              +

              middle_east

              +

              +

              +

              +
              + + + + + + + +
              + +
              +
              +
              + +
              +
              +
              +
              +
              Most Read Business +
              + + + +
              +
              +
              + + +
              +
              + +
              +
              + +
              +
              +
              + +
              +
              + +
              +
              +
              +
              + +
              +
              + +
              +
              +
              + +
              +
              + +
              +
              +
              + + +
              +
              + + + +
              +
              + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/config.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/config.json new file mode 100644 index 000000000..4bb89904f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/config.json @@ -0,0 +1,3 @@ +{ + "summonCthulhu": true +} \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-images.json new file mode 100644 index 000000000..2b266e478 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/img.webmd.com\/dtmcms\/live\/webmd\/consumer_assets\/site_images\/miscellaneous\/webmd_FB_logo_bluebkgrd.jpg?v=1" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-metadata.json new file mode 100644 index 000000000..2a7bced70 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By Brenda Goodman, MA\n WebMD Health News", + "Direction": null, + "Excerpt": "Life-threatening peanut allergies have mysteriously been on the rise in the past decade, with little hope for a cure. But a groundbreaking new study may offer a way to stem that rise, while another may offer some hope for those who are already allergic.", + "Image": "http:\/\/img.webmd.com\/dtmcms\/live\/webmd\/consumer_assets\/site_images\/miscellaneous\/webmd_FB_logo_bluebkgrd.jpg?v=1", + "Title": "Babies Who Eat Peanuts Early May Avoid Allergy", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected.html new file mode 100644 index 000000000..ddbe3d84c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected.html @@ -0,0 +1,48 @@ +
              + + + + + + + + + +

              Feb. 23, 2015 -- Life-threatening peanut allergies have mysteriously been + on the rise in the past decade, with little hope for a cure.

              +

              But a groundbreaking new study may offer a way to stem that rise, while + another may offer some hope for those who are already allergic.

              +

              Parents have been told for years to avoid giving foods containing peanuts + to babies for fear of triggering an allergy. Now research shows the opposite + is true: Feeding babies snacks made with peanuts before their first birthday + appears to prevent that from happening.

              +

              The study is published in the New England Journal of Medicine, and + it was presented at the annual meeting of the American Academy of Allergy, + Asthma and Immunology in Houston. It found that among children at high + risk for getting peanut allergies, eating peanut snacks by 11 months of + age and continuing to eat them at least three times a week until age 5 + cut their chances of becoming allergic by more than 80% compared to kids + who avoided peanuts. Those at high risk were already allergic to egg, they + had the skin condition eczema, or + both.

              +

              Overall, about 3% of kids who ate peanut butter or peanut snacks before + their first birthday got an allergy, compared to about 17% of kids who + didn’t eat them.

              +

              “I think this study is an astounding and groundbreaking study, really,” + says Katie Allen, MD, PhD. She's the director of the Center for Food and + Allergy Research at the Murdoch Children’s Research Institute in Melbourne, + Australia. Allen was not involved in the research.

              +

              Experts say the research should shift thinking about how kids develop + food allergies, and it should change the guidance doctors give to + parents.

              +

              Meanwhile, for children and adults who are already allergic to peanuts, + another study presented at the same meeting held out hope of a treatment.

              +

              A new skin patch called Viaskin allowed people with peanut allergies to + eat tiny amounts of peanuts after they wore it for a year.

              +

              A Change in Guidelines?

              + +

              Allergies to peanuts and other foods are on the rise. In the U.S., more + than 2% of people react to peanuts, a 400% increase since 1997. And reactions + to peanuts and other tree nuts can be especially severe. Nuts are the main + reason people get a life-threatening problem called anaphylaxis.

              +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/source.html new file mode 100644 index 000000000..0b50ccc54 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/source.html @@ -0,0 +1,2411 @@ + + + + + Babies Who Eat Peanuts Early May Avoid Allergy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              +
              +
              + + + + + +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              Skip to content + + +
              +
              + + + +
              + +
              +
              + +
              +
              +
              +
              + +
              +
              +
              +
              +
              +

              Allergies Health Center

              + +
              +
              + +
              +
              +
              +
              +
              +
              +
              + + + +
              +
              + +
              + +
              +
              Font Size
              +
              +
              A + +
              +
              A + +
              +
              A + +
              +
              +
              +
              + +
              + + + +
              +

              Babies Who Eat Peanuts Early May Avoid Allergy

              + +
              +
              By +
              WebMD Health News
              +
              Reviewed by Hansa D. Bhargava, MD +
              +
              +

              + +

              +

              Feb. 23, 2015 -- Life-threatening peanut allergies have mysteriously been + on the rise in the past decade, with little hope for a cure.

              +

              But a groundbreaking new study may offer a way to stem that rise, while + another may offer some hope for those who are already allergic.

              +

              Parents have been told for years to avoid giving foods containing peanuts + to babies for fear of triggering an allergy. Now research shows the opposite + is true: Feeding babies snacks made with peanuts before their first birthday + appears to prevent that from happening.

              +

              The study is published in the New England Journal of Medicine, and + it was presented at the annual meeting of the American Academy of Allergy, + Asthma and Immunology in Houston. It found that among children at high + risk for getting peanut allergies, eating peanut snacks by 11 months of + age and continuing to eat them at least three times a week until age 5 + cut their chances of becoming allergic by more than 80% compared to kids + who avoided peanuts. Those at high risk were already allergic to egg, they + had the skin condition eczema, or + both.

              +

              Overall, about 3% of kids who ate peanut butter or peanut snacks before + their first birthday got an allergy, compared to about 17% of kids who + didn’t eat them.

              +

              “I think this study is an astounding and groundbreaking study, really,” + says Katie Allen, MD, PhD. She's the director of the Center for Food and + Allergy Research at the Murdoch Children’s Research Institute in Melbourne, + Australia. Allen was not involved in the research.

              +

              Experts say the research should shift thinking about how kids develop + food allergies, and it should change the guidance doctors give to + parents.

              +

              Meanwhile, for children and adults who are already allergic to peanuts, + another study presented at the same meeting held out hope of a treatment.

              +

              A new skin patch called Viaskin allowed people with peanut allergies to + eat tiny amounts of peanuts after they wore it for a year.

              +

              + +

              A Change in Guidelines?

              + +

              Allergies to peanuts and other foods are on the rise. In the U.S., more + than 2% of people react to peanuts, a 400% increase since 1997. And reactions + to peanuts and other tree nuts can be especially severe. Nuts are the main + reason people get a life-threatening problem called anaphylaxis.

              +
              +
              +
              + +
              +
              +
              1 + | + 2 + + | 3 + + | 4 + + | 5 + + +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              + +
              + + + + + + +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + + + + + + +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +

              Today on WebMD

              + +
              +
              + man blowing nose + + + +
              Make these tweaks to your diet, home, and lifestyle.
              +
              +
              + Allergy capsule + + + +
              Breathe easier with these products.
              +
              +
               
              +
              + cat on couch + + + +
              Live in harmony with your cat or dog.
              +
              +
              + Woman sneezing with tissue in meadow + + + +
              Which ones affect you?
              +
              +
               
              +
              +
              + + +
              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              +
              + +
              +

              + +
              +
              + blowing nose + + +
              Article
              + +
              +
              + woman with sore throat + + +
              Article
              + +
              +
               
              +
              + lone star tick + + +
              Slideshow
              + +
              +
              + Woman blowing nose + + +
              Slideshow
              + +
              +
               
              + + +
              +
              +
              +
              + +
              + +
              +
              +

              Send yourself a link to download the app.

              +
              + +
              +
              + +
              +
              +
              +
              +
              Loading ...
              +

              Please wait...

              +
              +
              +

              This feature is temporarily unavailable. Please try again later.

              +
              +
              +

              Thanks!

              + +

              Now check your email account on your mobile phone to download your new + app.

              +
              +
              + +
              +
              +
              +

              + +
              +
              + cat lying on shelf + + +
              Article
              + +
              +
              + Allergy prick test + + +
              VIDEO
              + +
              +
               
              +
              + Man sneezing into tissue + + +
              Assessment
              + +
              +
              + Woman holding feather duster up to face, twitching + + +
              Quiz
              + +
              +
               
              + + +
              +
              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-images.json new file mode 100644 index 000000000..2b266e478 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/img.webmd.com\/dtmcms\/live\/webmd\/consumer_assets\/site_images\/miscellaneous\/webmd_FB_logo_bluebkgrd.jpg?v=1" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-metadata.json new file mode 100644 index 000000000..9fee7bc3c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By Kelli Miller\n WebMD Health News", + "Direction": null, + "Excerpt": "Drug-resistant bacteria, dubbed", + "Image": "http:\/\/img.webmd.com\/dtmcms\/live\/webmd\/consumer_assets\/site_images\/miscellaneous\/webmd_FB_logo_bluebkgrd.jpg?v=1", + "Title": "Superbugs: What They Are and How You Get Them", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected.html new file mode 100644 index 000000000..d9e181691 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected.html @@ -0,0 +1,23 @@ +
              + + + + + + + +

              April 17, 2015 -- Imagine being sick in the hospital with a bacterial infection and doctors can't stop it from spreading. This so-called "superbug" scenario is not science fiction. It's an urgent, worldwide worry that is prompting swift action.

              +

              Every year, about 2 million people get sick from a superbug, according to the CDC. About 23,000 die. Earlier this year, an outbreak of CRE (carbapenem-resistant enterobacteriaceae) linked to contaminated medical tools sickened 11 people at two Los-Angeles area hospitals. Two people died, and more than 200 others may have been exposed.

              +

              The White House recently released a comprehensive plan outlining steps to combat drug-resistant bacteria. The plan identifies three "urgent" and several "serious" threats. We asked infectious disease experts to explain what some of them are and when to worry.

              + + + +

              But First: What's a Superbug?

              +

              It's a term coined by the media to describe bacteria that cannot be killed using multiple antibiotics. "It resonates because it's scary," says Stephen Calderwood, MD, president of the Infectious Diseases Society of America. "But in fairness, there is no real definition."

              +

              Instead, doctors often use phrases like "multidrug-resistant bacteria." That's because a superbug isn't necessarily resistant to all antibiotics. It refers to bacteria that can't be treated using two or more, says Brian K. Coombes, PhD, of McMaster University in Ontario.

              +

              Any species of bacteria can turn into a superbug.

              +

              Misusing antibiotics (such as taking them when you don't need them or not finishing all of your medicine) is the "single leading factor" contributing to this problem, the CDC says. The concern is that eventually doctors will run out of antibiotics to treat them.

              +

              "What the public should know is that the more antibiotics you’ve taken, the higher your superbug risk," says Eric Biondi, MD, who runs a program to decrease unnecessary antibiotic use. "The more encounters you have with the hospital setting, the higher your superbug risk."

              +

              "Superbugs should be a concern to everyone," Coombes says. "Antibiotics are the foundation on which all modern medicine rests. Cancer chemotherapy, organ transplants, surgeries, and childbirth all rely on antibiotics to prevent infections. If you can't treat those, then we lose the medical advances we have made in the last 50 years."

              +

              Here are some of the growing superbug threats identified in the 2015 White House report.

              +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/source.html new file mode 100644 index 000000000..d7b374b7c --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/source.html @@ -0,0 +1,1299 @@ + + + + + Superbugs: What They Are and How You Get Them + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              +
              +
              + + + + + +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              Skip to content + + + + + +
              +
              + +
              +
              +
              +
              + +
              +
              +
              +
              +
              +

              Information and Resources

              +
              + +
              +
              +
              +
              +
              +
              +
              + +
              +
              Font Size
              +
              +
              A
              +
              A
              +
              A
              +
              +
              +
              + +
              + + + +
              +

              Superbugs: What They Are and How You Get Them

              +
              +
              By +
              WebMD Health News
              + +
              +

              +

              +

              April 17, 2015 -- Imagine being sick in the hospital with a bacterial infection and doctors can't stop it from spreading. This so-called "superbug" scenario is not science fiction. It's an urgent, worldwide worry that is prompting swift action.

              +

              Every year, about 2 million people get sick from a superbug, according to the CDC. About 23,000 die. Earlier this year, an outbreak of CRE (carbapenem-resistant enterobacteriaceae) linked to contaminated medical tools sickened 11 people at two Los-Angeles area hospitals. Two people died, and more than 200 others may have been exposed.

              +

              The White House recently released a comprehensive plan outlining steps to combat drug-resistant bacteria. The plan identifies three "urgent" and several "serious" threats. We asked infectious disease experts to explain what some of them are and when to worry.

              +

              + + +
              + +

              But First: What's a Superbug?

              +

              It's a term coined by the media to describe bacteria that cannot be killed using multiple antibiotics. "It resonates because it's scary," says Stephen Calderwood, MD, president of the Infectious Diseases Society of America. "But in fairness, there is no real definition."

              +

              Instead, doctors often use phrases like "multidrug-resistant bacteria." That's because a superbug isn't necessarily resistant to all antibiotics. It refers to bacteria that can't be treated using two or more, says Brian K. Coombes, PhD, of McMaster University in Ontario.

              +

              Any species of bacteria can turn into a superbug.

              +

              Misusing antibiotics (such as taking them when you don't need them or not finishing all of your medicine) is the "single leading factor" contributing to this problem, the CDC says. The concern is that eventually doctors will run out of antibiotics to treat them.

              +

              "What the public should know is that the more antibiotics you’ve taken, the higher your superbug risk," says Eric Biondi, MD, who runs a program to decrease unnecessary antibiotic use. "The more encounters you have with the hospital setting, the higher your superbug risk."

              +

              "Superbugs should be a concern to everyone," Coombes says. "Antibiotics are the foundation on which all modern medicine rests. Cancer chemotherapy, organ transplants, surgeries, and childbirth all rely on antibiotics to prevent infections. If you can't treat those, then we lose the medical advances we have made in the last 50 years."

              +

              Here are some of the growing superbug threats identified in the 2015 White House report.

              +
              +
              +
              + +
              +
              +
              1 | 2 | 3 + +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              + +
              + + + + + + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +

              WebMD Video: Now Playing

              +
              + +
              +
              +
              + +

              + Click here to wach video: Dirty Truth About Hand Washing +

              +

              Which sex is the worst about washing up? Why is it so important? We’ve got the dirty truth on how and when to wash your hands.

              +

              + Click here to watch video: Dirty Truth About Hand Washing +

              +
              +
              +
              + + + + + + + + +
              +
              + +
              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              + + + + + \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-images.json new file mode 100644 index 000000000..2ad255671 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-images.json @@ -0,0 +1,6 @@ +[ + "https:\/\/vignette.wikia.nocookie.net\/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9\/thumbnail-down\/width\/1280\/height\/720", + "https:\/\/vignette.wikia.nocookie.net\/e80dae8a-b955-43f6-8ada-f023385e622b\/scale-to-width-down\/627", + "https:\/\/vignette.wikia.nocookie.net\/375e0e5a-170d-4560-8f20-240c9f0624e9\/scale-to-width-down\/627", + "https:\/\/vignette.wikia.nocookie.net\/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9\/scale-to-width-down\/627" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-metadata.json new file mode 100644 index 000000000..ec9aa476f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "James Akinaka", + "Direction": null, + "Excerpt": "As a 40th birthday present to the Star Wars Saga and its fans, Lucasfilm could re-release the original versions of the original trilogy films.", + "Image": "https:\/\/vignette.wikia.nocookie.net\/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9\/thumbnail-down\/width\/1280\/height\/720", + "Title": "'Star Wars' Original Cuts Might Get Released for 40th Anniversary", + "SiteName": "Fandom powered by Wikia" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected.html new file mode 100644 index 000000000..de18ee3f3 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected.html @@ -0,0 +1,26 @@ +
              +

              Although Lucasfilm is already planning a birthday bash for the Star Wars Saga at Celebration Orlando this April, fans might get another present for the saga’s 40th anniversary. According to fan site MakingStarWars.net, rumors abound that Lucasfilm might re-release the unaltered cuts of the saga’s original trilogy.

              +

              If the rumors are true, this is big news for Star Wars fans. Aside from limited VHS releases, the unaltered cuts of the original trilogy films haven’t been available since they premiered in theaters in the 1970s and ’80s. If Lucasfilm indeed re-releases the films’ original cuts, then this will be the first time in decades that fans can see the films in their original forms. Here’s what makes the unaltered cuts of the original trilogy so special.

              +

              The Star Wars Special Editions Caused Controversy + star wars han solo +

              +

              Thanks to the commercial success of Star Wars, George Lucas has revisited and further edited his films for re-releases. The most notable — and controversial — release were the Special Editions of the original trilogy. In 1997, to celebrate the saga’s 20th anniversary, Lucasfilm spent a total of $15 million to remaster A New Hope, The Empire Strikes Back, and Return of the Jedi. The Special Editions had stints in theaters before moving to home media.

              +

              Although most of the Special Editions’ changes were cosmetic, others significantly affected the plot of the films. The most notable example is the “Han shot first” scene in A New Hope. As a result, the Special Editions generated significant controversy among Star Wars fans. Many fans remain skeptical about George Lucas’s decision to finish each original trilogy film “the way it was meant to be.”

              +

              + star wars +

              +

              While the Special Editions represent the most significant edits to the original trilogy, the saga has undergone other changes. Following up on the saga’s first Blu-ray release in 2011, Industrial Light & Magic (ILM) began remastering the entire saga in 3D, starting with the prequel trilogy. The Phantom Menace saw a theatrical 3D re-release in 2012, but Disney’s 2012 acquisition of Lucasfilm indefinitely postponed further 3D releases.

              +

              In 2015, Attack of the Clones and Revenge of the Sith received limited 3D showings at Celebration Anaheim. Other than that, it seems as though Disney has decided to refocus Lucasfilm’s efforts to new films. Of course, that’s why the saga has produced new content beginning with The Force Awakens. However, it looks like Lucasfilm isn’t likely to generate 3D versions of the original trilogy anytime soon.

              +

              Why the Original Film Cuts Matter

              +

              + +

              +

              Admittedly, the differences between the original trilogy’s unaltered cuts and the Special Editions appeal to more hardcore fans. Casual fans are less likely to care about whether Greedo or Han Solo shot first. Still, given Star Wars’ indelible impact on pop culture, there’s certainly a market for the original trilogy’s unaltered cuts. They might not be for every Star Wars fan, but many of us care about them.

              +

              ILM supervisor John Knoll, who first pitched the story idea for Rogue One, said last year that ILM finished a brand new 4K restoration print of A New Hope. For that reason, it seems likely that Lucasfilm will finally give diehard fans the original film cuts that they’ve clamored for. There’s no word yet whether the unaltered cuts will be released in theaters or on home media. At the very least, however, fans will likely get them after all this time. After all, the Special Editions marked the saga’s 20th anniversary. Star Wars turns 40 years old this year, so there’s no telling what’s in store.

              +

              + + Would you like to be part of the Fandom team? Join our Fan Contributor Program and share your voice on Fandom.com! + +

              + +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/source.html new file mode 100644 index 000000000..aa1d77164 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/source.html @@ -0,0 +1,19998 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 'Star Wars' Original Cuts Might Get Released for 40th Anniversary | Fandom powered by Wikia + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              +
              + + + + + + + + + + +

              Introducing Fandom Author Profiles

              +

              Bringing you closer to your readers with a customizable profile.

              + Edit Your Profile +
              +
              +
              + +
              + + +
              +
              +
              + + + +
              +
              + + + +
              +
              + +
              +
              + + + +
              + + + + + + + +
              +
              + + Sign In + | + Register +
              + + +
              +
              +
              +
              + +
              +
              +

              TV

              +

              Games

              +

              Movies

              +
              + + + + +
              + +
              + + +
              +
              +
              +
              + + + +
              +

              ‘Star Wars’ Original Cuts Might Get Released for 40th Anniversary

              +
              + + + +
              + +
              + +
              +

              Although Lucasfilm is already planning a birthday bash for the Star Wars Saga at Celebration Orlando this April, fans might get another present for the saga’s 40th anniversary. According to fan site MakingStarWars.net, rumors abound that Lucasfilm might re-release the unaltered cuts of the saga’s original trilogy.

              +

              If the rumors are true, this is big news for Star Wars fans. Aside from limited VHS releases, the unaltered cuts of the original trilogy films haven’t been available since they premiered in theaters in the 1970s and ’80s. If Lucasfilm indeed re-releases the films’ original cuts, then this will be the first time in decades that fans can see the films in their original forms. Here’s what makes the unaltered cuts of the original trilogy so special.

              +

              The Star Wars Special Editions Caused Controversy + star wars han solo +

              +

              Thanks to the commercial success of Star Wars, George Lucas has revisited and further edited his films for re-releases. The most notable — and controversial — release were the Special Editions of the original trilogy. In 1997, to celebrate the saga’s 20th anniversary, Lucasfilm spent a total of $15 million to remaster A New Hope, The Empire Strikes Back, and Return of the Jedi. The Special Editions had stints in theaters before moving to home media.

              +

              Although most of the Special Editions’ changes were cosmetic, others significantly affected the plot of the films. The most notable example is the “Han shot first” scene in A New Hope. As a result, the Special Editions generated significant controversy among Star Wars fans. Many fans remain skeptical about George Lucas’s decision to finish each original trilogy film “the way it was meant to be.”

              +

              + star wars +

              +

              While the Special Editions represent the most significant edits to the original trilogy, the saga has undergone other changes. Following up on the saga’s first Blu-ray release in 2011, Industrial Light & Magic (ILM) began remastering the entire saga in 3D, starting with the prequel trilogy. The Phantom Menace saw a theatrical 3D re-release in 2012, but Disney’s 2012 acquisition of Lucasfilm indefinitely postponed further 3D releases.

              +

              In 2015, Attack of the Clones and Revenge of the Sith received limited 3D showings at Celebration Anaheim. Other than that, it seems as though Disney has decided to refocus Lucasfilm’s efforts to new films. Of course, that’s why the saga has produced new content beginning with The Force Awakens. However, it looks like Lucasfilm isn’t likely to generate 3D versions of the original trilogy anytime soon.

              +

              Why the Original Film Cuts Matter

              +

              + +

              +

              Admittedly, the differences between the original trilogy’s unaltered cuts and the Special Editions appeal to more hardcore fans. Casual fans are less likely to care about whether Greedo or Han Solo shot first. Still, given Star Wars’ indelible impact on pop culture, there’s certainly a market for the original trilogy’s unaltered cuts. They might not be for every Star Wars fan, but many of us care about them.

              +

              ILM supervisor John Knoll, who first pitched the story idea for Rogue One, said last year that ILM finished a brand new 4K restoration print of A New Hope. For that reason, it seems likely that Lucasfilm will finally give diehard fans the original film cuts that they’ve clamored for. There’s no word yet whether the unaltered cuts will be released in theaters or on home media. At the very least, however, fans will likely get them after all this time. After all, the Special Editions marked the saga’s 20th anniversary. Star Wars turns 40 years old this year, so there’s no telling what’s in store.

              +
              +

              + + Would you like to be part of the Fandom team? Join our Fan Contributor Program and share your voice on Fandom.com! + +

              + +
              +
              + + James Akinaka +

              James Akinaka arrives at Fandom by way of Wookieepedia. He covers Star Wars, superheroes, and animation and values bold, inclusive stories. He suffers from a lifelong case of nitpicking and high standards.

              + + +
              +
              + +
              +
              + + +
              +
              +
              +
              +
              +

              Latest Videos

              + +
              +
              +
              + +

              See Batman and Superman Battle in Newest ‘Injustice 2’ Trailer

              +
              +
              +
              +
              +
              + +

              ‘Ghost Recon: Wildlands’ Open Beta is Now Live

              +
              +
              + +

              Watch the 5-Minute Prologue to ‘Alien: Covenant’

              +
              +
              +
              +
              + +

              Free Xbox Games With Gold Revealed For March 2017

              +
              +
              + +

              ‘Dragon Quest Heroes II’ Release Date Revealed

              +
              +
              +
              +
              +
              +
              +
              +
              +
              +

              Fan Feed

              +
              +
              + +
              + +
                + +
              • + + +
              • +
              • + + +
              • +
              + + +
              +
              +
              + +
              +
              +
              +
              +
              +
              + +
              +
              +
              + + +
              +
              + +
              + Got it! Your favorite fandoms are coming to your inbox.
              +
              +
              + + + + +
              +
              +
              +
              +
              +
              +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-images.json new file mode 100644 index 000000000..81d1c9d4d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-images.json @@ -0,0 +1,9 @@ +[ + "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/7\/76\/Mozilla_Firefox_logo_2013.svg\/220px-Mozilla_Firefox_logo_2013.svg.png", + "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/0\/0d\/SeaMonkey.png", + "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/d\/d7\/Buggie.svg\/220px-Buggie.svg.png", + "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/2\/2a\/London_Mozilla_Workspace.jpg\/220px-London_Mozilla_Workspace.jpg", + "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/0\/0b\/Mozilla_Reps.png\/220px-Mozilla_Reps.png", + "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/e\/e4\/Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg\/220px-Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg", + "http:\/\/upload.wikimedia.org\/wikipedia\/en\/thumb\/4\/4a\/Commons-logo.svg\/30px-Commons-logo.svg.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-metadata.json new file mode 100644 index 000000000..b6e3d76fd --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": "ltr", + "Excerpt": "Mozilla is a free-software community, created in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, with only minor exceptions.[1] The community is supported institutionally by the Mozilla Foundation and its tax-paying subsidiary, the Mozilla Corporation.[2]", + "Image": null, + "Title": "Mozilla - Wikipedia", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected.html new file mode 100644 index 000000000..8de3ffabc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected.html @@ -0,0 +1,427 @@ +
              + +

              Mozilla is a free-software community, created in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, with only minor exceptions.[1] The community is supported institutionally by the Mozilla Foundation and its tax-paying subsidiary, the Mozilla Corporation.[2]

              +

              Mozilla produces many products such as the Firefox web browser, Thunderbird e-mail client, Firefox Mobile web browser, Firefox OS mobile operating system, Bugzilla bug tracking system and other projects.

              + + + +

              History[edit] +

              +

              On January 23, 1998, Netscape made two announcements: first, that Netscape Communicator will be free; second, that the source code will also be free.[3] One day later, Jamie Zawinski from Netscape registered mozilla.org.[4] The project was named Mozilla after the original code name of the Netscape Navigator browser which is a blending of "Mosaic and Godzilla"[5] and used to co-ordinate the development of the Mozilla Application Suite, the open source version of Netscape's internet software, Netscape Communicator.[6][7] Jamie Zawinski says he came up with the name "Mozilla" at a Netscape staff meeting.[8][9] A small group of Netscape employees were tasked with coordination of the new community.

              +

              Originally, Mozilla aimed to be a technology provider for companies, such as Netscape, who would commercialize their open source code.[10] When AOL (Netscape's parent company) greatly reduced its involvement with Mozilla in July 2003, the Mozilla Foundation was designated the legal steward of the project.[11] Soon after, Mozilla deprecated the Mozilla Suite in favor of creating independent applications for each function, primarily the Firefox web browser and the Thunderbird email client, and moved to supply them directly to the public.[12]

              +

              Recently, Mozilla's activities have expanded to include Firefox on mobile platforms (primarily Android),[13] a mobile OS called Firefox OS,[14] a web-based identity system called Mozilla Persona and a marketplace for HTML5 applications.[15]

              +

              In a report released in November 2012, Mozilla reported that their total revenue for 2011 was $163 million, which was up 33% from $123 million in 2010. Mozilla noted that roughly 85% of their revenue comes from their contract with Google.[16]

              +

              At the end of 2013, Mozilla announced a deal with Cisco Systems whereby Firefox would download and use a Cisco-provided binary build of an open source[17]codec to play the proprietary H.264 video format.[18][19] As part of the deal, Cisco would pay any patent licensing fees associated with the binaries that it distributes. Mozilla's CTO, Brendan Eich, acknowledged that this is "not a complete solution" and isn't "perfect".[20] An employee in Mozilla's video formats team, writing in an unofficial capacity, justified[21] it by the need to maintain their large user base, which would be necessary in future battles for truly free video formats.

              +

              In December 2013, Mozilla announced funding for the development of non-free games[22] through its Game Creator Challenge. However, even those games that may be released under a non-free software or open source license must be made with open web technologies and Javascript as per the work criteria outlined in the announcement.

              +

              Eich CEO promotion controversy[edit] +

              +

              On March 24, 2014, Mozilla promoted Brendan Eich to the role of CEO. This led to boycotts and protests from the LGBT community and its supporters, as Eich previously donated US$1,000[23] in 2008 in support of California's Proposition 8, a California ballot proposition and state constitutional amendment in opposition to same-sex marriage.[24] Eich's donation first became public knowledge in 2012, while he was Mozilla’s chief technical officer, leading to angry responses on Twitter—including the use of the hashtag "#wontworkwithbigots".[25]

              +

              Protests also emerged in 2014 following the announcement of Eich's appointment as CEO of Mozilla. U.S. companies OkCupid and CREDO Mobile received media coverage for their objections, with the former asking its users to boycott the browser,[26] while Credo amassed 50,000 signatures for a petition that called for Eich's resignation

              +

              Due to the controversy, Eich voluntarily stepped down on April 3, 2014[27] and Mitchell Baker, executive chairwoman of Mozilla Corporation, posted a statement on the Mozilla blog: "We didn’t move fast enough to engage with people once the controversy started. Mozilla believes both in equality and freedom of speech. Equality is necessary for meaningful speech. And you need free speech to fight for equality."[28] Eich's resignation promoted a larger backlash from conservatives who felt he had been forced out of the company internally.[citation needed]

              +

              OkCupid co-founder and CEO Sam Yagan had also donated $500[29] to Republican candidate Chris Cannon who proceeded to vote for multiple measures viewed as "anti-gay", including the banning of same-sex marriage.[30][31][32][33] Yagan claims he did not know about Cannon's stance on gay rights and that his contribution was due to the candidate being the ranking Republican participating in the House subcommittee that oversaw Internet and Intellectual Property matters.[34][35][36][37][38]

              +

              Reader comments on articles that were published close to the events were divided between support for OkCupid's actions and opposition to them. Supporters claimed the boycott was justified and saw OkCupid's actions as a firm statement of opposition to intolerance towards the gay community. Opponents saw OkCupid's actions as hypocritical, since Eich is also the inventor of JavaScript, which is still required to browse OkCupid's website, and felt that users should not be punished for the actions of Mozilla and suspected that OkCupid's actions were a publicity stunt.[36][39]

              +

              Values[edit] +

              +

              According to Mozilla's manifesto,[40] which outlines goals, principles, and a pledge, "The Mozilla project uses a community-based approach to create world-class open source software and to develop new types of collaborative activities". Mozilla's manifesto mentions only its beliefs in regards to the Internet and Internet privacy, and has no mention of any political or social viewpoints.

              +

              Pledge[edit] +

              +

              According to the Mozilla Foundation:[41]

              +
              +

              The Mozilla Foundation pledges to support the Mozilla Manifesto in its activities. Specifically, we will:

              +
              • Build and enable open-source technologies and communities that support the Manifesto’s principles;
              • +
              • Build and deliver great consumer products that support the Manifesto’s principles;
              • +
              • Use the Mozilla assets (intellectual property such as copyrights and trademarks, infrastructure, funds, and reputation) to keep the Internet an open platform;
              • +
              • Promote models for creating economic value for the public benefit; and
              • +
              • Promote the Mozilla Manifesto principles in public discourse and within the Internet industry.
              • +
              +

              Software[edit] +

              +
              +
              +

              +
              +
              +

              Firefox[edit] +

              + +

              Firefox is a web browser, and is Mozilla's flagship software product. It is available in both desktop and mobile versions. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.[42] As of late 2015, Firefox has approximately 10-11% of worldwide usage share of web browsers, making it the 4th most-used web browser.[43][44][45]

              +

              Firefox began as an experimental branch of the Mozilla codebase by Dave Hyatt, Joe Hewitt and Blake Ross. They believed the commercial requirements of Netscape's sponsorship and developer-driven feature creep compromised the utility of the Mozilla browser.[46] To combat what they saw as the Mozilla Suite's software bloat, they created a stand-alone browser, with which they intended to replace the Mozilla Suite.

              +

              Firefox was originally named Phoenix but the name was changed so as to avoid trademark conflicts with Phoenix Technologies. The initially-announced replacement, Firebird, provoked objections from the Firebird project community.[47][48] The current name, Firefox, was chosen on February 9, 2004.[49]

              +

              Firefox Mobile[edit] +

              + +

              Firefox Mobile (codenamed Fennec) is the build of the Mozilla Firefox web browser for devices such as smartphones and tablet computers.

              +

              Firefox Mobile uses the same Gecko layout engine as Mozilla Firefox. For example, version 1.0 used the same engine as Firefox 3.6, and the following release, 4.0, shared core code with Firefox 4.0. Its features include HTML5 support, Firefox Sync, add-ons support and tabbed browsing.[50]

              +

              Firefox Mobile is currently available for Android 2.2 and above devices with an ARMv7 or ARMv6 CPU.[51] The x86 architecture is not officially supported.[52]Tristan Nitot, president of Mozilla Europe, has said that it's unlikely that an iPhone or a BlackBerry version will be released, citing Apple's iTunes Store application approval policies (which forbid applications competing with Apple's own, and forbid engines which run downloaded code) and BlackBerry's limited operating system as the reasons.[53]

              +

              Firefox OS[edit] +

              + +

              Firefox OS (project name: Boot to Gecko also known as B2G) is an open source operating system in development by Mozilla that aims to support HTML5 apps written using "open Web" technologies rather than platform-specific native APIs. The concept behind Firefox OS is that all user-accessible software will be HTML5 applications, that use Open Web APIs to access the phone's hardware directly via JavaScript.[54]

              +

              Some devices using this OS include[55] Alcatel One Touch Fire, ZTE Open, LG Fireweb.

              +

              Thunderbird[edit] +

              + +

              Thunderbird is a free, open source, cross-platform email and news client developed by the volunteers of the Mozilla Community.

              +

              On July 16, 2012, Mitchell Baker announced that Mozilla's leadership had come to the conclusion that on-going stability was the most important thing for Thunderbird and that innovation in Thunderbird was no longer a priority for Mozilla. In that update Baker also suggested that Mozilla had provided a pathway for community to innovate around Thunderbird if the community chooses.[56]

              +

              SeaMonkey[edit] +

              + +
              +
              +

              +
              +
              +

              SeaMonkey (formerly the Mozilla Application Suite) is a free and open source cross platform suite of Internet software components including a web browser component, a client for sending and receiving email and USENET newsgroup messages, an HTML editor (Mozilla Composer) and the ChatZilla IRC client.

              +

              On March 10, 2005, the Mozilla Foundation announced that it would not release any official versions of Mozilla Application Suite beyond 1.7.x, since it had now focused on the standalone applications Firefox and Thunderbird.[57] SeaMonkey is now maintained by the SeaMonkey Council, which has trademarked the SeaMonkey name with help from the Mozilla Foundation.[58] The Mozilla Foundation provides project hosting for the SeaMonkey developers.

              + +

              Bugzilla[edit] +

              + +
              +
              +

              +
              +
              +

              Bugzilla is a web-based general-purpose bug tracking system, which was released as open source software by Netscape Communications in 1998 along with the rest of the Mozilla codebase, and is currently stewarded by Mozilla. It has been adopted by a variety of organizations for use as a bug tracking system for both free and open source software and proprietary projects and products, including the Mozilla Foundation, the Linux kernel, GNOME, KDE, Red Hat, Novell, Eclipse and LibreOffice.[59]

              +

              Components[edit] +

              +

              NSS[edit] +

              + +

              Network Security Services (NSS) comprises a set of libraries designed to support cross-platform development of security-enabled client and server applications. NSS provides a complete open-source implementation of crypto libraries supporting SSL and S/MIME. NSS was previously tri-licensed under the Mozilla Public License 1.1, the GNU General Public License, and the GNU Lesser General Public License, but upgraded to GPL-compatible MPL 2.0.

              +

              AOL, Red Hat, Sun Microsystems/Oracle Corporation, Google and other companies and individual contributors have co-developed NSS and it is used in a wide range of non-Mozilla products including Evolution, Pidgin, and Apache OpenOffice.

              +

              SpiderMonkey[edit] +

              + +

              SpiderMonkey is the original JavaScript engine developed by Brendan Eich when he invented JavaScript in 1995 as a developer at Netscape. It became part of the Mozilla product family when Mozilla inherited Netscape's code-base in 1998. In 2011, Eich transferred the nominal ownership of the SpiderMonkey code and project to Dave Mandelin.[60]

              +

              SpiderMonkey is a cross-platform engine written in C++ which implements ECMAScript, a standard developed from JavaScript.[60][61] It comprises an interpreter, several just-in-time compilers, a decompiler and a garbage collector. Products which embed SpiderMonkey include Firefox, Thunderbird, SeaMonkey, and many non-Mozilla applications.[62]

              +

              Rhino[edit] +

              + +

              Rhino is an open source JavaScript engine managed by the Mozilla Foundation. It is developed entirely in Java. Rhino converts JavaScript scripts into Java classes. Rhino works in both compiled and interpreted mode.[63]

              +

              Gecko[edit] +

              + +

              Gecko is a layout engine that supports web pages written using HTML, SVG, and MathML. Gecko is written in C++ and uses NSPR for platform independence. Its source code is licensed under the Mozilla Public License.

              +

              Firefox uses Gecko both for rendering web pages and for rendering its user interface. Gecko is also used by Thunderbird, SeaMonkey, and many non-Mozilla applications.

              +

              Rust[edit] +

              + +

              Rust is a compiled programming language being developed by Mozilla Research. It is designed for safety, concurrency, and performance. Rust is intended for creating large and complex software which needs to be both safe against exploits and fast.

              +

              Rust is being used in an experimental layout engine, Servo, which is developed by Mozilla and Samsung. Servo is not used in any consumer-oriented browsers yet. However, the Servo project developers plan for parts of the Servo source code to be merged into Gecko, and Firefox, incrementally.[64][65]

              +

              XULRunner[edit] +

              + +

              XULRunner is a software platform and technology experiment by Mozilla, that allows applications built with the same technologies used by Firefox extensions (XPCOM, Javascript, HTML, CSS, XUL) to be run natively as desktop applications, without requiring Firefox to be installed on the user's machine. XULRunner binaries are available for the Windows, GNU/Linux and OS X operating systems, allowing such applications to be effectively cross platform.

              +

              pdf.js[edit] +

              + +

              Pdf.js is a library developed by Mozilla that allows in-browser rendering of pdf documents using the HTML5 Canvas and Javascript. It is included by default in recent versions of Firefox, allowing the browser to render pdf documents without requiring an external plugin; and it is available separately as an extension named "PDF Viewer" for Firefox for Android, SeaMonkey, and the Firefox versions which don't include it built-in. It can also be included as part of a website's scripts, to allow pdf rendering for any browser that implements the required HTML5 features and can run Javascript.

              +

              Shumway[edit] +

              + +

              Shumway is an open source replacement for the Adobe Flash Player, developed by Mozilla since 2012, using open web technologies as a replacement for Flash technologies. It uses Javascript and HTML5 Canvas elements to render Flash and execute Actionscript. It is included by default in Firefox Nightly and can be installed as an extension for any recent version of Firefox. The current implementation is limited in its capabilities to render Flash content outside simple projects.

              +

              Other activities[edit] +

              +

              Mozilla VR[edit] +

              +

              Mozilla VR is a team focused on bringing Virtual reality tools, specifications, and standards to the open Web.[66] Mozilla VR maintains A-Frame (VR), a web framework for building VR experiences, and works on advancing WebVR support within web browsers.

              +

              Mozilla Persona[edit] +

              + +

              Mozilla Persona is a secure, cross-browser website authentication mechanism which allows a user to use a single username and password (or other authentication method) to log in to multiple sites.[67] Mozilla Persona will be shutting down on November 30, 2016.[68]

              +

              Mozilla Location Service[edit] +

              + +

              This open source crowdsourced geolocation service was started by Mozilla in 2013 and offers a free API.

              +

              Webmaker[edit] +

              +

              Mozilla Webmaker is Mozilla's educational initiative, Webmaker's goal is to "help millions of people move from using the web to making the web." As part of Mozilla’s non-profit mission, Webmaker aims "to help the world increase their understanding of the web, take greater control of their online lives, and create a more web literate planet."[69][70][70]

              +

              Mozilla Developer Network[edit] +

              + +

              Mozilla maintains a comprehensive developer documentation website called the Mozilla Developer Network which contains information about web technologies including HTML, CSS, SVG, JavaScript, as well Mozilla-specific information. In addition, Mozilla publishes a large number of videos about web technologies and the development of Mozilla projects on the Air Mozilla website.[71][72]

              +

              [edit] +

              +

              The Mozilla Community consists of over 40,000 active contributors from across the globe[citation needed]. It includes both paid employees and volunteers who work towards the goals set forth[40] in the Mozilla Manifesto. Many of the sub-communities in Mozilla have formed around localization efforts for Mozilla Firefox, and the Mozilla web properties.

              +

              Local communities[edit] +

              +
              +
              +

              +
              +
              +

              There are a number of sub-communities that exist based on their geographical locations, where contributors near each other work together on particular activities, such as localization, marketing, PR and user support.

              +

              Mozilla Reps[edit] +

              +
              +
              +

              +
              +
              +

              The Mozilla Reps program aims to empower and support volunteer Mozillians who want to become official representatives of Mozilla in their region/locale.

              +

              The program provides a simple framework and a specific set of tools to help Mozillians to organize and/or attend events, recruit and mentor new contributors, document and share activities, and support their local communities better.

              +

              When joining the program, a Mozilla Rep agrees to take on the following responsibilities:

              +

              Conferences and events[edit] +

              +

              Mozilla Festival[edit] +

              +
              +
              +

              +

              + Speakers from the Knight Foundation discuss the future of news at the 2011 Mozilla Festival in London.

              +
              +
              +

              The Mozilla Festival is an annual event where hundreds of passionate people explore the Web, learn together and make things that can change the world. With the emphasis on making—the mantra of the Festival is "less yack, more hack." Journalists, coders, filmmakers, designers, educators, gamers, makers, youth and anyone else, from all over the world, are encouraged to attend, with attendees from more than 40 countries, working together at the intersection between freedom, the Web, and that years theme.

              +

              The event revolves around design challenges which address key issues based on the chosen theme for that years festival. In previous years the Mozilla Festival has focused on Learning, and Media, with the 2012 festival being based around making. The titles of the festival revolve around the main theme, freedom (as in freedom of speech not free beer), and the Web.

              +

              MozCamps[edit] +

              +

              MozCamps are the critical part of the Grow Mozilla initiative which aims to grow the Mozilla Community. These camps aim to bring core contributors from around the world together. They are intensive multi-day summits that include keynote speeches by Mozilla leadership, workshops and breakout sessions (led by paid and unpaid staff), and fun social outings. All of these activities combine to reward contributors for their hard work, engage them with new products and initiatives, and align all attendees on Mozilla's mission.

              +

              Mozilla Summit[edit] +

              +

              Mozilla Summit are the global event with active contributors and Mozilla employees to develop a shared understanding of Mozilla's mission together. Over 2,000 people representing 90 countries and 114 languages gathered in Santa Clara, Toronto and Brussels in 2013. Mozilla has since its last summit in 2013 replaced summits with all-hands where both employees and volunteers come together to collaborate the event is a scaled down version of Mozilla Summit.

              +

              See also[edit] +

              + +

              References[edit] +

              +
              +
              1. ^ For exceptions, see "Values" section below
              2. +
              3. ^ "About the Mozilla Corporation". Mozilla Foundation. + +
              4. +
              5. ^ "Freeing the Source: The Story of Mozilla". Open Sources: Voices from the Open Source Revolution. Retrieved 2016-05-01. + +
              6. +
              7. ^ "Mozilla.org WHOIS, DNS, & Domain Info". DomainTools. Retrieved 1 May 2016. + +
              8. +
              9. ^ Payment, S. (2007). Marc Andreessen and Jim Clark: The Founders of Netscape. Rosen Publishing Group. ISBN 9781404207196. + +
              10. +
              11. ^ "Netscape Announces mozilla.org, a Dedicated Team and Web Site Supporting Development of Free Client Source Code". Netscape. Archived from the original on October 4, 2002. Retrieved 2012-08-21. +
              12. +
              13. ^ "Mac vendors ponder Netscape gambit.". Macworld. 1 May 1998. Retrieved 2012-08-19. + +
              14. +
              15. ^ Zawinski, Jamie (1996). "nscp dorm". Retrieved 2007-10-12. + +
              16. +
              17. ^ Dave Titus with assistance from Andrew Wong. "How was Mozilla born". + +
              18. +
              19. ^ "Introduction to Mozilla Source Code". Mozilla. Retrieved 2012-08-18. However, mozilla.org wants to emphasize that these milestones are being produced for testing purposes only. + +
              20. +
              21. ^ "mozilla.org Announces Launch of the Mozilla Foundation to Lead Open-Source Browser Efforts". Retrieved 2012-08-18. + +
              22. +
              23. ^ Eich, Brendan; David Hyatt (April 2, 2003). "mozilla development roadmap". Mozilla. Retrieved 2009-08-02. + +
              24. +
              25. ^ "Better Browsing on Your Android Smartphone". AllThingsD. Retrieved 2012-08-18. + +
              26. +
              27. ^ "Mozilla Releases Test Version of Firefox OS". PC Magazine. Retrieved 2012-08-18. + +
              28. +
              29. ^ "Mozilla Marketplace is live, lets you run web apps like desktop programs". Engadget. Retrieved 2012-08-18. + +
              30. +
              31. ^ Lardinois, Frederic (November 15, 2012). "Mozilla Releases Annual Report For 2011: Revenue Up 33% To $163M, Majority From Google". techcrunch.com. + +
              32. +
              33. ^ "cisco/openh264 · GitHub". github.com. Retrieved 2014-04-05. + +
              34. +
              35. ^ "Mozilla will add H.264 to Firefox as Cisco makes eleventh-hour push for WebRTC's future — Tech News and Analysis". gigaom.com. Retrieved 2014-04-05. + +
              36. +
              37. ^ "Cisco to release open-source H.264 codec, Mozilla makes tactical retreat - TechRepublic". techrepublic.com. Retrieved 2014-04-05. + +
              38. +
              39. ^ "Video Interoperability on the Web Gets a Boost From Cisco's H.264 Codec". Of course, this is not a not a complete solution. In a perfect world, codecs, like other basic Internet technologies such as TCP/IP, HTTP, and HTML, would be fully open and free + +
              40. +
              41. ^ "Comments on Cisco, Mozilla, and H.264". By endorsing Cisco's plan, there's no getting around the fact that we've caved on our principles. That said, principles can't replace being in a practical position to make a difference in the future. - Christopher Montgomery wrote in a personal capacity but works for Mozilla in their codecs team +
              42. +
              43. ^ "Game Creator Challenge -Contest Terms and Conditions". - submissions to the "amateur" category have to be released as free software, but not for the other two categories +
              44. +
              45. ^ "Los Angeles Times - Brendan Eich contribution to Proposition 8". latimes.com. Retrieved 2014-07-01. + +
              46. +
              47. ^ "Gay Firefox developers boycott Mozilla to protest CEO hire [Updated] | Ars Technica". arstechnica.com. Retrieved 2014-04-05. + +
              48. +
              49. ^ Kelly Faircloth (9 April 2012). "Tech Celeb Makes Prop-8 Donation; Internet Goes Berserk". BetaBeat. BetaBeat. Retrieved 2014-04-28. + +
              50. +
              51. ^ "Screenshot of OkCupid's statement towards Firefox users". huffingtonpost.com. Retrieved 2014-07-01. + +
              52. +
              53. ^ "FAQ on CEO Resignation". The Mozilla Blog. Retrieved 2015-04-20. + +
              54. +
              55. ^ Baker, Mitchell (3 April 2014). "Brendan Eich Steps Down as Mozilla CEO". mozilla blog. Mozilla. Retrieved 2014-04-04. + +
              56. +
              57. ^ "opensecrets.org listing of Sam Yagan's contributions to political candidates". opensecrets.org. Retrieved 2014-07-01. + +
              58. +
              59. ^ "ontheissues.org listing of votes cast by Chris Cannon". ontheissues.org. Retrieved 2014-07-01. + +
              60. +
              61. ^ "ontheissues.org listing of votes cast on the permanency of the Patriot Act". ontheissues.org. Retrieved 2014-07-01. + +
              62. +
              63. ^ "ontheissues.org: Chris Cannon on Homeland Security". ontheissues.org. Retrieved 2014-07-01. + +
              64. +
              65. ^ "ontheissues.org: Chris Cannon on Abortion". ontheissues.org. Retrieved 2014-07-01. + +
              66. +
              67. ^ Levintova, Hannah (7 April 2014). "OkCupid's CEO Donated to an Anti-Gay Campaign Once, Too". Hanna Levintova article on motherjones.com. motherjones.com. Retrieved 2014-07-01. + +
              68. +
              69. ^ Lee, Stephanie M. (8 April 2014). "OKCupid CEO once donated to anti-gay politician". Stephanie M. Lee's blog on sfgate.com. sfgate.com. Retrieved 2014-07-01. + +
              70. +
              71. ^ a b "The Hypocrisy Of Sam Yagan & OkCupid". uncrunched.com blog. uncrunched.com. 6 April 2014. Retrieved 2014-07-01. + +
              72. +
              73. ^ Bellware, Kim (31 March 2014). "OKCupid Publicly Rips Mozilla: 'We Wish Them Nothing But Failure'". Kim Bellware article on huffingtonpost.com. huffingtonpost.com. Retrieved 2014-07-01. + +
              74. +
              75. ^ "Mozilla's Appointment Of Brendan Eich As CEO Sparks Controversy After Prop 8 Donation News Re-Emerges". huffingtonpost.com article. huffingtonpost.com. 27 March 2014. Retrieved 2014-07-01. + +
              76. +
              77. ^ Eidelson, Josh (4 April 2014). "OkCupid's gay rights stunt has its limits: Taking a deeper look at the savvy ploy". Josh Eidelson article on salon.com. salon.com. Retrieved 2014-07-01. + +
              78. +
              79. ^ a b "Mozilla Manifesto". Mozilla.org. Retrieved 2012-03-21. + +
              80. +
              81. ^ "The Mozilla Manifesto". Retrieved 24 July 2015. + +
              82. +
              83. ^ "Gecko Layout Engine". download-firefox.org. July 17, 2008. Archived from the original on 2010-11-28. Retrieved 2012-05-10. + +
              84. +
              85. ^ "Web Browser Market Share Trends". W3Counter. Awio Web Services LLC. Retrieved 2012-05-10. + +
              86. +
              87. ^ "Top 5 Browsers". StatCounter Global Stats. StatCounter. Retrieved 2012-05-10. + +
              88. +
              89. ^ "Web browsers (Global marketshare)". Clicky. Roxr Software Ltd. Retrieved 2012-05-10. + +
              90. +
              91. ^ Goodger, Ben (February 6, 2006). "Where Did Firefox Come From?". Inside Firefox. Archived from the original on 2011-06-23. Retrieved 2012-01-07. + +
              92. +
              93. ^ "Mozilla browser becomes Firebird". IBPhoenix. Archived from the original on 2007-09-14. Retrieved 2013-06-10. We at IBPhoenix think that having a browser and a database with the same name in the same space will confuse the market, especially as browsers and databases are often used in the same applications + +
              94. +
              95. ^ Festa, Paul (May 6, 2003). "Mozilla's Firebird gets wings clipped". CNET. Retrieved 2007-01-30. + +
              96. +
              97. ^ Festa, Paul (February 9, 2004). "Mozilla holds 'fire' in naming fight". CNET News. Retrieved 2007-01-24. + +
              98. +
              99. ^ "Mobile features". Mozilla. Retrieved 2012-06-26. + +
              100. +
              101. ^ "Mobile System Requirements". + +
              102. +
              103. ^ "Firefox Mobile supported devices". + +
              104. +
              105. ^ "Mozilla rules out Firefox for iPhone and BlackBerry". + +
              106. +
              107. ^ "Boot to Gecko Project". Mozilla. March 2012. Retrieved 2012-03-30. + +
              108. +
              109. ^ "Firefox OS - Devices & Availability". Mozilla. Retrieved 2015-12-30. + +
              110. +
              111. ^ "Thunderbird: Stability and Community Innovation | Mitchell's Blog". blog.lizardwrangler.com. Retrieved 2015-04-20. + +
              112. +
              113. ^ "Two discontinued browsers". LWN.net. 21 December 2005. Retrieved 2012-08-19. + +
              114. +
              115. ^ "SeaMonkey trademarks registered!". kairo.at. 2007-05-22. Retrieved 2013-06-10. + +
              116. +
              117. ^ "Bugzilla Installation List". Retrieved 2014-09-18. + +
              118. +
              119. ^ a b Eich, Brendan (21 June 2011). "New JavaScript Engine Module Owner". BrendanEich.com. + +
              120. +
              121. ^ "Bug 759422 - Remove use of e4x in account creation". Bugzilla@Mozilla. 2012-08-17. Retrieved 2012-08-18. + +
              122. +
              123. ^ "SpiderMonkey". Mozilla Developer Network. 2012-08-15. Retrieved 2012-08-18. + +
              124. +
              125. ^ "Rhino History". Mozilla Foundation. Retrieved 2008-03-20. + +
              126. +
              127. ^ "Roadmap". Retrieved 10 May 2016. + +
              128. +
              129. ^ Larabel, Michael. "Servo Continues Making Progress For Shipping Components In Gecko, Browser.html". Phoronix.com. Retrieved 10 May 2016. + +
              130. +
              131. ^ "Mozilla VR". Mozilla VR. Retrieved 2016-10-27. + +
              132. +
              133. ^ Persona, Mozilla + +
              134. +
              135. ^ "Persona". Mozilla Developer Network. Retrieved 2016-10-27. + +
              136. +
              137. ^ About Mozilla Webmaker, Mozilla + +
              138. +
              139. ^ a b Alan Henry. "Mozilla Webmaker Teaches You to Build Web Sites, Apps, and More". Lifehacker. Gawker Media. + +
              140. +
              141. ^ "Air Mozilla". Mozilla Wiki. + +
              142. +
              143. ^ "Air Mozilla Reboot, Phase I". + +
              144. +
              +

              Constant downloads failure in firefox

              +

              External links[edit] +

              + + +
              + + Wikimedia Commons has media related to Mozilla.
              + + + + +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/source.html new file mode 100644 index 000000000..1a1338dfb --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/source.html @@ -0,0 +1,1652 @@ + + + + + + Mozilla - Wikipedia + + + + + + + + + + + + + + + + + + + + + + +
              +
              +
              + + +
              + +
              +
              +
              +

              Mozilla

              +
              +
              From Wikipedia, the free encyclopedia
              +
              +
              + Jump to: navigation, search +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              Mozilla
              IndustryOpen-source software
              FoundedFebruary 28, 1998; 18 years ago (1998-02-28) +
              FounderNetscape Communications Corporation
              ProductsMozilla Application Suite
              Divisions + +
              Websitemozilla.org/,%20https://www.mozilla.org/tr/
              +

              Mozilla is a free-software community, created in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, with only minor exceptions.[1] The community is supported institutionally by the Mozilla Foundation and its tax-paying subsidiary, the Mozilla Corporation.[2]

              +

              Mozilla produces many products such as the Firefox web browser, Thunderbird e-mail client, Firefox Mobile web browser, Firefox OS mobile operating system, Bugzilla bug tracking system and other projects.

              +

              + +

              +

              History[edit] +

              +

              On January 23, 1998, Netscape made two announcements: first, that Netscape Communicator will be free; second, that the source code will also be free.[3] One day later, Jamie Zawinski from Netscape registered mozilla.org.[4] The project was named Mozilla after the original code name of the Netscape Navigator browser which is a blending of "Mosaic and Godzilla"[5] and used to co-ordinate the development of the Mozilla Application Suite, the open source version of Netscape's internet software, Netscape Communicator.[6][7] Jamie Zawinski says he came up with the name "Mozilla" at a Netscape staff meeting.[8][9] A small group of Netscape employees were tasked with coordination of the new community.

              +

              Originally, Mozilla aimed to be a technology provider for companies, such as Netscape, who would commercialize their open source code.[10] When AOL (Netscape's parent company) greatly reduced its involvement with Mozilla in July 2003, the Mozilla Foundation was designated the legal steward of the project.[11] Soon after, Mozilla deprecated the Mozilla Suite in favor of creating independent applications for each function, primarily the Firefox web browser and the Thunderbird email client, and moved to supply them directly to the public.[12]

              +

              Recently, Mozilla's activities have expanded to include Firefox on mobile platforms (primarily Android),[13] a mobile OS called Firefox OS,[14] a web-based identity system called Mozilla Persona and a marketplace for HTML5 applications.[15]

              +

              In a report released in November 2012, Mozilla reported that their total revenue for 2011 was $163 million, which was up 33% from $123 million in 2010. Mozilla noted that roughly 85% of their revenue comes from their contract with Google.[16]

              +

              At the end of 2013, Mozilla announced a deal with Cisco Systems whereby Firefox would download and use a Cisco-provided binary build of an open source[17] codec to play the proprietary H.264 video format.[18][19] As part of the deal, Cisco would pay any patent licensing fees associated with the binaries that it distributes. Mozilla's CTO, Brendan Eich, acknowledged that this is "not a complete solution" and isn't "perfect".[20] An employee in Mozilla's video formats team, writing in an unofficial capacity, justified[21] it by the need to maintain their large user base, which would be necessary in future battles for truly free video formats.

              +

              In December 2013, Mozilla announced funding for the development of non-free games[22] through its Game Creator Challenge. However, even those games that may be released under a non-free software or open source license must be made with open web technologies and Javascript as per the work criteria outlined in the announcement.

              +

              Eich CEO promotion controversy[edit] +

              +

              On March 24, 2014, Mozilla promoted Brendan Eich to the role of CEO. This led to boycotts and protests from the LGBT community and its supporters, as Eich previously donated US$1,000[23] in 2008 in support of California's Proposition 8, a California ballot proposition and state constitutional amendment in opposition to same-sex marriage.[24] Eich's donation first became public knowledge in 2012, while he was Mozilla’s chief technical officer, leading to angry responses on Twitter—including the use of the hashtag "#wontworkwithbigots".[25]

              +

              Protests also emerged in 2014 following the announcement of Eich's appointment as CEO of Mozilla. U.S. companies OkCupid and CREDO Mobile received media coverage for their objections, with the former asking its users to boycott the browser,[26] while Credo amassed 50,000 signatures for a petition that called for Eich's resignation

              +

              Due to the controversy, Eich voluntarily stepped down on April 3, 2014[27] and Mitchell Baker, executive chairwoman of Mozilla Corporation, posted a statement on the Mozilla blog: "We didn’t move fast enough to engage with people once the controversy started. Mozilla believes both in equality and freedom of speech. Equality is necessary for meaningful speech. And you need free speech to fight for equality."[28] Eich's resignation promoted a larger backlash from conservatives who felt he had been forced out of the company internally.[citation needed]

              +

              OkCupid co-founder and CEO Sam Yagan had also donated $500[29] to Republican candidate Chris Cannon who proceeded to vote for multiple measures viewed as "anti-gay", including the banning of same-sex marriage.[30][31][32][33] Yagan claims he did not know about Cannon's stance on gay rights and that his contribution was due to the candidate being the ranking Republican participating in the House subcommittee that oversaw Internet and Intellectual Property matters.[34][35][36][37][38]

              +

              Reader comments on articles that were published close to the events were divided between support for OkCupid's actions and opposition to them. Supporters claimed the boycott was justified and saw OkCupid's actions as a firm statement of opposition to intolerance towards the gay community. Opponents saw OkCupid's actions as hypocritical, since Eich is also the inventor of JavaScript, which is still required to browse OkCupid's website, and felt that users should not be punished for the actions of Mozilla and suspected that OkCupid's actions were a publicity stunt.[36][39]

              +

              Values[edit] +

              +

              According to Mozilla's manifesto,[40] which outlines goals, principles, and a pledge, "The Mozilla project uses a community-based approach to create world-class open source software and to develop new types of collaborative activities". Mozilla's manifesto mentions only its beliefs in regards to the Internet and Internet privacy, and has no mention of any political or social viewpoints.

              +

              Pledge[edit] +

              +

              According to the Mozilla Foundation:[41]

              +
              +

              The Mozilla Foundation pledges to support the Mozilla Manifesto in its activities. Specifically, we will:

              +
                +
              • Build and enable open-source technologies and communities that support the Manifesto’s principles;
              • +
              • Build and deliver great consumer products that support the Manifesto’s principles;
              • +
              • Use the Mozilla assets (intellectual property such as copyrights and trademarks, infrastructure, funds, and reputation) to keep the Internet an open platform;
              • +
              • Promote models for creating economic value for the public benefit; and
              • +
              • Promote the Mozilla Manifesto principles in public discourse and within the Internet industry.
              • +
              +
              +

              Software[edit] +

              +
              +
              + +
              +
              + +
              + Firefox logo
              +
              +
              +

              Firefox[edit] +

              +
              Main article: Firefox
              +

              Firefox is a web browser, and is Mozilla's flagship software product. It is available in both desktop and mobile versions. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.[42] As of late 2015, Firefox has approximately 10-11% of worldwide usage share of web browsers, making it the 4th most-used web browser.[43][44][45]

              +

              Firefox began as an experimental branch of the Mozilla codebase by Dave Hyatt, Joe Hewitt and Blake Ross. They believed the commercial requirements of Netscape's sponsorship and developer-driven feature creep compromised the utility of the Mozilla browser.[46] To combat what they saw as the Mozilla Suite's software bloat, they created a stand-alone browser, with which they intended to replace the Mozilla Suite.

              +

              Firefox was originally named Phoenix but the name was changed so as to avoid trademark conflicts with Phoenix Technologies. The initially-announced replacement, Firebird, provoked objections from the Firebird project community.[47][48] The current name, Firefox, was chosen on February 9, 2004.[49]

              +

              Firefox Mobile[edit] +

              +
              Main article: Firefox Mobile
              +

              Firefox Mobile (codenamed Fennec) is the build of the Mozilla Firefox web browser for devices such as smartphones and tablet computers.

              +

              Firefox Mobile uses the same Gecko layout engine as Mozilla Firefox. For example, version 1.0 used the same engine as Firefox 3.6, and the following release, 4.0, shared core code with Firefox 4.0. Its features include HTML5 support, Firefox Sync, add-ons support and tabbed browsing.[50]

              +

              Firefox Mobile is currently available for Android 2.2 and above devices with an ARMv7 or ARMv6 CPU.[51] The x86 architecture is not officially supported.[52] Tristan Nitot, president of Mozilla Europe, has said that it's unlikely that an iPhone or a BlackBerry version will be released, citing Apple's iTunes Store application approval policies (which forbid applications competing with Apple's own, and forbid engines which run downloaded code) and BlackBerry's limited operating system as the reasons.[53]

              +

              Firefox OS[edit] +

              +
              Main article: Firefox OS
              +

              Firefox OS (project name: Boot to Gecko also known as B2G) is an open source operating system in development by Mozilla that aims to support HTML5 apps written using "open Web" technologies rather than platform-specific native APIs. The concept behind Firefox OS is that all user-accessible software will be HTML5 applications, that use Open Web APIs to access the phone's hardware directly via JavaScript.[54]

              +

              Some devices using this OS include[55] Alcatel One Touch Fire, ZTE Open, LG Fireweb.

              +

              Thunderbird[edit] +

              +
              Main article: Mozilla Thunderbird
              +

              Thunderbird is a free, open source, cross-platform email and news client developed by the volunteers of the Mozilla Community.

              +

              On July 16, 2012, Mitchell Baker announced that Mozilla's leadership had come to the conclusion that on-going stability was the most important thing for Thunderbird and that innovation in Thunderbird was no longer a priority for Mozilla. In that update Baker also suggested that Mozilla had provided a pathway for community to innovate around Thunderbird if the community chooses.[56]

              +

              SeaMonkey[edit] +

              +
              Main article: SeaMonkey
              +
              +
              + +
              +
              + +
              + SeaMonkey logo
              +
              +
              +

              SeaMonkey (formerly the Mozilla Application Suite) is a free and open source cross platform suite of Internet software components including a web browser component, a client for sending and receiving email and USENET newsgroup messages, an HTML editor (Mozilla Composer) and the ChatZilla IRC client.

              +

              On March 10, 2005, the Mozilla Foundation announced that it would not release any official versions of Mozilla Application Suite beyond 1.7.x, since it had now focused on the standalone applications Firefox and Thunderbird.[57] SeaMonkey is now maintained by the SeaMonkey Council, which has trademarked the SeaMonkey name with help from the Mozilla Foundation.[58] The Mozilla Foundation provides project hosting for the SeaMonkey developers.

              +
              +

              Bugzilla[edit] +

              +
              Main article: Bugzilla
              +
              +
              + +
              +
              + +
              + Bugzilla logo
              +
              +
              +

              Bugzilla is a web-based general-purpose bug tracking system, which was released as open source software by Netscape Communications in 1998 along with the rest of the Mozilla codebase, and is currently stewarded by Mozilla. It has been adopted by a variety of organizations for use as a bug tracking system for both free and open source software and proprietary projects and products, including the Mozilla Foundation, the Linux kernel, GNOME, KDE, Red Hat, Novell, Eclipse and LibreOffice.[59]

              +

              Components[edit] +

              +

              NSS[edit] +

              + +

              Network Security Services (NSS) comprises a set of libraries designed to support cross-platform development of security-enabled client and server applications. NSS provides a complete open-source implementation of crypto libraries supporting SSL and S/MIME. NSS was previously tri-licensed under the Mozilla Public License 1.1, the GNU General Public License, and the GNU Lesser General Public License, but upgraded to GPL-compatible MPL 2.0.

              +

              AOL, Red Hat, Sun Microsystems/Oracle Corporation, Google and other companies and individual contributors have co-developed NSS and it is used in a wide range of non-Mozilla products including Evolution, Pidgin, and Apache OpenOffice.

              +

              SpiderMonkey[edit] +

              + +

              SpiderMonkey is the original JavaScript engine developed by Brendan Eich when he invented JavaScript in 1995 as a developer at Netscape. It became part of the Mozilla product family when Mozilla inherited Netscape's code-base in 1998. In 2011, Eich transferred the nominal ownership of the SpiderMonkey code and project to Dave Mandelin.[60]

              +

              SpiderMonkey is a cross-platform engine written in C++ which implements ECMAScript, a standard developed from JavaScript.[60][61] It comprises an interpreter, several just-in-time compilers, a decompiler and a garbage collector. Products which embed SpiderMonkey include Firefox, Thunderbird, SeaMonkey, and many non-Mozilla applications.[62]

              +

              Rhino[edit] +

              + +

              Rhino is an open source JavaScript engine managed by the Mozilla Foundation. It is developed entirely in Java. Rhino converts JavaScript scripts into Java classes. Rhino works in both compiled and interpreted mode.[63]

              +

              Gecko[edit] +

              +
              Main article: Gecko (layout engine)
              +

              Gecko is a layout engine that supports web pages written using HTML, SVG, and MathML. Gecko is written in C++ and uses NSPR for platform independence. Its source code is licensed under the Mozilla Public License.

              +

              Firefox uses Gecko both for rendering web pages and for rendering its user interface. Gecko is also used by Thunderbird, SeaMonkey, and many non-Mozilla applications.

              +

              Rust[edit] +

              + +

              Rust is a compiled programming language being developed by Mozilla Research. It is designed for safety, concurrency, and performance. Rust is intended for creating large and complex software which needs to be both safe against exploits and fast.

              +

              Rust is being used in an experimental layout engine, Servo, which is developed by Mozilla and Samsung. Servo is not used in any consumer-oriented browsers yet. However, the Servo project developers plan for parts of the Servo source code to be merged into Gecko, and Firefox, incrementally.[64][65]

              +

              XULRunner[edit] +

              +
              Main article: XULRunner
              +

              XULRunner is a software platform and technology experiment by Mozilla, that allows applications built with the same technologies used by Firefox extensions (XPCOM, Javascript, HTML, CSS, XUL) to be run natively as desktop applications, without requiring Firefox to be installed on the user's machine. XULRunner binaries are available for the Windows, GNU/Linux and OS X operating systems, allowing such applications to be effectively cross platform.

              +

              pdf.js[edit] +

              +
              Main article: pdf.js
              +

              Pdf.js is a library developed by Mozilla that allows in-browser rendering of pdf documents using the HTML5 Canvas and Javascript. It is included by default in recent versions of Firefox, allowing the browser to render pdf documents without requiring an external plugin; and it is available separately as an extension named "PDF Viewer" for Firefox for Android, SeaMonkey, and the Firefox versions which don't include it built-in. It can also be included as part of a website's scripts, to allow pdf rendering for any browser that implements the required HTML5 features and can run Javascript.

              +

              Shumway[edit] +

              +
              Main article: Shumway (software)
              +

              Shumway is an open source replacement for the Adobe Flash Player, developed by Mozilla since 2012, using open web technologies as a replacement for Flash technologies. It uses Javascript and HTML5 Canvas elements to render Flash and execute Actionscript. It is included by default in Firefox Nightly and can be installed as an extension for any recent version of Firefox. The current implementation is limited in its capabilities to render Flash content outside simple projects.

              +

              Other activities[edit] +

              +

              Mozilla VR[edit] +

              +

              Mozilla VR is a team focused on bringing Virtual reality tools, specifications, and standards to the open Web.[66] Mozilla VR maintains A-Frame (VR), a web framework for building VR experiences, and works on advancing WebVR support within web browsers.

              +

              Mozilla Persona[edit] +

              +
              Main article: Mozilla Persona
              +

              Mozilla Persona is a secure, cross-browser website authentication mechanism which allows a user to use a single username and password (or other authentication method) to log in to multiple sites.[67] Mozilla Persona will be shutting down on November 30, 2016.[68]

              +

              Mozilla Location Service[edit] +

              + +

              This open source crowdsourced geolocation service was started by Mozilla in 2013 and offers a free API.

              +

              Webmaker[edit] +

              +

              Mozilla Webmaker is Mozilla's educational initiative, Webmaker's goal is to "help millions of people move from using the web to making the web." As part of Mozilla’s non-profit mission, Webmaker aims "to help the world increase their understanding of the web, take greater control of their online lives, and create a more web literate planet."[69][70][70]

              +

              Mozilla Developer Network[edit] +

              + +

              Mozilla maintains a comprehensive developer documentation website called the Mozilla Developer Network which contains information about web technologies including HTML, CSS, SVG, JavaScript, as well Mozilla-specific information. In addition, Mozilla publishes a large number of videos about web technologies and the development of Mozilla projects on the Air Mozilla website.[71][72]

              +

              Community[edit] +

              +

              The Mozilla Community consists of over 40,000 active contributors from across the globe[citation needed]. It includes both paid employees and volunteers who work towards the goals set forth[40] in the Mozilla Manifesto. Many of the sub-communities in Mozilla have formed around localization efforts for Mozilla Firefox, and the Mozilla web properties.

              +

              Local communities[edit] +

              +
              +
              + +
              +
              + +
              + Mozilla spaces, London
              +
              +
              +

              There are a number of sub-communities that exist based on their geographical locations, where contributors near each other work together on particular activities, such as localization, marketing, PR and user support.

              +

              Mozilla Reps[edit] +

              +
              +
              + +
              +
              + +
              + Mozilla Reps logo
              +
              +
              +

              The Mozilla Reps program aims to empower and support volunteer Mozillians who want to become official representatives of Mozilla in their region/locale.

              +

              The program provides a simple framework and a specific set of tools to help Mozillians to organize and/or attend events, recruit and mentor new contributors, document and share activities, and support their local communities better.

              +

              When joining the program, a Mozilla Rep agrees to take on the following responsibilities:

              +
                +
              • Represent Mozilla in their country/region
              • +
              • Promote the Mozilla Project and its mission
              • +
              • Build on and support existing/future local community efforts and programs
              • +
              • Inspire, recruit and support new contributors
              • +
              • Support and mentor future Mozilla Reps
              • +
              • Document clearly all their activities
              • +
              +

              Conferences and events[edit] +

              +

              Mozilla Festival[edit] +

              +
              +
              + +
              +
              + +
              + Speakers from the Knight Foundation discuss the future of news at the 2011 Mozilla Festival in London.
              +
              +
              +

              The Mozilla Festival is an annual event where hundreds of passionate people explore the Web, learn together and make things that can change the world. With the emphasis on making—the mantra of the Festival is "less yack, more hack." Journalists, coders, filmmakers, designers, educators, gamers, makers, youth and anyone else, from all over the world, are encouraged to attend, with attendees from more than 40 countries, working together at the intersection between freedom, the Web, and that years theme.

              +

              The event revolves around design challenges which address key issues based on the chosen theme for that years festival. In previous years the Mozilla Festival has focused on Learning, and Media, with the 2012 festival being based around making. The titles of the festival revolve around the main theme, freedom (as in freedom of speech not free beer), and the Web.

              +

              MozCamps[edit] +

              +

              MozCamps are the critical part of the Grow Mozilla initiative which aims to grow the Mozilla Community. These camps aim to bring core contributors from around the world together. They are intensive multi-day summits that include keynote speeches by Mozilla leadership, workshops and breakout sessions (led by paid and unpaid staff), and fun social outings. All of these activities combine to reward contributors for their hard work, engage them with new products and initiatives, and align all attendees on Mozilla's mission.

              +

              Mozilla Summit[edit] +

              +

              Mozilla Summit are the global event with active contributors and Mozilla employees to develop a shared understanding of Mozilla's mission together. Over 2,000 people representing 90 countries and 114 languages gathered in Santa Clara, Toronto and Brussels in 2013. Mozilla has since its last summit in 2013 replaced summits with all-hands where both employees and volunteers come together to collaborate the event is a scaled down version of Mozilla Summit.

              +

              See also[edit] +

              + + +

              References[edit] +

              +
              +
                +
              1. ^ For exceptions, see "Values" section below
              2. +
              3. ^ "About the Mozilla Corporation". Mozilla Foundation.  + +
              4. +
              5. ^ "Freeing the Source: The Story of Mozilla". Open Sources: Voices from the Open Source Revolution. Retrieved 2016-05-01.  + +
              6. +
              7. ^ "Mozilla.org WHOIS, DNS, & Domain Info". DomainTools. Retrieved 1 May 2016.  + +
              8. +
              9. ^ Payment, S. (2007). Marc Andreessen and Jim Clark: The Founders of Netscape. Rosen Publishing Group. ISBN 9781404207196.  + +
              10. +
              11. ^ "Netscape Announces mozilla.org, a Dedicated Team and Web Site Supporting Development of Free Client Source Code". Netscape. Archived from the original on October 4, 2002. Retrieved 2012-08-21.  +
              12. +
              13. ^ "Mac vendors ponder Netscape gambit.". Macworld. 1 May 1998. Retrieved 2012-08-19.  + +
              14. +
              15. ^ Zawinski, Jamie (1996). "nscp dorm". Retrieved 2007-10-12.  + +
              16. +
              17. ^ Dave Titus with assistance from Andrew Wong. "How was Mozilla born".  + +
              18. +
              19. ^ "Introduction to Mozilla Source Code". Mozilla. Retrieved 2012-08-18. However, mozilla.org wants to emphasize that these milestones are being produced for testing purposes only.  + +
              20. +
              21. ^ "mozilla.org Announces Launch of the Mozilla Foundation to Lead Open-Source Browser Efforts". Retrieved 2012-08-18.  + +
              22. +
              23. ^ Eich, Brendan; David Hyatt (April 2, 2003). "mozilla development roadmap". Mozilla. Retrieved 2009-08-02.  + +
              24. +
              25. ^ "Better Browsing on Your Android Smartphone". AllThingsD. Retrieved 2012-08-18.  + +
              26. +
              27. ^ "Mozilla Releases Test Version of Firefox OS". PC Magazine. Retrieved 2012-08-18.  + +
              28. +
              29. ^ "Mozilla Marketplace is live, lets you run web apps like desktop programs". Engadget. Retrieved 2012-08-18.  + +
              30. +
              31. ^ Lardinois, Frederic (November 15, 2012). "Mozilla Releases Annual Report For 2011: Revenue Up 33% To $163M, Majority From Google". techcrunch.com.  + +
              32. +
              33. ^ "cisco/openh264 · GitHub". github.com. Retrieved 2014-04-05.  + +
              34. +
              35. ^ "Mozilla will add H.264 to Firefox as Cisco makes eleventh-hour push for WebRTC's future — Tech News and Analysis". gigaom.com. Retrieved 2014-04-05.  + +
              36. +
              37. ^ "Cisco to release open-source H.264 codec, Mozilla makes tactical retreat - TechRepublic". techrepublic.com. Retrieved 2014-04-05.  + +
              38. +
              39. ^ "Video Interoperability on the Web Gets a Boost From Cisco's H.264 Codec". Of course, this is not a not a complete solution. In a perfect world, codecs, like other basic Internet technologies such as TCP/IP, HTTP, and HTML, would be fully open and free  + +
              40. +
              41. ^ "Comments on Cisco, Mozilla, and H.264". By endorsing Cisco's plan, there's no getting around the fact that we've caved on our principles. That said, principles can't replace being in a practical position to make a difference in the future.  - Christopher Montgomery wrote in a personal capacity but works for Mozilla in their codecs team +
              42. +
              43. ^ "Game Creator Challenge -Contest Terms and Conditions".  - submissions to the "amateur" category have to be released as free software, but not for the other two categories +
              44. +
              45. ^ "Los Angeles Times - Brendan Eich contribution to Proposition 8". latimes.com. Retrieved 2014-07-01.  + +
              46. +
              47. ^ "Gay Firefox developers boycott Mozilla to protest CEO hire [Updated] | Ars Technica". arstechnica.com. Retrieved 2014-04-05.  + +
              48. +
              49. ^ Kelly Faircloth (9 April 2012). "Tech Celeb Makes Prop-8 Donation; Internet Goes Berserk". BetaBeat. BetaBeat. Retrieved 2014-04-28.  + +
              50. +
              51. ^ "Screenshot of OkCupid's statement towards Firefox users". huffingtonpost.com. Retrieved 2014-07-01.  + +
              52. +
              53. ^ "FAQ on CEO Resignation". The Mozilla Blog. Retrieved 2015-04-20.  + +
              54. +
              55. ^ Baker, Mitchell (3 April 2014). "Brendan Eich Steps Down as Mozilla CEO". mozilla blog. Mozilla. Retrieved 2014-04-04.  + +
              56. +
              57. ^ "opensecrets.org listing of Sam Yagan's contributions to political candidates". opensecrets.org. Retrieved 2014-07-01.  + +
              58. +
              59. ^ "ontheissues.org listing of votes cast by Chris Cannon". ontheissues.org. Retrieved 2014-07-01.  + +
              60. +
              61. ^ "ontheissues.org listing of votes cast on the permanency of the Patriot Act". ontheissues.org. Retrieved 2014-07-01.  + +
              62. +
              63. ^ "ontheissues.org: Chris Cannon on Homeland Security". ontheissues.org. Retrieved 2014-07-01.  + +
              64. +
              65. ^ "ontheissues.org: Chris Cannon on Abortion". ontheissues.org. Retrieved 2014-07-01.  + +
              66. +
              67. ^ Levintova, Hannah (7 April 2014). "OkCupid's CEO Donated to an Anti-Gay Campaign Once, Too". Hanna Levintova article on motherjones.com. motherjones.com. Retrieved 2014-07-01.  + +
              68. +
              69. ^ Lee, Stephanie M. (8 April 2014). "OKCupid CEO once donated to anti-gay politician". Stephanie M. Lee's blog on sfgate.com. sfgate.com. Retrieved 2014-07-01.  + +
              70. +
              71. ^ a b "The Hypocrisy Of Sam Yagan & OkCupid". uncrunched.com blog. uncrunched.com. 6 April 2014. Retrieved 2014-07-01.  + +
              72. +
              73. ^ Bellware, Kim (31 March 2014). "OKCupid Publicly Rips Mozilla: 'We Wish Them Nothing But Failure'". Kim Bellware article on huffingtonpost.com. huffingtonpost.com. Retrieved 2014-07-01.  + +
              74. +
              75. ^ "Mozilla's Appointment Of Brendan Eich As CEO Sparks Controversy After Prop 8 Donation News Re-Emerges". huffingtonpost.com article. huffingtonpost.com. 27 March 2014. Retrieved 2014-07-01.  + +
              76. +
              77. ^ Eidelson, Josh (4 April 2014). "OkCupid's gay rights stunt has its limits: Taking a deeper look at the savvy ploy". Josh Eidelson article on salon.com. salon.com. Retrieved 2014-07-01.  + +
              78. +
              79. ^ a b "Mozilla Manifesto". Mozilla.org. Retrieved 2012-03-21.  + +
              80. +
              81. ^ "The Mozilla Manifesto". Retrieved 24 July 2015.  + +
              82. +
              83. ^ "Gecko Layout Engine". download-firefox.org. July 17, 2008. Archived from the original on 2010-11-28. Retrieved 2012-05-10.  + +
              84. +
              85. ^ "Web Browser Market Share Trends". W3Counter. Awio Web Services LLC. Retrieved 2012-05-10.  + +
              86. +
              87. ^ "Top 5 Browsers". StatCounter Global Stats. StatCounter. Retrieved 2012-05-10.  + +
              88. +
              89. ^ "Web browsers (Global marketshare)". Clicky. Roxr Software Ltd. Retrieved 2012-05-10.  + +
              90. +
              91. ^ Goodger, Ben (February 6, 2006). "Where Did Firefox Come From?". Inside Firefox. Archived from the original on 2011-06-23. Retrieved 2012-01-07.  + +
              92. +
              93. ^ "Mozilla browser becomes Firebird". IBPhoenix. Archived from the original on 2007-09-14. Retrieved 2013-06-10. We at IBPhoenix think that having a browser and a database with the same name in the same space will confuse the market, especially as browsers and databases are often used in the same applications  + +
              94. +
              95. ^ Festa, Paul (May 6, 2003). "Mozilla's Firebird gets wings clipped". CNET. Retrieved 2007-01-30.  + +
              96. +
              97. ^ Festa, Paul (February 9, 2004). "Mozilla holds 'fire' in naming fight". CNET News. Retrieved 2007-01-24.  + +
              98. +
              99. ^ "Mobile features". Mozilla. Retrieved 2012-06-26.  + +
              100. +
              101. ^ "Mobile System Requirements".  + +
              102. +
              103. ^ "Firefox Mobile supported devices".  + +
              104. +
              105. ^ "Mozilla rules out Firefox for iPhone and BlackBerry".  + +
              106. +
              107. ^ "Boot to Gecko Project". Mozilla. March 2012. Retrieved 2012-03-30.  + +
              108. +
              109. ^ "Firefox OS - Devices & Availability". Mozilla. Retrieved 2015-12-30.  + +
              110. +
              111. ^ "Thunderbird: Stability and Community Innovation | Mitchell's Blog". blog.lizardwrangler.com. Retrieved 2015-04-20.  + +
              112. +
              113. ^ "Two discontinued browsers". LWN.net. 21 December 2005. Retrieved 2012-08-19.  + +
              114. +
              115. ^ "SeaMonkey trademarks registered!". kairo.at. 2007-05-22. Retrieved 2013-06-10.  + +
              116. +
              117. ^ "Bugzilla Installation List". Retrieved 2014-09-18.  + +
              118. +
              119. ^ a b Eich, Brendan (21 June 2011). "New JavaScript Engine Module Owner". BrendanEich.com.  + +
              120. +
              121. ^ "Bug 759422 - Remove use of e4x in account creation". Bugzilla@Mozilla. 2012-08-17. Retrieved 2012-08-18.  + +
              122. +
              123. ^ "SpiderMonkey". Mozilla Developer Network. 2012-08-15. Retrieved 2012-08-18.  + +
              124. +
              125. ^ "Rhino History". Mozilla Foundation. Retrieved 2008-03-20.  + +
              126. +
              127. ^ "Roadmap". Retrieved 10 May 2016.  + +
              128. +
              129. ^ Larabel, Michael. "Servo Continues Making Progress For Shipping Components In Gecko, Browser.html". Phoronix.com. Retrieved 10 May 2016.  + +
              130. +
              131. ^ "Mozilla VR". Mozilla VR. Retrieved 2016-10-27.  + +
              132. +
              133. ^ Persona, Mozilla  + +
              134. +
              135. ^ "Persona". Mozilla Developer Network. Retrieved 2016-10-27.  + +
              136. +
              137. ^ About Mozilla Webmaker, Mozilla  + +
              138. +
              139. ^ a b Alan Henry. "Mozilla Webmaker Teaches You to Build Web Sites, Apps, and More". Lifehacker. Gawker Media.  + +
              140. +
              141. ^ "Air Mozilla". Mozilla Wiki.  + +
              142. +
              143. ^ "Air Mozilla Reboot, Phase I".  + +
              144. +
              +
              +

              Constant downloads failure in firefox

              +

              External links[edit] +

              + + + + + + + + + + + + +
              + + +
              +
              +
              +
              +

              Navigation menu

              + +
              + +
              + + +
              +
              + + + +
              +
              + +
              + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-images.json new file mode 100644 index 000000000..e0c78e6ce --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-images.json @@ -0,0 +1,6 @@ +[ + "https:\/\/i0.wp.com\/wptavern.com\/wp-content\/uploads\/2016\/07\/stack-overflow.png?fit=1200%2C470&ssl=1", + "https:\/\/i0.wp.com\/wptavern.com\/wp-content\/uploads\/2016\/07\/stack-overflow.png?resize=1025%2C401&ssl=1", + "https:\/\/i2.wp.com\/wptavern.com\/wp-content\/uploads\/2017\/03\/ChangesinDemand.png?resize=975%2C1115&ssl=1", + "https:\/\/i1.wp.com\/wptavern.com\/wp-content\/uploads\/2017\/03\/HighDemand.png?resize=975%2C854&ssl=1" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-metadata.json new file mode 100644 index 000000000..9154ef04d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "Stack Overflow published its analysis of 2017 hiring trends based on the targeting options employers selected when posting to Stack Overflow Jobs. The report, which compares data from 200 companies…", + "Image": "https:\/\/i0.wp.com\/wptavern.com\/wp-content\/uploads\/2016\/07\/stack-overflow.png?fit=1200%2C470&ssl=1", + "Title": "Stack Overflow Jobs Data Shows ReactJS Skills in High Demand, WordPress Market Oversaturated with Developers", + "SiteName": "WordPress Tavern" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected.html new file mode 100644 index 000000000..1f47d8fe1 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected.html @@ -0,0 +1,29 @@ +
              +

              + +

              +

              Stack Overflow published its analysis of 2017 hiring trends based on the targeting options employers selected when posting to Stack Overflow Jobs. The report, which compares data from 200 companies since 2015, ranks ReactJS, Docker, and Ansible at the top of the fastest growing skills in demand. When comparing the percentage change from 2015 to 2016, technologies like AJAX, Backbone.js, jQuery, and WordPress are less in demand.

              +

              + +

              +

              Stack Overflow also measured the demand relative to the available developers in different tech skills. The demand for backend, mobile, and database engineers is higher than the number of qualified candidates available. WordPress is last among the oversaturated fields with a surplus of developers relative to available positions.

              +

              + +

              +

              In looking at these results, it’s important to consider the inherent biases within the Stack Overflow ecosystem. In 2016, the site surveyed more than 56,000 developers but noted that the survey was “biased against devs who don’t speak English.” The average age of respondents was 29.6 years old and 92.8% of them were male.

              +

              For two years running, Stack Overflow survey respondents have ranked WordPress among the most dreaded technologies that they would prefer not to use. This may be one reason why employers wouldn’t be looking to advertise positions on the site’s job board, which is the primary source of the data for this report.

              +

              Many IT career forecasts focus more generally on job descriptions and highest paying positions. Stack Overflow is somewhat unique in that it identifies trends in specific tech skills, pulling this data out of how employers are tagging their listings for positions. It presents demand in terms of number of skilled developers relative to available positions, a slightly more complicated approach than measuring demand based on advertised salary. However, Stack Overflow’s data presentation could use some refining.

              +

              One commenter, Bruce Van Horn, noted that jobs tagged as “Full Stack Developer” already assume many of the skills that are listed separately:

              +
              +

              I wonder how many of these skills are no longer listed because they are “table stakes”. You used to have to put CSS, jQuery, and JSON on the job description. I wouldn’t expect to have to put that on a Full Stack Developer description today – if you don’t know those then you aren’t a Full Stack Web Developer, and I’m more interested in whether you know the shiny things like React, Redux, and Angular2.

              +
              +

              It would be interesting to know what is meant by tagging “WordPress” as a skill – whether it is the general ability to work within the WordPress ecosystem of tools or if it refers to specific skills like PHP. Browsing a few jobs on Stack Overflow, WordPress positions vary in the skills they require, such as React.js, Angular, PHP, HTML, CSS, and other technologies. This is a reflection of the diversity of technology that can be leveraged in creating WordPress-powered sites and applications, and several of these skills are listed independently of WordPress in the data.

              +

              Regardless of how much credibility you give Stack Overflow’s analysis of hiring trends, the report’s recommendation for those working in technologies oversaturated with developers is a good one: “Consider brushing up on some technologies that offer higher employer demand and less competition.” WordPress’ code base is currently 59% PHP and 27% JavaScript. The percentage of PHP has grown over time, but newer features and improvements to core are also being built in JavaScript. These are both highly portable skills that are in demand on the web.

              + + + + +
              + + +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/source.html new file mode 100644 index 000000000..f5984508e --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/source.html @@ -0,0 +1,2228 @@ + + + + + + + + + + + + + + + + + + + + + + + Stack Overflow Jobs Data Shows ReactJS Skills in High Demand, WordPress Market Oversaturated with Developers – WordPress Tavern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + + + + +
              + + + + + +
              + + + + +
              + + + + + +
              + + +
              + +

              Stack Overflow Jobs Data Shows ReactJS Skills in High Demand, WordPress Market Oversaturated with Developers

              + + + + +
              + + +
              +

              + +

              +

              Stack Overflow published its analysis of 2017 hiring trends based on the targeting options employers selected when posting to Stack Overflow Jobs. The report, which compares data from 200 companies since 2015, ranks ReactJS, Docker, and Ansible at the top of the fastest growing skills in demand. When comparing the percentage change from 2015 to 2016, technologies like AJAX, Backbone.js, jQuery, and WordPress are less in demand.

              +

              + +

              +

              Stack Overflow also measured the demand relative to the available developers in different tech skills. The demand for backend, mobile, and database engineers is higher than the number of qualified candidates available. WordPress is last among the oversaturated fields with a surplus of developers relative to available positions.

              +

              + +

              +

              In looking at these results, it’s important to consider the inherent biases within the Stack Overflow ecosystem. In 2016, the site surveyed more than 56,000 developers but noted that the survey was “biased against devs who don’t speak English.” The average age of respondents was 29.6 years old and 92.8% of them were male.

              +

              For two years running, Stack Overflow survey respondents have ranked WordPress among the most dreaded technologies that they would prefer not to use. This may be one reason why employers wouldn’t be looking to advertise positions on the site’s job board, which is the primary source of the data for this report.

              +

              Many IT career forecasts focus more generally on job descriptions and highest paying positions. Stack Overflow is somewhat unique in that it identifies trends in specific tech skills, pulling this data out of how employers are tagging their listings for positions. It presents demand in terms of number of skilled developers relative to available positions, a slightly more complicated approach than measuring demand based on advertised salary. However, Stack Overflow’s data presentation could use some refining.

              +

              One commenter, Bruce Van Horn, noted that jobs tagged as “Full Stack Developer” already assume many of the skills that are listed separately:

              +
              +

              I wonder how many of these skills are no longer listed because they are “table stakes”. You used to have to put CSS, jQuery, and JSON on the job description. I wouldn’t expect to have to put that on a Full Stack Developer description today – if you don’t know those then you aren’t a Full Stack Web Developer, and I’m more interested in whether you know the shiny things like React, Redux, and Angular2.

              +
              +

              It would be interesting to know what is meant by tagging “WordPress” as a skill – whether it is the general ability to work within the WordPress ecosystem of tools or if it refers to specific skills like PHP. Browsing a few jobs on Stack Overflow, WordPress positions vary in the skills they require, such as React.js, Angular, PHP, HTML, CSS, and other technologies. This is a reflection of the diversity of technology that can be leveraged in creating WordPress-powered sites and applications, and several of these skills are listed independently of WordPress in the data.

              +

              Regardless of how much credibility you give Stack Overflow’s analysis of hiring trends, the report’s recommendation for those working in technologies oversaturated with developers is a good one: “Consider brushing up on some technologies that offer higher employer demand and less competition.” WordPress’ code base is currently 59% PHP and 27% JavaScript. The percentage of PHP has grown over time, but newer features and improvements to core are also being built in JavaScript. These are both highly portable skills that are in demand on the web.

              + + + +
              +
              + + + + + + +
              + + +
              +
              +

              There are 13 comments + +

              +
              + +
              + + +
              +
              +
              + + + +
              +

              One nuance of over saturation number might be that many people who self–identify themselves as WordPress “developers” might be in “site builder” segment. Off–the–shelf assembly and lightweight customization rather than involved custom development.

              +

              I had certainly never had an impression that there is an oversupply of of WP devs with advanced level of PHP and experience in custom projects.Report

              + +
              + + + + +
              + +
              + +
              +
              + + + +
              +

              I feel like you’re 100% right on this one. WordPress has many self called ‘developers’ who actually don’t know how to code. I think there’s indeed a lot competition in that space (the “Off–the–shelf assembly and lightweight customization”) but there’s still more than enough work for developers that can actually code complex custom solutions in WP.Report

              + +
              + + + + +
              + +
              + +
              + + +
              + +
              +
              + + + +
              +

              If I consider myself a ‘page builder’? If you’re asking if I do “Off–the–shelf assembly and lightweight customization” WordPress work, no I don’t. I make and sell WordPress plugins that allow others to do so though :)Report

              + +
              + + +
                +
              • + +
              • +
              + +
              + +
              + +
              +
              + +
              +
              + +
              +
              + +
              +
              + + + +
              +

              You’re 100% correct Rarst. In my opinion, if a person does not have the skills of a computer scientist (OOP specifically) then they cannot really hold the title of a “developer,” albeit outside of project management skills; UML, scrum, etc. Developers can develop because when their calculator breaks, they can still do the math, so to speak. It will just be a little slower.

              +

              Installation, light-weight customization, tweaks, etc., relative to the WP theme design or not, is NOT true development. You must know code/syntax, algorithms (e.g. optimization techniques), etc. to truly “develop” big [project] picture, small picture, and the realtionships between them to tweak code. THAT is development.Report

              + +
              + + + + +
              + +
              + +
              +
              + +
              +
              + + + +
              +

              Agree with you. WordPress is heading towards the right direction and It is necessary to implement REST API quickly to make it more accessible for people who hate to deal with PHP or WordPress tags. Report

              + +
              + + + + +
              + +
              + +
              +
              +
              +
              + + + +
              +

              tons of wordpress devs – and yet hardly any buddypress devs. I’ve posted several bp jobs and still have 4 plugin projects where no one will take my money.Report

              + +
              + + + + +
              + +
              + +
              +
              + + + +
              +

              I’m a “BuddyPress developer”, as well as quite a bunch of other people.
              The problem is that BP is not that big market, it’s not that easy to be 100% focused on BP-related projects only. So such people are either working with WP (mainly) and BP (when something – seldom – appear), or have own business around WP (and sometimes) BP. And such people are marketing WP skills more, I guess.Report

              + +
              + + + + +
              + +
              + +
              +
              +
              +
              + + + +
              +

              Why doesn’t WordPress have some kind of certification system when it comes to working with WordPress? Make it something similar to CompTIA A+ certification. There could be different levels of verification to cover all aspects of WordPress. It would be a benefit to anyone trying to make a living working with WordPress. It would also be a major benefit for anyone seeking to hire a WordPress professional. There could be a centralized location on dot org that would list certified WordPress professionals tagged with their various certifications.

              +

              Currently, it’s so hit or miss when it comes to hiring someone to provide help with WordPress. You might need someone with just a basic skill set to set up a new site with a standard theme and some basic plugins, but the person you hire is more suited for advanced, complex integrations involving multiple APIs. The problem is, the customer ends up paying far more than they really need to for someone with skill sets far more advanced than what they actually need. Report

              + +
              + + + + +
              + +
              + +
              +
              + + + +
              +

              In theory, this might be a good idea, though just who would do the certifying? In practice, however, I’ve heard from people who’ve been developing compiled software since before PHP existed that a lot of those certifications really test your ability to take standardized tests, not your ability as a programmer. The best way to hire anybody to do anything is to get a personal recommendation.Report

              + +
              + + + + +
              + +
              + +
              +
              + + + +
              +

              WordPress.org should do the certifications. Individual testing could happen at WordCamps and/or at local testing facilities like how CompTIA A+ certification is handled. Most clients do not need a programmer or a developer. They need someone who can set up a website. That means finding a host, installing WordPress, installing a theme, and installing plugins.

              +

              If someone hires a programmer to do all that, they are most likely overpaying for the work.

              +

              Report

              + +
              + + + + +
              + +
              + +
              +
              + + + +
              +

              Were you volunteering to help design the tests and conduct the certifications? Or at least set up the means to organize it on make.wordpress.org? It’s an idea that has potential merit and you aren’t the first person to wish there were some kind of standards by which to judge a person’s basic WordPress literacy.

              +

              To the best of my knowledge, however, everything done by WordPress.org is handled by volunteers. In the spirit of open source, if there’s something you want to see happen, you need to get it started.

              +

              An idea like certification would actually need much broader support throughout the WordPress community than a choice of what to focus development on for the next release. And it would require either a means to administer and grade the test online automatically (requiring programming to make it work) or a fairly large army of volunteers to undertake in-person testing. I imagine you could tie up years of surveys and committee meetings just figuring out what you wanted to test for, never mind designing the test itself.

              +

              And you have to decide how often people need to re-certify, because recommendations and best practices change rapidly in the web world.

              +

              Even if you get that far, it will only make a difference if enough people accept the validity of the test and care whether someone has passed it before hiring them.

              +

              And, finally, a test like that could determine whether the person had enough skill to install WordPress, set up a theme, and choose some plugins, or (at a more advanced level) whether they understand WordPress’ action and filter hooks, plus PHP, HTML, CSS, and JavaScript, but it will never tell you whether a person is honest, timely, able to understand (or even ask) what a client’s real needs and goals are, or someone you can work with without both of you going crazy.Report

              + +
              + + +
                +
              • + +
              • +
              + +
              + +
              + +
              +
              + +
              +
              + +
              +
              +
              +
              +
              +

              +
              +

              Your email address will not be published. Required fields are marked *

              +

              +

              +

              + +

              + +

              + +

              +

              +

              +

              +

              +
              + +
              +
              + + + + + + + + +
              + + + + + + + +
              + + + +
              + + + + + +
              + + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + + + + + + + + + + + + + + + + + + + +
              +
              +
              +
              +
              +
              +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + +
              + + + + + :) + +
              + +
              +
              +
              +
              + +
              +
              +
              +

              Original text

              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              + +
              +
              +
              +
              + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-images.json new file mode 100644 index 000000000..4c0fc4c25 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-images.json @@ -0,0 +1,4 @@ +[ + "http:\/\/l3.yimg.com\/uu\/api\/res\/1.2\/4eRCPf9lJt_3q29.outekQ--\/aD02Njk7dz03NDQ7c209MTthcHBpZD15dGFjaHlvbg--\/http:\/\/media.zenfs.com\/en\/homerun\/feed_manager_auto_publish_494\/4406ef57dcb40376c513903b03bef048", + "http:\/\/l1.yimg.com\/ny\/api\/res\/1.2\/589noY9BZNdmsUUQf6L1AQ--\/YXBwaWQ9aGlnaGxhbmRlcjtzbT0xO3c9NzQ0O2g9NjY5\/http:\/\/media.zenfs.com\/en\/homerun\/feed_manager_auto_publish_494\/4406ef57dcb40376c513903b03bef048" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-metadata.json new file mode 100644 index 000000000..cfd3a6943 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "Ben Silverman", + "Direction": null, + "Excerpt": "To help you decide what’s what, I’ve put together this list of the 8 PSVR games worth considering. Beloved cult hit “Rez” gets the VR treatment to help launch the PSVR, and the results are terrific. Chaos, for sure, and also “Thumper.” Called a “violent rhythm game” by its creators, “Thumper” is, well", + "Image": "http:\/\/l3.yimg.com\/uu\/api\/res\/1.2\/4eRCPf9lJt_3q29.outekQ--\/aD02Njk7dz03NDQ7c209MTthcHBpZD15dGFjaHlvbg--\/http:\/\/media.zenfs.com\/en\/homerun\/feed_manager_auto_publish_494\/4406ef57dcb40376c513903b03bef048", + "Title": "These are the 8 coolest PlayStation VR games", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected.html new file mode 100644 index 000000000..deea6c82f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected.html @@ -0,0 +1,45 @@ +
              +
              +

              The PlayStation VR

              +
              +

              Sony’s PlayStation VR.

              +
              +
              +

              Virtual reality has officially reached the consoles. And it’s pretty good! Sony’s PlayStation VR is extremely comfortable and reasonably priced, and while it’s lacking killer apps, it’s loaded with lots of interesting ones.

              +

              But which ones should you buy? I’ve played just about every launch game, and while some are worth your time, others you might want to skip. To help you decide what’s what, I’ve put together this list of the eight PSVR games worth considering.

              +

              “Rez Infinite” ($30)

              +

              +

              Beloved cult hit “Rez” gets the VR treatment to help launch the PSVR, and the results are terrific. It includes a fully remastered take on the original “Rez” – you zoom through a Matrix-like computer system, shooting down enemies to the steady beat of thumping electronica – but the VR setting makes it incredibly immersive. It gets better the more you play it, too; unlock the amazing Area X mode and you’ll find yourself flying, shooting and bobbing your head to some of the trippiest visuals yet seen in VR.

              +

              “Thumper” ($20)

              +

              +

              What would happen if Tron, the board game Simon, a Clown beetle, Cthulhu and a noise band met in VR? Chaos, for sure, and also “Thumper.” Called a “violent rhythm game” by its creators, “Thumper” is, well, a violent rhythm game that’s also a gorgeous, unsettling and totally captivating assault on the senses. With simple controls and a straightforward premise – click the X button and the analog stick in time with the music as you barrel down a neon highway — it’s one of the rare games that works equally well both in and out of VR. But since you have PSVR, play it there. It’s marvelous.

              +

              “Until Dawn: Rush of Blood” ($20)

              +

              +

              Cheeky horror game “Until Dawn” was a breakout hit for the PS4 last year, channeling the classic “dumb teens in the woods” horror trope into an effective interactive drama. Well, forget all that if you fire up “Rush of Blood,” because this one sticks you front and center on a rollercoaster ride from Hell. Literally. You ride through a dimly-lit carnival of terror, dual-wielding pistols as you take down targets, hideous pig monsters and, naturally, maniac clowns. Be warned: If the bad guys don’t get you, the jump scares will.

              +

              “Headmaster” ($20)

              +

              +

              Soccer meets “Portal” in the weird (and weirdly fun) “Headmaster,” a game about heading soccer balls into nets, targets and a variety of other things while stuck in some diabolical training facility. While at first it seems a little basic, increasingly challenging shots and a consistently entertaining narrative keep it from running off the pitch. Funny, ridiculous and as easy as literally moving your head back and forth, it’s a pleasant PSVR surprise.

              +

              “RIGS: Mechanized Combat League” ($50)

              +

              +

              Giant mechs + sports? That’s the gist of this robotic blast-a-thon, which pits two teams of three against one another in gorgeous, explosive and downright fun VR combat. At its best, “RIGS” marries the thrill of fast-paced competitive shooters with the insanity of piloting a giant mech in VR. It can, however, be one of the barfier PSVR games. So pack your Dramamine, you’re going to have to ease yourself into this one.

              +

              “Batman Arkham VR” ($20)

              +

              +

              “I’m Batman,” you will say. And you’ll actually be right this time, because you are Batman in this detective yarn, and you know this because you actually grab the famous cowl and mask, stick it on your head, and stare into the mirrored reflection of Rocksteady Games’ impressive Dark Knight character model. It lacks the action of its fellow “Arkham” games and runs disappointingly short, but it’s a high-quality experience that really shows off how powerfully immersive VR can be.

              +

              “Job Simulator” ($30)

              +

              +

              There are a number of good VR ports in the PSVR launch lineup, but the HTC Vive launch game “Job Simulator” might be the best. Your task? Lots of tasks, actually, from cooking food to fixing cars to working in an office, all for robots, because did I mention you were in the future? Infinitely charming and surprisingly challenging, it’s a great showpiece for VR.

              +

              “Eve Valkyrie” ($60)

              +

              +

              Already a hit on the Oculus Rift, this space dogfighting game was one of the first to really show off how VR can turn a traditional game experience into something special. It’s pricey and not quite as hi-res as the Rift version, but “Eve Valkyrie” does an admirable job filling the void left since “Battlestar Galactica” ended. Too bad there aren’t any Cylons in it (or are there?)

              +

              More games news:

              +

              Ben Silverman is on Twitter at + ben_silverman.

              + +
              +
              +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/source.html new file mode 100644 index 000000000..b13bd1d8d --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/source.html @@ -0,0 +1,14670 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These are the 8 coolest PlayStation VR games + + + + + + + + + + + + + + + + + + + + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +

              These are the 8 coolest PlayStation VR games

              +
              +
              +
              + +
              +
              +
              +
              + +
              +
              +
              Ben Silverman +
              Games Editor
              +
              +
              Yahoo Finance
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              The PlayStation VR
              +
              +
              +
              Sony’s PlayStation VR.
              +
              +
              +
              +

              Virtual reality has officially reached the consoles. And it’s pretty good! Sony’s PlayStation VR is extremely comfortable and reasonably priced, and while it’s lacking killer apps, it’s loaded with lots of interesting ones.

              +

              But which ones should you buy? I’ve played just about every launch game, and while some are worth your time, others you might want to skip. To help you decide what’s what, I’ve put together this list of the eight PSVR games worth considering.

              +

              “Rez Infinite” ($30)

              +
              +

              Beloved cult hit “Rez” gets the VR treatment to help launch the PSVR, and the results are terrific. It includes a fully remastered take on the original “Rez” – you zoom through a Matrix-like computer system, shooting down enemies to the steady beat of thumping electronica – but the VR setting makes it incredibly immersive. It gets better the more you play it, too; unlock the amazing Area X mode and you’ll find yourself flying, shooting and bobbing your head to some of the trippiest visuals yet seen in VR.

              +

              “Thumper” ($20)

              +
              +

              What would happen if Tron, the board game Simon, a Clown beetle, Cthulhu and a noise band met in VR? Chaos, for sure, and also “Thumper.” Called a “violent rhythm game” by its creators, “Thumper” is, well, a violent rhythm game that’s also a gorgeous, unsettling and totally captivating assault on the senses. With simple controls and a straightforward premise – click the X button and the analog stick in time with the music as you barrel down a neon highway — it’s one of the rare games that works equally well both in and out of VR. But since you have PSVR, play it there. It’s marvelous.

              +

              “Until Dawn: Rush of Blood” ($20)

              +
              +

              Cheeky horror game “Until Dawn” was a breakout hit for the PS4 last year, channeling the classic “dumb teens in the woods” horror trope into an effective interactive drama. Well, forget all that if you fire up “Rush of Blood,” because this one sticks you front and center on a rollercoaster ride from Hell. Literally. You ride through a dimly-lit carnival of terror, dual-wielding pistols as you take down targets, hideous pig monsters and, naturally, maniac clowns. Be warned: If the bad guys don’t get you, the jump scares will.

              +

              “Headmaster” ($20)

              +
              +

              Soccer meets “Portal” in the weird (and weirdly fun) “Headmaster,” a game about heading soccer balls into nets, targets and a variety of other things while stuck in some diabolical training facility. While at first it seems a little basic, increasingly challenging shots and a consistently entertaining narrative keep it from running off the pitch. Funny, ridiculous and as easy as literally moving your head back and forth, it’s a pleasant PSVR surprise.

              +

              “RIGS: Mechanized Combat League” ($50)

              +
              +

              Giant mechs + sports? That’s the gist of this robotic blast-a-thon, which pits two teams of three against one another in gorgeous, explosive and downright fun VR combat. At its best, “RIGS” marries the thrill of fast-paced competitive shooters with the insanity of piloting a giant mech in VR. It can, however, be one of the barfier PSVR games. So pack your Dramamine, you’re going to have to ease yourself into this one.

              +

              “Batman Arkham VR” ($20)

              +
              +

              “I’m Batman,” you will say. And you’ll actually be right this time, because you are Batman in this detective yarn, and you know this because you actually grab the famous cowl and mask, stick it on your head, and stare into the mirrored reflection of Rocksteady Games’ impressive Dark Knight character model. It lacks the action of its fellow “Arkham” games and runs disappointingly short, but it’s a high-quality experience that really shows off how powerfully immersive VR can be.

              +

              “Job Simulator” ($30)

              +
              +

              There are a number of good VR ports in the PSVR launch lineup, but the HTC Vive launch game “Job Simulator” might be the best. Your task? Lots of tasks, actually, from cooking food to fixing cars to working in an office, all for robots, because did I mention you were in the future? Infinitely charming and surprisingly challenging, it’s a great showpiece for VR.

              +

              “Eve Valkyrie” ($60)

              +
              +

              Already a hit on the Oculus Rift, this space dogfighting game was one of the first to really show off how VR can turn a traditional game experience into something special. It’s pricey and not quite as hi-res as the Rift version, but “Eve Valkyrie” does an admirable job filling the void left since “Battlestar Galactica” ended. Too bad there aren’t any Cylons in it (or are there?)

              +

              More games news:

              + +

              Ben Silverman is on Twitter at + ben_silverman.

              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              + +
              +
              + +
              + + + + + + +
              + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-images.json new file mode 100644 index 000000000..6ece996a2 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-images.json @@ -0,0 +1,3 @@ +[ + "https:\/\/s.yimg.com\/os\/mit\/media\/m\/social\/images\/social_default_logo-1481777.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-metadata.json new file mode 100644 index 000000000..8ca33da76 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "NATALIYA VASILYEVA", + "Direction": null, + "Excerpt": "The latest news and headlines from Yahoo! News. Get breaking news stories and in-depth coverage with videos and photos.", + "Image": "https:\/\/s.yimg.com\/os\/mit\/media\/m\/social\/images\/social_default_logo-1481777.png", + "Title": "Yahoo News - Latest News & Headlines", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected.html new file mode 100644 index 000000000..9bc5f6f5f --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected.html @@ -0,0 +1,34 @@ +
              +
              +
              + +
              +
              +

              1 / 5

              +
              +
              + +

              In this photo dated Tuesday, Nov, 29, 2016 the Soyuz-FG rocket booster with the Progress MS-04 cargo ship is installed on a launch pad in Baikonur, Kazakhstan. The unmanned Russian cargo space ship Progress MS-04 broke up in the atmosphere over Siberia on Thursday Dec. 1, 2016, just minutes after the launch en route to the International Space Station due to an unspecified malfunction, the Russian space agency said.(Oleg Urusov/ Roscosmos Space Agency Press Service photo via AP)

              +
              + +
              +
              +
              +
              +

              MOSCOW (AP) — An unmanned Russian cargo spaceship heading to the International Space Station broke up in the atmosphere over Siberia on Thursday due to an unspecified malfunction, the Russian space agency said.

              +

              The Progress MS-04 cargo craft broke up at an altitude of 190 kilometers (118 miles) over the remote Russian Tuva region in Siberia that borders Mongolia, Roscosmos said in a statement. It said most of spaceship's debris burnt up as it entered the atmosphere but some fell to Earth over what it called an uninhabited area.

              +

              Local people reported seeing a flash of light and hearing a loud thud west of the regional capital of Kyzyl, more than 3,600 kilometers (2,200 miles) east of Moscow, the Tuva government was quoted as saying late Thursday by the Interfax news agency.

              +

              The Progress cargo ship had lifted off as scheduled at 8:51 p.m. (1451 GMT) from Russia's space launch complex in Baikonur, Kazakhstan, to deliver 2.5 metric tons of fuel, water, food and other supplies. It was set to dock with the space station on Saturday.

              +

              Roscosmos said the craft was operating normally before it stopped transmitting data 6 ½ minutes after the launch. The Russian space agency would not immediately describe the malfunction, saying its experts were looking into it.

              +

              This is the third botched launch of a Russian spacecraft in two years. A Progress cargo ship plunged into the Pacific Ocean in May 2015, and a Proton-M rocket carrying an advanced satellite broke up in the atmosphere in May 2014.

              +

              But both Roscosmos and NASA said the crash of the ship would have no impact on the operations of the orbiting space lab that is currently home to a six-member crew, including three cosmonauts from Russia, two NASA astronauts and one from the European Union.

              +

              Orbital ATK, NASA's other shipper, successfully sent up supplies to the space station in October, and a Japanese cargo spaceship is scheduled to launch a full load in mid-December.

              +

              NASA supplier SpaceX, meanwhile, has been grounded since a rocket explosion in September on the launch pad at Cape Canaveral, Florida. The company hopes to resume launches in December to deliver communication satellites.

              +

              ___

              +

              This version corrects the spelling of the region to Tuva, not Tyva.

              +

              __

              +

              Aerospace Writer Marcia Dunn in Cape Canaveral, Florida, and Vladimir Isachenkov in Moscow contributed to this report.

              + +
              +
              +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/source.html new file mode 100644 index 000000000..2ab343fc9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/source.html @@ -0,0 +1,20539 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Russia: Space ship malfunctions, breaks up over Siberia + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              + +
              +
              +
              +
              + + +
              +
              +
              + + + + + + +
              + + + + + + +
              + + + + + +
              + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-images.json new file mode 100644 index 000000000..36f5f0612 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-images.json @@ -0,0 +1,4 @@ +[ + "https:\/\/s.yimg.com\/bt\/api\/res\/1.2\/qZaM9MLUOrxLg4IfXt_Niw--\/YXBwaWQ9eW5ld3NfbGVnbztxPTc1O3c9NjAw\/http:\/\/media.zenfs.com\/en-US\/video\/video.abcnewsplus.com\/559ecdbafdb839129816b5c79a996975.cf.png", + "https:\/\/s3.yimg.com\/bt\/api\/res\/1.2\/GNtA09EDJWzWfpBzGYJS0Q--\/YXBwaWQ9eW5ld3NfbGVnbztxPTg1O3c9NjMw\/http:\/\/media.zenfs.com\/en_us\/gma\/us.abcnews.gma.com\/HT_flag_baby_jtm_150311_16x9_992.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-metadata.json new file mode 100644 index 000000000..8af68c02b --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "By GILLIAN MOHNEY\n March 11, 2015 3:46 PM", + "Direction": null, + "Excerpt": "A photographer and Navy veteran is fighting back after a photo she posted to Facebook started an online backlash. Vanessa Hicks said she had no idea her photo would be considered controversial. The photo, from a military family’s newborn photo shoot, showed a newborn infant wrapped in an American flag held by his father, who was in his military uniform. Hicks, a Navy veteran herself and the wife of an active-duty Navy member, said her intention was to honor the flag as well as her clients, who wanted to incorporate their military service in the photo shoot.", + "Image": "https:\/\/s.yimg.com\/bt\/api\/res\/1.2\/qZaM9MLUOrxLg4IfXt_Niw--\/YXBwaWQ9eW5ld3NfbGVnbztxPTc1O3c9NjAw\/http:\/\/media.zenfs.com\/en-US\/video\/video.abcnewsplus.com\/559ecdbafdb839129816b5c79a996975.cf.png", + "Title": "Veteran Wraps Baby in American Flag, Photo Sparks Controversy", + "SiteName": "Yahoo" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected.html new file mode 100644 index 000000000..c5d7e33dc --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected.html @@ -0,0 +1,44 @@ +
              +
              +

              'GMA' Cookie Search:

              + +
              +
              + + + + +
              + +

              A photographer and Navy veteran is fighting back after a photo she posted to Facebook started an online backlash.

              +

              Vanessa Hicks said she had no idea her photo would be considered controversial. The photo, from a military family’s newborn photo shoot, showed a newborn infant wrapped in an American flag held by his father, who was in his military uniform.

              +

              Hicks, a Navy veteran herself and the wife of an active-duty Navy member, said her intention was to honor the flag as well as her clients, who wanted to incorporate their military service in the photo shoot.

              +

              Pizza Man Making Special Delivery Pizza Delivery to Afghanistan During Super Bowl

              +

              Redesigned Scopes Fail to Stop 'Superbug Outbreaks

              +

              Antarctica 'Penguin Post Office' Attracts Record Number of Applicants

              +

              “This is what he was fighting for, his son wrapped in an American flag,” Hicks told ABC News. However, when she posted the image on her page, she started to get comments accusing her of desecrating the flag.

              +

              On one Facebook page an unidentified poster put up her picture writing and wrote they found it was “disrespectful, rude, tacky, disgusting, and against the U.S. Flag Code.”

              + +

              View photo

              .

              Vanessa Hicks

              Vanessa Hicks

              +
              + +

              The Federal Flag Code has guidelines for the proper treatment of the U.S. Flag but there are no rules for punishment related to violations. In the past, the Supreme Court has found that people are protected from punishment under the First Amendment for manipulating or even burning the flag. +

              +

              Hicks said she was surprised when messages suddenly started to pop up on her Facebook page and even her own website criticizing her photos.

              +

              She said she stayed up until 4 a.m. recently to take down comments from her business and company page, even on shoots that had nothing to do with the flag.

              +

              “I know how low I felt during those first few hours,” said Hicks. “[I felt] am I not a good American or veteran or wife. It’s a train-wreck you can’t help but watch.”

              +

              As Hicks tried to stop the comments from taking over her pages, others started to take notice and her picture went viral on social media sites. After that, Hicks found that many people, both military and civilian, told her they did not find the picture offensive.

              +

              “I have seen first-hand what is desecration of the flag,” Hicks said of her time in the military. “At the end of the day I didn’t do anything that disrespected this flag.”

              +

              Hicks, whose husband is still on active duty in the Navy, said the flag is a symbol of U.S. freedoms including the First Amendment right to free speech.

              +

              “[My husband] wouldn’t die for a flag, he would die for the freedoms that this country offers,” she told ABC News.

              +

              After her story grabbed local headlines, Hicks has been inundated by requests for photos shoots, and she said she plans to give 15 percent of all profits related to these shoots to the USO.

              +
              +
              + +
              + + + + +
              +
              \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/source.html new file mode 100644 index 000000000..caf60e4e9 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/source.html @@ -0,0 +1,14949 @@ + + +
              + + + + + Veteran Wraps Baby in American Flag, Photo Sparks Controversy - Yahoo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + +
              +
              + +
              + +
              +
              + + + + + +
              +
              + +
              + + + + +
              +
              + +
              + +
              +
              + +
              +
              + +
              +
              +
              +
              +
              'GMA' Cookie Search:
              + +
              +
              +
              +
              +
              +
              +
              + + +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +

              Veteran Wraps Baby in American Flag, Photo Sparks Controversy

              +
              + +
              +
              + +
              +
              + + + Good Morning America + +
              +
              +
              +
              +
              +
              + +
              +
                +
              • + +
              • + +
              • + +
              • +
              +
              +
              +
              +
              +
              + +
                + +
                + +
                +
                + +
                +
                + + + +
                +
                +
                +
                + + + + + + + +
                +
                + +
                +
                +
                +
                +
                +
                + +
                +
                +
                +
                + +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                + +
                + +
                +
                +
                +
                +
                Captions Not Available
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                + +
                +
                + Settings +
                +
                +
                + +
                +
                +
                + Full Screen +
                +
                +
                +
                +
                +
                +
                +
                Embed
                +
                + +
                +
                +
                +
                +
                Video Quality
                +
                Auto
                +
                High (HD)
                +
                Medium
                +
                Low
                +
                +
                +
                +
                Closed Caption Settings
                +
                +
                +
                +
                +
                +
                +
                Back
                +
                + +
                +
                Closed Captions
                +
                +
                +
                +
                +
                Language
                +
                +
                +
                +
                English
                +
                  +
                • No item available
                • +
                +
                +
                +
                + +
                +
                +
                +
                Position
                +
                +
                  +
                • Bottom
                • +
                • Top
                • +
                +
                +
                +
                +
                Type Size
                +
                +
                +
                A
                +
                A
                +
                A
                +
                A
                +
                A
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                + +
                +
                +
                +
                Aa
                +
                +
                Style Options
                +
                +
                +
                + + +
                +
                Captions will look like this
                +
                +
                +
                +
                +
                +
                +
                Back
                +
                +
                +
                  +
                • Presets
                • +
                • Text
                • +
                • background
                • +
                • effects
                • +
                +
                +
                +
                Aa
                +
                Aa
                +
                Aa
                +
                Aa
                +
                Aa
                +
                Aa
                +
                Aa
                +
                Aa
                +
                +
                +
                +
                +
                Arial
                +
                  +
                • Georgia
                • +
                • Palatino Linotype
                • +
                • Times New Roman
                • +
                • Arial
                • +
                • Arial Black
                • +
                • Comic Sans MS
                • +
                • Impact
                • +
                • Lucida Sans Unicode
                • +
                • Tahoma
                • +
                • Trebuchet MS
                • +
                • Verdana
                • +
                • Courier New
                • +
                • Lucida Console
                • +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                75% (transparency)
                +
                  +
                • 100% (opaque)
                • +
                • 75% (transparency)
                • +
                • 50% (transparency)
                • +
                • 25% (transparency)
                • +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                +

                Aa

                +
                Plain
                +
                +
                +

                Aa

                +
                Shadow
                +
                +
                +

                Aa

                +
                raised
                +
                +
                +

                Aa

                +
                Lowered
                +
                +
                +

                Aa

                +
                Outline
                +
                +
                +
                +
                +
                +
                Captions will look like this
                +
                +
                +
                +
                +
                +
                +
                + +
                +
                +
                +
                +
                +
                +
                +
                +
                + +
                +
                Video Not Available
                +
                Unfortunately, this video is not available in your region.
                +
                SS-100-202
                + +
                +
                +
                +
                +
                +
                +
                +
                + + +
                +
                + + +

                Photo of Baby Wrapped in US Flag Seen as Unpatriotic

                + +
                + +
                + + + +
                + Now watching + +

                + + + Next video starts in : 7 + Play +

                +

                Photo of Baby Wrapped in US Flag Seen as Unpatriotic

                + +
                + +
                +
                + +
                +
                +
                + + + +
                +
                + +
                +
                + + + +
                + + +
                + + +
                + +
                + +
                + + + + + +
                + + +
                + + +
                + + +
                + +
                + + + + + +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                + + + + + +
                +
                +
                +
                + + +
                +
                + +
                + + + + + + +

                A photographer and Navy veteran is fighting back after a photo she posted to Facebook started an online backlash.

                +

                Vanessa Hicks said she had no idea her photo would be considered controversial. The photo, from a military family’s newborn photo shoot, showed a newborn infant wrapped in an American flag held by his father, who was in his military uniform.

                +

                Hicks, a Navy veteran herself and the wife of an active-duty Navy member, said her intention was to honor the flag as well as her clients, who wanted to incorporate their military service in the photo shoot.

                +

                Pizza Man Making Special Delivery Pizza Delivery to Afghanistan During Super Bowl

                +

                Redesigned Scopes Fail to Stop 'Superbug Outbreaks

                +

                Antarctica 'Penguin Post Office' Attracts Record Number of Applicants

                +

                “This is what he was fighting for, his son wrapped in an American flag,” Hicks told ABC News. However, when she posted the image on her page, she started to get comments accusing her of desecrating the flag.

                +

                On one Facebook page an unidentified poster put up her picture writing and wrote they found it was “disrespectful, rude, tacky, disgusting, and against the U.S. Flag Code.”

                +

                +
                +

                View photo

                .
                Vanessa Hicks
                +

                Vanessa Hicks

                +
                +
                +
                The Federal Flag Code has guidelines for the proper treatment of the U.S. Flag but there are no rules for punishment related to violations. In the past, the Supreme Court has found that people are protected from punishment under the First Amendment for manipulating or even burning the flag. +

                +

                Hicks said she was surprised when messages suddenly started to pop up on her Facebook page and even her own website criticizing her photos.

                +

                She said she stayed up until 4 a.m. recently to take down comments from her business and company page, even on shoots that had nothing to do with the flag.

                +

                “I know how low I felt during those first few hours,” said Hicks. “[I felt] am I not a good American or veteran or wife. It’s a train-wreck you can’t help but watch.”

                +

                As Hicks tried to stop the comments from taking over her pages, others started to take notice and her picture went viral on social media sites. After that, Hicks found that many people, both military and civilian, told her they did not find the picture offensive.

                +

                “I have seen first-hand what is desecration of the flag,” Hicks said of her time in the military. “At the end of the day I didn’t do anything that disrespected this flag.”

                +

                Hicks, whose husband is still on active duty in the Navy, said the flag is a symbol of U.S. freedoms including the First Amendment right to free speech.

                +

                “[My husband] wouldn’t die for a flag, he would die for the freedoms that this country offers,” she told ABC News.

                +

                After her story grabbed local headlines, Hicks has been inundated by requests for photos shoots, and she said she plans to give 15 percent of all profits related to these shoots to the USO.

                + + +
                +
                + +
                +
                +
                +
                +
                +
                +
                + + + +
                + + + +
                + +
                +
                +
                Sorry you didn't like this comment. Please provide a reason below.
                +
                + +
                +

                + +
                +
                +
                + + + +
                +
                +
                +
                +
                + +
                +
                +
                Are you sure?
                +
                +
                + + +
                +
                +
                + + + +
                +
                Rating failed. Try again.
                +
                +
                +
                Request failed. Try again.
                +
                +
                +
                We will promote constructive and witty comments to the top, so everyone sees them!
                +
                + +
                +
                Sorry, we can’t load comments right now. Try again.
                + +
                + + + +
                + +
                + +
                + + + + +
                  +
                  +
                  + + + + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  +
                  + +
                  +
                  +
                  + + + +

                  Recommended for You

                  + + + + +
                  +
                  +
                  +
                  +
                  + + + + + + + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + +
                  +
                  + + + + + +
                  + + +
                  + + + + + + + + + + +
                  + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  +
                  + + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-images.json new file mode 100644 index 000000000..36a35281a --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-images.json @@ -0,0 +1,3 @@ +[ + "http:\/\/i.yimg.jp\/images\/jpnews\/cre\/common\/all\/images\/fbico_ogp_600x600.png" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-metadata.json new file mode 100644 index 000000000..c8459ad79 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": null, + "Direction": null, + "Excerpt": "トレンドマイクロは3月9日、Wi-Fi利用時の通信を暗号化し保護するスマホ・タブレット - Yahoo!ニュース(CNET Japan)", + "Image": "http:\/\/i.yimg.jp\/images\/jpnews\/cre\/common\/all\/images\/fbico_ogp_600x600.png", + "Title": "トレンドマイクロ、公衆無線LANを安全に使うためのアプリ「フリーWi-Fiプロテクション」(CNET Japan) - Yahoo!ニュース", + "SiteName": "Yahoo!ニュース" +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected.html new file mode 100644 index 000000000..db7694ab3 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected.html @@ -0,0 +1,9 @@ +
                  +

                  + トレンドマイクロは3月9日、Wi-Fi利用時の通信を暗号化し保護するスマホ・タブレット向けのセキュリティアプリ「フリーWi-Fiプロテクション」(iOS/Android)の発売を開始すると発表した。1年版ライセンスは2900円(税込)で、2年版ライセンスは5000円(税込)。

                   フリーWi-Fiプロテクションは、App Storeおよび、Google Playにて販売され、既に提供しているスマホ・タブレット向け総合セキュリティ対策アプリ「ウイルスバスター モバイル」と併用することで、不正アプリや危険なウェブサイトからの保護に加え、通信の盗み見を防ぐことができる。

                   2020年の東京オリンピック・パラリンピックの開催などを見据え、フリーWi-Fi(公衆無線LAN)の設置が促進され、フリーWi-Fiの利用者も増加している。 +

                   一方で、脆弱な設定のフリーWi-Fiや攻撃者が設置した偽のフリーWi-Fiへの接続などによる情報漏えい、通信の盗み見などのセキュリティリスクが危惧されているという。 +

                   正規事業者が提供する安全性の高いフリーWi-Fiのほかにも、通信を暗号化していない安全性の低いフリーWi-Fi、さらにはサイバー犯罪者が設置したフリーWi-Fiなどさまざまなものが混在している。また、利用者は、接続する前にひとつひとつ安全性を確認するのは難しい状況だとしている。 +

                   トレンドマイクロがスマートフォン保持者でフリーWi-Fiの利用経験がある人に実施した調査では、回答者の約85%が安全なフリーWi-Fiと危険なフリーWi-Fiは「見分けられない」と回答。さらに、約65%がフリーWi-Fiの利用に不安を感じていると回答している。 +

                   こうした環境の変化やユーザの状況を鑑み、フリーWi-Fiプロテクションの提供を開始する。同アプリをインストールすることで利用者は、万が一安全性の低いフリーWi-Fiのアクセスポイントに接続してしまった場合でも、その通信を暗号化でき、通信の盗み見やそれによる情報漏えいのリスクを低減できるようになる。 +

                   具体的には、フリーWi-Fi利用時に、スマートフォンがフリーWi-Fiプロテクションインフラに接続することにより、フリーWi-Fiのアクセスポイントを介した通信がVPN(Virtual Private Network)で暗号化される。これにより利用者は、第三者から通信を傍受されることやデータの情報漏えいを防ぐことが可能。さらに、かんたん自動接続の機能により、通信を暗号化していない安全性が低いフリーWi-Fi接続時や利用者が指定したWi-Fiへ接続する際に、自動的に通信を暗号化し、利用者の通信を保護する。

                   また、フリーWi-Fiプロテクションインフラと、莫大なセキュリティ情報のビッグデータを保有するクラウド型セキュリティ技術基盤「Trend Micro Smart Protection Network」(SPN)が連携することで、フリーWi-Fiプロテクションインフラを経由してインターネットを利用する際に、利用者がフィッシング詐欺サイトや偽サイトなどへの不正サイトへアクセスすることをブロックできるという。

                  +
                  \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/source.html new file mode 100644 index 000000000..8d3510886 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/source.html @@ -0,0 +1,1234 @@ + + + + + + + + トレンドマイクロ、公衆無線LANを安全に使うためのアプリ「フリーWi-Fiプロテクション」 (CNET Japan) - Yahoo!ニュース + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + +
                  +
                  + + + +
                  +
                  + +
                  + +
                  + +
                  + +
                  + + + +
                  + +

                  ニュース

                  + + + +

                  条件指定

                  +
                  + + +
                  + +
                  + + + + + +
                  + +

                  トピックス

                  + + +
                  + + +
                  + +
                  + +
                  + + +

                  テーマ

                  + +
                  + + +
                  + +
                  + + +
                  + + +

                  意識調査

                  + +
                  + + +
                  + +
                  + + + +
                  + +

                  全国紙パック

                  + +
                  + + + +
                  + +
                  + + + + + +
                  + + + + + +
                  + +
                  + + +
                  + ここから本文です + + +
                  +
                  + + + +
                  + + + +
                  + +
                  +
                  + +
                  +

                  トレンドマイクロ、公衆無線LANを安全に使うためのアプリ「フリーWi-Fiプロテクション」

                  +

                  CNET Japan 3/9(木) 18:45配信 +

                  + +
                  + +
                  +
                  +

                  + トレンドマイクロは3月9日、Wi-Fi利用時の通信を暗号化し保護するスマホ・タブレット向けのセキュリティアプリ「フリーWi-Fiプロテクション」(iOS/Android)の発売を開始すると発表した。1年版ライセンスは2900円(税込)で、2年版ライセンスは5000円(税込)。
                  +
                   フリーWi-Fiプロテクションは、App Storeおよび、Google Playにて販売され、既に提供しているスマホ・タブレット向け総合セキュリティ対策アプリ「ウイルスバスター モバイル」と併用することで、不正アプリや危険なウェブサイトからの保護に加え、通信の盗み見を防ぐことができる。
                  +
                   2020年の東京オリンピック・パラリンピックの開催などを見据え、フリーWi-Fi(公衆無線LAN)の設置が促進され、フリーWi-Fiの利用者も増加している。 +
                  +
                   一方で、脆弱な設定のフリーWi-Fiや攻撃者が設置した偽のフリーWi-Fiへの接続などによる情報漏えい、通信の盗み見などのセキュリティリスクが危惧されているという。 +
                  +
                   正規事業者が提供する安全性の高いフリーWi-Fiのほかにも、通信を暗号化していない安全性の低いフリーWi-Fi、さらにはサイバー犯罪者が設置したフリーWi-Fiなどさまざまなものが混在している。また、利用者は、接続する前にひとつひとつ安全性を確認するのは難しい状況だとしている。 +
                  +
                   トレンドマイクロがスマートフォン保持者でフリーWi-Fiの利用経験がある人に実施した調査では、回答者の約85%が安全なフリーWi-Fiと危険なフリーWi-Fiは「見分けられない」と回答。さらに、約65%がフリーWi-Fiの利用に不安を感じていると回答している。 +
                  +
                   こうした環境の変化やユーザの状況を鑑み、フリーWi-Fiプロテクションの提供を開始する。同アプリをインストールすることで利用者は、万が一安全性の低いフリーWi-Fiのアクセスポイントに接続してしまった場合でも、その通信を暗号化でき、通信の盗み見やそれによる情報漏えいのリスクを低減できるようになる。 +
                  +
                   具体的には、フリーWi-Fi利用時に、スマートフォンがフリーWi-Fiプロテクションインフラに接続することにより、フリーWi-Fiのアクセスポイントを介した通信がVPN(Virtual Private Network)で暗号化される。これにより利用者は、第三者から通信を傍受されることやデータの情報漏えいを防ぐことが可能。さらに、かんたん自動接続の機能により、通信を暗号化していない安全性が低いフリーWi-Fi接続時や利用者が指定したWi-Fiへ接続する際に、自動的に通信を暗号化し、利用者の通信を保護する。
                  +
                   また、フリーWi-Fiプロテクションインフラと、莫大なセキュリティ情報のビッグデータを保有するクラウド型セキュリティ技術基盤「Trend Micro Smart Protection Network」(SPN)が連携することで、フリーWi-Fiプロテクションインフラを経由してインターネットを利用する際に、利用者がフィッシング詐欺サイトや偽サイトなどへの不正サイトへアクセスすることをブロックできるという。

                  +
                  + + + + + + +
                  +
                  +

                  最終更新:3/9(木) 18:45

                  +

                  + CNET Japan +

                  +
                  + + + + +
                  + +
                  + + + + + +
                  + + + +
                  + + + + + + + +
                  + + + +
                  + + + + +
                  +
                  + + + + + + + + + + +
                  +
                  +
                  +
                  + + +
                  + +
                  +
                    +
                  • ※コメントは個人の見解であり、記事提供社と関係はありません。
                  • + +
                  + +
                  + + + + +
                  + + + +
                  + + + + +
                  + + + + + + +
                  +
                  + + + + +
                  + + +
                  + + + + +
                  +
                  + + + + + + + +
                  + + +
                  + + + +
                  +
                  +
                  +
                  + + + + + + + + + + +
                  + + + +
                  +
                  + +
                  + + + +
                  + + +
                  + 本文はここまでです + +このページの先頭へ + +
                  +
                  +

                  お得情報

                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + +その他のキャンペーン + +

                  +
                  +
                  + + + + +
                  + + +
                  + + + + + + + + + + +
                  + + +
                  + + + +
                  + + + + + + + + + + + + + + diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-images.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-images.json new file mode 100644 index 000000000..72627e0ec --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-images.json @@ -0,0 +1,5 @@ +[ + "http:\/\/fakehost\/test\/W020170310313653868929.jpg", + "http:\/\/fakehost\/test\/W020170310313654043127.jpg", + "http:\/\/fakehost\/test\/W020170310313654453091.jpg" +] \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-metadata.json b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-metadata.json new file mode 100644 index 000000000..f84c6ecd6 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-metadata.json @@ -0,0 +1,8 @@ +{ + "Author": "青网校园崔宁宁", + "Direction": null, + "Excerpt": "图为马素湘在澳大利亚悉尼游玩时的近影。出国前后关注点大不同出国前:政治科目会出啥考题?出国后:国家未来将如何发展?在采访中,我们了解到不少学子在出国前就每年守在电脑前观看两会直播。但是,随着年龄和阅历的增长,学子对两会的关注点在出国前后发生了很大的变化。在法国里昂国立应用科学院留学的卢宇表示,他还是个中学生时,就开始关注两会了。“我高中毕业后就出国留学了。", + "Image": null, + "Title": "海外留学生看两会:出国前后关注点大不同_教育频道_中国青年网", + "SiteName": null +} diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected.html new file mode 100644 index 000000000..f4ae9daac --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected.html @@ -0,0 +1,36 @@ +
                  +
                  +
                  +
                  +

                  海外留学生看两会:出国前后关注点大不同

                  +

                  图为马素湘在澳大利亚悉尼游玩时的近影。

                  +

                    出国前后关注点大不同

                  +

                    出国前:政治科目会出啥考题?

                  +

                    出国后:国家未来将如何发展?

                  +

                     在采访中,我们了解到不少学子在出国前就每年守在电脑前观看两会直播。但是,随着年龄和阅历的增长,学子对两会的关注点在出国前后发生了很大的变化。

                  +

                     在法国里昂国立应用科学院留学的卢宇表示,他还是个中学生时,就开始关注两会了。“我高中毕业后就出国留学了。当我还在国内读高中时,对两会的主要关注点落在民生和教育问题上。根据这些内容预测今年政治考点会有哪些变化。”卢宇说,“在国外学习生活了将近10年,我愈发感觉到祖国这些年发生的日新月异的变化;关注点也转移到国家‘一带一路’建设,高端人才引进,中外合作等方面。”

                  +

                     无独有偶,英国剑桥大学的李博灏也有着类似的经历。他表示,在国内读本科时,虽然关注过两会,但并不像现在这样,将关注点放在国家社会经济迫切需要解决的难题与问题上。“出国前更关心与我们学生的实际问题以及切身利益相关的议题,比如奖学金、助学金的发放与申请;相关工作行业就业前景等。”

                  +

                     在英国求学6年后,李博灏希望能够学有所用,为国家发展过程中遇到的难题寻求解决办法。因此随着课题研究的深入,他更加关注国家和社会目前所面临的挑战,比如中等收入陷阱、供给侧改革、创意创新产业的发展等议题。

                  +

                     还有一些学子表示,出国前对两会不太了解,出国后反而对两会热点多了些思考。在澳大利亚墨尔本留学的马素湘说:“想不关注都难啊!刷微博看新闻到处都是两会的消息。而且我现在学的是新闻专业,对世界发生的大小事都会留意。随着年龄、阅历增长,家国情怀也渐长,会关心国家发展的各方面问题。”

                  +

                  +

                  图为李博灏在瑞士日内日瓦联合国欧洲总部的近影。

                  +

                    关注点多与所学专业相关

                  +

                    法学专业热议法定婚龄 很多人关心供给侧改革

                  +

                     在谈及对两会的哪些话题比较感兴趣时,卢宇表示:“近几年,国内雾霾现象时有发生。而我本身是学习能源环境专业的,所以每年都对两会上政府工作报告和代表提案中有关环保和新能源政策的部分很感兴趣。今年两会提案中有几份关于大力发展清洁能源汽车的。我认为这对节能减排和防治雾霾都有积极作用,但也要注意加强电池和电动机等关键技术的研发。”

                  +

                     对此提案,卢宇有着自己的看法,“百花齐放的局面固然可喜,但也不能一哄而上,国家应该提高行业准入门槛,完善新能源汽车准入管理规则,从源头上进行制度创新,将一些不具备新能源汽车生产资质的厂家淘汰出局,并高度关注电池系统安全问题,严格执行充电桩生产的国际标准。”

                  +

                     马素湘表示,“出国读研之前,我在国内学习法学,因此对相关的问题比较感兴趣。今年两会上人大代表黄细花提出把法定婚龄降低到18岁的提案;而在微博的热搜榜上,一本儿童性教育读物引起了极大的争议。我认为降低婚龄并不适合我国国情。因为性教育的缺乏导致我国大部分人在18岁之前没有接受过完整的性教育,思想行动上也不够成熟,如何能够对自己的人生和自己的另一半负责?所以我希望能有人大代表提议在国民儿童阶段完善我国的性教育,而不是为了鼓励生育将法定婚龄提前。”

                  +

                     李博灏是英国剑桥大学制造业研究所创新设计管理中心的一名博士。他格外关注的话题是供给侧结构性改革,知识产权保护,消费升级等议题。“我的博士研究课题是关于推动创新设计密集型产业的发展从而帮助中等收入国家克服中等收入陷阱的探索,因此一直十分关注国内关于供给侧改革的相关议题。通过本届两会对于该议题的进一步关注,我希望可以有效地帮助我了解供给侧改革与中等收入陷阱问题目前的发展状况以及解决情况;也希望可以与更多的机构取得联系,并帮助他们了解该议题最前沿的研究与解决方案。”

                  +

                  +

                  图为卢宇与祖国五星红旗和联合国会旗的合影。

                  +

                     两会成为了解国情的窗口

                  +

                     盼准确把握国家发展需求 愿寻求机遇回国有所作为

                  +

                     不少学子时刻关注着国内动态,寻找回国发展的契机,而两会正是一个提供最新最全面信息的窗口。

                  +

                     “对两会的关注使我能够准确把握国家目前迫切需要解决的难题,从而使我的研究具有更多的社会价值。把理论和现实结合起来,将学到的知识、理念与技术有效地融入到国家社会经济发展的实践中去,为国家和社会解决这些问题提供理论与实践依据。”李博灏说。

                  +

                     知识产权也是近些年来两会的热门话题。在李博灏看来,知识产权是经济可持续增长和创意创新产业发展的灵魂所在。完善的、与国际接轨的知识产权保护法能够很好地促进国民经济的发展。“如何将欧洲和英国先进的知识产权以及创意产业保护发展经验带回祖国,帮助我们国家推动创意创新驱动的经济发展一直是我在关注与思考的。因此我也会十分关注两会关于国内知识产权的保护,知识产权综合管理改革试点工作,知识产权国际合作,知识产权大数据等的发展现状等问题。”

                  +

                     在两会上,全国政协委员张近东提出“当前中国经济的发展正在从数量型向质量型转变,消费升级将成为企业新一轮创新发展的动力。”对此,李博灏认为这也是他关注的问题。他认为:“在消费市场持续扩大的大环境下,如何能够通过促进创新设计产业的发展以及消费品品质的提升,推动国内消费增长并促进其在可持续经济增长中的作用,是一个迫切需要解决的问题。在当前供给侧改革的大环境下,消费升级的重要性越发突显。”

                  +

                     作为两会的资深粉,卢宇聊起两会话题充满了期待。“今年是国家‘十三五’规划的关键时期,‘一带一路’建设也在如火如荼地进行中。作为一名中国留学生,我一直都关注着能在哪些领域为国家、为中外合作共赢做出贡献。‘大众创业、万众创新’提出有几年了。全国各省市在吸引留学人才归国创业就业方面纷纷提出了各种优惠政策,但目前大都集中在沿海发达省份,而且主要惠及理工科博士,政策覆盖面还不够广。期待从国家层面设立工作组加强留学人才的统筹协调,完善顶层设计。人文社科类留学人才是未来国家智库的重要后备力量,也应该适当加强对他们的政策鼓励,更好地服务于‘一带一路’国家战略。”

                  +

                     卢宇还认为两会应该增设学子代表,列席旁听两会,拓展留学生参政议政渠道。“我相信优秀留学生的国际化视野必将为家乡建设带来新的思路,增添新的活力。”卢宇恳切地说。

                  +
                  +
                  +
                  +
                  \ No newline at end of file diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/source.html b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/source.html new file mode 100644 index 000000000..22a3bb571 --- /dev/null +++ b/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/source.html @@ -0,0 +1,10982 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 海外留学生看两会:出国前后关注点大不同_教育频道_中国青年网 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + +
                  + + + + +
                  +
                  +
                  + + + +
                  +
                  + + + +
                  +
                  +
                  + + + + + +
                  +
                  + +
                  海外留学生看两会:出国前后关注点大不同
                  + +

                  + +
                  + 发稿时间:2017-03-10 08:42:00 + + + +来源: + +人民日报海外版 + + + + + + 中国青年网 +
                  +
                  +
                  +
                  +
                  +

                  海外留学生看两会:出国前后关注点大不同

                  +

                  图为马素湘在澳大利亚悉尼游玩时的近影。

                  +

                    出国前后关注点大不同

                  +

                    出国前:政治科目会出啥考题?

                  +

                    出国后:国家未来将如何发展?

                  +

                     在采访中,我们了解到不少学子在出国前就每年守在电脑前观看两会直播。但是,随着年龄和阅历的增长,学子对两会的关注点在出国前后发生了很大的变化。

                  +

                     在法国里昂国立应用科学院留学的卢宇表示,他还是个中学生时,就开始关注两会了。“我高中毕业后就出国留学了。当我还在国内读高中时,对两会的主要关注点落在民生和教育问题上。根据这些内容预测今年政治考点会有哪些变化。”卢宇说,“在国外学习生活了将近10年,我愈发感觉到祖国这些年发生的日新月异的变化;关注点也转移到国家‘一带一路’建设,高端人才引进,中外合作等方面。”

                  +

                     无独有偶,英国剑桥大学的李博灏也有着类似的经历。他表示,在国内读本科时,虽然关注过两会,但并不像现在这样,将关注点放在国家社会经济迫切需要解决的难题与问题上。“出国前更关心与我们学生的实际问题以及切身利益相关的议题,比如奖学金、助学金的发放与申请;相关工作行业就业前景等。”

                  +

                     在英国求学6年后,李博灏希望能够学有所用,为国家发展过程中遇到的难题寻求解决办法。因此随着课题研究的深入,他更加关注国家和社会目前所面临的挑战,比如中等收入陷阱、供给侧改革、创意创新产业的发展等议题。

                  +

                     还有一些学子表示,出国前对两会不太了解,出国后反而对两会热点多了些思考。在澳大利亚墨尔本留学的马素湘说:“想不关注都难啊!刷微博看新闻到处都是两会的消息。而且我现在学的是新闻专业,对世界发生的大小事都会留意。随着年龄、阅历增长,家国情怀也渐长,会关心国家发展的各方面问题。”

                  +

                  +

                  图为李博灏在瑞士日内日瓦联合国欧洲总部的近影。

                  +

                    关注点多与所学专业相关

                  +

                    法学专业热议法定婚龄 很多人关心供给侧改革

                  +

                     在谈及对两会的哪些话题比较感兴趣时,卢宇表示:“近几年,国内雾霾现象时有发生。而我本身是学习能源环境专业的,所以每年都对两会上政府工作报告和代表提案中有关环保和新能源政策的部分很感兴趣。今年两会提案中有几份关于大力发展清洁能源汽车的。我认为这对节能减排和防治雾霾都有积极作用,但也要注意加强电池和电动机等关键技术的研发。”

                  +

                     对此提案,卢宇有着自己的看法,“百花齐放的局面固然可喜,但也不能一哄而上,国家应该提高行业准入门槛,完善新能源汽车准入管理规则,从源头上进行制度创新,将一些不具备新能源汽车生产资质的厂家淘汰出局,并高度关注电池系统安全问题,严格执行充电桩生产的国际标准。”

                  +

                     马素湘表示,“出国读研之前,我在国内学习法学,因此对相关的问题比较感兴趣。今年两会上人大代表黄细花提出把法定婚龄降低到18岁的提案;而在微博的热搜榜上,一本儿童性教育读物引起了极大的争议。我认为降低婚龄并不适合我国国情。因为性教育的缺乏导致我国大部分人在18岁之前没有接受过完整的性教育,思想行动上也不够成熟,如何能够对自己的人生和自己的另一半负责?所以我希望能有人大代表提议在国民儿童阶段完善我国的性教育,而不是为了鼓励生育将法定婚龄提前。”

                  +

                     李博灏是英国剑桥大学制造业研究所创新设计管理中心的一名博士。他格外关注的话题是供给侧结构性改革,知识产权保护,消费升级等议题。“我的博士研究课题是关于推动创新设计密集型产业的发展从而帮助中等收入国家克服中等收入陷阱的探索,因此一直十分关注国内关于供给侧改革的相关议题。通过本届两会对于该议题的进一步关注,我希望可以有效地帮助我了解供给侧改革与中等收入陷阱问题目前的发展状况以及解决情况;也希望可以与更多的机构取得联系,并帮助他们了解该议题最前沿的研究与解决方案。”

                  +

                  +

                  图为卢宇与祖国五星红旗和联合国会旗的合影。

                  +

                     两会成为了解国情的窗口

                  +

                     盼准确把握国家发展需求 愿寻求机遇回国有所作为

                  +

                     不少学子时刻关注着国内动态,寻找回国发展的契机,而两会正是一个提供最新最全面信息的窗口。

                  +

                     “对两会的关注使我能够准确把握国家目前迫切需要解决的难题,从而使我的研究具有更多的社会价值。把理论和现实结合起来,将学到的知识、理念与技术有效地融入到国家社会经济发展的实践中去,为国家和社会解决这些问题提供理论与实践依据。”李博灏说。

                  +

                     知识产权也是近些年来两会的热门话题。在李博灏看来,知识产权是经济可持续增长和创意创新产业发展的灵魂所在。完善的、与国际接轨的知识产权保护法能够很好地促进国民经济的发展。“如何将欧洲和英国先进的知识产权以及创意产业保护发展经验带回祖国,帮助我们国家推动创意创新驱动的经济发展一直是我在关注与思考的。因此我也会十分关注两会关于国内知识产权的保护,知识产权综合管理改革试点工作,知识产权国际合作,知识产权大数据等的发展现状等问题。”

                  +

                     在两会上,全国政协委员张近东提出“当前中国经济的发展正在从数量型向质量型转变,消费升级将成为企业新一轮创新发展的动力。”对此,李博灏认为这也是他关注的问题。他认为:“在消费市场持续扩大的大环境下,如何能够通过促进创新设计产业的发展以及消费品品质的提升,推动国内消费增长并促进其在可持续经济增长中的作用,是一个迫切需要解决的问题。在当前供给侧改革的大环境下,消费升级的重要性越发突显。”

                  +

                     作为两会的资深粉,卢宇聊起两会话题充满了期待。“今年是国家‘十三五’规划的关键时期,‘一带一路’建设也在如火如荼地进行中。作为一名中国留学生,我一直都关注着能在哪些领域为国家、为中外合作共赢做出贡献。‘大众创业、万众创新’提出有几年了。全国各省市在吸引留学人才归国创业就业方面纷纷提出了各种优惠政策,但目前大都集中在沿海发达省份,而且主要惠及理工科博士,政策覆盖面还不够广。期待从国家层面设立工作组加强留学人才的统筹协调,完善顶层设计。人文社科类留学人才是未来国家智库的重要后备力量,也应该适当加强对他们的政策鼓励,更好地服务于‘一带一路’国家战略。”

                  +

                     卢宇还认为两会应该增设学子代表,列席旁听两会,拓展留学生参政议政渠道。“我相信优秀留学生的国际化视野必将为家乡建设带来新的思路,增添新的活力。”卢宇恳切地说。

                  +
                  +
                  +
                  +
                  +
                  + +
                  + +
                  责任编辑:崔宁宁
                  +
                  返回首页>>
                  +
                  + + +
                  + +
                  + + +
                  +
                  + + + + + +
                  + + + +
                  + + + + +
                  + + + +
                  + + + + + + +
                  + +
                  + + + +
                  + + +
                  + + + +
                  + + + +
                  +
                  +
                  +
                  +
                  收藏文章
                  +
                  +
                  + +
                  +
                  +
                  +
                  + +
                  +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  +
                  + +
                  + +
                  + 我的社区 +
                  +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + +
                  +
                  +
                  +
                  +
                  + + +
                  +
                  +
                    +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  +
                    +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  +
                    +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  • + +
                  • +
                  +
                  +
                  +
                  +
                    +
                  • +
                  • +
                  • +
                  +
                  +
                  +
                  +
                    +
                  • + +
                  +
                  +
                  +
                  + 表情删除后不可恢复,是否删除 +
                  +
                  +
                  取消
                  +
                  确定
                  +
                  +
                  +
                  + + +
                  +
                  +
                  +
                  +
                  图片正在上传,请稍后...
                  + +
                  +
                  +
                  + +
                  +
                  + +
                  +
                  +
                  +
                  +
                  +
                  + + + +
                  + +
                  +
                  + 评论内容为空! +
                  +
                  +
                  +
                  + + + +
                  +
                  + 还没有评论,快来抢沙发吧! +
                  +
                  + + + +
                  + +
                  +
                  +
                  +
                  +
                  + +
                  + +
                  + +
                  +
                  +
                  + + + +
                  +
                  + + +
                  + + +
                  + + + +
                  + + + + + + + + + + + +
                  +
                  + + + +
                  +
                  + + + +
                  +
                  +
                  + + +
                  + + + +
                  + + + +
                  + + +
                  + + +
                  +
                  热图 +

                  排行

                  +
                  + +
                  +
                  +
                  + + + +
                  +
                  + + +
                  +
                  + + + + + +
                  + +
                  + +
                  +
                  + + + +
                  +
                  +
                  + + + +
                  +
                  + + + + +
                  +
                  热搜 +

                  排行

                  +
                  + +
                  +
                  +
                  + +
                  + + + + + + + +
                  + + + +
                  +
                  + +
                  +
                  视觉 +

                  焦点

                  +
                  + +
                  +
                  +
                  + + + +
                  +
                  +
                  + + + +
                  +
                  + +
                  + + + + +
                  +
                  + + + +
                  +
                  + + + + + + +
                  +
                  + + + +
                  +
                  + + +
                  +
                  +
                  +
                  + + + +
                  + + +
                  +
                  + + + +
                  + + +
                  +
                  +
                  + + + + + + + +
                  + + + + + + + + +
                  + +
                  + + + +
                  +
                  +

                  关于我们联系我们广告服务人才招聘中国互联网举报中心 Youth.cn. 请发送qnb至10658000 订阅手机青年报

                  +
                  +
                  + + 可信网站 + +
                  共青团中央主办 共青团中央网络影视中心承办 版权所有:中国青年网
                  +
                  信息网络传播视听节目许可证0105108号 京|ICP备11020872号-17 京公网安备110105007246
                  +
                  + + + + + +
                  + + +
                  + + + +
                  +
                  + + + x +
                  +
                  + + + + + +
                  + + + +
                  + + + + + + + + + + + -- cgit v1.2.3