This is an automated email from the ASF dual-hosted git repository. rzo1 pushed a commit to branch fix_issues in repository https://gitbox.apache.org/repos/asf/incubator-stormcrawler.git
commit 810e0aa1c3c58b1c9ab8176ccff1561be1c6ae38 Author: Richard Zowalla <[email protected]> AuthorDate: Fri Nov 29 06:29:53 2024 +0100 Replace stackexception.html with artificial content from stormcrawler.org adding the actual issue to it --- .../stormcrawler/parse/StackOverflowTest.java | 8 +- core/src/test/resources/stackexception.html | 1097 +++----------------- 2 files changed, 148 insertions(+), 957 deletions(-) diff --git a/core/src/test/java/org/apache/stormcrawler/parse/StackOverflowTest.java b/core/src/test/java/org/apache/stormcrawler/parse/StackOverflowTest.java index 02abfab5..ddff97da 100644 --- a/core/src/test/java/org/apache/stormcrawler/parse/StackOverflowTest.java +++ b/core/src/test/java/org/apache/stormcrawler/parse/StackOverflowTest.java @@ -42,18 +42,18 @@ class StackOverflowTest extends ParsingTester { void testStackOverflow() throws IOException { prepareParserBolt("test.parsefilters.json"); Metadata metadata = new Metadata(); - parse("http://polloxniner.blogspot.com", "stackexception.html", metadata); - Assertions.assertEquals(164, output.getEmitted(Constants.StatusStreamName).size()); + parse("http://stormcrawler.apache.org.com", "stackexception.html", metadata); + Assertions.assertEquals(31, output.getEmitted(Constants.StatusStreamName).size()); } /** - * @see https://github.com/apache/incubator-stormcrawler/issues/666 * + * @see https://github.com/apache/incubator-stormcrawler/issues/666 */ @Test void testNamespaceExtraction() throws IOException { prepareParserBolt("test.parsefilters.json"); Metadata metadata = new Metadata(); - parse("http://polloxniner.blogspot.com", "stackexception.html", metadata); + parse("http://stormcrawler.apache.org.com", "stackexception.html", metadata); Assertions.assertEquals(1, output.getEmitted().size()); List<Object> obj = output.getEmitted().get(0); Metadata m = (Metadata) obj.get(2); diff --git a/core/src/test/resources/stackexception.html b/core/src/test/resources/stackexception.html index 4907bec7..c17ea9db 100644 --- a/core/src/test/resources/stackexception.html +++ b/core/src/test/resources/stackexception.html @@ -1,953 +1,144 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>PolloxNiner</title> - - <script type="text/javascript">(function() { (function(){function c(a){this.t={};this.tick=function(a,c,b){var d=void 0!=b?b:(new Date).getTime();this.t[a]=[d,c];if(void 0==b)try{window.console.timeStamp("CSI/"+a)}catch(l){}};this.tick("start",null,a)}var a;if(window.performance)var e=(a=window.performance.timing)&&a.responseStart;var h=0<e?new c(e):new c;window.jstiming={Timer:c,load:h};if(a){var b=a.navigationStart;0<b&&e>=b&&(window.jstiming.srt=e-b)}if(a){var d=window.jstiming.load [...] -e),d.tick("tbsd_","wtsrt_"))}try{a=null,window.chrome&&window.chrome.csi&&(a=Math.floor(window.chrome.csi().pageT),d&&0<b&&(d.tick("_tbnd",void 0,window.chrome.csi().startE),d.tick("tbnd_","_tbnd",b))),null==a&&window.gtbExternal&&(a=window.gtbExternal.pageT()),null==a&&window.external&&(a=window.external.pageT,d&&0<b&&(d.tick("_tbnd",void 0,window.external.startE),d.tick("tbnd_","_tbnd",b))),a&&(window.jstiming.pt=a)}catch(k){}})();window.tickAboveFold=function(c){var a=0;if(c.offsetPar [...] - })();</script><script type="text/javascript">function a(){var b=window.location.href,c=b.split("?");switch(c.length){case 1:return b+"?m=1";case 2:return 0<=c[1].search("(^|&)m=")?null:b+"&m=1";default:return null}}var d=navigator.userAgent;if(-1!=d.indexOf("Mobile")&&-1!=d.indexOf("WebKit")&&-1==d.indexOf("iPad")||-1!=d.indexOf("Opera Mini")||-1!=d.indexOf("IEMobile")){var e=a();e&&window.location.replace(e)}; -</script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -<meta name="generator" content="Blogger" /> -<link rel="icon" type="image/vnd.microsoft.icon" href="https://www.blogger.com/favicon.ico"/> -<link rel="alternate" type="application/atom+xml" title="PolloxNiner - Atom" href="http://polloxniner.blogspot.com/feeds/posts/default" /> -<link rel="alternate" type="application/rss+xml" title="PolloxNiner - RSS" href="http://polloxniner.blogspot.com/feeds/posts/default?alt=rss" /> -<link rel="service.post" type="application/atom+xml" title="PolloxNiner - Atom" href="https://www.blogger.com/feeds/10922512/posts/default" /> -<link rel="stylesheet" type="text/css" href="https://www.blogger.com/static/v1/v-css/50269083-blog_controls.css"/> -<link rel="stylesheet" type="text/css" href="https://www.blogger.com/dyn-css/authorization.css?targetBlogID=10922512&zx=1702cc85-276e-4d2b-b479-67d3a6ca63df"/> - - - <style type="text/css"> -/* ------------------------------------------------ -Blogger Template Style -Name: Thisaway (Blue) -Designer: Dan Rubin -URL: www.superfluousbanter.org -Date: 29 Feb 2004 ------------------------------------------------ */ - - -/* global ------------------------------------------------ */ -body { -margin: 0; -padding: 0; -text-align: center; -min-width: 760px; -background: #4386ce url(http://www.blogblog.com/thisaway_blue/bg_body.gif) repeat-x left top; -font-family: helvetica, arial, verdana, "trebuchet ms", sans-serif; -color: #204063; -} - -blockquote { -margin: 0; -padding: 0 10px 0 10px; -border-left: 6px solid #d8e7f7; -border-right: 6px solid #d8e7f7; -color: #477fba; -} - -code { -color: #809eba; -} - -hr { -display: none; -} - - -/* layout ------------------------------------------------ */ -#wrapper { -margin: 0 auto; -width: 760px; -text-align: left; -} - -#blog-header { -padding-bottom: 15px; -background: url(http://www.blogblog.com/thisaway_blue/bg_header_bottom.gif) no-repeat left bottom; -} - -#blog-header div { -background: #204063 url(http://www.blogblog.com/thisaway_blue/bg_header.gif) repeat-x left bottom; -} - -#main-wrapper { -position: relative; -width: 760px; -background: #f7f0e9 url(http://www.blogblog.com/thisaway_blue/bg_main_wrapper.gif) repeat-y left top; -} - -#main-content { -display: inline; /* fixes a strange ie margin bug */ -float: left; -margin: 0 0 0 3px; -padding: 0; -width: 483px; -} - -#content-wrapper { -padding: 22px 0 0 0; -background: url(http://www.blogblog.com/thisaway_blue/bg_content.gif) repeat-x left top; -} - -.post { -margin: 0 16px 14px 29px; -padding: 0; -border-bottom: 3px solid #d8e7f7; -} - -#comments { -margin: 0 16px 14px 29px; -padding: 10px; -border: 1px solid #cedef0; -background-color: #e4ecf5; -} - -#sidebar-wrapper { -display: inline; /* fixes a strange ie margin bug */ -float: right; -margin: 0 3px 0 0; -width: 269px; -color: #1c4676; -background: url(http://www.blogblog.com/thisaway_blue/bg_sidebar.gif) repeat-x left top; -} - -#sidebar { -padding: 7px 11px 0 14px; -background: url(http://www.blogblog.com/thisaway_blue/bg_sidebar_arrow.gif) repeat-y 179px 0; -} - -#profile-container { -margin-bottom: 20px; -} - -#blog-footer { -padding-top: 15px; -background: url(http://www.blogblog.com/thisaway_blue/bg_footer_top.gif) no-repeat left top; -} - -#blog-footer div { -background: #152e49 url(http://www.blogblog.com/thisaway_blue/bg_footer.gif) repeat-x left top; -} - - -/* headings ------------------------------------------------ */ -#blog-header h1 { -margin: 0; -padding: 26px 0 0 84px; -color: #eef6fe; -font-size: 30px; -line-height: 25px; -background: url(http://www.blogblog.com/thisaway_blue/icon_header.gif) no-repeat 16px 26px; -} - -h2.date-header { -margin: 0; -padding: 0 0 0 29px; -font-size: 10px; -text-transform: uppercase; -color: #8facc8; -background: url(http://www.blogblog.com/thisaway_blue/icon_date.gif) no-repeat 13px 0; -} - -.date-header span { -margin: 0 0 0 5px; -padding: 0 25px 0 25px; -background: url(http://www.blogblog.com/thisaway_blue/bg_date.gif) no-repeat 0 0; -} - -h2.sidebar-title { -padding: 1px 0 0 36px; -font-size: 14px; -color: #809fbd; -background: url(http://www.blogblog.com/thisaway_blue/icon_sidebar_heading.gif) no-repeat 0 45%; -} - -#profile-container h2.sidebar-title { -color: #527595; -background: url(http://www.blogblog.com/thisaway_blue/icon_sidebar_profileheading.gif) no-repeat 0 45%; -} - -.post h3.post-title { -margin: 13px 0 0 0; -padding: 0; -font-size: 18px; -color: #477fba; -} - -#comments h4 { -margin-top: 0; -font-size: 16px; -} - - -/* text ------------------------------------------------ */ -#blog-header p { -margin: 0; -padding: 7px 16px 0 84px; -color: #eef6fe; -font-size: 10px; -font-weight: bold; -line-height: 14px; -} - -.post-body div { -font-size: 13px; -line-height: 18px; -margin: 10px, 0px; -} - -.post-body blockquote { -margin: 10px 0px; -} - -p.post-footer { -font-size: 11px; -color: #809fbd; -text-align: right; -} - -p.post-footer em { -display: block; -float: left; -text-align: left; -font-style: normal; -} - -p.comment-data { -font-size: 12px; -} - -.comment-body p { -font-size: 12px; -line-height: 17px; -} - -.deleted-comment { - font-style:italic; - color:gray; - } - -#sidebar p { -font-size: 12px; -line-height: 17px; -margin-bottom: 20px; -} - -#sidebar p.profile-textblock { -clear: both; -margin-bottom: 10px; -} - -.profile-link { -padding: 0 0 0 17px; -background: url(http://www.blogblog.com/thisaway_blue/icon_profile.gif) no-repeat 0 0; -} - -p#powered-by { -margin: 0; -padding: 0; -} - -#blog-footer p { -margin: 0; -padding: 0 0 15px 55px; -color: #eef6fe; -font-size: 10px; -line-height: 14px; -background: url(http://www.blogblog.com/thisaway_blue/icon_footer.gif) no-repeat 16px 0; -} - - -/* lists ------------------------------------------------ */ -.profile-data { -font-size: 13px; -line-height: 17px; -} - -.post ul { -padding-left: 32px; -list-style-type: none; -font-size: 13px; -line-height: 18px; -} - -.post li { -padding: 0 0 4px 17px; -background: url(http://www.blogblog.com/thisaway_blue/icon_list_item.gif) no-repeat 0 3px; -} - -#comments ul { -margin: 0; -padding: 0; -list-style-type: none; -} - -#comments li { -padding: 0 0 1px 17px; -background: url(http://www.blogblog.com/thisaway_blue/icon_comment.gif) no-repeat 0 3px; -} - -#sidebar ul { -margin: 0 0 20px 0; -padding: 0; -list-style-type: none; -font-size: 12px; -line-height: 14px; -} - -#sidebar li { -padding: 0 0 4px 17px; -background: url(http://www.blogblog.com/thisaway_blue/icon_list_item.gif) no-repeat 0 3px; -} - - -/* links ------------------------------------------------ */ -a { -color: #4386ce; -font-weight: bold; -} - -a:hover { -color: #2462a5; -} - -a.comment-link { -/* ie5.0/win doesn't apply padding to inline elements, - so we hide these two declarations from it */ -background/* */:/**/url(http://www.blogblog.com/thisaway_blue/icon_comment.gif) no-repeat 0 45%; -padding-left: 14px; -} - -html>body a.comment-link { -/* respecified, for ie5/mac's benefit */ -background: url(http://www.blogblog.com/thisaway_blue/icon_comment.gif) no-repeat 0 45%; -padding-left: 14px; -} - -#sidebar ul a { -color: #599be2; -} - -#sidebar ul a:hover { -color: #3372b6; -} - -#powered-by a img { -border: none; -} - -#blog-header h1 a { -color: #eef6fe; -text-decoration: none; -} - -#blog-header h1 a:hover { -color: #b4c7d9; -} - -h3.post-title a { -color: #477fba; -text-decoration: none; -} - -h3.post-title a:hover { -color: #2a5e95; -} - - -/* miscellaneous ------------------------------------------------ */ -.post-photo { -padding: 3px; -border: 1px solid #bdd4eb; -} - -.profile-img { -display: inline; -} - -.profile-img img { -float: left; -margin: 0 10px 5px 0; -padding: 3px; -border: 1px solid #bdd4eb; -} - -.profile-data strong { -display: block; -} - -.clear { -clear: both; -line-height: 0; -height: 0; -} - </style> - - -<link rel="me" href="https://www.blogger.com/profile/18046785565226998687" /> - -<script type="text/javascript" language="javascript"> - // Supply ads personalization default for EEA readers - // See https://www.blogger.com/go/adspersonalization - adsbygoogle = window.adsbygoogle || []; - if (typeof adsbygoogle.requestNonPersonalizedAds === 'undefined') { - adsbygoogle.requestNonPersonalizedAds = 1; - } -</script> - -<!-- --><style type="text/css">@import url(https://www.blogger.com/static/v1/v-css/navbar/3334278262-classic.css); -div.b-mobile {display:none;} -</style> - -</head> - -<body><script type="text/javascript"> - function setAttributeOnload(object, attribute, val) { - if(window.addEventListener) { - window.addEventListener('load', - function(){ object[attribute] = val; }, false); - } else { - window.attachEvent('onload', function(){ object[attribute] = val; }); - } - } - </script> -<div id="navbar-iframe-container"></div> -<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> -<script type="text/javascript"> - gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { - if (gapi.iframes && gapi.iframes.getContext) { - gapi.iframes.getContext().openChild({ - url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d10922512\x26blogName\x3dPolloxNiner\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dSILVER\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://polloxniner.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://polloxniner.blogspot.com/\x26vt\x3d-1998057042031751691', - where: document.getElementById("navbar-iframe-container"), - id: "navbar-iframe" - }); - } - }); - </script> - -<!-- #wrapper for centering the layout --> -<div id="wrapper"> - -<!-- Blog Header --> -<div id="blog-header"><div> - <h1> - - PolloxNiner - - </h1> - <p>Been Partying Too Much And Now I'm Trying So Hard To Stay Awake...</p> -</div></div> - -<!-- Begin #main-wrapper - surrounds the #main-content and #sidebar divs for positioning --> -<div id="main-wrapper"> - -<!-- Begin #main - This div contains the main-column blog content --> -<div id="main-content"> -<!-- Begin #content-wrapper --> -<div id="content-wrapper"> - - - - - <h2 class="date-header">Monday, December 12, 2005</h2> - - - - <!-- Begin .post --> - <div class="post"><a name="113437385103247837"></a> - - - <h3 class="post-title"> - - GOODBYE AND HELLO - - </h3> - - - <div class="post-body"> - - <div> - <div style="clear:both;"></div>PolloxNiner has moved to <a href="http://www.polloxniner.blogs.com/">PolloxNiner.blogs.com</a><br /><br />URL: <a href="http://www.polloxniner.blogs.com/">http://www.polloxniner.blogs.com</a><br /><br /><br />Please change it on your bookmarks, blogroll and links.<br /><br /><br />Go there now... I have a surprise for you...<br /><br />xoxo<div style="clear:both; padding-bottom:0.25em"></div> - </div> - - </div> - - <p class="post-footer"> - <em>posted by Sunny @ <a href="http://polloxniner.blogspot.com/2005/12/goodbye-and-hello.html" title="permanent link">8:21 AM</a></em> - - <a class="comment-link" href="https://www.blogger.com/comment.g?blogID=10922512&postID=113437385103247837&isPopup=true" onclick="window.open('https://www.blogger.com/comment.g?blogID=10922512&postID=113437385103247837&isPopup=true', 'bloggerPopup', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=400,height=450');return false;">393 comments</a> - <span class="item-action"><a href="https://www.blogger.com/email-post.g?blogID=10922512&postID=113437385103247837" title="Email Post"><img class="icon-action" alt="" src="https://img2.blogblog.com/img/icon18_email.gif" height="13" width="18"/></a></span> - </p> - - </div> - <!-- End .post --> - - - <!-- Begin #comments --> - - <!-- End #comments --> - - - - - <h2 class="date-header">Saturday, December 10, 2005</h2> - - - - <!-- Begin .post --> - <div class="post"><a name="113422839937218359"></a> - - - <h3 class="post-title"> - - The Way You Move, The Way You Dance... - - </h3> - - - <div class="post-body"> - - <div> - <div style="clear:both;"></div><span style="color: rgb(255, 255, 255);">*</span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5088/865/1600/Silhouette%20From%20That%20Night.0.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5088/865/400/Silhouette%20From%20That%20Night.jpg" alt="" border="0" /></a><span style="color: rgb(255, 255, 25 [...] - </div> - - </div> - - <p class="post-footer"> - <em>posted by Sunny @ <a href="http://polloxniner.blogspot.com/2005/12/way-you-move-way-you-dance.html" title="permanent link">11:55 AM</a></em> - - <a class="comment-link" href="https://www.blogger.com/comment.g?blogID=10922512&postID=113422839937218359&isPopup=true" onclick="window.open('https://www.blogger.com/comment.g?blogID=10922512&postID=113422839937218359&isPopup=true', 'bloggerPopup', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=400,height=450');return false;">22 comments</a> - <span class="item-action"><a href="https://www.blogger.com/email-post.g?blogID=10922512&postID=113422839937218359" title="Email Post"><img class="icon-action" alt="" src="https://img2.blogblog.com/img/icon18_email.gif" height="13" width="18"/></a></span> - </p> - - </div> - <!-- End .post --> - - - <!-- Begin #comments --> - - <!-- End #comments --> - - - - - <h2 class="date-header">Friday, December 09, 2005</h2> - - - - <!-- Begin .post --> - <div class="post"><a name="113410299662151348"></a> - - - <h3 class="post-title"> - - I Hear "Roygbiv" In My Head Whenever I See You - - </h3> - - - <div class="post-body"> - - <div> - <div style="clear:both;"></div><span style="color: rgb(255, 255, 255);">*</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5088/865/1600/The%20way%20that%20you%20are.0.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/5088/865/200/The%20way%20that%20you%20are.jpg" alt="" border="0" /></a>Ok, I've been avoiding telling you this but I'll fess up: [...] - </div> - - </div> - - <p class="post-footer"> - <em>posted by Sunny @ <a href="http://polloxniner.blogspot.com/2005/12/i-hear-roygbiv-in-my-head-whenever-i.html" title="permanent link">8:05 AM</a></em> - - <a class="comment-link" href="https://www.blogger.com/comment.g?blogID=10922512&postID=113410299662151348&isPopup=true" onclick="window.open('https://www.blogger.com/comment.g?blogID=10922512&postID=113410299662151348&isPopup=true', 'bloggerPopup', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=400,height=450');return false;">70 comments</a> - <span class="item-action"><a href="https://www.blogger.com/email-post.g?blogID=10922512&postID=113410299662151348" title="Email Post"><img class="icon-action" alt="" src="https://img2.blogblog.com/img/icon18_email.gif" height="13" width="18"/></a></span> - </p> - - </div> - <!-- End .post --> - - - <!-- Begin #comments --> - - <!-- End #comments --> - - - - - <h2 class="date-header">Thursday, December 08, 2005</h2> - - - - <!-- Begin .post --> - <div class="post"><a name="113401871233551192"></a> - - - <h3 class="post-title"> - - I Couldn't Find You But You Found Me... - - </h3> - - - <div class="post-body"> - - <div> - <div style="clear:both;"></div><div style="text-align: center;"><span style="font-size:78%;"><span style="font-weight: bold; color: rgb(255, 255, 255);">*</span></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5088/865/1600/Bliss.1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5088/865/400/Bliss.1.jpg" alt="" border="0" /></a> [...] - </div> - - </div> - - <p class="post-footer"> - <em>posted by Sunny @ <a href="http://polloxniner.blogspot.com/2005/12/i-couldnt-find-you-but-you-found-me.html" title="permanent link">8:23 AM</a></em> - - <a class="comment-link" href="https://www.blogger.com/comment.g?blogID=10922512&postID=113401871233551192&isPopup=true" onclick="window.open('https://www.blogger.com/comment.g?blogID=10922512&postID=113401871233551192&isPopup=true', 'bloggerPopup', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=400,height=450');return false;">31 comments</a> - <span class="item-action"><a href="https://www.blogger.com/email-post.g?blogID=10922512&postID=113401871233551192" title="Email Post"><img class="icon-action" alt="" src="https://img2.blogblog.com/img/icon18_email.gif" height="13" width="18"/></a></span> - </p> - - </div> - <!-- End .post --> - - - <!-- Begin #comments --> - - <!-- End #comments --> - - - - - <h2 class="date-header">Wednesday, December 07, 2005</h2> - - - - <!-- Begin .post --> - <div class="post"><a name="113392311632086976"></a> - - - <h3 class="post-title"> - - Start Breaking In Those Shoes - - </h3> - - - <div class="post-body"> - - <div> - <div style="clear:both;"></div><span style="color: rgb(255, 255, 255);font-size:78%;" >*</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5088/865/1600/Walk_a_Mile_in_My_Shoes_KidThink.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5088/865/400/Walk_a_Mile_in_My_Shoes_KidThink.jpg" alt="" border="0" /></a><br /><div style= [...] - </div> - - </div> - - <p class="post-footer"> - <em>posted by Sunny @ <a href="http://polloxniner.blogspot.com/2005/12/start-breaking-in-those-shoes.html" title="permanent link">8:30 AM</a></em> - - <a class="comment-link" href="https://www.blogger.com/comment.g?blogID=10922512&postID=113392311632086976&isPopup=true" onclick="window.open('https://www.blogger.com/comment.g?blogID=10922512&postID=113392311632086976&isPopup=true', 'bloggerPopup', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=400,height=450');return false;">5 comments</a> - <span class="item-action"><a href="https://www.blogger.com/email-post.g?blogID=10922512&postID=113392311632086976" title="Email Post"><img class="icon-action" alt="" src="https://img2.blogblog.com/img/icon18_email.gif" height="13" width="18"/></a></span> - </p> - - </div> - <!-- End .post --> - - - <!-- Begin #comments --> - - <!-- End #comments --> - - - -</div> -<!-- End #content-wrapper --> - -</div> -<!-- End #main-content --> - - -<!-- Begin #sidebar-wrapper --> -<div id="sidebar-wrapper"> -<!-- Begin #sidebar --> -<div id="sidebar"> - - <!-- Begin #profile-container --> - - <div id="profile-container"><h2 class="sidebar-title">About Me</h2> -<dl class="profile-datablock"><dt class="profile-img"><a href="https://www.blogger.com/profile/18046785565226998687"><img src="//photos7.flickr.com/9502507_9d975243ac_s.jpg" width="75" height="75" alt="My Photo"></a></dt> -<dd class="profile-data"><strong>Name:</strong> <a rel="author" href="https://www.blogger.com/profile/18046785565226998687"> Sunny </a></dd> -<dd class="profile-data"><strong>Location:</strong> New York City </dd></dl> -<p class="profile-textblock">Contact PolloxNiner at Pollox9 @ aol.com. Artists & representation should send materials (mp3s, jpgs, bios) via email to PolloxNiner @ gmail.com. Others can query and send music or info to PolloxNiner @ gmail.com. -I write and edit for magazines, newspapers and TV. I believe in Crystal Light because I believe in me.</p> -<p class="profile-link"><a rel="author" href="https://www.blogger.com/profile/18046785565226998687">View my complete profile</a></p></div> - - <!-- End #profile --> - - - - - - - - - <h2 class="____________">____________</h2> - <ul> - - - - - - - - <MainOrArchivePage> - <h2 class="My Recent Writing">My Recent Writing</h2> - <ul> - <li><a href="http://www.nytimes.com">New York Times</a></li> - <li><a href="http://www.timeoutny.com/">Time Out New York</a></li> - <li><a href="http://www.ew.com">Entertainment Weekly</a></li> - <li><a href="http://www.rollingstone.com">Rolling Stone</a></li> - <li><a href="http://www.nydailynews.com">New York Daily News</a></li> - <li><a href="http://www.nerve.com/">Nerve.com</a></li> - <li><a href="http://www.cnn.com/">CNN.com</a></li> - - - <MainOrArchivePage> - <h2 class="Music / MP3 Blogs">Music / MP3 Blogs</h2> - <ul> - <li><a href="http://www.fluxblog.org/">Fluxblog</a></li> - <li><a href="http://www.headphonesex.co.uk/">Headphonesex</a></li> - <li><a href="http://siart.blogspot.com/">Silence Is A Rhythm Too</a></li> - <li><a href="http://www.scissorkick.com/">Scissorkick</a></li> - <li><a href="http://tmwsiy.blogspot.com./">tmwsiy</a></li> - <li><a href="http://songsillinoismp3.blogspot.com/">songs:illinois</a></li> - <li><a href="http://www.youngpoisoner.blogspot.com/">Young Poisoner</a></li> - <li><a href="http://www.thevoxtrotkid.blogspot.com/">The Voxtrot Kid</a></li> - <li><a href="http://hype.non-standard.net/">The Hype Machine</a></li> - <li><a href="http://takeyourmedicinemp3.blogspot.com/">Take Your Medicine</a></li> - <li><a href="http://www.erebusandterror.blogspot.com/">The Erebus + Terror</a></li> - <li><a href="http://www.catherinespita.com/blog/">Catherine's Pita</a></li> - <li><a href="http://www.irockiroll.blogspot.com/">I Rock I Roll</a></li> - <li><a href="http://wavedrumor.blogspot.com/">Waved Rumor</a></li> - <li><a href="http://aekituesday.blogspot.com/">Aeki Tuesday</a></li> - <li><a href="http://www.casadepunk.com/">Casa de Punk</a></li> - <li><a href="http://copycommaright.blogspot.com/">Copy, right?</a></li> - <li><a href="http://www.coolfer.com/blog/">Coolfer</a></li> - <li><a href="http://www.catchdubs.com/">Catchdubs</a></li> - <li><a href="http://www.centralvillage.blogspot.com/">Central Village</a></li> - <li><a href="http://www.dailyrefill.blogs.com/daily/">Daily Refill</a></li> - <li><a href="http://www.dancemusic.blogspot.com/">Danceblogga</a></li> - <li><a href="http://www.hiphopmusic.com/">Hip Hop Music</a></li> - <li><a href="http://www.melodynelson.com/">Melody Nelson</a></li> - <li><a href="http://www.morecowbell.net/">More Cowbell</a></li> - <li><a href="http://banananutrament.blogspot.com//">Banana Nutrament</a></li> - <li><a href="http://www.saidthegramophone.com/">Said The Gramophone</a></li> - <li><a href="http://www.rockcriticsdaily.blogspot.com/">Rock Critics Daily</a></li> - <li><a href="http://www.rockandrollreport.com/">The Rock and Roll Report</a></li> - <li><a href="http://www.sovietpanda.com/">Soviet Panda</a></li> - <li><a href="http://www.stereogum.com/">Stereogum</a></li> - <li><a href="http://razorbladerunner.cadenceweapon.com/">Razor Blade Runner</a></li> - <li><a href="http://www.mp3blogs.org/">MP3 Blogs Aggregator</a></li> - <li><a href="http://music.for-robots.com/">Music For Robots</a></li> - <li><a href="http://www.oneloudernyc.com/">One Louder</a></li> - <li><a href="http://the-big-ticket.blogspot.com/">The Big Ticket</a></li> - <li><a href="http://www.scenestars.net/">Scenestars</a></li> - <li><a href="http://gorillavsbear.blogspot.com/">Gorilla vs. Bear</a></li> - <li><a href="http://www.gabba.cc/">Gabba.Pod</a></li> - <li><a href="http://gutterbreakz.blogspot.com/">Gutterbreakz</a></li> - <li><a href="http://blog.largeheartedboy.com/">Largehearted Boy</a></li> - <li><a href="http://somanyshrimp.com/">So Many Shrimp</a></li> - <li><a href="http://sixeyes.blogspot.com/">Six Eyes</a></li> - <li><a href="http://tofuhut.blogspot.com/">The Tofu Hut</a></li> - <li><a href="http://swedesplease.blogspot.com/">Swedesplease</a></li> - <li><a href="http://blog.wfmu.org/freeform/mp3s/index.html">WFMU Beware of the MP3</a></li> - <li><a href="http://mattgy.net/music/">Benn Loxo du Taccu</a></li> - <li><a href="http://www.livejournal.com/users/moebius_rex/">Ready Rock Moe Rex</a></li> - <li><a href="http://teachingtheindiekidstodanceagain.blogspot.com/">Teaching The Indie Kids To Dance Again</a></li> - <li><a href="http://www.brooklynvegan.com/">Brooklyn Vegan</a></li> - <li><a href="http://www.chromewaves.net/">Chromewaves</a></li> - <li><a href="http://www.djmartian.blogspot.com/">DJ Martian</a></li> - <li><a href="http://www.londonlee.com/blog.html">The Number One Songs In Heaven</a></li> - <li><a href="http://www.christopherporter.com/">The Suburbs Are Killing Us</a></li> - <li><a href="http://moreinthemonitor.blogspot.com/">More In The Monitor</a></li> - <li><a href="http://homepages.inf.ed.ac.uk/gsteel/radioplus/">John Peel</a></li> - <li><a href="http://www.cocaineblunts.com/blog/blog.html">Cocaine Blunts</a></li> - <li><a href="http://statuteoffrauds.blogspot.com/">Statute of Frauds</a></li> - <li><a href="http://www.stylusmagazine.com/">Stylus</a></li> - <li><a href="http://www.tinymixtapes.com/">Tiny Mix Tapes</a></li> - <li><a href="http://www.theinternationalhouseofpussy.co.uk/mp3/">The International House of Pussy</a></li> - <li><a href="http://youaintnopicasso.blogspot.com/">You Ain't No Picasso</a></li> - <li><a href="http://blog.largeheartedboy.com/">Large Hearted Boy</a></li> - <li><a href="http://www.sleepbot.com/ambience/index.html">Ambience for the Masses</a></li> - <li><a href="http://www.nme.com/news/">NME News</a></li> - <li><a href="http://www.allmusic.com/">All Music Guide</a></li> - <li><a href="http://www.earlash.com/">Earlash</a></li> - <li><a href="http://www.hitsdailydouble.com/home/home.cgi">Hits</a></li> - <li><a href="http://www.billboard.com/bb/index.jsp">Billboard</a></li> - <li><a href="http://www.digitalmusicnews.com/">Digital Music News</a></li> - <li><a href="http://www.pitchforkmedia.com/">Pitchfork</a></li> - <li><a href="http://www.eff.org/">EFF</a></li> - <li><a href="http://www.ifpi.org/">IFPI</a></li> - <li><a href="http://www.riaa.com/default.asp">RIAA</a></li> - <li><a href="http://www.futureofmusic.org/10">Future of Music</a></li> - - <MainOrArchivePage> - <h2 class="Other Blogs">Other Blogs</h2> - <ul> - <li><a href="http://www.gawker.com">Gawker</a></li> - <li><a href="http://www.defamer.com/">Defamer</a></li> - <li><a href="http://www.vh1.com/news/best_week_ever/">Best Week Ever</a></li> - <li><a href="http://goldenfiddle.com/">Golden Fiddle</a></li> - <li><a href="http://laststopthistown.blogspot.com/">Last Stop This Town</a></li> - <li><a href="http://www.lindsayism.com/">Lindsayism</a></li> - <li><a href="http://www.choiresicha.com/">Choire</a></li> - <li><a href="http://www.lowculture.com/">Low Culture</a></li> - <li><a href="http://myblogispoop.blogspot.com/">My Blog Is Poop</a></li> - <li><a href="http://trent.blogspot.com/">Pink Is The New Blog</a></li> - <li><a href="http://www.blacktable.com/">The Black Table</a></li> - <li><a href="http://www.whatevs.org/">Whatevs</a></li> - <li><a href="http://www.thighswideshut.org/">Thighs Wide shut</a></li> - <li><a href="http://www.witz.org/">Witz</a></li> - <li><a href="http://www.boingboing.net/">Boing Boing</a></li> - <li><a href="http://www.wireimage.com/">Wire Image</a></li> - <li><a href="http://www.curbed.com/">Curbed</a></li> - <li><a href="http://www.fuckitwasfunny.com/">Eurotrash</a></li> - <li><a href="http://www.kittenpants.org/">Kitten Pants</a></li> - <li><a href="http://www.gridskipper.com/">Gridskipper</a></li> - <li><a href="http://www.maccers.blogspot.com/">Maccers</a></li> - <li><a href="http://pagesixsixsix.com/modules/news/">Page SixSixSix</a></li> - <li><a href="http://gofugyourself.typepad.com/">Go Fug Yourself</a></li> - <li><a href="http://www.dailyceleb.com/home/?urlref=http://gofugyourself.typepad.com/">Daily Celeb</a></li> - <li><a href="http://thesmokinggun.com/">The Smoking Gun</a></li> - <li><a href="http://jossip.com/">Jossip</a></li> - <li><a href="http://www.viceland.com/index_us.php">Vice</a></li> - <li><a href="http://www.jenyk.com/">Jenyk</a></li> - - - </ul> - - - - <h2 class="sidebar-title">Previous Posts</h2> - - <ul id="recently"> - - <li><a href="http://polloxniner.blogspot.com/2005/12/goodbye-and-hello.html">GOODBYE AND HELLO</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/12/way-you-move-way-you-dance.html">The Way You Move, The Way You Dance...</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/12/i-hear-roygbiv-in-my-head-whenever-i.html">I Hear "Roygbiv" In My Head Whenever I See You</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/12/i-couldnt-find-you-but-you-found-me.html">I Couldn't Find You But You Found Me...</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/12/start-breaking-in-those-shoes.html">Start Breaking In Those Shoes</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/12/daddys-little-princess-but-not-in-that.html">Daddy's Little Princess, But Not In That Dress</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/12/for-cc-truly-extraordinary-things-are.html">For CC: The Truly Extraordinary Things Are Rare</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/11/fistful-of-regret-and-sadness.html">A Fistful of Regret And Sadness ...</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/11/for-cc-its-lovely-thing-when-people.html">For CC: It's A Lovely Thing When People Just Click...</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/11/when-it-falls.html">When It Falls</a></li> - - </ul> - - - <h2 class="sidebar-title">Archives</h2> - - <ul class="archive-list"> - - <li><a href="http://polloxniner.blogspot.com/2005/02/">February 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/03/">March 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/04/">April 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/05/">May 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/06/">June 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/07/">July 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/08/">August 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/09/">September 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/10/">October 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/11/">November 2005</a></li> - - <li><a href="http://polloxniner.blogspot.com/2005/12/">December 2005</a></li> - - - </ul> - - - - <p id="powered-by"><a href="http://www.blogger.com"><img src="http://buttons.blogger.com/bloggerbutton1.gif" alt="Powered by Blogger" /></a></p> - - -</div> -<!-- End #sidebar --> -</div> -<!-- End #sidebar-wrapper --> - -<div class="clear"> </div> -</div> -<!-- End #main-wrapper --> - -<div id="blog-footer"><div> - <p><!-- If you'd like, you could place footer information here. --> </p> -</div></div> - -</div> -<!-- End #wrapper --> - -<!--WEBBOT bot="HTMLMarkup" startspan ALT="Site Meter" --> -<script type="text/javascript" language="JavaScript"></script> -<script type="text/javascript" language="JavaScript">var site="s17pollox"</script> -<script type="text/javascript" language="JavaScript1.2" src="http://s17.sitemeter.com/js/counter.js?site=s17pollox"> -</script> -<noscript> -<a href="http://s17.sitemeter.com/stats.asp?site=s17pollox" target="_top"> -<img src="http://s17.sitemeter.com/meter.asp?site=s17pollox" alt="Site Meter" border="0"/></a> -</noscript> -</script> -<!--WEBBOT bot="HTMLMarkup" Endspan --> - - -<!-- 'It is your responsibility to notify your visitors about cookies used and data collected on your blog. Blogger makes a standard notification available for you to use on your blog, and you can customise it or replace it with your own notice. See http://www.blogger.com/go/cookiechoices for more details.' --> -<script src="/js/cookienotice.js" defer></script> -<script> - document.addEventListener('DOMContentLoaded', function(event) { - window.cookieChoices && cookieChoices.showCookieConsentBar && cookieChoices.showCookieConsentBar( - (window.cookieOptions && cookieOptions.msg) || 'This site uses cookies from Google to deliver its services and to analyse traffic. Your IP address and user agent are shared with Google, together with performance and security metrics, to ensure quality of service, generate usage statistics and to detect and address abuse.', - (window.cookieOptions && cookieOptions.close) || 'Got it', - (window.cookieOptions && cookieOptions.learn) || 'Learn more', - (window.cookieOptions && cookieOptions.link) || 'https://www.blogger.com/go/blogspot-cookies'); - }); -</script> - -</body> -</html> \ No newline at end of file +<!DOCTYPE html> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<html> + +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <title>Apache StormCrawler (Incubating)</title> + <meta name="description" content="Apache StormCrawler (Incubating) is collection of resources for building low-latency, scalable web crawlers on Apache Storm +"> + + <link rel="stylesheet" href="/css/main.css"> + <link rel="canonical" href="https://stormcrawler.apache.org/"> + <link rel="alternate" type="application/rss+xml" title="Apache StormCrawler (Incubating)" href="https://stormcrawler.apache.org/feed.xml"> + <link rel="icon" type="/image/png" href="/img/favicon.png" /> +</head> + + +<body class="home"> + +<header class="site-header"> + <div class="site-header__wrap"> + <div class="site-header__logo"> + <a href="/"><img src="/img/incubator_logo.png" alt="Apache StormCrawler (Incubating)"></a> + </div> + </div> +</header> +<nav class="site-nav"> + <ul> + <li><a href="/index.html">Home</a> + <li><a href="/download/index.html">Download</a> + <li><a href="https://github.com/apache/incubator-stormcrawler">Source Code</a></li> + <li><a href="/getting-started/">Getting Started</a></li> + <li><a href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.1.0/index.html">JavaDocs</a> + <li><a href="/faq/">FAQ</a></li> + <li><a href="/support/">Support</a></li> + </ul> +</nav> + + +<main class="main-content"> + <div class="page-title"> + <h1>A collection of resources for building low-latency, scalable web crawlers on Apache Storm®</h1> + </div> + </div> + <div class="row row-col"> + <p><strong>Apache StormCrawler (Incubating)</strong> is an open source SDK for building distributed web crawlers based on <a href="http://storm.apache.org">Apache Storm®</a>. The project is under Apache license v2 and consists of a collection of reusable resources and components, written mostly in Java.</p> + <p>The aim of Apache StormCrawler (Incubating) is to help build web crawlers that are :</p> + <ul> + <li>scalable</li> + <li>resilient</li> + <li>low latency</li> + <li>easy to extend</li> + <li>polite yet efficient</li> + </ul> + <p><strong>Apache StormCrawler (Incubating)</strong> is a library and collection of resources that developers can leverage to build their own crawlers. The good news is that doing so can be pretty straightforward! Have a look at the <a href="getting-started/">Getting Started</a> section for more details.</p> + <p>Apart from the core components, we provide some <a href="https://github.com/apache/incubator-stormcrawler/tree/main/external">external resources</a> that you can reuse in your project, like for instance our spout and bolts for <a href="https://opensearch.org/">OpenSearch®</a> or a ParserBolt which uses <a href="http://tika.apache.org">Apache Tika®</a> to parse various document formats.</p> + <p><strong>Apache StormCrawler (Incubating)</strong> is perfectly suited to use cases where the URL to fetch and parse come as streams but is also an appropriate solution for large scale recursive crawls, particularly where low latency is required. The project is used in production by <a href="https://github.com/apache/incubator-stormcrawler/wiki/Powered-By">many organisations</a> and is actively developed and maintained.</p> + <p>The <a href="https://github.com/apache/incubator-stormcrawler/wiki/Presentations">Presentations</a> page contains links to some recent presentations made about this project.</p> + </div> + + <div class="row row-col"> + <div class="used-by-panel"> + <h2>Used by</h2> + <a href="https://pixray.com/" target="_blank"> + <img src="/img/pixray.png" alt="Pixray" height=80> + </a> + <a href="https://www.gov.nt.ca/" target="_blank"> + <img src="/img/gnwt.png" alt="Government of Northwest Territories"> + </a> + <a href="https://www.stolencamerafinder.com/" target="_blank"> + <img src="/img/stolen-camera-finder.png" alt="StolenCameraFinder"> + </a> + <a href="https://www.polecat.com/" target="_blank"> + <img src="/img/polecat.svg" alt="Polecat" height=70> + </a> + <br> + <a href="http://github.com/apache/incubator-stormcrawler/wiki/Powered-By">and many more...</a> + </div> + </div> + + <div> + <div style="clear:both;"></div><span style="color: rgb(255, 255, 255);font-size:78%;" >*</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5088/865/1600/Walk_a_Mile_in_My_Shoes_KidThink.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5088/865/400/Walk_a_Mile_in_My_Shoes_KidThink.jpg" alt="" border="0" /></a><br /><div style= [...] + </div> + + </div> + +</main> + +<footer class="site-footer"> + <img src="/img/incubator_feather_egg_logo_bw_crop.png" alt="Apache Incubator Logo" width="500"><br/> + + Apache StormCrawler is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that th [...] + <br/> <br/> + © 2024 <a href="https://www.apache.org/">The Apache Software Foundation</a><br/><br/> + Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. <br/> Apache StormCrawler, StormCrawler, the Apache feather logo are trademarks of The Apache Software Foundation. <br/> All other marks mentioned may be trademarks or registered trademarks of their respective owners. <br/><br/> + <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a> | <a href="https://www.apache.org/security/">Security</a> | <a href="https://www.apache.org/foundation/sponsorship">Sponsorship</a> | <a href="https://www.apache.org/foundation/sponsors">Sponsors</a><br/><br/> + <div class="footer-widget"> + <a class="acevent" data-format="wide" data-mode="dark"></a> + </div> +</footer> + + +</body> + +<script src="https://www.apachecon.com/event-images/snippet.js"></script> + +<!-- Matomo --> +<script> + var _paq = window._paq = window._paq || []; + /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ + _paq.push(["setDoNotTrack", true]); + _paq.push(["disableCookies"]); + _paq.push(['trackPageView']); + _paq.push(['enableLinkTracking']); + (function() { + var u="https://analytics.apache.org/"; + _paq.push(['setTrackerUrl', u+'matomo.php']); + _paq.push(['setSiteId', '58']); + var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; + g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); + })(); +</script> +<!-- End Matomo Code --> +</html>
