Help
RSS
API
Feed
Maltego
Contact
Domain > developer.joseluislaso.es
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2020-08-26
172.217.23.19
(
ClassC
)
2025-09-20
142.250.217.83
(
ClassC
)
Port 80
HTTP/1.1 200 OKContent-Type: text/html; charsetUTF-8Expires: Sat, 20 Sep 2025 08:53:35 GMTDate: Sat, 20 Sep 2025 08:53:35 GMTCache-Control: private, max-age0Last-Modified: Wed, 28 Aug 2024 11:36:09 GMTX-Content-Type-Options: nosniffX-XSS-Protection: 1; modeblockServer: GSEAccept-Ranges: noneVary: Accept-EncodingTransfer-Encoding: chunked !DOCTYPE html>html classv2 dirltr langes>head>link hrefhttps://www.blogger.com/static/v1/widgets/4128112664-css_bundle_v2.css relstylesheet typetext/css/>meta contentwidth1100 nameviewport/>meta contenttext/html; charsetUTF-8 http-equivContent-Type/>meta contentblogger namegenerator/>link hrefhttp://developer.joseluislaso.es/favicon.ico relicon typeimage/x-icon/>link hrefhttp://developer.joseluislaso.es/ relcanonical/>link relalternate typeapplication/atom+xml titlejoseluis laso (developer) - Atom hrefhttp://developer.joseluislaso.es/feeds/posts/default />link relalternate typeapplication/rss+xml titlejoseluis laso (developer) - RSS hrefhttp://developer.joseluislaso.es/feeds/posts/default?altrss />link relservice.post typeapplication/atom+xml titlejoseluis laso (developer) - Atom hrefhttps://www.blogger.com/feeds/2192560853768207406/posts/default />link relme hrefhttps://www.blogger.com/profile/05616821624440090340 />!--Cant find substitution for tag blog.ieCssRetrofitLinks-->meta contenthttp://developer.joseluislaso.es/ propertyog:url/>meta contentjoseluis laso (developer) propertyog:title/>meta content propertyog:description/>title>joseluis laso (developer)/title>style idpage-skin-1 typetext/css>!--/*-----------------------------------------------Blogger Template StyleName: Awesome Inc.Designer: Tina ChenURL: tinachen.org----------------------------------------------- *//* Content----------------------------------------------- */body {font: normal normal 13px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;background: #eeeeee none repeat scroll top left;}html body .content-outer {min-width: 0;max-width: 100%;width: 100%;}a:link {text-decoration: none;color: #3778cd;}a:visited {text-decoration: none;color: #4d469c;}a:hover {text-decoration: underline;color: #3778cd;}.body-fauxcolumn-outer .cap-top {position: absolute;z-index: 1;height: 276px;width: 100%;background: transparent none repeat-x scroll top left;_background-image: none;}/* Columns----------------------------------------------- */.content-inner {padding: 0;}.header-inner .section {margin: 0 16px;}.tabs-inner .section {margin: 0 16px;}.main-inner {padding-top: 30px;}.main-inner .column-center-inner,.main-inner .column-left-inner,.main-inner .column-right-inner {padding: 0 5px;}*+html body .main-inner .column-center-inner {margin-top: -30px;}#layout .main-inner .column-center-inner {margin-top: 0;}/* Header----------------------------------------------- */.header-outer {margin: 0 0 0 0;background: transparent none repeat scroll 0 0;}.Header h1 {font: normal bold 40px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;text-shadow: 0 0 -1px #000000;}.Header h1 a {color: #444444;}.Header .description {font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;}.header-inner .Header .titlewrapper,.header-inner .Header .descriptionwrapper {padding-left: 0;padding-right: 0;margin-bottom: 0;}.header-inner .Header .titlewrapper {padding-top: 22px;}/* Tabs----------------------------------------------- */.tabs-outer {overflow: hidden;position: relative;background: #eeeeee url(https://resources.blogblog.com/blogblog/data/1kt/awesomeinc/tabs_gradient_light.png) repeat scroll 0 0;}#layout .tabs-outer {overflow: visible;}.tabs-cap-top, .tabs-cap-bottom {position: absolute;width: 100%;border-top: 1px solid #999999;}.tabs-cap-bottom {bottom: 0;}.tabs-inner .widget li a {display: inline-block;margin: 0;padding: .6em 1.5em;font: normal bold 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;border-top: 1px solid #999999;border-bottom: 1px solid #999999;border-left: 1px solid #999999;height: 16px;line-height: 16px;}.tabs-inner .widget li:last-child a {border-right: 1px solid #999999;}.tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover {background: #666666 url(https://resources.blogblog.com/blogblog/data/1kt/awesomeinc/tabs_gradient_light.png) repeat-x scroll 0 -100px;color: #ffffff;}/* Headings----------------------------------------------- */h2 {font: normal bold 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;}/* Widgets----------------------------------------------- */.main-inner .section {margin: 0 27px;padding: 0;}.main-inner .column-left-outer,.main-inner .column-right-outer {margin-top: 0;}#layout .main-inner .column-left-outer,#layout .main-inner .column-right-outer {margin-top: 0;}.main-inner .column-left-inner,.main-inner .column-right-inner {background: transparent none repeat 0 0;-moz-box-shadow: 0 0 0 rgba(0, 0, 0, .2);-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .2);-goog-ms-box-shadow: 0 0 0 rgba(0, 0, 0, .2);box-shadow: 0 0 0 rgba(0, 0, 0, .2);-moz-border-radius: 0;-webkit-border-radius: 0;-goog-ms-border-radius: 0;border-radius: 0;}#layout .main-inner .column-left-inner,#layout .main-inner .column-right-inner {margin-top: 0;}.sidebar .widget {font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;}.sidebar .widget a:link {color: #3778cd;}.sidebar .widget a:visited {color: #4d469c;}.sidebar .widget a:hover {color: #3778cd;}.sidebar .widget h2 {text-shadow: 0 0 -1px #000000;}.main-inner .widget {background-color: #ffffff;border: 1px solid #eeeeee;padding: 0 15px 15px;margin: 20px -16px;-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);box-shadow: 0 0 20px rgba(0, 0, 0, .2);-moz-border-radius: 0;-webkit-border-radius: 0;-goog-ms-border-radius: 0;border-radius: 0;}.main-inner .widget h2 {margin: 0 -15px;padding: .6em 15px .5em;border-bottom: 1px solid transparent;}.footer-inner .widget h2 {padding: 0 0 .4em;border-bottom: 1px solid transparent;}.main-inner .widget h2 + div, .footer-inner .widget h2 + div {border-top: 1px solid #eeeeee;padding-top: 8px;}.main-inner .widget .widget-content {margin: 0 -15px;padding: 7px 15px 0;}.main-inner .widget ul, .main-inner .widget #ArchiveList ul.flat {margin: -8px -15px 0;padding: 0;list-style: none;}.main-inner .widget #ArchiveList {margin: -8px 0 0;}.main-inner .widget ul li, .main-inner .widget #ArchiveList ul.flat li {padding: .5em 15px;text-indent: 0;color: #666666;border-top: 1px solid #eeeeee;border-bottom: 1px solid transparent;}.main-inner .widget #ArchiveList ul li {padding-top: .25em;padding-bottom: .25em;}.main-inner .widget ul li:first-child, .main-inner .widget #ArchiveList ul.flat li:first-child {border-top: none;}.main-inner .widget ul li:last-child, .main-inner .widget #ArchiveList ul.flat li:last-child {border-bottom: none;}.post-body {position: relative;}.main-inner .widget .post-body ul {padding: 0 2.5em;margin: .5em 0;list-style: disc;}.main-inner .widget .post-body ul li {padding: 0.25em 0;margin-bottom: .25em;color: #444444;border: none;}.footer-inner .widget ul {padding: 0;list-style: none;}.widget .zippy {color: #666666;}/* Posts----------------------------------------------- */body .main-inner .Blog {padding: 0;margin-bottom: 1em;background-color: transparent;border: none;-moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0);-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0);-goog-ms-box-shadow: 0 0 0 rgba(0, 0, 0, 0);box-shadow: 0 0 0 rgba(0, 0, 0, 0);}.main-inner .section:last-child .Blog:last-child {padding: 0;margin-bottom: 1em;}.main-inner .widget h2.date-header {margin: 0 -15px 1px;padding: 0 0 0 0;font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;background: transparent none no-repeat scroll top left;border-top: 0 solid #eeeeee;border-bottom: 1px solid transparent;-moz-border-radius-topleft: 0;-moz-border-radius-topright: 0;-webkit-border-top-left-radius: 0;-webkit-border-top-right-radius: 0;border-top-left-radius: 0;border-top-right-radius: 0;position: static;bottom: 100%;right: 15px;text-shadow: 0 0 -1px #000000;}.main-inner .widget h2.date-header span {font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif;display: block;padding: .5em 15px;border-left: 0 solid #eeeeee;border-right: 0 solid #eeeeee;}.date-outer {position: relative;margin: 30px 0 20px;padding: 0 15px;background-color: #ffffff;border: 1px solid #eeeeee;-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);box-shadow: 0 0 20px rgba(0, 0, 0, .2);-moz-border-radius: 0;-webkit-border-radius: 0;-goog-ms-border-radius: 0;border-radius: 0;}.date-outer:first-child {margin-top: 0;}.date-outer:last-child {margin-bottom: 20px;-moz-border-radius-bottomleft: 0;-moz-border-radius-bottomright: 0;-webkit-border-bottom-left-radius: 0;-webkit-border-bottom-right-radius: 0;-goog-ms-border-bottom-left-radius: 0;-goog-ms-border-bottom-right-radius: 0;border-bottom-left-radius: 0;border-bottom-right-radius: 0;}.date-posts {margin: 0 -15px;padding: 0 15px;clear: both;}.post-outer, .inline-ad {border-top: 1px solid #eeeeee;margin: 0 -15px;padding: 15px 15px;}.post-outer {padding-bottom: 10px;}.post-outer:first-child {padding-top: 0;border-top: none;}.post-outer:last-child, .inline-ad:last-child {border-bottom: none;}.post-body {position: relative;}.post-body img {padding: 8px;background: transparent;border: 1px solid transparent;-moz-box-shadow: 0 0 0 rgba(0, 0, 0, .2);-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .2);box-shadow: 0 0 0 rgba(0, 0, 0, .2);-moz-border-radius: 0;-webkit-border-radius: 0;border-radius: 0;}h3.post-title, h4 {font: normal bold 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;}h3.post-title a {font: normal bold 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif;color: #444444;}h3.post-title a:hover {color: #3778cd;text-decoration: underline;}.post-header {margin: 0 0 1em;}.post-body {line-height: 1.4;}.post-outer h2 {color: #444444;}.post-footer {margin: 1.5em 0 0;}#blog-pager {padding: 15px;font-size: 120%;background-color: #ffffff;border: 1px solid #eeeeee;-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);box-shadow: 0 0 20px rgba(0, 0, 0, .2);-moz-border-radius: 0;-webkit-border-radius: 0;-goog-ms-border-radius: 0;border-radius: 0;-moz-border-radius-topleft: 0;-moz-border-radius-topright: 0;-webkit-border-top-left-radius: 0;-webkit-border-top-right-radius: 0;-goog-ms-border-top-left-radius: 0;-goog-ms-border-top-right-radius: 0;border-top-left-radius: 0;border-top-right-radius-topright: 0;margin-top: 1em;}.blog-feeds, .post-feeds {margin: 1em 0;text-align: center;color: #444444;}.blog-feeds a, .post-feeds a {color: #3778cd;}.blog-feeds a:visited, .post-feeds a:visited {color: #4d469c;}.blog-feeds a:hover, .post-feeds a:hover {color: #3778cd;}.post-outer .comments {margin-top: 2em;}/* Comments----------------------------------------------- */.comments .comments-content .icon.blog-author {background-repeat: no-repeat;background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9BRUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0UpKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg);}.comments .comments-content .loadmore a {border-top: 1px solid #999999;border-bottom: 1px solid #999999;}.comments .continue {border-top: 2px solid #999999;}/* Footer----------------------------------------------- */.footer-outer {margin: -20px 0 -1px;padding: 20px 0 0;color: #444444;overflow: hidden;}.footer-fauxborder-left {border-top: 1px solid #eeeeee;background: #ffffff none repeat scroll 0 0;-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);box-shadow: 0 0 20px rgba(0, 0, 0, .2);margin: 0 -20px;}/* Mobile----------------------------------------------- */body.mobile {background-size: auto;}.mobile .body-fauxcolumn-outer {background: transparent none repeat scroll top left;}*+html body.mobile .main-inner .column-center-inner {margin-top: 0;}.mobile .main-inner .widget {padding: 0 0 15px;}.mobile .main-inner .widget h2 + div,.mobile .footer-inner .widget h2 + div {border-top: none;padding-top: 0;}.mobile .footer-inner .widget h2 {padding: 0.5em 0;border-bottom: none;}.mobile .main-inner .widget .widget-content {margin: 0;padding: 7px 0 0;}.mobile .main-inner .widget ul,.mobile .main-inner .widget #ArchiveList ul.flat {margin: 0 -15px 0;}.mobile .main-inner .widget h2.date-header {right: 0;}.mobile .date-header span {padding: 0.4em 0;}.mobile .date-outer:first-child {margin-bottom: 0;border: 1px solid #eeeeee;-moz-border-radius-topleft: 0;-moz-border-radius-topright: 0;-webkit-border-top-left-radius: 0;-webkit-border-top-right-radius: 0;-goog-ms-border-top-left-radius: 0;-goog-ms-border-top-right-radius: 0;border-top-left-radius: 0;border-top-right-radius: 0;}.mobile .date-outer {border-color: #eeeeee;border-width: 0 1px 1px;}.mobile .date-outer:last-child {margin-bottom: 0;}.mobile .main-inner {padding: 0;}.mobile .header-inner .section {margin: 0;}.mobile .post-outer, .mobile .inline-ad {padding: 5px 0;}.mobile .tabs-inner .section {margin: 0 10px;}.mobile .main-inner .widget h2 {margin: 0;padding: 0;}.mobile .main-inner .widget h2.date-header span {padding: 0;}.mobile .main-inner .widget .widget-content {margin: 0;padding: 7px 0 0;}.mobile #blog-pager {border: 1px solid transparent;background: #ffffff none repeat scroll 0 0;}.mobile .main-inner .column-left-inner,.mobile .main-inner .column-right-inner {background: transparent none repeat 0 0;-moz-box-shadow: none;-webkit-box-shadow: none;-goog-ms-box-shadow: none;box-shadow: none;}.mobile .date-posts {margin: 0;padding: 0;}.mobile .footer-fauxborder-left {margin: 0;border-top: inherit;}.mobile .main-inner .section:last-child .Blog:last-child {margin-bottom: 0;}.mobile-index-contents {color: #444444;}.mobile .mobile-link-button {background: #3778cd url(https://resources.blogblog.com/blogblog/data/1kt/awesomeinc/tabs_gradient_light.png) repeat scroll 0 0;}.mobile-link-button a:link, .mobile-link-button a:visited {color: #ffffff;}.mobile .tabs-inner .PageList .widget-content {background: transparent;border-top: 1px solid;border-color: #999999;color: #444444;}.mobile .tabs-inner .PageList .widget-content .pagelist-arrow {border-left: 1px solid #999999;}-->/style>style idtemplate-skin-1 typetext/css>!--body {min-width: 960px;}.content-outer, .content-fauxcolumn-outer, .region-inner {min-width: 960px;max-width: 960px;_width: 960px;}.main-inner .columns {padding-left: 0px;padding-right: 310px;}.main-inner .fauxcolumn-center-outer {left: 0px;right: 310px;/* IE6 does not respect left and right together */_width: expression(this.parentNode.offsetWidth -parseInt(0px) -parseInt(310px) + px);}.main-inner .fauxcolumn-left-outer {width: 0px;}.main-inner .fauxcolumn-right-outer {width: 310px;}.main-inner .column-left-outer {width: 0px;right: 100%;margin-left: -0px;}.main-inner .column-right-outer {width: 310px;margin-right: -310px;}#layout {min-width: 0;}#layout .content-outer {min-width: 0;width: 800px;}#layout .region-inner {min-width: 0;width: auto;}body#layout div.add_widget {padding: 8px;}body#layout div.add_widget a {margin-left: 32px;}-->/style>script typetext/javascript> (function(i,s,o,g,r,a,m){iGoogleAnalyticsObjectr;irir||function(){ (ir.qir.q||).push(arguments)},ir.l1*new Date();as.createElement(o), ms.getElementsByTagName(o)0;a.async1;a.srcg;m.parentNode.insertBefore(a,m) })(window,document,script,https://www.google-analytics.com/analytics.js,ga); ga(create, UA-100139597-1, auto, blogger); ga(blogger.send, pageview); /script>link hrefhttps://www.blogger.com/dyn-css/authorization.css?targetBlogID2192560853768207406&zxc11ef096-7cca-4212-87a2-bd31f5569799 medianone onloadif(media!'all')media'all' relstylesheet/>noscript>link hrefhttps://www.blogger.com/dyn-css/authorization.css?targetBlogID2192560853768207406&zxc11ef096-7cca-4212-87a2-bd31f5569799 relstylesheet/>/noscript>meta namegoogle-adsense-platform-account contentca-host-pub-1556223355139109/>meta namegoogle-adsense-platform-domain contentblogspot.com/>script typetext/javascript languagejavascript> // 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>/head>body classloading variant-light>div classnavbar section idnavbar nameBarra de navegación>div classwidget Navbar data-version1 idNavbar1>script typetext/javascript> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener(load, function(){ objectattribute val; }, false); } else { window.attachEvent(onload, function(){ objectattribute val; }); } } /script>div idnavbar-iframe-container>/div>script typetext/javascript srchttps://apis.google.com/js/platform.js>/script>script typetext/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/2192560853768207406?origin\x3dhttp://developer.joseluislaso.es, where: document.getElementById(navbar-iframe-container), id: navbar-iframe }); } }); /script>script typetext/javascript>(function() {var script document.createElement(script);script.type text/javascript;script.src //pagead2.googlesyndication.com/pagead/js/google_top_exp.js;var head document.getElementsByTagName(head)0;if (head) {head.appendChild(script);}})();/script>/div>/div>div itemscopeitemscope itemtypehttp://schema.org/Blog styledisplay: none;>meta contentjoseluis laso (developer) itempropname/>/div>div classbody-fauxcolumns>div classfauxcolumn-outer body-fauxcolumn-outer>div classcap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left>div classfauxborder-right>/div>div classfauxcolumn-inner>/div>/div>div classcap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>/div>div classcontent>div classcontent-fauxcolumns>div classfauxcolumn-outer content-fauxcolumn-outer>div classcap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left>div classfauxborder-right>/div>div classfauxcolumn-inner>/div>/div>div classcap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>/div>div classcontent-outer>div classcontent-cap-top cap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left content-fauxborder-left>div classfauxborder-right content-fauxborder-right>/div>div classcontent-inner>header>div classheader-outer>div classheader-cap-top cap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left header-fauxborder-left>div classfauxborder-right header-fauxborder-right>/div>div classregion-inner header-inner>div classheader section idheader nameCabecera>div classwidget Header data-version1 idHeader1>div idheader-inner>div classtitlewrapper>h1 classtitle>joseluis laso (developer)/h1>/div>div classdescriptionwrapper>p classdescription>span>/span>/p>/div>/div>/div>/div>/div>/div>div classheader-cap-bottom cap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>/header>div classtabs-outer>div classtabs-cap-top cap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left tabs-fauxborder-left>div classfauxborder-right tabs-fauxborder-right>/div>div classregion-inner tabs-inner>div classtabs no-items section idcrosscol nameMulticolumnas>/div>div classtabs no-items section idcrosscol-overflow nameCross-Column 2>/div>/div>/div>div classtabs-cap-bottom cap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>div classmain-outer>div classmain-cap-top cap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left main-fauxborder-left>div classfauxborder-right main-fauxborder-right>/div>div classregion-inner main-inner>div classcolumns fauxcolumns>div classfauxcolumn-outer fauxcolumn-center-outer>div classcap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left>div classfauxborder-right>/div>div classfauxcolumn-inner>/div>/div>div classcap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>div classfauxcolumn-outer fauxcolumn-left-outer>div classcap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left>div classfauxborder-right>/div>div classfauxcolumn-inner>/div>/div>div classcap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>div classfauxcolumn-outer fauxcolumn-right-outer>div classcap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left>div classfauxborder-right>/div>div classfauxcolumn-inner>/div>/div>div classcap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>!-- corrects IE6 width calculation -->div classcolumns-inner>div classcolumn-center-outer>div classcolumn-center-inner>div classmain section idmain namePrincipal>div classwidget Blog data-version1 idBlog1>div classblog-posts hfeed> div classdate-outer> h2 classdate-header>span>domingo, 11 de febrero de 2018/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry uncustomized-post-template itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta content2192560853768207406 itempropblogId/>meta content6094452005558165758 itemproppostId/>a name6094452005558165758>/a>h3 classpost-title entry-title itempropname>a hrefhttp://developer.joseluislaso.es/2018/02/resolver-por-nombre-de-dominio-en-docker.html>Resolver por nombre de dominio en docker/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-6094452005558165758 itempropdescription articleBody>Recientemente he adquirido cierta práctica dockerizando mis trabajos, encuentro que es una manera muy cómoda de trabajar, independizando cada proyecto de los otros. Como no podía ser de otra manera he intentado dar el siguiente paso y poner esto de docker en práctica no solo para desarrollo sino para staging o incluso producción.br />br />Mientras que en mi ordenador local no me molesta tener que acceder al proyecto con localhost:80xx no creo que los visitantes encontraran esto muy práctico, amén de las penalizaciones que seguro que los motores de búsqueda (si acaso encontraran esas webs) podrían hacer.br />br />Así que, este fin de semana me planteé como reto intentar poner un contenedor maestro que tuviera una copia de nginx y que resolviera, por nombre de dominio, dirigiendo el tráfico al contenedor adecuado.br />br />Esto no es a priori una tarea trivial, al menos no trabajando con docker-compose. Por lo que me dispuse a hacer diferentes pruebas siguiendo este artículo a hrefhttps://www.thepolyglotdeveloper.com/2017/03/nginx-reverse-proxy-containerized-docker-applications/>https://www.thepolyglotdeveloper.com/2017/03/nginx-reverse-proxy-containerized-docker-applications/./a>br />br />El truco, si se le puede llamar así, consiste en tener claro qué recursos son compartidos, en este caso los nombres de los contenedores, los puertos que exponen cada uno y como no, las redes que internamente crea docker para cada grupo de contenedores (dentro del mismo docker-compose.yml).br />br />He creado un repositorio totalmente funcional OTB. a hrefhttps://github.com/jlaso/docker-nginx-reverseproxy-domain-name>https://github.com/jlaso/docker-nginx-reverseproxy-domain-name/a>br />br />Para explicar un poco el funcionamiento, decir que la madre del cordero se haya en como redirige el tráfico nginx. Veamos este archivo de configuración:br />br />pre stylebackground-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9,0pt;>upstream prj-one { server prj_one:80;}server { listen 80; server_name one.web.dev; location / { proxy_pass http://prj-one; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; }}/pre>br />Lo primero que hacemos es crear un upstream al que le damos un nombre (arbitrario, pero con sentido) que luego usaremos en el proxy_pass (más abajo). Importante que el nombre del server de ese upstream sea exactamente el mismo que definamos en hostname en ese contenedor.br />br />Por si aún no lo has visto, el puerto es 80 tanto en el listen (justo queremos que sean puertos estándar), pero también lo es en la cláusula server, porque la comunicación con ese container a nivel interno será por el puerto 80 (el puerto que exponemos en el Dockerfile).br />br />No sé si se requieren más explicaciones más allá de que lo pruebes y comentes.br />br />div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Publicado porspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/05616821624440090340 itempropurl/>a classg-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor titleauthor profile>span itempropname>joseluis laso/span>/a>/span>/span>span classpost-timestamp>enmeta contenthttp://developer.joseluislaso.es/2018/02/resolver-por-nombre-de-dominio-en-docker.html itempropurl/>a classtimestamp-link hrefhttp://developer.joseluislaso.es/2018/02/resolver-por-nombre-de-dominio-en-docker.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2018-02-11T12:13:00+01:00>12:13/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttp://developer.joseluislaso.es/2018/02/resolver-por-nombre-de-dominio-en-docker.html#comment-form onclick>No hay comentarios: /a>/span>span classpost-icons>span classitem-control blog-admin pid-1331028030>a hrefhttps://www.blogger.com/post-edit.g?blogID2192560853768207406&postID6094452005558165758&frompencil titleEditar entrada>img alt classicon-action height18 srchttps://resources.blogblog.com/img/icon18_edit_allbkg.gif width18/>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID6094452005558165758&targetemail target_blank titleEnviar por correo electrónico>span classshare-button-link-text>Enviar por correo electrónico/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID6094452005558165758&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleEscribe un blog>span classshare-button-link-text>Escribe un blog/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID6094452005558165758&targettwitter target_blank titleCompartir en X>span classshare-button-link-text>Compartir en X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID6094452005558165758&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleCompartir con Facebook>span classshare-button-link-text>Compartir con Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID6094452005558165758&targetpinterest target_blank titleCompartir en Pinterest>span classshare-button-link-text>Compartir en Pinterest/span>/a>/div>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>/span>/div>div classpost-footer-line post-footer-line-3>span classpost-location>/span>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>domingo, 9 de julio de 2017/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry uncustomized-post-template itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta contenthttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqdAKbvBDnSlf0tYdNr2uoN0QimR_sZEB69-OSUlrDUUfBaVQpEoEwxv8x184fzbKNhWnFhyV8i8YawW1fEKTC3WPeyYnzWI7TpJRGLO6y-1Y-pNF34dsknn7C6F3v33HfKNVtWxaHHMhV/s320/IMG_20170701_090842.jpg itempropimage_url/>meta content2192560853768207406 itempropblogId/>meta content8313044293594735927 itemproppostId/>a name8313044293594735927>/a>h3 classpost-title entry-title itempropname>a hrefhttp://developer.joseluislaso.es/2017/07/deymfony-castellon-2017.html>deymfony Castellón 2017/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-8313044293594735927 itempropdescription articleBody>El día 30 de Junio de 2017 empezó la conferencia española de Symfony en Castellón. El año pasado no pude ir a Madrid pero este no me la quería/podía perder. Siendo en mi misma comunidad y en el mismo lugar donde todo esto de Symfony empezó para mi, en la segunda edición de deSymfony (2013) ... no me la podía perder.br />Tengo que agradecer primero que nada que mi empresa a hrefhttp://www.digilant.com/ target_blank>Digilant/a> corriera con mis gastos de asistencia, cada día son más las empresas que se conciencian de que un foro como una conferencia así no es una ocasión que se deba dejar escapar.br />div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqdAKbvBDnSlf0tYdNr2uoN0QimR_sZEB69-OSUlrDUUfBaVQpEoEwxv8x184fzbKNhWnFhyV8i8YawW1fEKTC3WPeyYnzWI7TpJRGLO6y-1Y-pNF34dsknn7C6F3v33HfKNVtWxaHHMhV/s1600/IMG_20170701_090842.jpg imageanchor1 stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height1200 data-original-width1600 height240 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqdAKbvBDnSlf0tYdNr2uoN0QimR_sZEB69-OSUlrDUUfBaVQpEoEwxv8x184fzbKNhWnFhyV8i8YawW1fEKTC3WPeyYnzWI7TpJRGLO6y-1Y-pNF34dsknn7C6F3v33HfKNVtWxaHHMhV/s320/IMG_20170701_090842.jpg width320 />/a>/div>br />El primer día fue genial para mi, lleno de charlas interesantes y descansos con networking a tope. La calidad de la restauración para mi gusto aprobado justito. No así la cena con alguno de los ponentes en la que pude disfrutar muchísimo.br />div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiP93NHR-17Ld3nrg2Lvrd_A9Rkg_jCzgS2w38IrhH5siiwpNINcK8MgvaNjfxkfU8ae7SJbc874m-T9gy_PJbW7cMU7fZEexG9sGqCKaG8PadaJH-8hpOodUZyNBmkuNxhLGht8-QqQRF/s1600/IMG_20170630_092335.jpg imageanchor1 stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height1200 data-original-width1600 height240 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiP93NHR-17Ld3nrg2Lvrd_A9Rkg_jCzgS2w38IrhH5siiwpNINcK8MgvaNjfxkfU8ae7SJbc874m-T9gy_PJbW7cMU7fZEexG9sGqCKaG8PadaJH-8hpOodUZyNBmkuNxhLGht8-QqQRF/s320/IMG_20170630_092335.jpg width320 />/a>/div>br />Noticias como la que Javier Eguiluz nos soltó en su charla me sentaron como un jarro de agua fría. No me gustan los cambios y últimamente tengo la sensación de que la gente de Symfony no para de introducir mejoras. En fin, habrá que montarse en el tren de a hrefhttp://www.desymfony.com/ponencia/symfony-4-symfony-flex-y-el-futuro-de-symfony target_blank>Symfony Flex y la versión 4/a> y darle una oportunidad a todas las mejoras de rendimiento, performance y sobre todo tamaño que nos vendió tan bien Javier.br />div classseparator styleclear: both; text-align: center;>br />/div>br />div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrWFcFQvayi5f5RuAH55rCNPb4OUiluNacQ_-4ZvZVDBR2BqweuKRBvLHlOXqN3aB2th7coVefuMT7Zpr9UxGgr5vWOgorazj9kRh5FFGjiX2-xq8q5AL3P1TK83Vh3Dx3kvuLRjSRZhc5/s1600/IMG_20170630_101800.jpg imageanchor1 stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height1200 data-original-width1600 height240 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrWFcFQvayi5f5RuAH55rCNPb4OUiluNacQ_-4ZvZVDBR2BqweuKRBvLHlOXqN3aB2th7coVefuMT7Zpr9UxGgr5vWOgorazj9kRh5FFGjiX2-xq8q5AL3P1TK83Vh3Dx3kvuLRjSRZhc5/s320/IMG_20170630_101800.jpg width320 />/a>/div>br />br />La siguiente ponencia fue la relacionada con desarrollo de a hrefhttp://www.desymfony.com/ponencia/aplicaciones-cli-profesionales-con-symfony target_blank>aplicaciones CLI profesionales/a>, a cargo del afamado Raúl Fraile. Me lo pasé muy bien con los ejemplos. No tenía ni idea de que se podían hacer fotogramas de Star Wars en la consola, con sonido y todo. Al margen de eso, me pareció muy interesante poder abordar la creación de una aplicación CLI, encapsularla y dotarla de seguridad y posibilidad de actualización. No descarto poner en práctica en breve lo que allí vi.br />br />Del primer día cierro con la charla de Miquel Company, muy dinámica e interesante, amén de los chascarrillos que sugería el destino de tales mejoras. a hrefhttp://www.desymfony.com/ponencia/symfony-react-y-75-millones-de-usuarios-diarios target_blank>Symfony, React y 7,5 Millones de usuarios diarios/a>span idgoog_1389531047>/span>a hrefhttps://www.blogger.com/>/a>span idgoog_1389531048>/span>span stylecolor: #444444; font-family: "open sans" , sans-serif;>span stylebackground-color: white; font-size: 14px;>./span>/span>br />br />Del segundo día solo me sorprendió la charla de César Suárez sobre a hrefhttp://www.desymfony.com/ponencia/symfony-y-concurrencia-el-componente-lock target_blank>concurrencia usando el componente Lock/a>. Me parece muy interesante, como técnico y sobre todo amante del sistema a bajo nivel, que se haya encapsulado todo el sistema de semáforos para acceso concurrente en un componente. Aunque no todo en el campo es orégano, también hay que tener cuidado al usar en producción soluciones basadas en este componente, sobre todo si hacemos uso de la redundancia.br />br />Al finalizar hubo sorteos y premios por parte de Acilia relacionados con un reto que nos pusieron el primer día.br />br />Espero poder asistir al próximo evento, preferiblemente cerca de casa, en Castellón. Mi sincero agradecimiento a los ponentes, a los organizadores y a las empresas que con su apoyo permiten que estas conferencias existan, incluida la mía.br />br />br />br />div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Publicado porspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/05616821624440090340 itempropurl/>a classg-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor titleauthor profile>span itempropname>joseluis laso/span>/a>/span>/span>span classpost-timestamp>enmeta contenthttp://developer.joseluislaso.es/2017/07/deymfony-castellon-2017.html itempropurl/>a classtimestamp-link hrefhttp://developer.joseluislaso.es/2017/07/deymfony-castellon-2017.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2017-07-09T19:14:00+02:00>19:14/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttp://developer.joseluislaso.es/2017/07/deymfony-castellon-2017.html#comment-form onclick>2 comentarios: /a>/span>span classpost-icons>span classitem-control blog-admin pid-1331028030>a hrefhttps://www.blogger.com/post-edit.g?blogID2192560853768207406&postID8313044293594735927&frompencil titleEditar entrada>img alt classicon-action height18 srchttps://resources.blogblog.com/img/icon18_edit_allbkg.gif width18/>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8313044293594735927&targetemail target_blank titleEnviar por correo electrónico>span classshare-button-link-text>Enviar por correo electrónico/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8313044293594735927&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleEscribe un blog>span classshare-button-link-text>Escribe un blog/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8313044293594735927&targettwitter target_blank titleCompartir en X>span classshare-button-link-text>Compartir en X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8313044293594735927&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleCompartir con Facebook>span classshare-button-link-text>Compartir con Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8313044293594735927&targetpinterest target_blank titleCompartir en Pinterest>span classshare-button-link-text>Compartir en Pinterest/span>/a>/div>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Etiquetas:a hrefhttp://developer.joseluislaso.es/search/label/deSymfony reltag>deSymfony/a>,a hrefhttp://developer.joseluislaso.es/search/label/Symfony reltag>Symfony/a>/span>/div>div classpost-footer-line post-footer-line-3>span classpost-location>/span>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>sábado, 17 de junio de 2017/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry uncustomized-post-template itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta contenthttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYahGsq4wt4XLAb16t0-bpPkZT553x7nHtIMBB-uBZF1HYJbrl74laqvx02BBF5BmzJnzUUPNtH9p1PKcMWhZ5qFdnfx17_ciXdZtB7NPCFxTp79Fqb8LdhFpsH-1_YQ-0qycH6-0kW-tg/s320/IMG_20170615_141455.jpg itempropimage_url/>meta content2192560853768207406 itempropblogId/>meta content3395509392326920648 itemproppostId/>a name3395509392326920648>/a>h3 classpost-title entry-title itempropname>a hrefhttp://developer.joseluislaso.es/2017/06/vlcsofting17.html>VLCSOFTING17/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-3395509392326920648 itempropdescription articleBody>a hrefhttps://www.vlcsofting.es/>Valencia Softing 2107 #VLCSOFTING17/a>br />br />Un evento diferente y lleno de nuevas muy interesantes. En la tercera edición acudí de la mano (y gracias a) a hrefhttp://www.miguelvilata.com/ relnofollow target_blank>Miguel Vilata/a>, buen amigo además de compañero.br />div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYahGsq4wt4XLAb16t0-bpPkZT553x7nHtIMBB-uBZF1HYJbrl74laqvx02BBF5BmzJnzUUPNtH9p1PKcMWhZ5qFdnfx17_ciXdZtB7NPCFxTp79Fqb8LdhFpsH-1_YQ-0qycH6-0kW-tg/s1600/IMG_20170615_141455.jpg imageanchor1 stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height1200 data-original-width1600 height240 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYahGsq4wt4XLAb16t0-bpPkZT553x7nHtIMBB-uBZF1HYJbrl74laqvx02BBF5BmzJnzUUPNtH9p1PKcMWhZ5qFdnfx17_ciXdZtB7NPCFxTp79Fqb8LdhFpsH-1_YQ-0qycH6-0kW-tg/s320/IMG_20170615_141455.jpg width320 />/a>/div>Interesantísima las charlas de a hrefhttps://www.vlcsofting.es/ponentes/andr%C3%A9s-l-mart%C3%ADnez-ortiz stylebackground-color: white; border: 0px; color: #0074bd; font-family: Arial, sans-serif; font-size: 14.4px; font-stretch: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none; transition: color 0.1s ease-in-out; vertical-align: baseline;>Andrés L. Martínez Ortiz/a> aka almo sobre #MachineLearning, sobre todo la parte práctica de la misma con un ejemplo muy currado en base a un invitador automático para fiestas, en base al aspecto (o etiquetas) de las fotos de perfiles sociales de nuestros amigos o conocidos.br />Igual de interesante la charla sobre funciones de Azure de la mano de span stylebackground-color: white; color: #606060; font-family: "arial" , sans-serif; font-size: 14.4px; font-weight: bold;> /span>a hrefhttps://www.vlcsofting.es/ponentes/alejandro-campos-magencio stylebackground-color: white; border: 0px; color: #0074bd; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none; transition: color 0.1s ease-in-out; vertical-align: baseline;>Alejandro Campos Magencio/a>span stylebackground-color: white; color: #606060; font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit;>, me recordó mucho a las lambda functions de AWS. Lástima que la supuesta característica de open source esté supeditada a tener un servidor Windows, cosa a la cual no creo que acceda nunca. En todo caso creo que invertiré algo de tiempo este verano probando esas funciones con el crédito que proporciona la plataforma./span>br />br />div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwumBmYtAohyfe_vYgZAvkuX7niBp_ie7-TI0wvp_lYWvGlEJodx6WPCU6wy9NKWZ38xGjbOLbakaHsemsgMNro-tRiNnAxl-77t2b6kQUOwArCvjpSBS6yGvwd22Md-3JwDAMTU_XdGl3/s1600/Captura+de+pantalla+2017-06-17+a+las+16.23.58.png imageanchor1 stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height660 data-original-width1566 height134 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwumBmYtAohyfe_vYgZAvkuX7niBp_ie7-TI0wvp_lYWvGlEJodx6WPCU6wy9NKWZ38xGjbOLbakaHsemsgMNro-tRiNnAxl-77t2b6kQUOwArCvjpSBS6yGvwd22Md-3JwDAMTU_XdGl3/s320/Captura+de+pantalla+2017-06-17+a+las+16.23.58.png width320 />/a>/div>span stylebackground-color: white; color: #606060; font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit;>br />/span>span stylebackground-color: white; color: #606060; font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit;>Con la charla de /span>a hrefhttps://www.vlcsofting.es/ponentes/carlos-sahuquillo-pascual stylebackground-color: white; border: 0px; color: #0074bd; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none; transition: color 0.1s ease-in-out; vertical-align: baseline;>Carlos Sahuquillo Pascual/a> sobre trolls y coches automáticos creo que toda la audiencia disfrutó de la misma manera que yo. En poco tiempo, según parece, podremos contar con coches de nivel 5, o sea, completamente autónomos. No me atreví a preguntar si los coches actuales serían algo así como los proscritos del sistema, y de alguna manera posibles causas de accidentes.br />div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4rWqiHgdxojItegxl-Dnyjjx28lnOFnDYEWGDaNIswD1r7_ddwHXz2QhHUVB7613nThq5FFvzVvC1cCUO-MXnZvqpmmAF-f6m_3sKNHLFXgJP1IkhnuPv4JuWS6gMw7YMuG4ksYbIObxO/s1600/Captura+de+pantalla+2017-06-17+a+las+16.25.08.png imageanchor1 stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height1040 data-original-width1296 height256 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4rWqiHgdxojItegxl-Dnyjjx28lnOFnDYEWGDaNIswD1r7_ddwHXz2QhHUVB7613nThq5FFvzVvC1cCUO-MXnZvqpmmAF-f6m_3sKNHLFXgJP1IkhnuPv4JuWS6gMw7YMuG4ksYbIObxO/s320/Captura+de+pantalla+2017-06-17+a+las+16.25.08.png width320 />/a>/div>br />El catering fue espectacular tanto para el almuerzo, comida como merienda.br />Después de la comida los tracks se dividieron y mis intereses me hicieron asistir a las charlas de Big Data, que encontré algo aburridas, no sé si por el fermento de la comida en mi estómago o por mi falta de conocimiento en el tema. En todo caso el formato de las charlas en general me gustó mucho por la capacidad de intervención de los asistentes, que formularon preguntas muy interesantes.br />La clausura del evento llegó de la mano de un sorteo de varios cursos, un ipad y un fin de semana de hotel, ¡qué más se puede pedir!br />Por poner algún pero, y haciendo gala al espíritu crítico que me caracteriza, las sillas del auditorio principal eran de un incómodo supino, los apoya brazos, rectos y de metal, parecen armas de castigo para que el que pasa.br />br />En general ha sido una experiencia recomendable y repetible, espero poder asistir el año que viene si las circunstancias me lo permiten.div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Publicado porspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/05616821624440090340 itempropurl/>a classg-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor titleauthor profile>span itempropname>joseluis laso/span>/a>/span>/span>span classpost-timestamp>enmeta contenthttp://developer.joseluislaso.es/2017/06/vlcsofting17.html itempropurl/>a classtimestamp-link hrefhttp://developer.joseluislaso.es/2017/06/vlcsofting17.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2017-06-17T16:28:00+02:00>16:28/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttp://developer.joseluislaso.es/2017/06/vlcsofting17.html#comment-form onclick>No hay comentarios: /a>/span>span classpost-icons>span classitem-control blog-admin pid-1331028030>a hrefhttps://www.blogger.com/post-edit.g?blogID2192560853768207406&postID3395509392326920648&frompencil titleEditar entrada>img alt classicon-action height18 srchttps://resources.blogblog.com/img/icon18_edit_allbkg.gif width18/>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID3395509392326920648&targetemail target_blank titleEnviar por correo electrónico>span classshare-button-link-text>Enviar por correo electrónico/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID3395509392326920648&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleEscribe un blog>span classshare-button-link-text>Escribe un blog/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID3395509392326920648&targettwitter target_blank titleCompartir en X>span classshare-button-link-text>Compartir en X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID3395509392326920648&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleCompartir con Facebook>span classshare-button-link-text>Compartir con Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID3395509392326920648&targetpinterest target_blank titleCompartir en Pinterest>span classshare-button-link-text>Compartir en Pinterest/span>/a>/div>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Etiquetas:a hrefhttp://developer.joseluislaso.es/search/label/azure%20functions reltag>azure functions/a>,a hrefhttp://developer.joseluislaso.es/search/label/machine%20learning reltag>machine learning/a>,a hrefhttp://developer.joseluislaso.es/search/label/vlcsofting reltag>vlcsofting/a>/span>/div>div classpost-footer-line post-footer-line-3>span classpost-location>/span>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>miércoles, 11 de febrero de 2015/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry uncustomized-post-template itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta content2192560853768207406 itempropblogId/>meta content7138415222662576846 itemproppostId/>a name7138415222662576846>/a>h3 classpost-title entry-title itempropname>a hrefhttp://developer.joseluislaso.es/2015/02/improving-the-use-of-a-mongodb-database-with-the-help-of-symfonys-listeners.html>Improving the use of a MongoDB database with the help of Symfony'sListeners/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-7138415222662576846 itempropdescription articleBody>Sometimes applications need to filter large amounts of information to show to the user a small subset of relevant data.br />br />However, when the amount data to filter is too large, it may not be feasible to filter the information retrieving the whole data into memory.br />br />Read this article to learn about an alternative approach using a MongoDB document and Symfony listeners to limit the amount of data that needs to be traversed in memory.br />br />br />Continue reading in a hrefhttp://www.phpclasses.org/blog/post/268-Improving-the-use-of-a-MongoDB-database-with-the-help-of-Symfony-Listeners.html target_blank>PHPClasses.org/a>div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Publicado porspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/05616821624440090340 itempropurl/>a classg-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor titleauthor profile>span itempropname>joseluis laso/span>/a>/span>/span>span classpost-timestamp>enmeta contenthttp://developer.joseluislaso.es/2015/02/improving-the-use-of-a-mongodb-database-with-the-help-of-symfonys-listeners.html itempropurl/>a classtimestamp-link hrefhttp://developer.joseluislaso.es/2015/02/improving-the-use-of-a-mongodb-database-with-the-help-of-symfonys-listeners.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2015-02-11T22:34:00+01:00>22:34/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttp://developer.joseluislaso.es/2015/02/improving-the-use-of-a-mongodb-database-with-the-help-of-symfonys-listeners.html#comment-form onclick>No hay comentarios: /a>/span>span classpost-icons>span classitem-control blog-admin pid-1331028030>a hrefhttps://www.blogger.com/post-edit.g?blogID2192560853768207406&postID7138415222662576846&frompencil titleEditar entrada>img alt classicon-action height18 srchttps://resources.blogblog.com/img/icon18_edit_allbkg.gif width18/>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7138415222662576846&targetemail target_blank titleEnviar por correo electrónico>span classshare-button-link-text>Enviar por correo electrónico/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7138415222662576846&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleEscribe un blog>span classshare-button-link-text>Escribe un blog/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7138415222662576846&targettwitter target_blank titleCompartir en X>span classshare-button-link-text>Compartir en X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7138415222662576846&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleCompartir con Facebook>span classshare-button-link-text>Compartir con Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7138415222662576846&targetpinterest target_blank titleCompartir en Pinterest>span classshare-button-link-text>Compartir en Pinterest/span>/a>/div>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Etiquetas:a hrefhttp://developer.joseluislaso.es/search/label/Development reltag>Development/a>,a hrefhttp://developer.joseluislaso.es/search/label/doctrine reltag>doctrine/a>,a hrefhttp://developer.joseluislaso.es/search/label/event%20subscriber reltag>event subscriber/a>,a hrefhttp://developer.joseluislaso.es/search/label/listener reltag>listener/a>,a hrefhttp://developer.joseluislaso.es/search/label/mongodb reltag>mongodb/a>,a hrefhttp://developer.joseluislaso.es/search/label/php reltag>php/a>,a hrefhttp://developer.joseluislaso.es/search/label/Programaci%C3%B3n reltag>Programación/a>/span>/div>div classpost-footer-line post-footer-line-3>span classpost-location>/span>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>miércoles, 4 de febrero de 2015/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry uncustomized-post-template itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta content2192560853768207406 itempropblogId/>meta content7862123588187534204 itemproppostId/>a name7862123588187534204>/a>h3 classpost-title entry-title itempropname>a hrefhttp://developer.joseluislaso.es/2015/02/calculo-de-las-distancias-entre-coordenadas-gps.html>Cálculo de las distancias entre coordenadas GPS/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-7862123588187534204 itempropdescription articleBody>En varios de los últimos proyectos, sobre todo aquellos relacionados con aplicaciones móviles, he tenido que implementar un sistema de cálculo de distancias entre coordenadas strong>GPS/strong>.br />br />Para evitar en el futuro la repetitiva tarea de incorporar el código fuente he creado un repositorio que me va a permitir disfrutar de esa característica con una simple línea en el archivo strong>composer.json/strong> de cada proyecto.br />br />pre>// composer.json{ require:{ jlaso/gps: dev-master }}/pre>br />br />La clase la tienes disponible en a hrefhttps://github.com/jlaso/gps target_blank titleGitHub JLaso GPS>github/a>.br />br />El funcionamiento de momento es muy sencillo, pues sólo está incluida la función que calcula la distancia. La idea es ir añadiendo poco a poco más funciones que tengan como base el strong>GPS/strong>.br />br />br />He preparado también los tests oportunos que podrás ejecutar con strong>PhpUnit/strong> desde la raíz del proyecto.br />br />Si crees que esta clase te es útil sólo te pido que la descargues a través de la página de a hrefhttp://www.phpclasses.org/browse/author/1083173.html target_blank titlePágina de jlaso en phpclasses>PHPClasses/a> y que la votes en su momento.br />br />Espero vuestros comentarios.div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Publicado porspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/05616821624440090340 itempropurl/>a classg-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor titleauthor profile>span itempropname>joseluis laso/span>/a>/span>/span>span classpost-timestamp>enmeta contenthttp://developer.joseluislaso.es/2015/02/calculo-de-las-distancias-entre-coordenadas-gps.html itempropurl/>a classtimestamp-link hrefhttp://developer.joseluislaso.es/2015/02/calculo-de-las-distancias-entre-coordenadas-gps.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2015-02-04T15:57:00+01:00>15:57/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttp://developer.joseluislaso.es/2015/02/calculo-de-las-distancias-entre-coordenadas-gps.html#comment-form onclick>2 comentarios: /a>/span>span classpost-icons>span classitem-control blog-admin pid-1331028030>a hrefhttps://www.blogger.com/post-edit.g?blogID2192560853768207406&postID7862123588187534204&frompencil titleEditar entrada>img alt classicon-action height18 srchttps://resources.blogblog.com/img/icon18_edit_allbkg.gif width18/>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7862123588187534204&targetemail target_blank titleEnviar por correo electrónico>span classshare-button-link-text>Enviar por correo electrónico/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7862123588187534204&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleEscribe un blog>span classshare-button-link-text>Escribe un blog/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7862123588187534204&targettwitter target_blank titleCompartir en X>span classshare-button-link-text>Compartir en X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7862123588187534204&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleCompartir con Facebook>span classshare-button-link-text>Compartir con Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID7862123588187534204&targetpinterest target_blank titleCompartir en Pinterest>span classshare-button-link-text>Compartir en Pinterest/span>/a>/div>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Etiquetas:a hrefhttp://developer.joseluislaso.es/search/label/c%C3%A1lculo%20distancias reltag>cálculo distancias/a>,a hrefhttp://developer.joseluislaso.es/search/label/Development reltag>Development/a>,a hrefhttp://developer.joseluislaso.es/search/label/gps reltag>gps/a>,a hrefhttp://developer.joseluislaso.es/search/label/php reltag>php/a>,a hrefhttp://developer.joseluislaso.es/search/label/Programaci%C3%B3n reltag>Programación/a>/span>/div>div classpost-footer-line post-footer-line-3>span classpost-location>/span>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>lunes, 2 de febrero de 2015/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry uncustomized-post-template itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta contenthttp://www.joseluislaso.es/blog/wp-content/uploads/2015/02/xampp-config-300x192.png itempropimage_url/>meta content2192560853768207406 itempropblogId/>meta content8534841728687060188 itemproppostId/>a name8534841728687060188>/a>h3 classpost-title entry-title itempropname>a hrefhttp://developer.joseluislaso.es/2015/02/como-conseguir-que-gettext-funcione-en-php.html>Cómo conseguir que gettext funcione en php/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-8534841728687060188 itempropdescription articleBody>div styletext-align: justify;>A menudo necesitamos internacionalizar los programas que desarrollamos en PHP./div>br />div styletext-align: justify;>En mi libro a hrefhttp://www.marcombo.com/El-gran-libro-de-programacion-php-profesional-con-slim_paris-y-twig_isbn9788426721600.html target_blank titleProgramación profesional en PHP con Slim, Paris y Twig>Programación profesional en PHP con Slim, París y Twig/a> trato este tema en el capítulo 13. Los ejemplos de como usarlo los podemos encontrar en el código de la aplicación de ejemplo a hrefhttps://github.com/jlaso/my-simple-web target_blank titleMy Simple Web en github>My-simple-web/a>./div>br />div styletext-align: justify;>Una de las formas de internacionalizar más extendida en los desarrollos web consiste en el uso de la librería ICU, Intl y gettext./div>br />div styletext-align: justify;>La función a hrefhttp://php.net/manual/es/function.gettext.php target_blank titleFunción gettext en PHP>gettext en PHP/a> tiene un alias (subrrayado) que hace más compacta la lectura del código, por que permite concentrarse en el texto y no en la función./div>br />div styletext-align: justify;>Veámos un ejemplo:/div>br />br />pre> print _(This is a text that have to be translated); print gettext(This line is equivalent to the line above.); ?>/pre>br />br />div styletext-align: justify;>Para que strong>gettext/strong> pueda saber la equivalencia entre el mensaje que queremos mostrar y el que le estamos pasando necesitamos crear un catálogo de traducciones. El programa más extendido para hacer esto se llama a hrefhttp://poedit.net/ target_blank titlePoEdit>PoEdit/a>./div>br />br />div styletext-align: justify;>Aunque se puede poner como texto clave la cadena normal tal y como he mostrado en los ejemplos anteriores (esto se hace por si falla la traducción tener un texto en un lenguaje digamos, natural), cada vez más se está extendiendo, sobre todo debido a los frameworks, el uso de etiquetas en las cadenas claves. Esta técnica permite categorizar las entradas del catálogo, y no simplemente tener amontonadas las claves./div>br />br />div styletext-align: justify;>Así, un ejemplo habitual siguiendo estas directrices sería:/div>br />br />pre> print _(general.button.label.home); ?> /pre>br />br />div styletext-align: justify;>El lector podrá apreciar enseguida que el uso de esa nomenclatura permite tener una estructura arbórea muy conveniente. Así es como funciona por ejemplo a hrefhttps://www.tradukoj.com/ target_blank titleTradukoj, translations for developers>www.tradukoj.com/a>, mi proyecto para ayudar a los desarrolladores a centralizar sus cadenas para traducir./div>br />div styletext-align: justify;>Una vez entendidos estos principios básicos, y teniendo entendido que queremos aprovecharnos de ellos en nuestros desarrollos, vamos a necesitar configurar nuestro intérprete de PHP para que acepte esta orden, ya que no forma parte de la SPL./div>br />div styletext-align: justify;>Lo habitual es que tengamos que instalar en el sistema la libreria ICU, INTL y el soporte para ambas en PHP./div>br />div styletext-align: justify;>Vamos a ver los diferentes casos que nos podemos encontrar en función del sistema operativo./div>br />div styletext-align: justify;>strong>Windows/strong>/div>br />div styletext-align: justify;>En este sistema operativo lo habitual es disponer de soporte para PHP mediante alguna de las aplicaciones que vienen como un todo en uno. También conocidas como WAMP (de su homólogo LAMP: Linux-Apache-Mysql-PHP), tenemos con el mismo nombre WAMP; AppServ y XAMPP./div>br />div styletext-align: justify;>En todas ellas la activación de una librería estándar suele ser un paso muy sencillo. Basta con marcar la librería en la configuración o irse directamente al archivo php.ini y descomentar la línea:/div>pre>;extensionphp_intl.dll/pre>br />br />Concretamente, para el caso de Xampp puedes encontrar enlace directo a la edición de php.ini en el programa Panel de control de Xamppbr />br />br />img altxampp-config classaligncenter size-medium wp-image-382 height192 srchttp://www.joseluislaso.es/blog/wp-content/uploads/2015/02/xampp-config-300x192.png width300 />br />br />div styletext-align: justify;>strong>Linux (Ubuntu/Centos y variantes)/strong>/div>br />div styletext-align: justify;>Para instalar soporte de idiomas en el S.O Linux, si es que no lo tenemos ya, será suficiente con instalar INTL, ICU y el conector para PHP./div>br />br />br />strong>Ubuntu:/strong>br />br />pre>sudo apt-get install intl icu php5-intl/pre>br />br />strong>Centos:/strong>br />br />pre>yum install intl icu php5-intl/pre>br />br />strong>OsX/strong>br />br />div styletext-align: justify;>En función de si tenemos MacPorts o Brew instalaremos el soporte de idiomas de esta manera:/div>br />br />Mac Ports:br />br />pre>sudo port install php5-intl/pre>br />br />Brew:br />br />pre>brew install php5-intl/pre>br />br />En ambos casos para activar la extensión hay que editar php.ini y agregar o descomentar esta línea:br />br />pre>extensionintl.so/pre>br />br />En todos los sistemas operativos podemos ver que php.ini usa nuestro sistema lanzando este comando desde la terminal:br />br />pre>php --ini/pre>br />br />Ten en cuenta en todo caso que algunos sistemas usan un php.ini para el cli (interfaz de consola) y otro para el servidor web (apache normalmente).br />br />div styletext-align: justify;>Ahora sólo nos queda comprobar que funciona./div>br />div styletext-align: justify;>Para que el sistema operativo sepa que idioma estamos esperando cuando le mandamos gettext, necesitamos configurarlo antes que nada, por ello, de manera habitual, en el bootstrap de nuestra aplicación haremos algo como lo que tenemos a hrefhttps://github.com/jlaso/my-simple-web/blob/master/resources/i18n/i18n.php target_blank titleBootstrap para inicializar gettext en my-simple-web>aquí/a>:/div>br />br />pre> @bindtextdomain(default, dirname(__FILE__)./); @textdomain (default); $langs array ( es > ES, en > GB, ); $code isset($_REQUESTlang)?$_REQUESTlang:es; if (isset($langs$code)) $iso_code $code._.$langs$code; else{ $code es; $iso_code es_ES; } if (isset($_SESSIONlang)) $_SESSIONlang$code; putenv (LANGUAGE.$iso_code); putenv (LC_ALL$iso_code); setlocale(LC_ALL, $iso_code); ?>/pre>br />br />br />div styletext-align: justify;>Recuerda: si te da algún error como este:/div>br />Fatal error: Call to undefined function _() in ... on line xbr />br />div styletext-align: justify;>Vuelve a repasar la configuración./div>br />br />div styletext-align: justify;>En todo caso, si se te resiste el uso de esta librería en local y en producción te funciona correctamente, no es nada descabellado utilizar este truco:/div>br />br />pre>if(!function_exists(_)){ function _($key){ return $key; }}/pre>br />div styletext-align: justify;>Esto no te traducirá los textos, pero al menos no te romperá el código./div>br />div styletext-align: justify;>Espero vuestros comentarios./div>div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Publicado porspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/05616821624440090340 itempropurl/>a classg-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor titleauthor profile>span itempropname>joseluis laso/span>/a>/span>/span>span classpost-timestamp>enmeta contenthttp://developer.joseluislaso.es/2015/02/como-conseguir-que-gettext-funcione-en-php.html itempropurl/>a classtimestamp-link hrefhttp://developer.joseluislaso.es/2015/02/como-conseguir-que-gettext-funcione-en-php.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2015-02-02T21:30:00+01:00>21:30/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttp://developer.joseluislaso.es/2015/02/como-conseguir-que-gettext-funcione-en-php.html#comment-form onclick>No hay comentarios: /a>/span>span classpost-icons>span classitem-control blog-admin pid-1331028030>a hrefhttps://www.blogger.com/post-edit.g?blogID2192560853768207406&postID8534841728687060188&frompencil titleEditar entrada>img alt classicon-action height18 srchttps://resources.blogblog.com/img/icon18_edit_allbkg.gif width18/>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8534841728687060188&targetemail target_blank titleEnviar por correo electrónico>span classshare-button-link-text>Enviar por correo electrónico/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8534841728687060188&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleEscribe un blog>span classshare-button-link-text>Escribe un blog/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8534841728687060188&targettwitter target_blank titleCompartir en X>span classshare-button-link-text>Compartir en X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8534841728687060188&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleCompartir con Facebook>span classshare-button-link-text>Compartir con Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8534841728687060188&targetpinterest target_blank titleCompartir en Pinterest>span classshare-button-link-text>Compartir en Pinterest/span>/a>/div>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Etiquetas:a hrefhttp://developer.joseluislaso.es/search/label/Development reltag>Development/a>,a hrefhttp://developer.joseluislaso.es/search/label/gettext reltag>gettext/a>,a hrefhttp://developer.joseluislaso.es/search/label/i18n reltag>i18n/a>,a hrefhttp://developer.joseluislaso.es/search/label/internacionalization reltag>internacionalization/a>,a hrefhttp://developer.joseluislaso.es/search/label/internationalizacion reltag>internationalizacion/a>,a hrefhttp://developer.joseluislaso.es/search/label/msw reltag>msw/a>,a hrefhttp://developer.joseluislaso.es/search/label/my%20simple%20web reltag>my simple web/a>,a hrefhttp://developer.joseluislaso.es/search/label/my-simple-web reltag>my-simple-web/a>,a hrefhttp://developer.joseluislaso.es/search/label/mysimpleweb reltag>mysimpleweb/a>,a hrefhttp://developer.joseluislaso.es/search/label/translations reltag>translations/a>/span>/div>div classpost-footer-line post-footer-line-3>span classpost-location>/span>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>lunes, 26 de enero de 2015/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry uncustomized-post-template itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta contenthttps://i.ytimg.com/vi/YgzNNsrCWWc/hqdefault.jpg itempropimage_url/>meta content2192560853768207406 itempropblogId/>meta content8602626608741975066 itemproppostId/>a name8602626608741975066>/a>h3 classpost-title entry-title itempropname>a hrefhttp://developer.joseluislaso.es/2015/01/animacion-estilo-metro-con-titanium.html>Animación estilo metro con Titanium/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-8602626608741975066 itempropdescription articleBody>En ocasiones he necesitado indicar al usuario de la aplicación móvil que un proceso necesita cierto tiempo para realizarse, como la conexión a un servidor para enviar o recoger datos, o sencillamente actualizar la posición GPS.br/>A menudo, siguiendo las tendencias actuales, esta información se requiere de una forma limpia y no intrusiva.br/>Siguiendo estos parámetros he creado una utilidad que realiza una animación sobre el borde superior de una vista, utilizando un gradiente en el color de fondo (backgroundColorGradient).br/>br/>La función animateGradient está incluida dentro del módulo utils.js, por tanto para usarla haremos algo así:br/>pre>br/>var utils require(/utils);br/>var activity utils.animateGradient(view,options);br/>// una vez terminada la actividad invocaremosbr/>activity.destroy();br/>/pre>br/>br/>view es un contenedor de tipo Titanium.UI.createView y options puede albegar de momento las opciones que indican la velocidad de animación y los colores.br/>br/>Veamos como está hecho.br/>br/>pre>br/>animateGradient: function (view, options)br/>{br/> // in android isnt possible to include a view inside an object that is not a viewbr/> if((Titanium.Platform.osname android) && (view.toString() ! object View)){br/> alert(Error on type calling animateGradient, called with +view.toString());br/> setTimeout(function(){br/> Titanium.Android.currentActivity.finish();br/> },2500);br/> return;br/> }br/>br/> ...br/>}br/>/pre>br/>br/>Lo primero es comprobar que se ha llamado con el tipo de parámetro adecuado, pues en android no se puede usar un contenedor que no sea un objeto de tipo Titanium.UI.createView, en iOS he probado con un button directamente y funciona bien.br/>br/>pre>br/>animateGradient: function (view, options)br/>{br/> // check if view parameter is right in android platform ...br/> if(typeof(options) undefined){br/> options {};br/> }br/> var timeout options.timeout || 75;br/> var colors options.colors || #0000aa, #000099;br/>br/> ...br/>}br/>/pre>br/>br/>Ahora se establecen las opciones por defecto para el caso de no indicarlas, luego explicaré para que hacen falta dos colores.br/> br/>pre>br/>animateGradient: function (view, options)br/>{br/> // check if view parameter is right in android platform ...br/> // establish default options and set it to local variables ...br/> /**br/> * the view that host the activity barbr/> */br/> var linearGradient Titanium.UI.createView({br/> top: 0,br/> left: 0,br/> width: 100%, br/> height: 3dp,br/> zIndex: 1000br/> };br/> view.add(linearGradient);br/>br/> ...br/>}br/>/pre>br/>br/>Lo primero es crear una vista que va a albergar nuestra animación, como puedes ver estará en el borde superior, con ancho total y una altura de 3dp, el valor de zIndex es como medida de precaución para que sea visible en cualquier caso.br/>br/>pre>br/>animateGradient: function (view, options)br/>{br/> // check if view parameter is right in android platform ...br/> // establish default options and set it to local variables ...br/> // create animation view container inside the main view ...br/> var gradient {br/> inc: 0.02,br/> x: 0.05,br/> colorIndex: 0,br/> colors: colors,br/> baseColor: view.backgroundColor,br/> color: function(){br/> this.colorIndex (this.colorIndex+1)%2;br/> return this.colorsthis.colorIndex;br/> }br/> };br/>br/> ...br/>}br/>/pre>br/>br/>Creamos un objeto auxiliar para encapsular toda las variables que necesitamos. Fíjate como el color de fondo es exactamente el mismo que la vista principal.br/>br/>pre>br/>animateGradient: function (view, options)br/>{br/> // check if view parameter is right in android platform ...br/> // establish default options and set it to local variables ...br/> // create animation view container inside the main view ...br/> // auxiliary object in order to encapsulate all variables ...br/> /**br/> * timer that simulates the activity though changing gradient colorbr/> */br/> var interval setInterval(function(){br/> if((gradient.x > 0.95) || (gradient.x0.05)){br/> gradient.inc -gradient.inc;br/> }br/> gradient.x + gradient.inc;br/> linearGradient.backgroundGradient {br/> type: linear,br/> startPoint: { x: 0%, y: 50% },br/> endPoint: { x: 100%, y: 50% },br/> colors: br/> { color: gradient.baseColor, offset: 0.0},br/> { color: gradient.baseColor, offset: gradient.x-0.05},br/> { color: gradient.color(), offset: gradient.x },br/> { color: gradient.baseColor, offset: gradient.x+0.05 },br/> { color: gradient.baseColor, offset: 1.0 }br/> br/> };br/> }, timeout);br/>br/> ...br/>}br/>/pre>br/>br/>Ahora viene la parte que realmente hace la animación, un intervalo que en cada iteración crea la ilusión de que el gradiente del color de fondo se mueve. Para forzar a Titanium a que pinte la vista de nuevo hay que indicar cada vez un color diferente, por eso se utilizan dos colores, para que el efecto sea más bonito y auténtico no deben distar mucho ambos colores, fíjate en los que se usan por defecto.br/>br/>pre>br/>animateGradient: function (view, options)br/>{br/> // check if view parameter is right in android platform ...br/> // establish default options and set it to local variables ...br/> // create animation view container inside the main view ...br/> // auxiliary object in order to encapsulate all variables ...br/> // timer that simulates the activity though changing gradient color ...br/> return {br/> linearGradient: linearGradient,br/> view: view,br/> destroy: function(){br/> clearInterval(this.interval);br/> view.remove(linearGradient);br/> },br/> interval: intervalbr/> };br/>}br/>/pre>br/>br/>Al final se devuelve un objeto con los datos necesarios, el más importante es la función que nos va a permitir deshacernos de la vista temporal usada para crear la animación.br/>br/>iframe width420 height315 src//www.youtube.com/embed/YgzNNsrCWWc frameborder0 allowfullscreen>/iframe>br/>br/>El código fuente completo de la animación incluido en una pequeña aplicación de ejemplo lo tienes a tu disposición en mi cuenta de a hrefhttps://github.com/jlaso/titanium-gps-activity target_blank titleshow the activity of gps connection>github/a>.br/>br/>Vamos a ver el ejemplo de uso completo:br/>br/>pre>br/> ...br/> var testBtnView Titanium.UI.createView({br/> backgroundColor: #aaa,br/> top: 50%,br/> height: 50dp,br/> width: 225dpbr/> });br/> win.add(testBtnView);br/>br/> var testBtn Titanium.UI.createButton({br/> color: white,br/> backgroundColor: #aaa,br/> title: TEST,br/> font: {fontSize:18dp,fontFamily:Helvetica Neue,fontWeight:bold},br/> textAlign: centerbr/> });br/> testBtnView.add(testBtn);br/> ...br/> function testBtnHandler(){br/> console.info(test button clicked);br/> activity utils.animateGradient(testBtnView);br/> // simulate an action that lasts 5 secondsbr/> setTimeout(function(){br/> activity.destroy();br/> }, 5000);br/> }br/> ...br/>/pre>br/>br/>Espero vuestros comentarios.div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Publicado porspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/05616821624440090340 itempropurl/>a classg-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor titleauthor profile>span itempropname>joseluis laso/span>/a>/span>/span>span classpost-timestamp>enmeta contenthttp://developer.joseluislaso.es/2015/01/animacion-estilo-metro-con-titanium.html itempropurl/>a classtimestamp-link hrefhttp://developer.joseluislaso.es/2015/01/animacion-estilo-metro-con-titanium.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2015-01-26T00:21:00+01:00>0:21/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttp://developer.joseluislaso.es/2015/01/animacion-estilo-metro-con-titanium.html#comment-form onclick>No hay comentarios: /a>/span>span classpost-icons>span classitem-control blog-admin pid-1331028030>a hrefhttps://www.blogger.com/post-edit.g?blogID2192560853768207406&postID8602626608741975066&frompencil titleEditar entrada>img alt classicon-action height18 srchttps://resources.blogblog.com/img/icon18_edit_allbkg.gif width18/>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8602626608741975066&targetemail target_blank titleEnviar por correo electrónico>span classshare-button-link-text>Enviar por correo electrónico/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8602626608741975066&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleEscribe un blog>span classshare-button-link-text>Escribe un blog/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8602626608741975066&targettwitter target_blank titleCompartir en X>span classshare-button-link-text>Compartir en X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8602626608741975066&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleCompartir con Facebook>span classshare-button-link-text>Compartir con Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID2192560853768207406&postID8602626608741975066&targetpinterest target_blank titleCompartir en Pinterest>span classshare-button-link-text>Compartir en Pinterest/span>/a>/div>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Etiquetas:a hrefhttp://developer.joseluislaso.es/search/label/animacion reltag>animacion/a>,a hrefhttp://developer.joseluislaso.es/search/label/Appcelerator%20Titanium reltag>Appcelerator Titanium/a>,a hrefhttp://developer.joseluislaso.es/search/label/Programaci%C3%B3n reltag>Programación/a>,a hrefhttp://developer.joseluislaso.es/search/label/titanium reltag>titanium/a>/span>/div>div classpost-footer-line post-footer-line-3>span classpost-location>/span>/div>/div>/div>/div> /div>/div> /div>div classblog-pager idblog-pager>span idblog-pager-older-link>a classblog-pager-older-link hrefhttp://developer.joseluislaso.es/search?updated-max2015-01-26T00:21:00%2B01:00&max-results7 idBlog1_blog-pager-older-link titleEntradas antiguas>Entradas antiguas/a>/span>a classhome-link hrefhttp://developer.joseluislaso.es/>Inicio/a>/div>div classclear>/div>div classblog-feeds>div classfeed-links>Suscribirse a:a classfeed-link hrefhttp://developer.joseluislaso.es/feeds/posts/default target_blank typeapplication/atom+xml>Entradas (Atom)/a>/div>/div>/div>/div>/div>/div>div classcolumn-left-outer>div classcolumn-left-inner>aside>/aside>/div>/div>div classcolumn-right-outer>div classcolumn-right-inner>aside>div classsidebar section idsidebar-right-1>div classwidget HTML data-version1 idHTML1>h2 classtitle>Compra mi libro/h2>div classwidget-content>iframe stylewidth:120px;height:240px; marginwidth0 marginheight0 scrollingno frameborder0 srchttps://rcm-eu.amazon-adsystem.com/e/cm?refqf_sp_asin_til&tjoseluislaso-21&mamazon&o30&p8&las1&IS11&asins8426721605&linkId49c2deb6aa644b6d0ea8e154c9c5e4c9&bc1FFFFFF<1_top&fc1333333&lc10066C0&bg1FFFFFF&fifr> /iframe>/div>div classclear>/div>/div>div classwidget Subscribe data-version1 idSubscribe1>div stylewhite-space:nowrap>h2 classtitle>Suscribirse a/h2>div classwidget-content>div classsubscribe-wrapper subscribe-type-POST>div classsubscribe expanded subscribe-type-POST idSW_READER_LIST_Subscribe1POST styledisplay:none;>div classtop>span classinner onclickreturn(_SW_toggleReaderList(event, Subscribe1POST));>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>Entradas/span>div classfeed-reader-links>a classfeed-reader-link hrefhttps://www.netvibes.com/subscribe.php?urlhttp%3A%2F%2Fdeveloper.joseluislaso.es%2Ffeeds%2Fposts%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-netvibes.png/>/a>a classfeed-reader-link hrefhttps://add.my.yahoo.com/content?urlhttp%3A%2F%2Fdeveloper.joseluislaso.es%2Ffeeds%2Fposts%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-yahoo.png/>/a>a classfeed-reader-link hrefhttp://developer.joseluislaso.es/feeds/posts/default target_blank>img alignabsmiddle classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/> Atom /a>/div>/div>div classbottom>/div>/div>div classsubscribe idSW_READER_LIST_CLOSED_Subscribe1POST onclickreturn(_SW_toggleReaderList(event, Subscribe1POST));>div classtop>span classinner>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>span onclickreturn(_SW_toggleReaderList(event, Subscribe1POST));>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>Entradas/span>/span>/div>div classbottom>/div>/div>/div>div classsubscribe-wrapper subscribe-type-COMMENT>div classsubscribe expanded subscribe-type-COMMENT idSW_READER_LIST_Subscribe1COMMENT styledisplay:none;>div classtop>span classinner onclickreturn(_SW_toggleReaderList(event, Subscribe1COMMENT));>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>Comentarios/span>div classfeed-reader-links>a classfeed-reader-link hrefhttps://www.netvibes.com/subscribe.php?urlhttp%3A%2F%2Fdeveloper.joseluislaso.es%2Ffeeds%2Fcomments%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-netvibes.png/>/a>a classfeed-reader-link hrefhttps://add.my.yahoo.com/content?urlhttp%3A%2F%2Fdeveloper.joseluislaso.es%2Ffeeds%2Fcomments%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-yahoo.png/>/a>a classfeed-reader-link hrefhttp://developer.joseluislaso.es/feeds/comments/default target_blank>img alignabsmiddle classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/> Atom /a>/div>/div>div classbottom>/div>/div>div classsubscribe idSW_READER_LIST_CLOSED_Subscribe1COMMENT onclickreturn(_SW_toggleReaderList(event, Subscribe1COMMENT));>div classtop>span classinner>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>span onclickreturn(_SW_toggleReaderList(event, Subscribe1COMMENT));>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>Comentarios/span>/span>/div>div classbottom>/div>/div>/div>div styleclear:both>/div>/div>/div>div classclear>/div>/div>div classwidget Profile data-version1 idProfile1>h2>Datos personales/h2>div classwidget-content>dl classprofile-datablock>dt classprofile-data>a classprofile-name-link g-profile hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor stylebackground-image: url(//www.blogger.com/img/logo-16.png);>joseluis laso/a>/dt>/dl>a classprofile-link hrefhttps://www.blogger.com/profile/05616821624440090340 relauthor>Ver todo mi perfil/a>div classclear>/div>/div>/div>div classwidget BlogArchive data-version1 idBlogArchive1>h2>Archivo del blog/h2>div classwidget-content>div idArchiveList>div idBlogArchive1_ArchiveList>ul classhierarchy>li classarchivedate expanded>a classtoggle hrefjavascript:void(0)>span classzippy toggle-open> ▼ /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2018/>2018/a>span classpost-count dirltr>(1)/span>ul classhierarchy>li classarchivedate expanded>a classtoggle hrefjavascript:void(0)>span classzippy toggle-open> ▼ /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2018/02/>febrero/a>span classpost-count dirltr>(1)/span>ul classposts>li>a hrefhttp://developer.joseluislaso.es/2018/02/resolver-por-nombre-de-dominio-en-docker.html>Resolver por nombre de dominio en docker/a>/li>/ul>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2017/>2017/a>span classpost-count dirltr>(2)/span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2017/07/>julio/a>span classpost-count dirltr>(1)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2017/06/>junio/a>span classpost-count dirltr>(1)/span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2015/>2015/a>span classpost-count dirltr>(5)/span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2015/02/>febrero/a>span classpost-count dirltr>(3)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2015/01/>enero/a>span classpost-count dirltr>(2)/span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2014/>2014/a>span classpost-count dirltr>(12)/span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2014/08/>agosto/a>span classpost-count dirltr>(2)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2014/07/>julio/a>span classpost-count dirltr>(2)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2014/06/>junio/a>span classpost-count dirltr>(1)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2014/05/>mayo/a>span classpost-count dirltr>(3)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2014/04/>abril/a>span classpost-count dirltr>(4)/span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2013/>2013/a>span classpost-count dirltr>(5)/span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2013/10/>octubre/a>span classpost-count dirltr>(2)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2013/06/>junio/a>span classpost-count dirltr>(1)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2013/01/>enero/a>span classpost-count dirltr>(2)/span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2012/>2012/a>span classpost-count dirltr>(2)/span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2012/11/>noviembre/a>span classpost-count dirltr>(1)/span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttp://developer.joseluislaso.es/2012/08/>agosto/a>span classpost-count dirltr>(1)/span>/li>/ul>/li>/ul>/div>/div>div classclear>/div>/div>/div>/div>/aside>/div>/div>/div>div styleclear: both>/div>!-- columns -->/div>!-- main -->/div>/div>div classmain-cap-bottom cap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>footer>div classfooter-outer>div classfooter-cap-top cap-top>div classcap-left>/div>div classcap-right>/div>/div>div classfauxborder-left footer-fauxborder-left>div classfauxborder-right footer-fauxborder-right>/div>div classregion-inner footer-inner>div classfoot no-items section idfooter-1>/div>table border0 cellpadding0 cellspacing0 classsection-columns columns-2>tbody>tr>td classfirst columns-cell>div classfoot no-items section idfooter-2-1>/div>/td>td classcolumns-cell>div classfoot no-items section idfooter-2-2>/div>/td>/tr>/tbody>/table>!-- outside of the include in order to lock Attribution widget -->div classfoot section idfooter-3 namePie de página>div classwidget Attribution data-version1 idAttribution1>div classwidget-content styletext-align: center;>(C) Joseluis Laso. Tema Fantástico, S.A.. Con la tecnología de a hrefhttps://www.blogger.com target_blank>Blogger/a>./div>div classclear>/div>/div>/div>/div>/div>div classfooter-cap-bottom cap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>/footer>!-- content -->/div>/div>div classcontent-cap-bottom cap-bottom>div classcap-left>/div>div classcap-right>/div>/div>/div>/div>script typetext/javascript> window.setTimeout(function() { document.body.className document.body.className.replace(loading, ); }, 10); /script>!--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 customize it or replace with your own notice. See http://www.blogger.com/go/cookiechoices for more details.-->script defer src/js/cookienotice.js>/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 analyze traffic. Your IP address and user-agent are shared with Google along 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>script typetext/javascript srchttps://www.blogger.com/static/v1/widgets/552934507-widgets.js>/script>script typetext/javascript>window__wavt AOuZoY4QhY4erbn9hzVwNAmUw1g04v67MA:1758358415180;_WidgetManager._Init(//www.blogger.com/rearrange?blogID\x3d2192560853768207406,//developer.joseluislaso.es/,2192560853768207406);_WidgetManager._SetDataContext({name: blog, data: {blogId: 2192560853768207406, title: joseluis laso (developer), url: http://developer.joseluislaso.es/, canonicalUrl: http://developer.joseluislaso.es/, homepageUrl: http://developer.joseluislaso.es/, searchUrl: http://developer.joseluislaso.es/search, canonicalHomepageUrl: http://developer.joseluislaso.es/, blogspotFaviconUrl: http://developer.joseluislaso.es/favicon.ico, bloggerUrl: https://www.blogger.com, hasCustomDomain: true, httpsEnabled: false, enabledCommentProfileImages: true, gPlusViewType: FILTERED_POSTMOD, adultContent: false, analyticsAccountNumber: UA-100139597-1, encoding: UTF-8, locale: es, localeUnderscoreDelimited: es, languageDirection: ltr, isPrivate: false, isMobile: false, isMobileRequest: false, mobileClass: , isPrivateBlog: false, isDynamicViewsAvailable: true, feedLinks: \x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22joseluis laso (developer) - Atom\x22 href\x3d\x22http://developer.joseluislaso.es/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22joseluis laso (developer) - RSS\x22 href\x3d\x22http://developer.joseluislaso.es/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22joseluis laso (developer) - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/2192560853768207406/posts/default\x22 /\x3e\n, meTag: \x3clink rel\x3d\x22me\x22 href\x3d\x22https://www.blogger.com/profile/05616821624440090340\x22 /\x3e\n, adsenseHostId: ca-host-pub-1556223355139109, adsenseHasAds: false, adsenseAutoAds: false, boqCommentIframeForm: true, loginRedirectParam: , view: , dynamicViewsCommentsSrc: //www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js, dynamicViewsScriptSrc: //www.blogblog.com/dynamicviews/bfbc640b7e303482, plusOneApiSrc: https://apis.google.com/js/platform.js, disableGComments: true, interstitialAccepted: false, sharing: {platforms: {name: Obtener enlace, key: link, shareMessage: Obtener enlace, target: }, {name: Facebook, key: facebook, shareMessage: Compartir en Facebook, target: facebook}, {name: Escribe un blog, key: blogThis, shareMessage: Escribe un blog, target: blog}, {name: X, key: twitter, shareMessage: Compartir en X, target: twitter}, {name: Pinterest, key: pinterest, shareMessage: Compartir en Pinterest, target: pinterest}, {name: Correo electr\xf3nico, key: email, shareMessage: Correo electr\xf3nico, target: email}, disableGooglePlus: true, googlePlusShareButtonWidth: 0, googlePlusBootstrap: \x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27es\x27};\x3c/script\x3e}, hasCustomJumpLinkMessage: false, jumpLinkMessage: Leer m\xe1s, pageType: index, pageName: , pageTitle: joseluis laso (developer)}}, {name: features, data: {}}, {name: messages, data: {edit: Editar, linkCopiedToClipboard: El enlace se ha copiado en el Portapapeles., ok: Aceptar, postLink: Enlace de la entrada}}, {name: template, data: {name: Awesome Inc., localizedName: Fant\xe1stico, S.A., isResponsive: false, isAlternateRendering: false, isCustom: false, variant: light, variantId: light}}, {name: view, data: {classic: {name: classic, url: ?view\x3dclassic}, flipcard: {name: flipcard, url: ?view\x3dflipcard}, magazine: {name: magazine, url: ?view\x3dmagazine}, mosaic: {name: mosaic, url: ?view\x3dmosaic}, sidebar: {name: sidebar, url: ?view\x3dsidebar}, snapshot: {name: snapshot, url: ?view\x3dsnapshot}, timeslide: {name: timeslide, url: ?view\x3dtimeslide}, isMobile: false, title: joseluis laso (developer), description: , url: http://developer.joseluislaso.es/, type: feed, isSingleItem: false, isMultipleItems: true, isError: false, isPage: false, isPost: false, isHomepage: true, isArchive: false, isLabelSearch: false}});_WidgetManager._RegisterWidget(_NavbarView, new _WidgetInfo(Navbar1, navbar, document.getElementById(Navbar1), {}, displayModeFull));_WidgetManager._RegisterWidget(_HeaderView, new _WidgetInfo(Header1, header, document.getElementById(Header1), {}, displayModeFull));_WidgetManager._RegisterWidget(_BlogView, new _WidgetInfo(Blog1, main, document.getElementById(Blog1), {cmtInteractionsEnabled: false, lightboxEnabled: true, lightboxModuleUrl: https://www.blogger.com/static/v1/jsbin/3647426032-lbx__es.js, lightboxCssUrl: https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css}, displayModeFull));_WidgetManager._RegisterWidget(_HTMLView, new _WidgetInfo(HTML1, sidebar-right-1, document.getElementById(HTML1), {}, displayModeFull));_WidgetManager._RegisterWidget(_SubscribeView, new _WidgetInfo(Subscribe1, sidebar-right-1, document.getElementById(Subscribe1), {}, displayModeFull));_WidgetManager._RegisterWidget(_ProfileView, new _WidgetInfo(Profile1, sidebar-right-1, document.getElementById(Profile1), {}, displayModeFull));_WidgetManager._RegisterWidget(_BlogArchiveView, new _WidgetInfo(BlogArchive1, sidebar-right-1, document.getElementById(BlogArchive1), {languageDirection: ltr, loadingMessage: Cargando\x26hellip;}, displayModeFull));_WidgetManager._RegisterWidget(_AttributionView, new _WidgetInfo(Attribution1, footer-3, document.getElementById(Attribution1), {}, displayModeFull));/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]