{"id":496,"date":"2010-05-14T15:34:32","date_gmt":"2010-05-14T14:34:32","guid":{"rendered":"http:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/"},"modified":"2010-05-14T15:34:32","modified_gmt":"2010-05-14T14:34:32","slug":"undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193","status":"publish","type":"post","link":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/","title":{"rendered":"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193"},"content":{"rendered":"<p> <span class='imgright'><img alt='' src='http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg' \/><\/span> Today I was trying to run some <a href=\"http:\/\/search.cpan.org\/dist\/Test-Class\" rel=\"nofollow\">Test::Class<\/a>-based unit tests for a project I&#39;m working on. This project has lots of functional tests that go through <a href=\"http:\/\/search.cpan.org\/dist\/Test-WWW-Mechanize\" rel=\"nofollow\">Test::WWW::Mechanize<\/a>, so they run inside Apache and mod_perl.<\/p>\n<p>What I was trying to do was testing the same code outside the Apache server, just as regular command-line-runnable tests. Being a Perl project, you have all the nice infrastructure already done for you, and so you can just run <code>make test<\/code> or <code>Build test<\/code> depending on the exact tool you&#39;re using.<\/p>\n<p>However, when I run this, I got a strange error:<\/p>\n<pre>\r\nPERL_DL_NONLAZY=1 \/usr\/bin\/perl &quot;-MExtUtils::Command::MM&quot; &quot;-e&quot; &quot;test_harness(0, &#39;blib\/lib&#39;, &#39;blib\/arch&#39;)&quot; t\/*\/*.t\r\nt\/unit-tests\/basic-sanity.t .. ok\r\nt\/unit-tests\/handler-xml.t ... Can&#39;t load &#39;\/usr\/lib\/perl5\/auto\/APR\/Request\/Apache2\/Apache2.so&#39; for module APR::Request::Apache2: \/usr\/lib\/perl5\/auto\/APR\/Request\/Apache2\/Apache2.so: undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193.\r\n at \/usr\/lib\/perl5\/Apache2\/Request.pm line 3\r\nCompilation failed in require at \/usr\/lib\/perl5\/Apache2\/Request.pm line 3.\r\nBEGIN failed--compilation aborted at \/usr\/lib\/perl5\/Apache2\/Request.pm line 3.\r\n<\/pre>\n<p>The weird error is:<\/p>\n<pre>\r\nCan&#39;t load &#39;\/usr\/lib\/perl5\/auto\/APR\/Request\/Apache2\/Apache2.so&#39; for module APR::Request::Apache2: \/usr\/lib\/perl5\/auto\/APR\/Request\/Apache2\/Apache2.so: undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193.\r\n<\/pre>\n<p>and specifically, <b><code>undefined symbol: modperl_xs_sv2request_rec<\/code><\/b>.<br \/>\nWhy is this happening?<\/p>\n<p><a href=\"http:\/\/www.google.com\/search?hl=en&amp;client=opera&amp;hs=nNE&amp;rls=en&amp;q=Can%27t+load+%27%2Fusr%2Flib%2Fperl5%2Fauto%2FAPR%2FRequest%2FApache2%2FApache2.so%27+for+module+APR%3A%3ARequest%3A%3AApache2%3A+%2Fusr%2Flib%2Fperl5%2Fauto%2FAPR%2FRequest%2FApache2%2FApache2.so%3A+undefined+symbol%3A+modperl_xs_sv2request_rec+at+%2Fusr%2Flib%2Fperl%2F5.10%2FDynaLoader.pm&amp;btnG=Search&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=&amp;gs_rfai=\" rel=\"nofollow\">A search for this error message<\/a> gives back very few results, and not very useful. However, this <a href=\"http:\/\/www.google.com\/search?client=opera&amp;rls=en&amp;q=%22Can%27t+load+%27\/usr\/lib\/perl5\/auto\/APR\/Request\/Apache2\/Apache2.so%27%22&amp;sourceid=opera&amp;ie=utf-8&amp;oe=utf-8\" rel=\"nofollow\">more specific search<\/a> turns up fewer results, but that led me to the solution.<\/p>\n<p><a href=\"http:\/\/www.toshiki.net\/x\/modules\/wordpress\/index.php?p=62\" rel=\"nofollow\">The first hit<\/a>, in particular, I have no idea what that page says, because it&#39;s Japanese, but the code blocks are clearly referring to the <b><code>PERL_DL_NONLAZY<\/code><\/b> environment variable:<\/p>\n<pre>\r\nPERL_DL_NONLAZY\r\n\r\n    Set to one to have perl resolve all undefined symbols when it\r\n    loads a dynamic library.  The default behaviour is to resolve symbols\r\n    when they are used.\r\n\r\n    Setting this variable is useful during testing of extensions as it\r\n    ensures that you get an error on misspelled function names even if\r\n    the test suite doesn&#39;t call it.\r\n<\/pre>\n<p>AFAIK, it all boils down to the <code>modperl_xs_sv2request_rec<\/code> function not being available if your code is not running inside Apache with mod_perl loaded. So, it makes sense to run the tests with <code>PERL_DL_NONLAZY=0<\/code> (that is, <b>be lazy!<\/b>), like the Japanese guy suggests.<\/p>\n<p>However, <a href=\"http:\/\/www.perlmonks.org\/?node_id=443835\" rel=\"nofollow\">changing that in the Makefile incantations seems to be a Royal Pain<\/a>, so I just gave <a href=\"http:\/\/perldoc.perl.org\/prove.html\" rel=\"nofollow\">prove<\/a> a shot. And once more, I had the proof that <code>prove<\/code> is <b>just the way to run your test suite<\/b>, because prove seems to be smart enough to set PERL_DL_NONLAZY automatically to zero.<\/p>\n<p>So now, I&#39;m running prove through a shell script, like this:<\/p>\n<pre>\r\n...\r\nBASE_DIR=&lt;project_root&gt;\r\n...\r\nexport CONFIG_FILE=\/etc\/blah-blah\r\nexport WHATEVER_ELSE=...\r\n...\r\nprove -I $BASE_DIR\/lib $* $BASE_DIR\/t\/unit-tests\r\n<\/pre>\n<p>And that&#39;s it, all tests successful! o\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I was trying to run some Test::Class-based unit tests for a project I&#39;m working on. This project has lots of functional tests that go through Test::WWW::Mechanize, so they run inside Apache and mod_perl. What I was trying to do was testing the same code outside the Apache server, just as regular command-line-runnable tests. Being [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[446,444,445,50,443,442,53],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193 - Random hacking<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193 - Random hacking\" \/>\n<meta property=\"og:description\" content=\"Today I was trying to run some Test::Class-based unit tests for a project I&#039;m working on. This project has lots of functional tests that go through Test::WWW::Mechanize, so they run inside Apache and mod_perl. What I was trying to do was testing the same code outside the Apache server, just as regular command-line-runnable tests. Being [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/\" \/>\n<meta property=\"og:site_name\" content=\"Random hacking\" \/>\n<meta property=\"article:published_time\" content=\"2010-05-14T14:34:32+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg\" \/>\n<meta name=\"author\" content=\"cosimo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"cosimo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/\"},\"author\":{\"name\":\"cosimo\",\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1\"},\"headline\":\"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193\",\"datePublished\":\"2010-05-14T14:34:32+00:00\",\"dateModified\":\"2010-05-14T14:34:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/\"},\"wordCount\":294,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1\"},\"image\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg\",\"keywords\":[\"Apache2\",\"modperl\",\"modperl_xs_sv2request_rec\",\"perl\",\"PERL_DL_NONLAZY\",\"prove\",\"test suite\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/\",\"url\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/\",\"name\":\"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193 - Random hacking\",\"isPartOf\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg\",\"datePublished\":\"2010-05-14T14:34:32+00:00\",\"dateModified\":\"2010-05-14T14:34:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage\",\"url\":\"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg\",\"contentUrl\":\"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.streppone.it\/cosimo\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#website\",\"url\":\"https:\/\/www.streppone.it\/cosimo\/blog\/\",\"name\":\"Random hacking\",\"description\":\"Assume nothing. Code defensively. Keep it simple, stupid!\",\"publisher\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.streppone.it\/cosimo\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1\",\"name\":\"cosimo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cb1d938720df45a2720724aae99e3bfc?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cb1d938720df45a2720724aae99e3bfc?s=96&r=g\",\"caption\":\"cosimo\"},\"logo\":{\"@id\":\"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/www.streppone.it\/cosimo\/blog\/author\/cosimo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193 - Random hacking","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/","og_locale":"en_US","og_type":"article","og_title":"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193 - Random hacking","og_description":"Today I was trying to run some Test::Class-based unit tests for a project I&#39;m working on. This project has lots of functional tests that go through Test::WWW::Mechanize, so they run inside Apache and mod_perl. What I was trying to do was testing the same code outside the Apache server, just as regular command-line-runnable tests. Being [&hellip;]","og_url":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/","og_site_name":"Random hacking","article_published_time":"2010-05-14T14:34:32+00:00","og_image":[{"url":"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg"}],"author":"cosimo","twitter_card":"summary_large_image","twitter_misc":{"Written by":"cosimo","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#article","isPartOf":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/"},"author":{"name":"cosimo","@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1"},"headline":"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193","datePublished":"2010-05-14T14:34:32+00:00","dateModified":"2010-05-14T14:34:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/"},"wordCount":294,"commentCount":0,"publisher":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1"},"image":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage"},"thumbnailUrl":"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg","keywords":["Apache2","modperl","modperl_xs_sv2request_rec","perl","PERL_DL_NONLAZY","prove","test suite"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/","url":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/","name":"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193 - Random hacking","isPartOf":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage"},"image":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage"},"thumbnailUrl":"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg","datePublished":"2010-05-14T14:34:32+00:00","dateModified":"2010-05-14T14:34:32+00:00","breadcrumb":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#primaryimage","url":"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg","contentUrl":"http:\/\/files.myopera.com\/cstrep\/blog\/perl.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.streppone.it\/cosimo\/blog\/2010\/05\/undefined-symbol-modperl_xs_sv2request_rec-at-usrlibperl5-10dynaloader-pm-line-193\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.streppone.it\/cosimo\/blog\/"},{"@type":"ListItem","position":2,"name":"Undefined symbol: modperl_xs_sv2request_rec at \/usr\/lib\/perl\/5.10\/DynaLoader.pm line 193"}]},{"@type":"WebSite","@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#website","url":"https:\/\/www.streppone.it\/cosimo\/blog\/","name":"Random hacking","description":"Assume nothing. Code defensively. Keep it simple, stupid!","publisher":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.streppone.it\/cosimo\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/c443bedbf6ecf99550d6395620801df1","name":"cosimo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cb1d938720df45a2720724aae99e3bfc?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cb1d938720df45a2720724aae99e3bfc?s=96&r=g","caption":"cosimo"},"logo":{"@id":"https:\/\/www.streppone.it\/cosimo\/blog\/#\/schema\/person\/image\/"},"url":"https:\/\/www.streppone.it\/cosimo\/blog\/author\/cosimo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/posts\/496"}],"collection":[{"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/comments?post=496"}],"version-history":[{"count":0,"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.streppone.it\/cosimo\/blog\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}