<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Machine learning, Deep Learning, Neural Networks, Php, raspberry pi.... &amp;amp; more</title><description>I explain in easy to understand language some interesting themes as Machine Learning, Neural Networks, Deep Learning, perceptrons, PHP code, things of raspberry pi, Linux, .... &amp;amp; a lot of other excitant things. Here you find some code and articles that I hope they help you. Some written in english and other in spanish and Catalan too.

There are a lot of good things to explain, but machine larning..... it&amp;#39;s such an exciting world. INTELIGENCIA ARTIFICIAL</description><managingEditor>noreply@blogger.com (Rafael Martín)</managingEditor><pubDate>Wed, 3 Dec 2025 21:51:05 +0100</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">756</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>https://rafamartin10.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:summary>I explain in easy to understand language some interesting themes as Machine Learning, Neural Networks, Deep Learning, perceptrons, PHP code, things of raspberry pi, Linux, .... &amp;amp; a lot of other excitant things. Here you find some code and articles that I hope they help you. Some written in english and other in spanish and Catalan too. There are a lot of good things to explain, but machine larning..... it&amp;#39;s such an exciting world. INTELIGENCIA ARTIFICIAL</itunes:summary><itunes:subtitle>I explain in easy to understand language some interesting themes as Machine Learning, Neural Networks, Deep Learning, perceptrons, PHP code, things of raspberry pi, Linux, .... &amp;amp; a lot of other excitant things. Here you find some code and articles tha</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>Citizen seismic stations. Earthquake monitoring and detection</title><link>https://rafamartin10.blogspot.com/2025/10/citizen-seismic-stations-earthquake.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Mon, 27 Oct 2025 19:11:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-3364059092501349364</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgkLcxGavI45akaKA9Rx7TcPf4yv3xpkoovogFFBChgq3dZN9ifw8zvx48h8h8StJ6gzyzl50ef__hKxTg2xgLCb9-lCiJ4AeCn2ZgTiSAeoalWFn1Vk5KJtn_y8ScsdYLokZfz80Pgao6cTj2cRa5haEg9wBJGnmb5xb9MRZLCnEOSOZt-I0CGYuh80NW/s1769/Captura%20desde%202025-10-27%2019-11-07.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="890" data-original-width="1769" height="322" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgkLcxGavI45akaKA9Rx7TcPf4yv3xpkoovogFFBChgq3dZN9ifw8zvx48h8h8StJ6gzyzl50ef__hKxTg2xgLCb9-lCiJ4AeCn2ZgTiSAeoalWFn1Vk5KJtn_y8ScsdYLokZfz80Pgao6cTj2cRa5haEg9wBJGnmb5xb9MRZLCnEOSOZt-I0CGYuh80NW/w640-h322/Captura%20desde%202025-10-27%2019-11-07.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I have launched a new portal dedicated to citizen seismic stations. Created with low-cost materials, affordable for the majority of the population, educational centers, researchers, and development professionals.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The intention is to make the necessary materials and software available to interested people. The project aims to expand seismic networks to achieve better event resolution and generate new and valuable data.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Citizen projects, as their name suggests, are "city" projects, so the data is often contaminated by daily human activity, but they still offer very interesting and new data that had been impossible until now. Now we can obtain data from our surroundings.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The project is in beta phase and developed entirely by me, but it is already beginning to offer visible results.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Software features:&lt;/p&gt;&lt;p&gt;- It can be used with different types of sensors (accelerometers or geophones).&lt;/p&gt;&lt;p&gt;- Offers .mseed file sharing (standard in seismology)&lt;/p&gt;&lt;p&gt;- Prepared to trigger alarms in 25 different individual frequency ranges.&lt;/p&gt;&lt;p&gt;- Real-time monitoring through web-based management of the 25 frequency ranges, alerts, and spectrograms.&lt;/p&gt;&lt;p&gt;- Send in real time helicorders in format svg for best quality and graphs size.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;On the website &lt;a href="https://eqcitizen.org" target="_blank"&gt;Earthquake citizen monitoring and detection with seismic stations&lt;/a&gt;, you can view some real-time data: live seismograms from two seismic stations (one with a geophone and one with an accelerometer). These spectrograms are generated in real time. The data comes from two stations installed in the city of Girona, Catalonia.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The website also displays the timing of an earthquake and how the software reacts to the event, corroborated with various professional stations and real-time seismic monitoring software on a global scale.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/Hn9Z3AJdEDU" width="320" youtube-src-id="Hn9Z3AJdEDU"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgkLcxGavI45akaKA9Rx7TcPf4yv3xpkoovogFFBChgq3dZN9ifw8zvx48h8h8StJ6gzyzl50ef__hKxTg2xgLCb9-lCiJ4AeCn2ZgTiSAeoalWFn1Vk5KJtn_y8ScsdYLokZfz80Pgao6cTj2cRa5haEg9wBJGnmb5xb9MRZLCnEOSOZt-I0CGYuh80NW/s72-w640-h322-c/Captura%20desde%202025-10-27%2019-11-07.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Detección de ondas sísmicas PKP del terremoto de magnitud 4,9 en Tonga desde España con un acelerómetro ADXL355 a 17,640 km de distancia</title><link>https://rafamartin10.blogspot.com/2025/08/deteccion-de-ondas-sismicas-pkp-del.html</link><category>acelerómetro</category><category>ADXL355</category><category>deteccion</category><category>Ondas sísmicas</category><category>PKP</category><category>seismo</category><category>sismograma</category><category>sísmica</category><category>Terremoto</category><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Mon, 11 Aug 2025 15:14:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-6683501217673045581</guid><description>&lt;p style="text-align: justify;"&gt;&lt;i&gt;Las &lt;b&gt;ondas PKP&lt;/b&gt; son un tipo de onda sísmica que se origina en el foco de un terremoto, atraviesan el manto y se refractan al entrar en el núcleo externo líquido de la Tierra, para luego salir de nuevo al manto y ser detectadas por una estación sísmica. La velocidad de estas ondas P en el núcleo externo oscila entre 8.0 y 10.1 km/s.&lt;/i&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Una onda PKP de un terremoto de magnitud 4.9 en Tonga fue detectada en mi estación sísmica de Girona, en Cataluña (España), un minuto antes de la llegada de un terremoto de magnitud 6.0 en Turquía. Esta onda PKP de alta frecuencia (entre 5 y 15 Hz) fue captada por un acelerómetro ADXL355, un dispositivo de bajo costo que demostró ser capaz de detectar un evento sísmico ocurrido a 17,640 km de distancia.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMcU6fCHscXpleQd4-7FTpI8_j9jVnLs-8uNCIuX8fwaQM4zXRqQweR3V0F83m87gr6PMWuuVfTFnBKF9qb9TPmaDWY4km0z4J1OCv0jjMYTg1XUYPggYR-rOXYvtPVL2gEAp0846zjLv5M7_FbtEI1OpdOYGAJ9Ou5QLPO80_FIWmkSotDOyzIwPshWwS/s300/EVAL-ADXL335-PMDZANGLE-web.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="274" data-original-width="300" height="274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMcU6fCHscXpleQd4-7FTpI8_j9jVnLs-8uNCIuX8fwaQM4zXRqQweR3V0F83m87gr6PMWuuVfTFnBKF9qb9TPmaDWY4km0z4J1OCv0jjMYTg1XUYPggYR-rOXYvtPVL2gEAp0846zjLv5M7_FbtEI1OpdOYGAJ9Ou5QLPO80_FIWmkSotDOyzIwPshWwS/s1600/EVAL-ADXL335-PMDZANGLE-web.png" width="300" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Acelerómetro ADXL355 de Analog Devices&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;p&gt;Los acelerómetros suelen ser efectivos para detectar vibraciones cercanas, pero la detección de terremotos lejanos es un desafío, ya que estos se manifiestan como un movimiento del suelo en lugar de una vibración fuerte. Por esta razón, el logro de detectar un evento lejano con un sensor de bajo coste es un dato valioso.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTwdRPxzh-1Iw61ibdZrxKJYwIxoAE2E1MJIbwuLmm088uPCZSbxFcN5QLs_RexL2AxfHYXL7hlyrWsbVbFbHENvV5eM67D7Ya7Q7zuxbQAN6Ru2hb1tTuO02hUpYawUmMLmcLqJ112sX7Iw9Qw4Fom3DFlzGePzS-UZo7VsX5KAXM08QfOHzUopAhxCI8/s8160/20250605_220301.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="8160" data-original-width="3672" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTwdRPxzh-1Iw61ibdZrxKJYwIxoAE2E1MJIbwuLmm088uPCZSbxFcN5QLs_RexL2AxfHYXL7hlyrWsbVbFbHENvV5eM67D7Ya7Q7zuxbQAN6Ru2hb1tTuO02hUpYawUmMLmcLqJ112sX7Iw9Qw4Fom3DFlzGePzS-UZo7VsX5KAXM08QfOHzUopAhxCI8/w288-h640/20250605_220301.jpg" width="288" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;El sistema de detección que he programado utiliza una combinación de filtros para procesar la señal sísmica:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Filtros IIR:&lt;/b&gt; Se usan para analizar diferentes rangos de frecuencia (Hz), lo que permite diferenciar distintos tipos de ondas según la distancia del sismo (cercano, regional, lejano, etc.).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Filtro de Kalman:&lt;/b&gt; Sirve para mejorar la precisión en la detección de las ondas, separándolas del ruido de fondo.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Configuración STA/LTA:&lt;/b&gt; Esta configuración específica se ajusta para cada filtro, optimizando la detección de cada tipo de onda.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;Datos del terremoto: Magnitud 4.9 en Tonga, según el USGS, ocurrido el 10 de agosto de 2025 en 20.690°S 175.485°W a las 2025-08-10 16:36:08 UTC, y la hora exacta en que su onda PKP fue detectada en Girona, España, 21 minutos después: 16:57:18.400.&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgek9dw2Gb-wZNQuwGcmwC2iLqX6zNGeX-3cB09_VAo4NSeoCjWyIU_ebZ6kDFhUZtl-DmJJhX0_0CnR3TXTbZbVkdn4m_wlhs47SEXdJgB3vrex0w7jeCr8fpBpNwi158d7TrIA4NAH4yaFVDxtOY4_y1lYXayR1u0f19A-wiylQpFexcxDbuFG3NSpPrK/s1920/Captura%20desde%202025-08-11%2002-09-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgek9dw2Gb-wZNQuwGcmwC2iLqX6zNGeX-3cB09_VAo4NSeoCjWyIU_ebZ6kDFhUZtl-DmJJhX0_0CnR3TXTbZbVkdn4m_wlhs47SEXdJgB3vrex0w7jeCr8fpBpNwi158d7TrIA4NAH4yaFVDxtOY4_y1lYXayR1u0f19A-wiylQpFexcxDbuFG3NSpPrK/w640-h360/Captura%20desde%202025-08-11%2002-09-02.png" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;En la representación gráfica con el software swarm de la onda sísmica PKP del terremoto de Tonga de magnitud 4.9. La onda fue captada por un acelerómetro ADXL355 a una distancia de 17,640 km. Filtro de 5Hz a 15Hz del Eje Z:&lt;/p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-PCo6YrAweFgfcpB0x1TgLfrRCnhjqAINotSiPKWw7UhHiPm2OB9W96TDWlJMQXFXDhlyNXu15oPiA4ugkJazyVFR9T4tufk-byynCdvXXG0ChnsiB4sENchG8JHuvvL9VevxXOlY2Qi72GPrA_bSFkz_2dN5ep2ugc-CkIAO9zE_PMTVTIN2p7Cl3iFc/s1704/Captura%20desde%202025-08-11%2001-23-35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="233" data-original-width="1704" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-PCo6YrAweFgfcpB0x1TgLfrRCnhjqAINotSiPKWw7UhHiPm2OB9W96TDWlJMQXFXDhlyNXu15oPiA4ugkJazyVFR9T4tufk-byynCdvXXG0ChnsiB4sENchG8JHuvvL9VevxXOlY2Qi72GPrA_bSFkz_2dN5ep2ugc-CkIAO9zE_PMTVTIN2p7Cl3iFc/w640-h88/Captura%20desde%202025-08-11%2001-23-35.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El sismograma detallado con ObsPy, señal original cruda y filtrada entre 10Hz y 30Hz:&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNRPvaSL1a4rH454YtkWE2XUPqs0z1zdCp5SrqLkVxnQc42sctLfI2Ia4f9HD6csW_gcxu-n5ZSqT_LdxLKtMz1y7DcCOXMnafKB_txfNNxl0gwzteJs9eIxGO9TNLhxUK7F7vPXngAdcHKGQDH3iOFIvyfjOWcTsVQPJUVStLccH60gCt9U8ff95oWHLu/s1800/kpk%20wave%20detected%20of%20tonga%20M4.7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1800" data-original-width="1500" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNRPvaSL1a4rH454YtkWE2XUPqs0z1zdCp5SrqLkVxnQc42sctLfI2Ia4f9HD6csW_gcxu-n5ZSqT_LdxLKtMz1y7DcCOXMnafKB_txfNNxl0gwzteJs9eIxGO9TNLhxUK7F7vPXngAdcHKGQDH3iOFIvyfjOWcTsVQPJUVStLccH60gCt9U8ff95oWHLu/w534-h640/kpk%20wave%20detected%20of%20tonga%20M4.7.png" width="534" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El terremoto M6 en Turquía, donde en el minuto 1:10 se puede apreciar el paso de la onda PKP del anterior terremoto M4.9 en Tonga, activando todas las alarmas de rango alto Hz:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/c8TRrZrEhDs" width="320" youtube-src-id="c8TRrZrEhDs"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;Este es el momento de la alerta:&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq1SyAa76i9yJTAl7AnA6PCqxvUIF0C69cYnlaJ6mjOdP_BWhGGakRi4C7vq4WtYtggZC7vLE9k2QuqVWIEO8YEyWceaTu5UJYGtU3I-6a52IQY_Yes7w5x9-s9-p0Ja7kyAx2hRAIHnHW7J_ryDk2MLBQu8G61pFiWjS9UzfaBvUowJToo3pRoPZyWS_A/s1000/lta_sta_trigger%20kpk%20wave.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="800" data-original-width="1000" height="512" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq1SyAa76i9yJTAl7AnA6PCqxvUIF0C69cYnlaJ6mjOdP_BWhGGakRi4C7vq4WtYtggZC7vLE9k2QuqVWIEO8YEyWceaTu5UJYGtU3I-6a52IQY_Yes7w5x9-s9-p0Ja7kyAx2hRAIHnHW7J_ryDk2MLBQu8G61pFiWjS9UzfaBvUowJToo3pRoPZyWS_A/w640-h512/lta_sta_trigger%20kpk%20wave.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Y finalmente podemos comprobar la misma forma de onda capturada en una de las estaciones ciudadanas de la red raspberryshake&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsHhakhUO7KKUim0hntD0L9cA0Fjs7BXZ4xSUP1iTBu-wupvUPUi8TPSithni3cKLeayl2oPMF4VGEpRdmIw7WR_-h_3QajQyRsbI9iVoV6Gq225joPsq7XRVwj9uQbGkmBddL4s8lF9GbvqbHR2wwAhZfyaE1McIIjMpz5VNGg08l0OLYbaQ7Gu1ADcDZ/s1694/Captura%20desde%202025-08-11%2013-17-27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="350" data-original-width="1694" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsHhakhUO7KKUim0hntD0L9cA0Fjs7BXZ4xSUP1iTBu-wupvUPUi8TPSithni3cKLeayl2oPMF4VGEpRdmIw7WR_-h_3QajQyRsbI9iVoV6Gq225joPsq7XRVwj9uQbGkmBddL4s8lF9GbvqbHR2wwAhZfyaE1McIIjMpz5VNGg08l0OLYbaQ7Gu1ADcDZ/w640-h132/Captura%20desde%202025-08-11%2013-17-27.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;* Cabe destacar que Tonga y Girona están separadas por 17.640 km en la superficie terrestre (distancia geodésica), pero las ondas PKP han viajado a través de la Tierra en línea casi recta (no han atravesado el núcleo), por lo que la distancia recorrida por la onda PKP podría ser de aproximadamente 12.500 km; en resumen, es un logro impresionante.&lt;/p&gt;&lt;p&gt;Software utilizado para la visualización: GlobalQuake, ObsPy y propietario del panel de administración. Sitio web de GlobalQuake: &lt;a href="https://globalquake.net/"&gt;https://globalquake.net/&lt;/a&gt;. Transmisión en vivo de &lt;a href="https://www.youtube.com/watch?v=rvtygG4n6ew" target="_blank"&gt;GlobalQuake en YouTube&lt;/a&gt;: &lt;a href="https://www.youtube.com/watch?v=rvtygG4n6ew"&gt;https://www.youtube.com/watch?v=rvtygG4n6ew&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMcU6fCHscXpleQd4-7FTpI8_j9jVnLs-8uNCIuX8fwaQM4zXRqQweR3V0F83m87gr6PMWuuVfTFnBKF9qb9TPmaDWY4km0z4J1OCv0jjMYTg1XUYPggYR-rOXYvtPVL2gEAp0846zjLv5M7_FbtEI1OpdOYGAJ9Ou5QLPO80_FIWmkSotDOyzIwPshWwS/s72-c/EVAL-ADXL335-PMDZANGLE-web.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Generar fichero .csv de taxonomía de Google en Español</title><link>https://rafamartin10.blogspot.com/2025/02/generar-fichero-csv-de-taxonomia-de.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Tue, 25 Feb 2025 17:40:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-4741199966460950277</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwhAIKXK7O6IR7R0SKpzP72Fx0ZB7db6ojHSFQywbHycgNoZNcvf6B5WppTRF2h9Fz4iXhu0XWWfXsputkZfHYcoSbTy8U5U2nFi91MWmxfvaCAIYl50_PQMMe101amz7XarSocbyA4vbxEDdRxs80KQIdOGAD7xq_sSzEG-Y7ZGn7TcPlDBaUK5yRYp0/s997/merchant.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="511" data-original-width="997" height="328" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwhAIKXK7O6IR7R0SKpzP72Fx0ZB7db6ojHSFQywbHycgNoZNcvf6B5WppTRF2h9Fz4iXhu0XWWfXsputkZfHYcoSbTy8U5U2nFi91MWmxfvaCAIYl50_PQMMe101amz7XarSocbyA4vbxEDdRxs80KQIdOGAD7xq_sSzEG-Y7ZGn7TcPlDBaUK5yRYp0/w640-h328/merchant.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hay un problema (404 not found) en el enlace de documentación de taxonomía de Google para descargar el archivo .xls con toda su taxonomía en español. El enlace en idioma inglés funciona perfecto: https://support.google.com/merchants/answer/6324436?hl=es&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Este archivo se utiliza para clasificar el tipo de producto para Google Merchant.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El departamento de soporte me indicó que tenían problemas técnicos y me dirigieron al archivo de texto, pero que no se puede importar directamente, ya que un archivo .csv es lo más correcto para proceder a una importación básica y sencilla.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como tenía trabajo que hacer, he desarrollado un pequeño programa en PHP que lee el archivo .txt original y lo exporta a .csv&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora ya puedes importar directamente en español... y sin problemas técnicos ^_^. Te dejo el código:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class="reader-text-block__code-block" style="border-radius: var(--corner-radius-medium); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: var(--color-text-on-dark); font-size: 16px; line-height: var(--line-height-open); margin: 3.2rem 2.4rem; overflow-x: auto; padding: 3.2rem; text-wrap-mode: wrap; vertical-align: var(--artdeco-reset-base-vertical-align-baseline);"&gt;&lt;span style="font-family: courier;"&gt;&amp;lt;?php
// Name of the input file
$inputFile = "https://www.google.com/basepages/producttype/taxonomy-with-ids.es-ES.txt";

// Open input file to read
$fileHandle = fopen($inputFile, "r");
if ($fileHandle === false) {
    die("Cannot open  $inputFile");
}

// Open .csv file to write
$csvFile = fopen("output.csv", "w");

// For each line of the readed file
$lines = 0;
while (($line = fgets($fileHandle)) !== false) {
    if( ++$lines == 1 ) continue; // skip first line
    
    // Delete spaces at begin &amp;amp; end from the line
    $line = trim($line);
    
    // Split number and fields
    list($number, $fields) = explode(' - ', $line);
    $fieldsArray = explode(' &amp;gt; ', $fields);

    // Make a line in .csv format
    $csvLine = $number . ';' . implode(';', $fieldsArray);
    
    // Write the line in de .csv file
    fputcsv($csvFile, explode(';', $csvLine), ';');
}

// Close the files
fclose($fileHandle);
fclose($csvFile);

echo ".csv file created.";
?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwhAIKXK7O6IR7R0SKpzP72Fx0ZB7db6ojHSFQywbHycgNoZNcvf6B5WppTRF2h9Fz4iXhu0XWWfXsputkZfHYcoSbTy8U5U2nFi91MWmxfvaCAIYl50_PQMMe101amz7XarSocbyA4vbxEDdRxs80KQIdOGAD7xq_sSzEG-Y7ZGn7TcPlDBaUK5yRYp0/s72-w640-h328-c/merchant.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Abrir una ventana modal en HTML puro</title><link>https://rafamartin10.blogspot.com/2023/06/abrir-un-modal-en-html-puro.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Sun, 4 Jun 2023 20:52:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-3749127949153688682</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style="text-align: center;"&gt;Abrir una ventana modal en HTML puro&lt;/h1&gt;&lt;p&gt;Hace unos días, vi un vídeo de Google con diferentes aspectos interesantes, pero el que más me interesó fue el de poder una ventana Modal en Html puro y duro. Menos código más utilidad:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/x9rh0Du4Czg" title="YouTube video player" width="560"&gt;&lt;/iframe&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/x9rh0Du4Czg/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Entrevista en TV de Girona. Hablando de Inteligencia Artificial</title><link>https://rafamartin10.blogspot.com/2022/11/entrevista-en-tv-de-girona-hablando-de.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Tue, 15 Nov 2022 18:49:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-3669183391846955147</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwaHQ0WSQ6Vyeqqn-gCspwXp3yx-U5LlcFbFEpSGQh7KR10GThmSnBJnMZGFh_Eqwprh6FKrcbDXYlgVYWApEY43X9KDG9u6BC_SdQgP5efhBLG3Zx0aM-Nzobo4SZ27h1MmoiRNQXFUaYZFYQYiaPVIjASvs55A2qhw2yOXk5WRimSWTlgPwN3c1xyQ/s2048/sala%20de%20control%20tv%20girona.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwaHQ0WSQ6Vyeqqn-gCspwXp3yx-U5LlcFbFEpSGQh7KR10GThmSnBJnMZGFh_Eqwprh6FKrcbDXYlgVYWApEY43X9KDG9u6BC_SdQgP5efhBLG3Zx0aM-Nzobo4SZ27h1MmoiRNQXFUaYZFYQYiaPVIjASvs55A2qhw2yOXk5WRimSWTlgPwN3c1xyQ/s320/sala%20de%20control%20tv%20girona.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;h3 style="text-align: center;"&gt;Explicando en 10 minutos que es la Inteligencia Artificial&lt;/h3&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Este es el tiempo que me han dado &lt;a href="https://tvgirona.alacarta.cat/" target="_blank"&gt;TV de Girona&lt;/a&gt; para explicar cómo funciona. En 10 minutos he tenido que resumir un curso horas y horas, pero incluso el presentador me ha comentado que se ha entendido perfectamente, que incluso él que no tenía ni idea, lo había entendido ^_^&lt;/p&gt;&lt;p&gt;Adjunto vídeo, a partir del minuto 13:10:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div id="embed-alacarta-32990"&gt;&lt;/div&gt;
&lt;script data-container="embed-alacarta-32990" data-src="6373990ea756501d0c9b0240/6373b053a6bcb9108473f1d5" src="https://www.alacarta.cat/js/embed.js"&gt;&lt;/script&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwaHQ0WSQ6Vyeqqn-gCspwXp3yx-U5LlcFbFEpSGQh7KR10GThmSnBJnMZGFh_Eqwprh6FKrcbDXYlgVYWApEY43X9KDG9u6BC_SdQgP5efhBLG3Zx0aM-Nzobo4SZ27h1MmoiRNQXFUaYZFYQYiaPVIjASvs55A2qhw2yOXk5WRimSWTlgPwN3c1xyQ/s72-c/sala%20de%20control%20tv%20girona.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>bio-farma.es gana el Premio Internacion e-tech 2022</title><link>https://rafamartin10.blogspot.com/2022/11/bio-farmaes-gana-el-premio-internacion.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Tue, 15 Nov 2022 18:42:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-4977931018866627535</guid><description>&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo4KjzBzcZCdhZlXtgGTvkBWYiwurms5522VYRCnyQfDsoGoinJRQd5Y6tg0PqNE4XIwg_e7Cyo_uTp9dmH8w-pS5LpmppFbD71M_qEhd21bl06crTSg2k1Iwv9eYJOBLL08d9UR25LEbDFClRgeQcmi0SWaTymKK6SDRHGP1PTDjUl0FO5w8mp_rX/s3429/diploma%20bio%20farma%20premi%20internacional%20e%20tech%202022.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2274" data-original-width="3429" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo4KjzBzcZCdhZlXtgGTvkBWYiwurms5522VYRCnyQfDsoGoinJRQd5Y6tg0PqNE4XIwg_e7Cyo_uTp9dmH8w-pS5LpmppFbD71M_qEhd21bl06crTSg2k1Iwv9eYJOBLL08d9UR25LEbDFClRgeQcmi0SWaTymKK6SDRHGP1PTDjUl0FO5w8mp_rX/w640-h424/diploma%20bio%20farma%20premi%20internacional%20e%20tech%202022.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;a href="http://Bio-farma.es"&gt;Bio-farma.es&lt;/a&gt;&amp;nbsp;ha ganado el premio Internacional e-tech 2022. Ha quedado como finalista en 3 categorías en la entrega de premios e-Tech organizado por la Asociación de Empresas de Nuevas Tecnologías de Girona AENTEG y como ganadora en 1 categoría de Premio Internacional, celebrado el 14 de Noviembre de 2022.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Este marketplace ha sido creado con los mejores contextos en SEO y que ha ganado este merdecidísimo precio.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfm-FTn_ANUEm9bbnK4gYt_swGhDNNpZzHJBpneHium91Xr3cKrGdhZ3jPduEjef5D4totxvPQpZL6fVV1BBGdiTT1I-wGWk6FHFqjldY_uGjrZk-9v7aBvYDL9m7NIATOqeSTqybV7KVAN2VQXgN3_WytQdIPfXkEjAGz8LMaizZh_XMMFIKbhzOF/s240/guardo-premis-e-tech-2022-x-240.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="240" data-original-width="180" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfm-FTn_ANUEm9bbnK4gYt_swGhDNNpZzHJBpneHium91Xr3cKrGdhZ3jPduEjef5D4totxvPQpZL6fVV1BBGdiTT1I-wGWk6FHFqjldY_uGjrZk-9v7aBvYDL9m7NIATOqeSTqybV7KVAN2VQXgN3_WytQdIPfXkEjAGz8LMaizZh_XMMFIKbhzOF/s1600/guardo-premis-e-tech-2022-x-240.jpg" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Encantado de poder participar en este proyecto tecnológicamente.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Para más información:&amp;nbsp;&lt;a href="https://bio-farma.es/dicen_de_nosotros"&gt;https://bio-farma.es/dicen_de_nosotros&lt;/a&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;a href="https://twitter.com/premisetech" style="background-color: white; box-sizing: border-box; color: #007bff; font-family: Cairo, sans-serif; font-size: 16px; text-decoration-line: none;"&gt;https://twitter.com/premisetech&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;a href="https://www.aenteg.com/" style="background-color: white; box-sizing: border-box; color: #007bff; font-family: Cairo, sans-serif; font-size: 16px; text-decoration-line: none;"&gt;https://www.aenteg.com/&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo4KjzBzcZCdhZlXtgGTvkBWYiwurms5522VYRCnyQfDsoGoinJRQd5Y6tg0PqNE4XIwg_e7Cyo_uTp9dmH8w-pS5LpmppFbD71M_qEhd21bl06crTSg2k1Iwv9eYJOBLL08d9UR25LEbDFClRgeQcmi0SWaTymKK6SDRHGP1PTDjUl0FO5w8mp_rX/s72-w640-h424-c/diploma%20bio%20farma%20premi%20internacional%20e%20tech%202022.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>SEO. ¿El Pagerank ha muerto? PR. Ejemplo con Maca de Naturmil</title><link>https://rafamartin10.blogspot.com/2022/09/seo-el-pagerank-ha-muerto-pr-ejemplo.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Mon, 26 Sep 2022 11:43:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-4955220476706622332</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv4mzvFGBePQUEiyqJeg4o7NrrbSPydDzYPSh47WkqAObBprFfOI3znW_jvLYyTnDH1KadDV-J-3vEcLsj_1lBcCZOhFRxZHE2FL906m1N8d3jci5p-j9kxoYZM7NtcmgWqTJ4ZTA4-94luhys4qHCtY7t60__IGqcsL8yJbPd9TVptW3dAquN-K6WxQ/s377/Linkbuilding.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="298" data-original-width="377" height="253" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv4mzvFGBePQUEiyqJeg4o7NrrbSPydDzYPSh47WkqAObBprFfOI3znW_jvLYyTnDH1KadDV-J-3vEcLsj_1lBcCZOhFRxZHE2FL906m1N8d3jci5p-j9kxoYZM7NtcmgWqTJ4ZTA4-94luhys4qHCtY7t60__IGqcsL8yJbPd9TVptW3dAquN-K6WxQ/s320/Linkbuilding.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Todos sabemos que dentro del SEO, una de las reglas más importantes es el Page Rank (PR). Se conoce básicamente como la cantidad de enlaces externos hacia un sitio web. Se supone que mientras más enlaces, más importante es tu sitio, así que sube de categoría (digámoslo así).&lt;/p&gt;&lt;p&gt;Esto ha causado otro tipo de enlaces SPAM, pues se empezó a hacer un mal uso de esta técnica y se creaban cientos y cientos de sitios web únicamente con enlaces. Lógicamente eran artificiales.&lt;/p&gt;&lt;p&gt;Lo que busca google son enlaces de calidad, así que decidió que todos estos sitios web de enjambre de enlaces tenían poco PR, y lo que transmitían al dominio de destino era poco PR y lo hacía bajar de categoría.&lt;/p&gt;&lt;p&gt;Hoy en día el PR ha perdido pistonada. Google lo utilizará a nivel interno, pero de otro modo, ignorando todos los sitios web spammers de enlaces.&lt;/p&gt;&lt;p&gt;Un ejemplo es que un producto como lo es la &lt;a href="maca 750 mg naturmil" target="_blank"&gt;Maca de Naturmil, que sirve para aumentar el deseo sexual o la libido tanto en hombres como mujeres&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Esta página no está enlazada desde ningún otro sitio (bueno, ahora sí), pero entonces.... ¿Cómo es que aparece en las primeras posiciones incluso en paises fuera de la Unión Europea? Si se supone que no tiene enlaces, entonces no debería ser importante y es que no tiene PR. Todo esto indica que Google le da cada vez más importancia a los contenidos EAT, o sea, con experiencia, autoridad y confianza, y eso es lo que hace esta página. Dar lo que necesitan las personas que lo buscan, por lo que creo que el Page Rank tiene los días contados. Google ya sabe de qué hablan las páginas y si son más o menos importantes, así como si la página está preparada para ofrecer a la persona lo que busca.&lt;/p&gt;&lt;p&gt;Todo y así, siempre habrá un remanente de Page Rank y mientras más enlaces, seguramente mejor, pero, ya no es indispensable y será una métrica con poco peso.&lt;/p&gt;&lt;p&gt;Foto: &lt;a href="https://es.wikipedia.org/wiki/Posicionamiento_en_buscadores" target="_blank"&gt;Wikipedia&lt;/a&gt;.&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv4mzvFGBePQUEiyqJeg4o7NrrbSPydDzYPSh47WkqAObBprFfOI3znW_jvLYyTnDH1KadDV-J-3vEcLsj_1lBcCZOhFRxZHE2FL906m1N8d3jci5p-j9kxoYZM7NtcmgWqTJ4ZTA4-94luhys4qHCtY7t60__IGqcsL8yJbPd9TVptW3dAquN-K6WxQ/s72-c/Linkbuilding.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Galletas Chocolate por.... 98€!!!! Problemas con datos enriquecidos</title><link>https://rafamartin10.blogspot.com/2022/09/galletas-chocolate-por-98.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Mon, 12 Sep 2022 20:42:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-487295169534098818</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxzpqHIcPYS7bFJtsi-tpVL28exSPcY43NuFUX5h2t-scyvmml6tV_1Bp8kDALEY0ngRtZl-AS3RoFVhWjtytfRSH4CP_YJUss4qo-Hjvo3zC_sk0Tg4Z4sjJ5AKD7MCrDnWs2LqrGOafSf_VaSYI6BCHwpNICBxOQEeTWdLKt5S4IPSlVGjjrX0Wo9w/s654/schar.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="139" data-original-width="654" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxzpqHIcPYS7bFJtsi-tpVL28exSPcY43NuFUX5h2t-scyvmml6tV_1Bp8kDALEY0ngRtZl-AS3RoFVhWjtytfRSH4CP_YJUss4qo-Hjvo3zC_sk0Tg4Z4sjJ5AKD7MCrDnWs2LqrGOafSf_VaSYI6BCHwpNICBxOQEeTWdLKt5S4IPSlVGjjrX0Wo9w/s16000/schar.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style="text-align: center;"&gt;Como usar los datos enriquecidos para SEO&lt;/h2&gt;&lt;p&gt;Aquí vemos un ejemplo de qué es lo que pasa cuando se utilizan mal los datos estructurados.&lt;/p&gt;&lt;p&gt;Es muy importante que al preparar la estructura visual de los artículos, estos estén correctamente estructurados. Lo normal es prepararlos para que cualquier buscador los pueda encontrar de diferentes maneras y que cada uno utilice el que mejor se adapte (json, html snippets, ...), pero si os fijáis, en este ejemplo hemos encontrado unas galletas sin gluten de 150gr. de un conocido supermercado por la cantidad nada despreciable de.... 98€.&lt;/p&gt;&lt;p&gt;Este no es el único resultado, pues afecta a TODOS los resultados de productos del supermercado en Google.&lt;/p&gt;&lt;p&gt;Lógicamente se trata de un error en la estructura de la página web. resulta que dentro de un código html snipped han remarcado una parte del precio en negrita, y esto le ha indicado a google que, de todo el precio, la parte en negrita es la más importante, y es la que ha utilizado google. El resto del precio no le hace ni caso.&lt;/p&gt;&lt;p&gt;Solo hay una manera de prepararlos bien... y es leer y aplicar. Todos somos humanos y nos podemos encontrar con errores inesperados, pero... 98€.... estas galletas deben de saber suuuuuuper bien para tener este precio!!!!&lt;/p&gt;&lt;p&gt;Varios consejos: Leer, leer y leer, y también probar, probar y probar:&lt;/p&gt;&lt;p&gt;&lt;a href="https://support.google.com/webmasters/answer/7445569?hl=es" target="_blank"&gt;https://support.google.com/webmasters/answer/7445569?hl=es&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://search.google.com/test/rich-results" target="_blank"&gt;https://search.google.com/test/rich-results&lt;/a&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxzpqHIcPYS7bFJtsi-tpVL28exSPcY43NuFUX5h2t-scyvmml6tV_1Bp8kDALEY0ngRtZl-AS3RoFVhWjtytfRSH4CP_YJUss4qo-Hjvo3zC_sk0Tg4Z4sjJ5AKD7MCrDnWs2LqrGOafSf_VaSYI6BCHwpNICBxOQEeTWdLKt5S4IPSlVGjjrX0Wo9w/s72-c/schar.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>People-first vs. Search Engines First. SEO - Nuevo algoritmo de Google</title><link>https://rafamartin10.blogspot.com/2022/08/people-first-nuevo-algoritmo-de.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Fri, 19 Aug 2022 14:53:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-3431991557305238255</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtHd72MdPSYpV_aRHpMQHYKWGS6Zokxl6Hj59NITsqFnUFbuhrfz_T2YAkwY8UKXQ951aYGlpYpaGzF1DGLo2BeTabsy7HjYyXzk4GopsgkogTZUbIcg7MlmiFs3XIuBCJ9iCXDH92NIybAQOWaKobvTxcCBdYhsZfY-_7F_T1SP-5H8HwE9DKJZiILQ/s2048/people-first.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="People First vs Search Engines First" border="0" data-original-height="1024" data-original-width="2048" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtHd72MdPSYpV_aRHpMQHYKWGS6Zokxl6Hj59NITsqFnUFbuhrfz_T2YAkwY8UKXQ951aYGlpYpaGzF1DGLo2BeTabsy7HjYyXzk4GopsgkogTZUbIcg7MlmiFs3XIuBCJ9iCXDH92NIybAQOWaKobvTxcCBdYhsZfY-_7F_T1SP-5H8HwE9DKJZiILQ/w640-h320/people-first.jpg" title="People First vs Search Engines First. SEO 2022. Nuevo algoritmo de Google" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style="text-align: justify;"&gt;People-first vs. Search Engines First. Helpful Content Update&lt;/h2&gt;&lt;p style="text-align: justify;"&gt;Desde hace tiempo Google avisaba que había que hacer la web para todo el mundo (&lt;b&gt;PEOPLE-FIRST&lt;/b&gt;), y no obsesionarse con realizar solo posicionamiento en el buscador (&lt;b&gt;SEARCH ENGINES FIRST&lt;/b&gt;). Muchos especialistas SEO únicamente se han centrado en crear la web para rascar cualquier posición a la competencia y luchando aún más para aparecer en las primeras posiciones del buscador, obviando las insistentes recomendaciones de Google para hacer una web para todos, no solo para salir en primera posición... hasta ahora, cuando Google se ha puesto firme y ha dejado de usar (en parte) el algoritmo tan conocido de &lt;a href="https://es.wikipedia.org/wiki/PageRank" target="_blank"&gt;Pagerank&lt;/a&gt;&amp;nbsp;y generación de contenido automático. Se ha acabado eso del SEO estirado en el sofá y toca levantarse de nuevo y 'currar' duro... si no es que ya hubieses realizado este trabajo antes (que sería lo suyo).&lt;/p&gt;&lt;p style="text-align: justify;"&gt;¿El secreto para continuar bien posicionado y que no afecte este próximo cambio a las posiciones de mi web? Haber hecho las cosas bien, que cuestan más pero es como habría que hacerlas. Muy sencillo, pero que no todos escuchan. Mira que hay guías de Google informando de las buenas prácticas a seguir cuando se hace una web, y luego me encuentro con 'listillos' que van de 'chulos' diciendo que son SEO de Growth Hacking y cosas así (parece que suena mejor que ser un simple SEO de la antigua escuela.... no sé, a mi no me gusta), que ellos son más chulos que nadie y que se saltan las leyes de Google.... pues bien... creo que más de uno se echará a llorar dentro de su 'Growth Hacking' en las próximas semanas.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Recuerdo que hace un par de años tuve una charla con un sr. &lt;i&gt;Growth Hacking&lt;/i&gt;. Yo le decía que las prácticas que él utilizaba eran poco éticas y que no serían bien vistas por Google, que algún día (si no es que lo estaba preparando ya) Google detectaría todo ese contenido que se encargaba de generar la Inteligencia Artificial (reviews, contenido de páginas, bots falsos, ...). Me dijo que 'de momento' no lo había detectado y que era muy difícil que lo hiciera, así que lo continuaría recomendando a todos sus clientes.... creo que se estará acordando de esa conversación. Le ha durado el 'chollo' 2 años, y ahora imagino que debe de estar corriendo hacia algún lugar donde los clientes no le encuentren cuando se le venga todo esto encima O_o.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Si ves que tu web baja de posiciones próximamente y has contratado servicios SEO, creo que tienes un problema. ¿Cómo es que he pagado a un SEO y parecía que hacía buen trabajo y ahora todo se va al 'garete'? Pues la respuesta es bien fácil. Hay SEO'S y SEO'S hay. Si se ha centrado en posicionarte la web para obtener resultados lo más rápido posible (cosa que técnicamente cuesta también mucho), ha realizado bien su trabajo, pero temporalmente, ya que no ha mirado hacia el futuro. El buen SEO se centra en el trabajo duro de posicionamiento, pero también se centra con la mirada puesta en el futuro. Es la única manera de poder ser lo más 'estable' posible en las posiciones de Google. De nada vale realizar un buen posicionamiento cuando solo nos asegura estar un año bien posicionados. ¿Qué pasa con el resto de los años si dependemos de ese posicionamiento? Se nos quiebra la empresa, claro está.&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;No todas las empresas pueden permitirse el lujo de pagar un buen servicio SEO, pero con un poco de lógica en el momento de realizar el trabajo, no cuesta tanto dentro de todo el volúmen de trabajo. La verdad es que hay que realizar bastante trabajo que el cliente no ve, pero que está y que Google sí que ve, por lo que este es el trabajo hay que realizarlo también, sí o sí. Muchos SEO'S se lo ahorran porque el cliente no lo verá, para poder abarcar más clientes, para tardar menos y cobrar antes, porque el cliente no quiere pagar más, ..... en fin, que al final realizan su trabajo únicamente en parte.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;La excelencia tiene un precio, y en un par de semanas veremos como muchísimos gerentes se ponen nerviosos al ver desaparecer sus webs de los resultados de Google, apareciendo las de la competencia, llamando urgentemente a su SEO de confianza (que no contestará porque tendrá 100 llamadas más) y corriendo como hormigas cual se les tapa el agujero de entrada a su nido, y no, ya no hay tiempo para reaccionar. Google ha dado mucho margen para hacer las cosas bien, y ese tiempo se ha acabado. Por mucho que se intente subsanar el error ahora, es demasiado tarde porque el SEO ya sabemos que es lento y cualquier intento de rectificarlo, todos los cambios tardarán semanas y meses en verse aplicados en el buscador. Mala suerte, se tendría que haber pensado antes de contratar los servicios de cualquier SEO. ¿Alternativa? La de siempre, SEM.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;b&gt;¿Qué implicará el nuevo algoritmo PEOPLE-FIRST de Google?&lt;/b&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;A partir de ahora, Google se fijará en la usabilidad de la web, Core Web Vitals, contenido de calidad y evitará posicionar las páginas que tengan mucho contenido pero que, al final, no se hable de nada, así como también evitará indexar las páginas con contenido generado por Inteligencia Artificial o reviews artificiales (o sea, utilizará la Inteligencia Artificial para evitar la Inteligencia Artificial ;D ). Toda página que detecte que se ha creado exclusivamente solo para salir antes que la competencia (o sea, 100% &lt;b&gt;Search Engines First&lt;/b&gt;), también será penalizada, y todo SEO sabe lo que significa penalización... Tener que realizar multitud de cambios y pedir perdón a Google para que, con un poco de suerte, vuelva a revisar los contenidos y volvamos a estar visibles. Si... hay que pedir perdón a Google, y puede tardar hasta un año en volver a estar disponible el contenido (si a Google le parece bien). Esto se llama &lt;a href="https://youtu.be/JXxkoASrqNg" target="_blank"&gt;Sandbox&lt;/a&gt;.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Parece ser que este nuevo algoritmo será tan importante como lo fue el cambio de los anteriores algoritmos con nombre de animales:&amp;nbsp;&amp;nbsp;&lt;a href="https://es.wikipedia.org/wiki/Google_Hummingbird" target="_blank"&gt;Hummingbird&lt;/a&gt;,&amp;nbsp;&lt;a href="https://es.wikipedia.org/wiki/Google_Panda" target="_blank"&gt;Panda&lt;/a&gt;&amp;nbsp;&amp;amp; &lt;a href="https://es.wikipedia.org/wiki/Google_Penguin" target="_blank"&gt;Penguin&lt;/a&gt;. De momento se llama &lt;i&gt;&lt;b&gt;helpful content update&lt;/b&gt;&lt;/i&gt;, pero posiblemente nos encontremos con otro nombre de animal para identificar este importante cambio.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Ya hace meses que os hablé de un proyecto donde se consiguió un 100% de calidad en la web de &lt;a href="https://bio-farma.es" target="_blank"&gt;Parafarmacia online&lt;/a&gt;, avalado por el mismo Google. De la noticia se hicieron eco diferentes medios de comunicación, como &lt;a href="https://www.tecnonews.info/noticias/una_raspberry_pi_alimenta_una_tienda_online_con_25_000_referencias" target="_blank"&gt;Tecnonews&lt;/a&gt; y &lt;a href="https://www.arsys.es/blog/biofarma-hosting-esencial-rendimiento-seguridad-reputacion" target="_blank"&gt;Arsys&lt;/a&gt;, así como en este mismo &lt;a href="https://rafamartin10.blogspot.com/2021/12/cuando-la-tienda-online-aprovecha-la.html" target="_blank"&gt;blog&lt;/a&gt;. Al crear esta web se dió preferencia a las personas, no al buscador, sabiendo que esta manera de hacer era la que Google le gustaba. Aunque no se apostara al 100% por un posicionamiento SEO, si que tuvimos el 100% de puntuación de Google, logrando con creces el objetivo y esperando que Google reconociera este esfuerzo. La recompensa parece que llegará ahora.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Otro ejemplo del esfuerzo para llegar a la excelencia es la prioridad a los dispositivos móviles, como se puede apreciar en &lt;a href="https://rafamartin10.blogspot.com/2022/08/google-search-console-gsc-experiencia.html" target="_blank"&gt;esta entrada del blog&lt;/a&gt;.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Un cambio esperado desde hace mucho tiempo. Siempre he creído en hacer un trabajo con la misma ideología de Google. Si bien hay que realizar un buen trabajo SEO para que la web esté bien estructurada para el buscador, el contenido de la misma también tiene que ser valioso, único e interesante para el visitante. Un ejemplo: de nada sirve ver la información de una película cuando ni tan solo ha sido estrenada y al final de leer todo el texto, te quedas igual.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El algoritmo&amp;nbsp;&lt;b&gt;PEOPLE-FIRST&amp;nbsp;&lt;/b&gt;de Google entrará a funcionar la semana que viene y tardará unas dos semanas en estabilizarse. Al parecer empezará con el idioma inglés y posteriormente implantará el algoritmo a otros idiomas. A partir de la semana que viene empezará el Google Dance, o sea que.... todos a bailar al ritmo de Google!!!!"&lt;/p&gt;&lt;p&gt;Imágen:&amp;nbsp;&lt;a href="https://www.freepik.es/"&gt;https://www.freepik.es/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;UPDATED: 25 AGOSTO 2022&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Sobre las 11:00am ha empezado a tener acción el algoritmo&amp;nbsp;&lt;b&gt;helpful content update&lt;/b&gt;. Podemos esperar cualquier cosa. A esperar....&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtHd72MdPSYpV_aRHpMQHYKWGS6Zokxl6Hj59NITsqFnUFbuhrfz_T2YAkwY8UKXQ951aYGlpYpaGzF1DGLo2BeTabsy7HjYyXzk4GopsgkogTZUbIcg7MlmiFs3XIuBCJ9iCXDH92NIybAQOWaKobvTxcCBdYhsZfY-_7F_T1SP-5H8HwE9DKJZiILQ/s72-w640-h320-c/people-first.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Error: Incorrect date value: '0000-00-00' for column. Mysql Strict Mode</title><link>https://rafamartin10.blogspot.com/2022/08/error-incorrect-date-value-0000-00-00.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Thu, 4 Aug 2022 17:57:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-741614467447093606</guid><description>&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWupUb3ajLOcz-DGL_CGg4EcBRX1zEPjN5GStS51UxLI4po7p051man_bCmy_VfLAaV7AvokB0FHb1a3Lnf4BSRmpQeTkghkZzWYtwXC50ohika3UbloRBGL3ahy6fg7fI0jsathdAf0bXXTm6ztJl_oUyFn04HlcqCpYPBZM-qkNoRHHse4v3Fa3QMA/s1134/mysql%20error.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="97" data-original-width="1134" height="54" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWupUb3ajLOcz-DGL_CGg4EcBRX1zEPjN5GStS51UxLI4po7p051man_bCmy_VfLAaV7AvokB0FHb1a3Lnf4BSRmpQeTkghkZzWYtwXC50ohika3UbloRBGL3ahy6fg7fI0jsathdAf0bXXTm6ztJl_oUyFn04HlcqCpYPBZM-qkNoRHHse4v3Fa3QMA/w640-h54/mysql%20error.png" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="text-align: center;"&gt;¿Como corregir Error: Incorrect date value: '0000-00-00' for column en MySQL con strict_mode activado?&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Últimamente MySQL está dando quebraderos de cabeza. Yo me lo estoy encontrando a diario. La empresa de alojamiento ha actualizado por seguridad la versión de &lt;b&gt;MySQL&lt;/b&gt; a la versión&amp;nbsp;8.0.26, activando por defecto el modo &lt;b&gt;strict_mode&lt;/b&gt;, entre otros&lt;b&gt;&amp;nbsp;&lt;/b&gt;. Este último cambio es el que realmente está dando tantos problemas.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;La configuración por defecto en MySQL 8 es:&amp;nbsp;ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, and NO_ENGINE_SUBSTITUTION&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Las alarmas empiezan a saltar cuando añadimos o intentamos modificar un dato de la tabla cuando nos han cambiado el servidor con el modo strict_mode activado. Os encontraréis con el siguiente error:&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;b&gt;Error: Incorrect date value: '0000-00-00' for column nombre_columna&lt;/b&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El modo &lt;b&gt;strict_mode&lt;/b&gt; obliga a utilizar un modo de consultas estándar, por lo que ya no se permite realizar ciertas consultas, entre ellas, inicializar una fecha a '0000-00-00'.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Bueno, pues parecería sencillo, cambio el valor por defecto y ya está, no?, pues no:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li style="text-align: justify;"&gt;No se puede modificar el valor por defecto si tenemos datos erróneos en la tabla. Detecta que en la base de datos hay fechas inválidas, por lo que no dejará hacerlo&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Tampoco podemos cambiar los valores con una sentencia tan sencilla como&lt;/div&gt;&lt;div style="text-align: justify;"&gt;UPDATE tabla SET campo_fecha = NULL WHERE campo_fecha = '0000-00-00'. Por qué? Pues porque nos vuelve a decir que no podemos utilizar este formato de fechas&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Entonces... ¿como lo hago?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Debemos utilizar otra sentencia sql parecida a la anterior:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: courier;"&gt;&lt;b&gt;UPDATE tabla SET campo_fecha = NULL WHERE CAST(campo_fecha AS CHAR(10)) = '0000-00-00';&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Entonces sí que nos dejará hacerlo. A partir de aquí, si tenéis más de un campo con fecha por defecto '0000-00-00' y que queréis cambiar a NULL, os recomiendo realizar una sola sentencia para esos campos, ya que si solo modificamos uno de ellos, fallará la consulta al encontrar fechas inválidas en otros campos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Un ejemplo sería así, en una sola sentencia:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: courier;"&gt;&lt;b&gt;ALTER TABLE tabla CHANGE campo_fecha1 campo_fecha1 DATE NULL DEFAULT NULL, CHANGE campo_fecha2 campo_fecha2 DATE NULL DEFAULT NULL;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;También nos podremos encontrar con que la nueva versión no admite ciertos campos y deberemos preparar esos campos para que puedan admitir NULL. Si un campo es obligatorio y no se lo enviamos a la consulta, el sistema nos indicará que el campo X no dispone de valor por defecto. O le asignamos un valor por defecto, o lo prepararmos para que pueda ser NULL.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Las consultas GROUP BY también pueden verse afectadas debido a la configuración sql_mode=only_full_group_by. Esta configuración obliga a las consultas a que todos los campos indicados en el GROUP BY, estén en el SELECT. Además, no permite incluir campos en el SELECT, en los HAVING o en los ORDER BY que no estén en la cláusula GROUP BY&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Por cierto. Lo mismo pasa con &lt;b&gt;MariaDB&lt;/b&gt;. Espero que sirva para alguien. A mi me costó varias horas encontrar la solución.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWupUb3ajLOcz-DGL_CGg4EcBRX1zEPjN5GStS51UxLI4po7p051man_bCmy_VfLAaV7AvokB0FHb1a3Lnf4BSRmpQeTkghkZzWYtwXC50ohika3UbloRBGL3ahy6fg7fI0jsathdAf0bXXTm6ztJl_oUyFn04HlcqCpYPBZM-qkNoRHHse4v3Fa3QMA/s72-w640-h54-c/mysql%20error.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Google Search Console (GSC). Experiencia en las páginas 100%</title><link>https://rafamartin10.blogspot.com/2022/08/google-search-console-gsc-experiencia.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Mon, 1 Aug 2022 10:45:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-5017799623399513714</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaHeyHBi3vg-CgKbiT5z0HucbVLUN5Dy5RHJCs2qto_SyjbxBDQCJv03T1gcjuByVfhyHY1SM385Wsdddo5YwcWN4D8yEJI0Vncnn1YTABsnZYL8nXTuSNvifjl8niOpdmSXypqBr9TIr1LMOVGcRZXGsbfz1GY5O_UAwippFCCHCzG-LcpDbm-qQqQ/s958/100porc100%20mobile.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="712" data-original-width="958" height="476" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaHeyHBi3vg-CgKbiT5z0HucbVLUN5Dy5RHJCs2qto_SyjbxBDQCJv03T1gcjuByVfhyHY1SM385Wsdddo5YwcWN4D8yEJI0Vncnn1YTABsnZYL8nXTuSNvifjl8niOpdmSXypqBr9TIr1LMOVGcRZXGsbfz1GY5O_UAwippFCCHCzG-LcpDbm-qQqQ/w640-h476/100porc100%20mobile.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3 style="text-align: center;"&gt;Experiencia en las páginas Mobile &amp;amp; PC 100%&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;7 meses ha tardado el sistema del GSC a poder tener un 100% en todas las páginas visitadas, tanto en teléfonos móviles como en PC en la &lt;a href="https://bio-farma.es" target="_blank"&gt;web de parafarmacia&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Esta experiencia de velocidad se traduce en visitas, ya que Google sube en los rankings entre dos resultados similares, aquél que tenga una mayor velocidad de carga y experiencia de usuario.&lt;/p&gt;&lt;p&gt;No es imposible. ya véis que tanto en télefonos móviles (imagen superior) como en PC (imagen a continuación), son del 100%.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD5dX9ASQafDrQGcOA8f9yJUaSdHg_ZUo2v6T4khDhcoCmSFx8AUpvr7_a6g11WrsLOc2tT5hDfMHSp2RbAtd5w-gkf9xJnbeSBiVqvXcuWWCuBeUw-JJiJSzE-Xnyd3GrSg8kqgHrVq9bWD2qHwJWyOg-W-REfi9ZlPwznjHsrI85uM5HAAiqfRCMmg/s1002/100porc100%20pc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="706" data-original-width="1002" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD5dX9ASQafDrQGcOA8f9yJUaSdHg_ZUo2v6T4khDhcoCmSFx8AUpvr7_a6g11WrsLOc2tT5hDfMHSp2RbAtd5w-gkf9xJnbeSBiVqvXcuWWCuBeUw-JJiJSzE-Xnyd3GrSg8kqgHrVq9bWD2qHwJWyOg-W-REfi9ZlPwznjHsrI85uM5HAAiqfRCMmg/w640-h450/100porc100%20pc.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Puede llegar a ser obsesión el intentar tener un rendimiento siempre del 100%, así que si tenéis algún rendimiento del 90%, ya está bien. La entrada de este blog intenta informar de que llegar al 100% es posible, pero con mucho esfuero. ¿Vale la pena? Eso está a tu decisión ;D.&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaHeyHBi3vg-CgKbiT5z0HucbVLUN5Dy5RHJCs2qto_SyjbxBDQCJv03T1gcjuByVfhyHY1SM385Wsdddo5YwcWN4D8yEJI0Vncnn1YTABsnZYL8nXTuSNvifjl8niOpdmSXypqBr9TIr1LMOVGcRZXGsbfz1GY5O_UAwippFCCHCzG-LcpDbm-qQqQ/s72-w640-h476-c/100porc100%20mobile.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Inteligecia artificial para el sector turístico</title><link>https://rafamartin10.blogspot.com/2022/06/inteligecia-artificial-para-el-sector.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Thu, 23 Jun 2022 17:22:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-4841184779694276087</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1aH6-yRLritGNbctyBJH-nPAADY8E2sr_yDMJwAJKoGXD5nr4yhkdO69rdAE865ToOnoJq0tIxJ1M9JnOk8f101rwh88Lp0yK9ibKjLpmZVvTsOfb7g1aB2nN_Gc2byRKtCdMyjjEEsBwoIVxbVLtlbSPz40VBEgsqlPWrRSuuwGZ0RTXTm_OAlmww/s805/inteligencia-artificial-para-el-sector-turistico.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="805" data-original-width="602" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1aH6-yRLritGNbctyBJH-nPAADY8E2sr_yDMJwAJKoGXD5nr4yhkdO69rdAE865ToOnoJq0tIxJ1M9JnOk8f101rwh88Lp0yK9ibKjLpmZVvTsOfb7g1aB2nN_Gc2byRKtCdMyjjEEsBwoIVxbVLtlbSPz40VBEgsqlPWrRSuuwGZ0RTXTm_OAlmww/w478-h640/inteligencia-artificial-para-el-sector-turistico.jpg" width="478" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2 style="clear: both; text-align: center;"&gt;Inteligencia Artificial encara al sector turístico. Reconocimiento de imágenes&lt;/h2&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Es muy importante especificar qué es cada una de las imágenes en las páginas web para las personas con alguna minusvalía. Por si no lo sabéis, las personas ciegas pueden navegar por Internet. Se valen de navegadores que leen la página web donde están.... ¿y qué pasa cuando llega a una imágen? pues que el diseñador es el responsable de haberla explicado textualmente en el código de la página web.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Explicar cada una de las imágenes cuando se tienen miles es una tarea ardua, larga, repetitiva y poco gratificante, pero.... ahora tenemos un aliado. La inteligencia artificial.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Una de las tareas nuevas que me toca implementar y lanzar a una empresa a la tecnología 4.0 es precisamente esta, realizar un proceso de deep learning basado en imágenes para que el sistema reconozca las imágenes y hacer esta tarea más fácil, y de paso, ayudar a las personas con alguna minusvalía. Nos toca explicar las 22.000 imágenes, una por una, y no solo eso, si no que habrá que hacerlo en un futuro para todas las miles que entren en el sistema nuevas.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hace unos días preparé un modelo basado en el reconocimiento de imágenes. Este sistema ha servido para poder clasificar las imágenes de una empresa dedicada al sector turístico, concretamente al &lt;a href="https://finquesfrigola.com" target="_blank"&gt;alquiler de alojamiento turístico&lt;/a&gt; para el verano, vacaciones, etc...&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El modelo anterior tenía aproximadamente 13.000 imágenes y tardó unas 70h en procesar cada época (una época es una única pasada por todo el dataset completo de imágenes). Consistía en 47 características diferentes (piscina pública, privada, jardín, barbacoa, habitación, cocina, sala de estar, ....). Estas imágenes se obtuvieron de unos datasets públicos en internet y se tuvieron que filtrar préviamente, ya que aparecían imágenes que no eran útiles para nuestro objetivo. Para ir bien, habría que realizar unas cuantas épocas y así optimizar el modelo. Con máquinas actuales basadas en cálculos a través de las GPU'S es más rápido, pero como me gusta reaprovechar el material y no tirarlo, he aprovechado una máquina del 2009 para que vuelva a trabajar en los tiempos de hoy. Solo dispone de un procesador Pentium Dual Core y no utiliza las últimas instrucciones optimizadas para Deep Learning (como las últimas compilaciones de Tensorflow que utilizan SSE4, instrucciones de procesador AVX, etc), pero.... servirá ^_^'.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El resultado de la clasificación de las primeras 13.000 imágenes genéricas ha sido bastante bueno. Se ha utilizado para clasificar las más de 22.000 imágenes de la empresa, con una tasa de acierto de cerca del 80%. Ya os avanzo que mi intención es incrementar esta tasa de acierto, realizando un segundo paso explicado a continuación.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El segundo paso que nos encontramos ahora es utilizar este dataset clasificado por nosotros mismos para que el sistema aprenda mejor. Para ello se ha utilizado algunas imágenes del dataset anterior que funcionaban muy bien (piscina, cocina, terraza, ...) y se han descartado otras que 'despistaban' al sistema ya sea por la falta de imágenes o por las características genéricas que no coincidían (piscina cerrada, aire acondicionado, chimenea, ....).&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El nuevo dataset consta ahora de 39.500 imágenes. Se utilizarán 31.500 imágenes para realizar el Train y casi 8.000 para el dataset de Validación. Se recomienda utilizar aproximadamente un 20% del global de imágenes para el Test y validación.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El nuevo número de características (neuronas de salida) se ha reducido de 47 a 29. Este nuevo dataset englobará todas las características genéricas y más adelante se realizará un deep learning con datasets de imágenes concretas (piscina comunitaria y privada, habitación genérica y de niños, o con cuna, ....) Se pretende que el primer modelo haga una criba genérica y posteriormente los otros modelos especializados se encarguen de desentrañar las características más concretas de ese tipo de imágenes.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El nuevo dataset genérico tardará unas 172h en completarse. El anterior tardaba 70h. Aunque este nuevo tenga menos neuronas de salida, contiene muchísimas más imágenes.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim7FPgpp3Oa2HCNtAPK6Qlf4_0n7fl_frzL0G8ysuMl1LT_uMwJMGR558eULAcm9SlDL7Tf1Trk8EXDjE8it2cWT9KI5wuObXu1d6r2WLfqID-5bXcZNmiibA4z1ZPI6tEfCU2SA_jEwOmZQbPEB3Yx1UkXi2qbrtRDhugUYNUazDpZSufe3A22fBPgA/s1119/train.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="241" data-original-width="1119" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim7FPgpp3Oa2HCNtAPK6Qlf4_0n7fl_frzL0G8ysuMl1LT_uMwJMGR558eULAcm9SlDL7Tf1Trk8EXDjE8it2cWT9KI5wuObXu1d6r2WLfqID-5bXcZNmiibA4z1ZPI6tEfCU2SA_jEwOmZQbPEB3Yx1UkXi2qbrtRDhugUYNUazDpZSufe3A22fBPgA/w640-h138/train.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Como curiosidad, se me pasó por la cabeza enviar al modelo dibujos realizados a mano. Escogí 12 diferentes de playa. Eran dibujos de líneas, otros coloreados y otros pintados como un cuadro, digamos. Lo curioso es que todos los dibujos de líneas, para el sistema eran GIMNASIOS. Los coloridos eran HABITACIONES PARA NIÑOS. El resto lo acertó bastante bien. Tiene lógica. El sistema nunca aprendió dibujos, si no, fotos, por lo que las líneas de los dibujos le indicaban que debían de ser los aparatos de un gimnasio, los dibujos coloreados le indicaban que eran habitaciones de niños, donde suelen abundar este tipo de objetos. Curioso, ¿no?&lt;/p&gt;&lt;p&gt;Ahora paciencia, y ya os contaré ;D&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1aH6-yRLritGNbctyBJH-nPAADY8E2sr_yDMJwAJKoGXD5nr4yhkdO69rdAE865ToOnoJq0tIxJ1M9JnOk8f101rwh88Lp0yK9ibKjLpmZVvTsOfb7g1aB2nN_Gc2byRKtCdMyjjEEsBwoIVxbVLtlbSPz40VBEgsqlPWrRSuuwGZ0RTXTm_OAlmww/s72-w478-h640-c/inteligencia-artificial-para-el-sector-turistico.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Linux. Contar ficheros en directorios recursivo</title><link>https://rafamartin10.blogspot.com/2022/06/linux-contar-ficheros-en-directorios.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Tue, 21 Jun 2022 18:35:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-4406273145929017516</guid><description>&lt;h1 style="text-align: center;"&gt;&lt;span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures;"&gt;find tu_directorio/. -type f | wc -l&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures;"&gt;Esta es la instrucción que necesitáis ejecutar en vuestro Linux para saber el número de ficheros que existe en un directorio incluyendo sus subdirectorios.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures;"&gt;Fácil ;D&lt;/span&gt;&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Pentium dual core del 2009 para ML, Jupyter, Deep Learning with Tensorflow &amp; Keras, Tensorflow Serve en el 2022</title><link>https://rafamartin10.blogspot.com/2022/06/pentium-dual-core-del-2009-para-ml.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Thu, 16 Jun 2022 17:10:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-8215458299160696663</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6itOgxflKWk1klbyJLctN_AWFYzT_ScaN4k3jHoSIj74LR-delHbxfbu1F1zNWkIlc1KJBX0ql4NaU14tkMtKVTTwk3bxwHz99JbE5IW93x3DQ8GXs2Rv9wm6u_iuJOlg-gXQ6G3g8lQtpRnEyEsGSJytoDFs_EjWJZYSUHehttDO88GSTtcdqilzCA/s1189/deep-learning.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="208" data-original-width="1189" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6itOgxflKWk1klbyJLctN_AWFYzT_ScaN4k3jHoSIj74LR-delHbxfbu1F1zNWkIlc1KJBX0ql4NaU14tkMtKVTTwk3bxwHz99JbE5IW93x3DQ8GXs2Rv9wm6u_iuJOlg-gXQ6G3g8lQtpRnEyEsGSJytoDFs_EjWJZYSUHehttDO88GSTtcdqilzCA/w640-h112/deep-learning.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style="text-align: center;"&gt;Utilizando un Pentium Dual Core para procesos de Inteligencia Artificial&lt;/h2&gt;&lt;p style="text-align: justify;"&gt;Quien me conoce, sabe que me gusta reciclar y dar uso a esos ordenadores que tenemos medio olvidados, que pensamos que ya no nos van a servir para nada.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;En este sentido, he hecho realidad lo que es todo un reto. En la &lt;a href="https://finquesfrigola.com" target="_blank"&gt;inmobiliaria de Calella de Palafrugell&lt;/a&gt; me han dejado reciclar un ordenador del año 2009 para realizar procesos relacionados con Inteligencia Artificial. Un 10 por ellos para creer en estos proyectos y entrar en la era 4.0.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Las características del PC:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;* CPU 64b Year 2009&lt;/div&gt;&lt;div style="text-align: justify;"&gt;*&amp;nbsp; - Pentium(R) Dual-Core&amp;nbsp; CPU&amp;nbsp; &amp;nbsp; &amp;nbsp; E5400&amp;nbsp; @ 2.70GHz&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* MEM: 3GB&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* SWAP: 8GB&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* HD: ST3250820A 100Gb&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* GPU: Nvidia Geforce 210 ver 340.52&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* Audio Asus, Realtek Hd Hight Definition Audio&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* Ethernet: Atheros AR8121 / AR8113 / AR8114&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;* OS: Ubuntu 22.04 LTS (jammy) 64b&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* Tensorflow 1.5 (For compatibility with old CPU'S)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;* Keras 2.1.4 (For compatibility with Tensorflow 1.5 old CPU'S)&lt;br /&gt;* PHP 8.1&lt;/div&gt;&lt;span style="text-align: justify;"&gt;* Python2.7&amp;nbsp;&lt;/span&gt;&lt;span style="text-align: justify;"&gt;(For compatibility with tensorflow &amp;amp; Keras old CPU'S)&lt;/span&gt;&lt;div&gt;&lt;span style="text-align: justify;"&gt;* Docker&lt;br /&gt;&lt;/span&gt;&lt;p style="text-align: justify;"&gt;Este PC se encarga de realizar el Deep Learning de un dataset de más de 13000 imágenes, con el objetivo de clasificarlas. Para hacerlo utiliza Tensorflow &amp;amp; Keras, ofreciendo además el servicio Jupyter para poder realizar estas tareas externamente mediante un simple navegador.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Este procesador no tenía las instrucciones AVX obligatorias para las versiones de Tensorflow2.0+, así que se ha tenido que utilizar vesiones anteriores de Tensorflow y Keras para que resultasen compatibles con el hardware.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Otro problema que me encontraba era la falta de memoria a causa de la cantidad de párametros a calcular en las neuronas de salida. Esta máquina dispone de tan solo 3Gb. La solución ha sido ampliar la swap (que simula tener más memória), hasta 8Gb en lugar de los 2Gb que tiene por defecto. Si bien hace que el proceso sea más lento, cuando Tensorflow la utiliza, lo hace momentáneamente, así que tampoco influye mucho en la velocidad. Con un poquito de paciencia todo se lleva más que bien.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Aquí una captura del proceso Jupyter:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyPLXS5CGK_auPwc4nckJDSL8MsNEKrvGkjenQ3HmcaUfA5mpc5_IpgeUynO_QMhUgcUGNJ4SQq9q8ECBYm04VJtgc-UrJ_g02v3tmMsHXeuj4HOVRv-KLjY_GWIfMqKmHs_4Ygx-jbCx4Qp6tnBuQIh1gjDurXk99VQM8BGXN6OoBpESzxcb82GnJtA/s1154/jupyter.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="451" data-original-width="1154" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyPLXS5CGK_auPwc4nckJDSL8MsNEKrvGkjenQ3HmcaUfA5mpc5_IpgeUynO_QMhUgcUGNJ4SQq9q8ECBYm04VJtgc-UrJ_g02v3tmMsHXeuj4HOVRv-KLjY_GWIfMqKmHs_4Ygx-jbCx4Qp6tnBuQIh1gjDurXk99VQM8BGXN6OoBpESzxcb82GnJtA/w640-h250/jupyter.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;En la Imagen de la cabecera se aprecia una captura del proceso de aprendizaje (para cada época tarda 70h. aproximadamente).&lt;/p&gt;&lt;p style="text-align: justify;"&gt;El sistema además ofrece el servicio de Tensorflow Serve.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Realiza mediante PHP también un proceso de captura online de imágenes, prepararlas con instrucciones en un subproceso en Python2.7, realiza la petición al Tensorflow Serve y envía los resultados de la clasificación a la base de datos en Internet para verificar el correcto proceso (o no) de la clasificación. Alcanza cerca de un 80% de aciertos, por lo que es bueno. También os digo que será mejor cuando después de realizar esta clasificación, el sistema aprenda directamente mediante las imágenes que yo mismo he clasificado.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Una captura del proceso de clasificación:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO4r0TPVkMc_els5k9BKCn7dbmy47GXUOfUodtKLDCIigFY_E5dlvqFIhjwDv0_zakUJnOxG4YsBQl0lKIdhNeE5emxqI3cseVQiOjgOBp3IGR38JEWEWSwUOuZC-9_qI4k7H89hQnf8-WyPPOzkOs5W2N_IHw8qrwxSsZqey5q0Q-Azt5bdy6TUc-Zw/s1090/proceso-de-prediccion.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="845" data-original-width="1090" height="496" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO4r0TPVkMc_els5k9BKCn7dbmy47GXUOfUodtKLDCIigFY_E5dlvqFIhjwDv0_zakUJnOxG4YsBQl0lKIdhNeE5emxqI3cseVQiOjgOBp3IGR38JEWEWSwUOuZC-9_qI4k7H89hQnf8-WyPPOzkOs5W2N_IHw8qrwxSsZqey5q0Q-Azt5bdy6TUc-Zw/w640-h496/proceso-de-prediccion.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style="text-align: justify;"&gt;El modelo utiliza 47 características como outputs. Teniendo en cuenta que es un ordenador antiguo, que está realizando proceso de Deep Learning y además prediciendo, el proceso de predicción tarda unos 12 segundos de media (Entre que descarga la imagen desde internet, preparar los inputs con el proceso de Python, tensorflow serve realiza la predicción, y el sistema envía los outputs a la base de datos).&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Mientras, se realizan procesos de monitorización, como la temperatura de la CPU y el uso de los procesadores:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDXmyxXhJrfE0pr1bPxni2KiK-5CffqxsP7mQ5AlK5QrmWCIhDybWqBeNLBBBWEa5i76ofz_nyamIomYFKWxTtKV2tCUvcXqv2bWddZ0fJucNEnfQ9XWiJwWi_ffnVHZap_u1YrhmmLzQBy4ZJgKobHZzSbCakyZlqFYxtm4lhtac2avcGqMwGIaCldA/s571/monitorizacion-temperatura.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="353" data-original-width="571" height="396" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDXmyxXhJrfE0pr1bPxni2KiK-5CffqxsP7mQ5AlK5QrmWCIhDybWqBeNLBBBWEa5i76ofz_nyamIomYFKWxTtKV2tCUvcXqv2bWddZ0fJucNEnfQ9XWiJwWi_ffnVHZap_u1YrhmmLzQBy4ZJgKobHZzSbCakyZlqFYxtm4lhtac2avcGqMwGIaCldA/w640-h396/monitorizacion-temperatura.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIZqR9mKvd-5RSgalOruckI8fWvTGDNGn1JmfkPtrQ4CT5CNBE7nMuYW62DaUgZgDyg9sMuZhdp-8ehxtNH6_P8m5hS1dFG6zHZ1-wErMXYEDq3n8m6TTTnrwA5Xlijmx4shbKIQxjD1m_Xy_bb0QiFTRarQ3xIq3XzbYTI-mj2v0AdEUTSVgdbKB6sw/s774/monitorizacion-uso-cpu.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="494" data-original-width="774" height="408" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIZqR9mKvd-5RSgalOruckI8fWvTGDNGn1JmfkPtrQ4CT5CNBE7nMuYW62DaUgZgDyg9sMuZhdp-8ehxtNH6_P8m5hS1dFG6zHZ1-wErMXYEDq3n8m6TTTnrwA5Xlijmx4shbKIQxjD1m_Xy_bb0QiFTRarQ3xIq3XzbYTI-mj2v0AdEUTSVgdbKB6sw/w640-h408/monitorizacion-uso-cpu.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style="text-align: justify;"&gt;Analizando los primeros resultados, hay que tener en cuenta que el dataset para realizar el train, se ha basado en datasets descargados de internet. Se realizó un filtro sobre todas las imágenes para descartar algunas y para que se asemejen lo más posible a las situaciones reales de la empresa. Los fallos más comunes de la predicción son: Terraza con Piscina (por la similitud en el suelo), Lavabo con cocina (por similitud en los azulejos). También suele confundir comedor con habitación (por la similitud entre un sofá y una cama). O por ejemplo, comedor lo confunde con cocina (En muchas cocinas hay mesas con sillas, así que es normal también). Poco a poco se irá perfeccionando el sistema con nuevos datasets más fiables,&amp;nbsp; y espero conseguir resultados muchísimo más acertados. Hay que tener también en cuenta que el proceso de aprendizaje solo ha pasado 2 veces por el dataset (2 épocas). Hay que probar con más épocas para ver los resultados sin que el sistema haga un sobre aprendizaje de los mismos.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;La lección que podemos aprender: Aunque las máquinas de hoy en día superen con creces el rendimiento de las antiguas, y, si bien es cierto, alcanzan velocidades de vértigo que ahorraría en electricidad, no hay por que invertir en más tecnología cuando ya disponemos de ella y que no utilizamos para nada (que se traduce en más producción de co2, gasto de energía, etc...). Podemos reaprovechar todos los recursos disponibles, siempre que no sea para situaciones críticas. Demos una segunda vida a esas máquinas que están deseando volver a trabajar. Al fin y al cabo estamos siempre en la rueda de comprar lo nuevo y tirar lo viejo, así que, yo apuesto por el reciclaje y estar al día a la vez.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;¿Quien le hubiera dicho a ese pc que estaría hoy de vuelta 'a la vida' realizando predicciones y procesos de aprendizaje profundo en el 2022?&lt;/p&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6itOgxflKWk1klbyJLctN_AWFYzT_ScaN4k3jHoSIj74LR-delHbxfbu1F1zNWkIlc1KJBX0ql4NaU14tkMtKVTTwk3bxwHz99JbE5IW93x3DQ8GXs2Rv9wm6u_iuJOlg-gXQ6G3g8lQtpRnEyEsGSJytoDFs_EjWJZYSUHehttDO88GSTtcdqilzCA/s72-w640-h112-c/deep-learning.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Probando DALL-E MINI</title><link>https://rafamartin10.blogspot.com/2022/06/probando-dall-e-mini.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Mon, 13 Jun 2022 13:02:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-6870448087983665694</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9WU_Ih0GT801u_yaqPPg1niwoamjdPRWCD_P-4nXnXxGh-0WXJEm70LBbm63EvjaTHCiMyWCItByzIns1v9EFb5UkU4zF_l-6lJT9lSCLxah1iQ4tKOSDo7atR_Bj1tiRvJAmqjN72_-MRHrC2tTNaTPJDJNrv3bvkDhA2xVAJVa_GnhFIc5oRPcM2w/s256/baixa%20(4).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9WU_Ih0GT801u_yaqPPg1niwoamjdPRWCD_P-4nXnXxGh-0WXJEm70LBbm63EvjaTHCiMyWCItByzIns1v9EFb5UkU4zF_l-6lJT9lSCLxah1iQ4tKOSDo7atR_Bj1tiRvJAmqjN72_-MRHrC2tTNaTPJDJNrv3bvkDhA2xVAJVa_GnhFIc5oRPcM2w/s1600/baixa%20(4).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style="text-align: center;"&gt;Poniendo a prueba DALL-E MINI&lt;/h2&gt;&lt;p&gt;Si.... la foto de arriba no existe (o no existía hasta que yo le pedí a la inteligencia artificial que la inventara).... es Hommer Simpson con falda y bailando. No os habéis equivocado.&lt;/p&gt;&lt;p&gt;Hace unas semanas se lanzó &lt;a href="https://openai.com/dall-e-2/" target="_blank"&gt;DALL-E 2 de OpenIA&lt;/a&gt;. Es un sistema de creación de imágenes facilitándole una simple frase escrita. Algo realmente asombroso con resultados impactantes. Seguro que habréis visto la siguiente fotografía por internet:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwguZqBDu2pAF83swK3a96Nh0ly2yRcEw9s4TvUmkzUIEnMyIaL7mfdtmyBw0p8E3batzpxmIgC87XCw1gXpchxHi95BYDke_xpPCnZ77x-o7pXWT7gpPmkapoLZexzT-ny15jhaBkcwaChj2O17JvUJxR2tu9GUfgDnl-3QPiWFMuk6pkJ6b2_7TQXg/s1024/0%20(57).jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1024" data-original-width="1024" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwguZqBDu2pAF83swK3a96Nh0ly2yRcEw9s4TvUmkzUIEnMyIaL7mfdtmyBw0p8E3batzpxmIgC87XCw1gXpchxHi95BYDke_xpPCnZ77x-o7pXWT7gpPmkapoLZexzT-ny15jhaBkcwaChj2O17JvUJxR2tu9GUfgDnl-3QPiWFMuk6pkJ6b2_7TQXg/w640-h640/0%20(57).jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Un astronauta montado a caballo en estilo fotorrealista. Lo curioso es que realmente se la inventa. El sistema 'entiende' que es lo que le estamos pidiendo y la crea de la nada. Impresionante. Además te da otras versiones, también en foto, grafiti, dibujo, .... Tú pide y DALL-E 2 te da lo que le pidas. Las imágenes son de alta calidad y a 1024x1024 píxels, o sea, una pasada.&lt;/p&gt;&lt;p&gt;El futuro (o presente) de esta tecnología, se puede aplicar a muchas áreas, pero una de las que no se salvará, será el diseño de espacios. A partir de una fotografía, se podrá rellenar el contenido con lo que quieras (un dormitorio al estilo Ikea o modernista), con algún detalle en concreto, etc.... el sistema lo dibujará teniendo en cuenta las superficies para las sombras y reflejos. Es impresionante.&lt;/p&gt;&lt;p&gt;DALL-E 2, hasta ahora, solo ha podido ser testeado por un grupo de reducido de personas, pero eso se ha acabado. Ahora existe una versión reducida y en Open Source llamada &lt;a href="https://huggingface.co/spaces/dalle-mini/dalle-mini" target="_blank"&gt;DALL-E MINI&lt;/a&gt;, con la que podemos 'jugar', poniendo a prueba el sistema e intentando crear imágenes inexplicables para ver hasta donde puede llegar la Inteligencia Artificial.&lt;/p&gt;&lt;p&gt;¿Cómo sería Eddie (la mascota del grupo heavy metal de Iron Maiden) en versión gorila? ¿Y una mosca jugando al ajedrez? o quizás se te haya pasado por la cabeza ¿Como sería Albert Einstein en versión luchador de sumo?&lt;/p&gt;&lt;p&gt;Yo no me he podido resistir y lo he puesto a prueba hasta donde llega mi imaginación (que no es poco). No siempre se obtienen los resultados esperados, pero otros realmente sorprenden. Teniendo en cuenta que aún está en fase de aprendizaje (o DEEP LEARNING), los resultados de aquí a poco tiempo prometen bastante.&lt;/p&gt;&lt;p&gt;Si os habéis imaginado algún día un gorila patinando dentro de un túnel, eso podría ser algo así:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEhcrBppvbdWDhCACCtaXxjVc1C3mQQlou36DrP3Yo0DUS2N1nnOB4zMf3NzPGs-bGk6foqFAiLPqP7SUgJJunXnOmMGKHrqdcrD7FiUQ8uSVLJ6tzqrG1QLWPujg_827F63NUcghoptFHVtOvjGT9WKdO74No9UUx5w92jbBTJekSxZWvJUytCl6PWQ/s256/baixa%20(1).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEhcrBppvbdWDhCACCtaXxjVc1C3mQQlou36DrP3Yo0DUS2N1nnOB4zMf3NzPGs-bGk6foqFAiLPqP7SUgJJunXnOmMGKHrqdcrD7FiUQ8uSVLJ6tzqrG1QLWPujg_827F63NUcghoptFHVtOvjGT9WKdO74No9UUx5w92jbBTJekSxZWvJUytCl6PWQ/s1600/baixa%20(1).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;O por ejemplo, el gorila patinando en la playa:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMP4WOY-w6NbyXAC2cAYhjTan-5gSj9s_VwPvOv-fbOEopKmwD0Rl6rEm0-_NkDUGYKRiiMvI3AbNYoey2mj152yJja0adFXp9WH8IpvNDUBij7fgnBt4_HETTq3LJEB3rE9vwm-Ebl3BmAd0X_4sqHm7v8ZerCV5akENiJClTKH5BCGZ51oI4UtYR8A/s256/baixa%20(2).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMP4WOY-w6NbyXAC2cAYhjTan-5gSj9s_VwPvOv-fbOEopKmwD0Rl6rEm0-_NkDUGYKRiiMvI3AbNYoey2mj152yJja0adFXp9WH8IpvNDUBij7fgnBt4_HETTq3LJEB3rE9vwm-Ebl3BmAd0X_4sqHm7v8ZerCV5akENiJClTKH5BCGZ51oI4UtYR8A/s1600/baixa%20(2).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;O en bikini en el polo norte tendría un aspecto tal que así:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhipwWwPgLL6iNa-BeZ__X9e3DuqWs1KU89Bv6KmMmTHeRG46ywEMUnrc8ukyZAwQckglWMeguvR0HjgxBb_cgBq6W41YTngw4b6bNxx0WqiBuboZpT1k2k09cQTTMS7yrTOCj0Z58j2ra2rtoi-Kra5PXKkqEMel4iBAZMRp8AXTNL26l0twGBiGo0-g/s256/baixa%20(3).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhipwWwPgLL6iNa-BeZ__X9e3DuqWs1KU89Bv6KmMmTHeRG46ywEMUnrc8ukyZAwQckglWMeguvR0HjgxBb_cgBq6W41YTngw4b6bNxx0WqiBuboZpT1k2k09cQTTMS7yrTOCj0Z58j2ra2rtoi-Kra5PXKkqEMel4iBAZMRp8AXTNL26l0twGBiGo0-g/s1600/baixa%20(3).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Vaya.... este biquini te favorece muchísimo XD&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Lo que se te pase por la cabeza, puede tener una interpretación.... las cosas más absurdas e impensables, como.....&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ1tmME0u59OVN0bT4uZp8W14jKVLwoGxbQn8_VLmZMgmQsgjNt5I2qljbs7nNyk-LCqCS2H3gVZ-lmhp05ZEHIEmrpA9dAOt8kBRtoCWvABWlS3tZmZqY45JPSIjx-h9Ylp0cVHtV8eAI1Jub00UHDoWZ43cJDkuIJfrMgStlZBIp46WFFM5If03dlA/s256/baixa%20(5).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ1tmME0u59OVN0bT4uZp8W14jKVLwoGxbQn8_VLmZMgmQsgjNt5I2qljbs7nNyk-LCqCS2H3gVZ-lmhp05ZEHIEmrpA9dAOt8kBRtoCWvABWlS3tZmZqY45JPSIjx-h9Ylp0cVHtV8eAI1Jub00UHDoWZ43cJDkuIJfrMgStlZBIp46WFFM5If03dlA/s1600/baixa%20(5).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Un barco con alas&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSSwKRYdd_PAAFkJaMxOeYXgJ69pqWgGKB0ECrElHcqoZRxMi3aPzq-oJHYQNXJO0SUd2olcvn2VjiSXe1uPw2KZ-_ZGoXZkNnVvSWconStn59cGWmKRd65CmqD8eGLA7X6kTdpLk1Prd-hwSv0h9R2lETN1HFm7zMAR1lR9MmA5a-iO3s0mWBiSQ_PA/s256/baixa%20(6).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSSwKRYdd_PAAFkJaMxOeYXgJ69pqWgGKB0ECrElHcqoZRxMi3aPzq-oJHYQNXJO0SUd2olcvn2VjiSXe1uPw2KZ-_ZGoXZkNnVvSWconStn59cGWmKRd65CmqD8eGLA7X6kTdpLk1Prd-hwSv0h9R2lETN1HFm7zMAR1lR9MmA5a-iO3s0mWBiSQ_PA/s1600/baixa%20(6).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Un virus con gafas&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcjXcUTfToJ-hEdBG8Sk16mIpANHe-LsqhOiIj01TANeIy5SlPfyMezOHmfnEkEsoueNQpPxaxuc6GPJt7BRTk8i1FuE8ReUkhdHjjzGz-ilQHTpEGsNxmmhhwb2nbt6uHw3hPszCq3KJkE2VJ9Tq6yD0KKnlFaulvLiOf5oHl-k9i_SbPKabR65zFFQ/s256/baixa%20(7).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcjXcUTfToJ-hEdBG8Sk16mIpANHe-LsqhOiIj01TANeIy5SlPfyMezOHmfnEkEsoueNQpPxaxuc6GPJt7BRTk8i1FuE8ReUkhdHjjzGz-ilQHTpEGsNxmmhhwb2nbt6uHw3hPszCq3KJkE2VJ9Tq6yD0KKnlFaulvLiOf5oHl-k9i_SbPKabR65zFFQ/s1600/baixa%20(7).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Un elefante con zapatos&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3qUo_dsY5HzutfmBNk21sBrcv4b05JF7VUxrfyXF07x7O4yXSDT4YYgExG60EcML3p016hRZItfgUa1s5Q_v8qOKt1kW_uZCF0bH5HxadpLx8KJeP4NH0n4-eKdo43rntIqNTitvbVmTBhd4db8keykJ9MTTe1mhd0JMX1xQ2UKksTUk-4gWjXhm7sg/s256/baixa%20(8).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3qUo_dsY5HzutfmBNk21sBrcv4b05JF7VUxrfyXF07x7O4yXSDT4YYgExG60EcML3p016hRZItfgUa1s5Q_v8qOKt1kW_uZCF0bH5HxadpLx8KJeP4NH0n4-eKdo43rntIqNTitvbVmTBhd4db8keykJ9MTTe1mhd0JMX1xQ2UKksTUk-4gWjXhm7sg/s1600/baixa%20(8).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Moscas jugando al ajedrez&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguXRyMv8JtrY7M_XsTX5JT3o_6n1QXP4OuzffuxUwsKbhxvlhFrv68I31uHxGTRiCmcVQvl5Nuansrxdhw59pD8KNP2TdAxrOtIIE7g8oYYEsxy5EBFx2AK6QbOc_p9JwJldkDcPbAvE8PZXxvMxcdkP929eMPmPazSqGtgwNHN2akHaEsLaQIvGfITA/s256/baixa%20(9).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguXRyMv8JtrY7M_XsTX5JT3o_6n1QXP4OuzffuxUwsKbhxvlhFrv68I31uHxGTRiCmcVQvl5Nuansrxdhw59pD8KNP2TdAxrOtIIE7g8oYYEsxy5EBFx2AK6QbOc_p9JwJldkDcPbAvE8PZXxvMxcdkP929eMPmPazSqGtgwNHN2akHaEsLaQIvGfITA/s1600/baixa%20(9).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Un ordenador de mantequilla&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3PKgvBxBjo-pUHqokapHsaHgXhhSsa1484rkhTDo2Uy5GV4YcXHgGFtZljSZ9LF0a0BjrR7x8G-pdDqj6nA_pGbHA48yIyw1lRaEoiDRlxeZuqwRw97eHNvKp90xfSe9pZzAGRzxsFWdTU1yHowXJE7WKAjzM-14BqoDC7ebhh-BKGJErobTZyQ5azg/s256/baixa%20(10).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3PKgvBxBjo-pUHqokapHsaHgXhhSsa1484rkhTDo2Uy5GV4YcXHgGFtZljSZ9LF0a0BjrR7x8G-pdDqj6nA_pGbHA48yIyw1lRaEoiDRlxeZuqwRw97eHNvKp90xfSe9pZzAGRzxsFWdTU1yHowXJE7WKAjzM-14BqoDC7ebhh-BKGJErobTZyQ5azg/s1600/baixa%20(10).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;La última cena con pizza (Hey Judas, pásame la de peperoni!!!!)&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9aDage0Zti_qvBwuXL5reH82mFzxaMkwqppFWu7EjOgkWpACpmwQ4lRQx0r8qHMO5ggkhTbzKKW2T2aWl_v1upbJ7tJh_KRi1aGNWkBjVAB_Yuc60B7U7zYEOLkDALQz-EDmrEnKiI1knAsi6U2vd4AZN3WFmzoOZpLW75sy90KUYV28meESMV9m5JQ/s256/baixa%20(11).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9aDage0Zti_qvBwuXL5reH82mFzxaMkwqppFWu7EjOgkWpACpmwQ4lRQx0r8qHMO5ggkhTbzKKW2T2aWl_v1upbJ7tJh_KRi1aGNWkBjVAB_Yuc60B7U7zYEOLkDALQz-EDmrEnKiI1knAsi6U2vd4AZN3WFmzoOZpLW75sy90KUYV28meESMV9m5JQ/s1600/baixa%20(11).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Orangután en un airbus&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio6nJCatm13Z1fZcZ4f9XILwpHlkxlc5rrgxxHyHPdrusFRx0yPPsepoy8gXoxeGGoYtLBYwJj5Lro_JflkMMfB0aRS_LM6X6GnY0bFooHmGF6qm92iKNELKj9ZMFZ6kLbQx4xuVunqyRp0hvpaqXIVtexTcPwKUOIJgMmx7zPVUr6RBG0tnphvZpNJw/s256/baixa%20(12).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio6nJCatm13Z1fZcZ4f9XILwpHlkxlc5rrgxxHyHPdrusFRx0yPPsepoy8gXoxeGGoYtLBYwJj5Lro_JflkMMfB0aRS_LM6X6GnY0bFooHmGF6qm92iKNELKj9ZMFZ6kLbQx4xuVunqyRp0hvpaqXIVtexTcPwKUOIJgMmx7zPVUr6RBG0tnphvZpNJw/s1600/baixa%20(12).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Will Smith con Einstein (si un poco desfiguradillos, pero se intuyen perfectamente)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL4_wE8WfyOfmvl1M2my5O4C_FcHffbhGEW9q873ZjrNBBd7nGwFmJ_wJ0-hBObm4Pbk8-q87Dzp2I1wTG61YF8BfLMQ219_nX65j_b6duCfl_wBIA902EcmC0ibC-wJqT_aH6XzjAAtnW3b2dMGHrIgYTpeQdSTUjmNlcoJQ5Z2N-zNpbHVjeJsg_bg/s256/baixa%20(13).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL4_wE8WfyOfmvl1M2my5O4C_FcHffbhGEW9q873ZjrNBBd7nGwFmJ_wJ0-hBObm4Pbk8-q87Dzp2I1wTG61YF8BfLMQ219_nX65j_b6duCfl_wBIA902EcmC0ibC-wJqT_aH6XzjAAtnW3b2dMGHrIgYTpeQdSTUjmNlcoJQ5Z2N-zNpbHVjeJsg_bg/s1600/baixa%20(13).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Nuestro apreciado Einstein Luchador de Sumo&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiuwNfND82frUjE7o0doJuhOS_14rW_cCvSOw8Xwea6P_YweiZgTaDffQ8PRij005JXILbfxFsFAf-5jCxqPuz-tES6PmXNlyMjsJh-UV7c57r35FtPOqWaK6iajppSNFh-6TVVnQTvRETjRQVp1ahasIZFR27eXXovkWQufHHIEUigaSiKXVhgxkHQ/s256/baixa%20(14).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiuwNfND82frUjE7o0doJuhOS_14rW_cCvSOw8Xwea6P_YweiZgTaDffQ8PRij005JXILbfxFsFAf-5jCxqPuz-tES6PmXNlyMjsJh-UV7c57r35FtPOqWaK6iajppSNFh-6TVVnQTvRETjRQVp1ahasIZFR27eXXovkWQufHHIEUigaSiKXVhgxkHQ/s1600/baixa%20(14).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;O Einstein bailando la Conga&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQH-n9M183wW1W_DTDkgmgiLm5YE793kX63UI3iofueZJBIUcWC2VKOhyz2z96T3tiJq_-LIl9LNonjWYXIjjXjtEUVUpJ37bEveVOm2ArKFHhw1lSnCLvKxFZbQzl86jcKb5SZC2f_6qNCTyUmYm5GhZQvNcK46-fZg8inZ5gXqlvaehokHYHbGKp4A/s256/baixa%20(15).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQH-n9M183wW1W_DTDkgmgiLm5YE793kX63UI3iofueZJBIUcWC2VKOhyz2z96T3tiJq_-LIl9LNonjWYXIjjXjtEUVUpJ37bEveVOm2ArKFHhw1lSnCLvKxFZbQzl86jcKb5SZC2f_6qNCTyUmYm5GhZQvNcK46-fZg8inZ5gXqlvaehokHYHbGKp4A/s1600/baixa%20(15).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;orangutanes pilotando avión&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib223Y_zAJmig423hKJJfLiK-41fSF9RQeookmH-Qhk4Pr4ev3xWS-b0WL-d65MLqsHEtKHdPNFY_MlcLGNr9WJSm8kzfIXZrAkzGDjTFbm65aOs4FkBcg8LaQUYbdrskAgQOrE7EG-QMAwwuGX8EIARL_W9-oLK2T0tExdCVMyGFm6Q1OHgFUh-8zJw/s256/baixa%20(16).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib223Y_zAJmig423hKJJfLiK-41fSF9RQeookmH-Qhk4Pr4ev3xWS-b0WL-d65MLqsHEtKHdPNFY_MlcLGNr9WJSm8kzfIXZrAkzGDjTFbm65aOs4FkBcg8LaQUYbdrskAgQOrE7EG-QMAwwuGX8EIARL_W9-oLK2T0tExdCVMyGFm6Q1OHgFUh-8zJw/s1600/baixa%20(16).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Camaleón bailando la conga&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYDNDPL2px_KxR9HWNTAhiTTrndz2C6fk6STjhqv6SGIu3PFTZ6XOxIkS5MtnQCpFkJ06wCYSTURPsh0xPmS8AOX4o2XzIJE0JWixwW-CE6goz_3Kupn5uJP0q1Y5LZhzwXu6EKIq0xmkMWcPKv-dWb3fsMz6IkQtPNkYq1sCABV63S4-PNPM6JK7s0A/s256/baixa%20(17).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYDNDPL2px_KxR9HWNTAhiTTrndz2C6fk6STjhqv6SGIu3PFTZ6XOxIkS5MtnQCpFkJ06wCYSTURPsh0xPmS8AOX4o2XzIJE0JWixwW-CE6goz_3Kupn5uJP0q1Y5LZhzwXu6EKIq0xmkMWcPKv-dWb3fsMz6IkQtPNkYq1sCABV63S4-PNPM6JK7s0A/s1600/baixa%20(17).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Mosca con Gafas&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7GNDOLVN12Mgh2SiLzAQp8qLWy9yxAUsLWH2bmOAr7AX8AWTkDRqBMG32-D63dY0mDBfWS_KiHJ7E7tYob_5CXy-QZZj4KYz-QoKS7c_C7qTGxzbIuPyvcwLWFhTktzlrH7VgyngYZ2xBY9GMcZwMB_acY7P2ipoaVY4_DRljSio51yHvDt91jK94PQ/s256/baixa%20(18).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7GNDOLVN12Mgh2SiLzAQp8qLWy9yxAUsLWH2bmOAr7AX8AWTkDRqBMG32-D63dY0mDBfWS_KiHJ7E7tYob_5CXy-QZZj4KYz-QoKS7c_C7qTGxzbIuPyvcwLWFhTktzlrH7VgyngYZ2xBY9GMcZwMB_acY7P2ipoaVY4_DRljSio51yHvDt91jK94PQ/s1600/baixa%20(18).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Elefante saltando a la pata coja&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh83dG-IUz-I1U11rWwa23a8vP45rQs1wLzAkZY3hDz5nhc-X3V1GZxfoCM_3x5dWtuAyPbSm8bxsoIXUrl1jFKE53P2vFbK_uPy2OtvFqyFxNXhpNojC0LyAzbeFtG6As3ABbMAiHF6SyVfOO8OeorRa42D0iiVnULrshW-JVEIyUjgquj6lO4BUTJ7g/s256/baixa%20(19).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh83dG-IUz-I1U11rWwa23a8vP45rQs1wLzAkZY3hDz5nhc-X3V1GZxfoCM_3x5dWtuAyPbSm8bxsoIXUrl1jFKE53P2vFbK_uPy2OtvFqyFxNXhpNojC0LyAzbeFtG6As3ABbMAiHF6SyVfOO8OeorRa42D0iiVnULrshW-JVEIyUjgquj6lO4BUTJ7g/s1600/baixa%20(19).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Por primera vez en la historia de la humanidad (o de los simios), asistimos a la boda de un gorila y un orangután&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMCQWGDtciHII8nkqglZisU8DFF25VC48_5Vl5TcaEwF58BVUGXWwNcGd8_Lh0_t9QQ0nT80Bj5Ss333bz8rzBuQba4nzBDT5QZjeS3EF3p1ToiuMNoEFmKmsedTI01wW--XpLu5UVZAjfyGOyOmCm2p_RRtRmcRX8PMBzSQzG5Q9AN1j-lFqzcTPU5w/s256/baixa%20(20).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMCQWGDtciHII8nkqglZisU8DFF25VC48_5Vl5TcaEwF58BVUGXWwNcGd8_Lh0_t9QQ0nT80Bj5Ss333bz8rzBuQba4nzBDT5QZjeS3EF3p1ToiuMNoEFmKmsedTI01wW--XpLu5UVZAjfyGOyOmCm2p_RRtRmcRX8PMBzSQzG5Q9AN1j-lFqzcTPU5w/s1600/baixa%20(20).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Qué es esto? Vaya!!!! un barco bolígrafo!!!!!&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmAUQSUsbDPw2fCqKgzP7O1jBkK2j_RhrtGjgYIuD6YCLdAnFC-bIhRzuL-q8V_uQhjSTbbj3Na0xZfoGKGeSQxBgZK5Z7ZoK6FUKUK2LWTg2UneWjQzUsqaXrVe_4QSsuwkjIm7SebLJ98F0Csk-PLEHCm3k3JgedseiBTyMZW7zKXpyJbHxj87OkPg/s256/baixa%20(21).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmAUQSUsbDPw2fCqKgzP7O1jBkK2j_RhrtGjgYIuD6YCLdAnFC-bIhRzuL-q8V_uQhjSTbbj3Na0xZfoGKGeSQxBgZK5Z7ZoK6FUKUK2LWTg2UneWjQzUsqaXrVe_4QSsuwkjIm7SebLJ98F0Csk-PLEHCm3k3JgedseiBTyMZW7zKXpyJbHxj87OkPg/s1600/baixa%20(21).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Murciélago haciendo submarinismo&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3bHpVZxNLCjER3qvRKwLaKl8ztAs8N3GUvQnWEQsKjew_jW6GGaRCzgp5kujJi9Na8A-uhfwOVuPkKixBMJjsUPVTEOcGnaT3fsZmo113_N9s6AJkr_vOqpPRv2DBtzYGooo5tr3w7Zc3V8bp2vkgH76dgSDS-OR0PAcikazVb4s30-Kwg4FL1RiFAg/s256/baixa%20(22).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3bHpVZxNLCjER3qvRKwLaKl8ztAs8N3GUvQnWEQsKjew_jW6GGaRCzgp5kujJi9Na8A-uhfwOVuPkKixBMJjsUPVTEOcGnaT3fsZmo113_N9s6AJkr_vOqpPRv2DBtzYGooo5tr3w7Zc3V8bp2vkgH76dgSDS-OR0PAcikazVb4s30-Kwg4FL1RiFAg/s1600/baixa%20(22).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Pájaro conduciendo un coche&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9SHs4ur4vjWOryhuwkVqUg8yFM-9UFZ91kuV1nQn8nsdi4eKKWrbm-7r7sPd9zo0UPbmSb4gFjEwH6sgSj5MPCA53FvG29m0tfMmX6Ivbyw90FQbL9m_c6RaLGaJlq3A4zJM5X_-rEcXPbOOdyU33XclooWcRPT4ZT_XznJ4su-7W7C2g1qv_AJTeDQ/s256/baixa%20(36).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9SHs4ur4vjWOryhuwkVqUg8yFM-9UFZ91kuV1nQn8nsdi4eKKWrbm-7r7sPd9zo0UPbmSb4gFjEwH6sgSj5MPCA53FvG29m0tfMmX6Ivbyw90FQbL9m_c6RaLGaJlq3A4zJM5X_-rEcXPbOOdyU33XclooWcRPT4ZT_XznJ4su-7W7C2g1qv_AJTeDQ/s1600/baixa%20(36).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Gorila con Tutu bailando ballet&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgijGN4EzOzzpRZnmsgDZEz-IKUylj8HSUeAec69hBrSAUiBZkJhmXYpYVBUTR6xkCRJ95xWyKqagbMLqs_Z1zkmQjrm6Lb7biZkjC--Nz1AW7Q7ipzDzLsaqt7MN46X1h1thB9WbBFYgZLgNnxNVYcVaAi8oK8SD8zRToihQ8J886kdS9bK18TEYyERA/s256/baixa%20(45).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgijGN4EzOzzpRZnmsgDZEz-IKUylj8HSUeAec69hBrSAUiBZkJhmXYpYVBUTR6xkCRJ95xWyKqagbMLqs_Z1zkmQjrm6Lb7biZkjC--Nz1AW7Q7ipzDzLsaqt7MN46X1h1thB9WbBFYgZLgNnxNVYcVaAi8oK8SD8zRToihQ8J886kdS9bK18TEYyERA/s1600/baixa%20(45).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Darth Vader Gorila&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1PpId8Y-LJbkFxxYY8yWM4MnVGRby7YQfRx0da-E21NuS4qcXaQlCNmo_KdLmZLIVUmE0y0txDoYwQKqVWgjGmhsFdyrkOSY-gesMQZTfhiC_KOdQUh4oWMgLTuw0NqLYWTaPT9yqsTZqIuw25YDZR0oycXz12bxtrrcrscvUBUxY7myuUSb4E0bGSw/s256/baixa%20(46).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1PpId8Y-LJbkFxxYY8yWM4MnVGRby7YQfRx0da-E21NuS4qcXaQlCNmo_KdLmZLIVUmE0y0txDoYwQKqVWgjGmhsFdyrkOSY-gesMQZTfhiC_KOdQUh4oWMgLTuw0NqLYWTaPT9yqsTZqIuw25YDZR0oycXz12bxtrrcrscvUBUxY7myuUSb4E0bGSw/s1600/baixa%20(46).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="text-align: center;"&gt;&lt;div&gt;Darth Vader Payaso&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2fRj3ZkLvG38H3IezJGkYwgSU8cs5VkpzZlgb9LbqX_9U7J6cMjC5UZM6-vzOulE4yW7KrQDo7sSoP-hF3ktRY4fTttWMScyd3x09S7K-zpVlYndStDUPAApbezYETSBzpzK5aeSRFZkDJNUECXONHkPmFcXaH25LM4gbWX7Pl_q06MsufrVXipAX9g/s256/baixa%20(47).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2fRj3ZkLvG38H3IezJGkYwgSU8cs5VkpzZlgb9LbqX_9U7J6cMjC5UZM6-vzOulE4yW7KrQDo7sSoP-hF3ktRY4fTttWMScyd3x09S7K-zpVlYndStDUPAApbezYETSBzpzK5aeSRFZkDJNUECXONHkPmFcXaH25LM4gbWX7Pl_q06MsufrVXipAX9g/s1600/baixa%20(47).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Gorila con flotador de flamenco&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Pues si.... los simios, dado su aspecto 'humanoide', dan mucho juego, por lo que veis. Ahora algo impresionante O_O. La mascota de Iron Maiden (Eddie) en versión gorila&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmwxwjyRMJQ66OIvLwKTvZrBM1Ey_PKO_4t9VaRd80yVPgc5d2BMMXyVzjZ6oOe_e3du7Q4csKwYLkBdvhEz-6gYhR46Bkv9hZfsK0XEWWaEYs3e_AjsHfoN7lC6Hd8f9iklmQezuunQxRzvgNxuML3rtYOh8bYJ6M8Z2ub0GhPeg7Vw9q6mwesw2ZGA/s256/baixa%20(39).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmwxwjyRMJQ66OIvLwKTvZrBM1Ey_PKO_4t9VaRd80yVPgc5d2BMMXyVzjZ6oOe_e3du7Q4csKwYLkBdvhEz-6gYhR46Bkv9hZfsK0XEWWaEYs3e_AjsHfoN7lC6Hd8f9iklmQezuunQxRzvgNxuML3rtYOh8bYJ6M8Z2ub0GhPeg7Vw9q6mwesw2ZGA/s1600/baixa%20(39).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZNC_mo1kG6H-Nsj1z3NYTOEcOa2sZzSjAOi8uBUaBiGkAKOQ3Rydjaws-c-sEs0Bt-ktXKiUsZka1z7TXwLxgL4IuB_hoa558UuHaVqvzs8va3F_5BSkafWS36_eQRq9GBmSpW7gZi9uFDkLeQWTqcJ0z4g0VFwXrIHTf9b-5qWbo7P9as-2mei54A/s256/baixa%20(40).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZNC_mo1kG6H-Nsj1z3NYTOEcOa2sZzSjAOi8uBUaBiGkAKOQ3Rydjaws-c-sEs0Bt-ktXKiUsZka1z7TXwLxgL4IuB_hoa558UuHaVqvzs8va3F_5BSkafWS36_eQRq9GBmSpW7gZi9uFDkLeQWTqcJ0z4g0VFwXrIHTf9b-5qWbo7P9as-2mei54A/s1600/baixa%20(40).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOKkfDesMWIYHPrReU738-1J974_yIc4JSBNXfwUHPbMerl95sUEtTh4wE2UjFYMsfhtlhGuS5t15FHPSCywgL_yEqgRhDh9RmsOFz9OvQYsiKAfleoAnaySrzcgICjlTFJTpIjm9ufAfr-rIZsRPASXhupdARFv7RTKqGqSPFNsm6vKT37h4C8kp3tQ/s256/baixa%20(41).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOKkfDesMWIYHPrReU738-1J974_yIc4JSBNXfwUHPbMerl95sUEtTh4wE2UjFYMsfhtlhGuS5t15FHPSCywgL_yEqgRhDh9RmsOFz9OvQYsiKAfleoAnaySrzcgICjlTFJTpIjm9ufAfr-rIZsRPASXhupdARFv7RTKqGqSPFNsm6vKT37h4C8kp3tQ/s1600/baixa%20(41).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdLHtzvOHddrq4hFllKgMiNn_b9uQTvoezvOoCw8HYPhnmvED8bbhA7O7ApeNQa-3solsraQW81UO67OePMQL4cS29O7gHvLlPYGzdJg1kR_8OKmB7S5CFBw44R8IEBOtYtjLRWqgkDFtt7VFrM6FC-FMwQOoSQSqeQGVY8sn0vW_8NqSdFpHQzdRuUg/s256/baixa%20(42).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdLHtzvOHddrq4hFllKgMiNn_b9uQTvoezvOoCw8HYPhnmvED8bbhA7O7ApeNQa-3solsraQW81UO67OePMQL4cS29O7gHvLlPYGzdJg1kR_8OKmB7S5CFBw44R8IEBOtYtjLRWqgkDFtt7VFrM6FC-FMwQOoSQSqeQGVY8sn0vW_8NqSdFpHQzdRuUg/s1600/baixa%20(42).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-2Tob7pvW6Zb407KHwPBsPVDygdUAcrltsf5NozkPxSTOvPWm4Na2i59UsVFijEgnzokzJ_ctH17CChJ-hRGTWx7TK0hVOEMgMJKvYtg6xT3aOconj2Iww-ThsdsE7hyNlYcSHBwPHvCe_v-pbiW5HWrVofER-NO477OiPcwwmEYzhtddohtZpiCLaw/s256/baixa%20(43).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-2Tob7pvW6Zb407KHwPBsPVDygdUAcrltsf5NozkPxSTOvPWm4Na2i59UsVFijEgnzokzJ_ctH17CChJ-hRGTWx7TK0hVOEMgMJKvYtg6xT3aOconj2Iww-ThsdsE7hyNlYcSHBwPHvCe_v-pbiW5HWrVofER-NO477OiPcwwmEYzhtddohtZpiCLaw/s1600/baixa%20(43).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitIZjFnu5ZS5xbFdC_etQCsbVNCVp1EEXUXrZ4DItlhDmI5CEAglyl0q_X7V5QnQlIbLAkapD1_4wFZmQS_Rd9WJZzvv_6q5frm4rETWZN9ntncT8mNwSx5Xas1NIQGDFG2v0FeoN46HENz9RsIhQqsX4jMGepDcnsgEjKUgqjKhneR_v0PZ_MDct5dw/s256/baixa%20(44).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitIZjFnu5ZS5xbFdC_etQCsbVNCVp1EEXUXrZ4DItlhDmI5CEAglyl0q_X7V5QnQlIbLAkapD1_4wFZmQS_Rd9WJZzvv_6q5frm4rETWZN9ntncT8mNwSx5Xas1NIQGDFG2v0FeoN46HENz9RsIhQqsX4jMGepDcnsgEjKUgqjKhneR_v0PZ_MDct5dw/s1600/baixa%20(44).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;y para acabar..... un gran concierto de rock haciendo el mono!!!!!&lt;/div&gt;&lt;div style="text-align: center;"&gt;Fijaos en los reflejos de las luces!!!!&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp6QmLtRuNbAViE7Do1y9TDAsD80HU-6F3XiA4nV6Hl0-0hJU5TbNUbH2pT0-UnOfaqnCiXyYyPhEsEYdKJjAxHjM4_2XJhlRr8vDOM1wxp8pFah9fOnSJHBMZGywixBhp-ololJXtnV5H9LVJXDDI25Ry-nrpmrNj4vBsz5LyWWH4EVy3VPCBpjVQ-Q/s256/baixa%20(23).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp6QmLtRuNbAViE7Do1y9TDAsD80HU-6F3XiA4nV6Hl0-0hJU5TbNUbH2pT0-UnOfaqnCiXyYyPhEsEYdKJjAxHjM4_2XJhlRr8vDOM1wxp8pFah9fOnSJHBMZGywixBhp-ololJXtnV5H9LVJXDDI25Ry-nrpmrNj4vBsz5LyWWH4EVy3VPCBpjVQ-Q/s1600/baixa%20(23).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwAxCjP-fk75GO9FPN1TjIlpoAbU9R017c1GG5vrNIml9Zdhrq26hFXmSC_6lZUIU1192oF0OCQkANyoTQ7hv70Bm51urp5BuL0JcX7WlzOodDpU0WyEQqxuxdKqO3RafCcy3axGh6JgybVi2adC17W4ZTy7NIvslfo4rgMe_dtLK71pCYU2BY4O2MwQ/s256/baixa%20(24).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwAxCjP-fk75GO9FPN1TjIlpoAbU9R017c1GG5vrNIml9Zdhrq26hFXmSC_6lZUIU1192oF0OCQkANyoTQ7hv70Bm51urp5BuL0JcX7WlzOodDpU0WyEQqxuxdKqO3RafCcy3axGh6JgybVi2adC17W4ZTy7NIvslfo4rgMe_dtLK71pCYU2BY4O2MwQ/s1600/baixa%20(24).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht_cpe-CStIavTxMqhFWSgdUZTTcisD9EQuadSYmsYmBdPxCoGJNFp6NFQiy2j0dOddAT4qhMvGPvB_cPQ4TLDEya-FbNlVumfVPKkWbuGj2DGvR8SxG6Ez4ikAE_bEn4FB8fxcQnbInraXukyyGw4nLB4AC5_OuDfnu5iGpUTTxtnmXId6xIU0C-QNw/s256/baixa%20(25).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht_cpe-CStIavTxMqhFWSgdUZTTcisD9EQuadSYmsYmBdPxCoGJNFp6NFQiy2j0dOddAT4qhMvGPvB_cPQ4TLDEya-FbNlVumfVPKkWbuGj2DGvR8SxG6Ez4ikAE_bEn4FB8fxcQnbInraXukyyGw4nLB4AC5_OuDfnu5iGpUTTxtnmXId6xIU0C-QNw/s1600/baixa%20(25).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieaR9hVhEUPfMmJDYwy13opYLfxAzo-q0zm5BgeFFz7expiGq5Z0ibImmeIm4XBOj8vP72bUxmcJbDJIfdxFB6zRKdYS78VhBrirBjtXTrvpx_4SGwyyyzw6eUN8A7LgwsVK2yWILTLiEKc67orejhiqxE5HyVXS711ui5u42XtVBh89J-7RAs1pSWSA/s256/baixa%20(26).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieaR9hVhEUPfMmJDYwy13opYLfxAzo-q0zm5BgeFFz7expiGq5Z0ibImmeIm4XBOj8vP72bUxmcJbDJIfdxFB6zRKdYS78VhBrirBjtXTrvpx_4SGwyyyzw6eUN8A7LgwsVK2yWILTLiEKc67orejhiqxE5HyVXS711ui5u42XtVBh89J-7RAs1pSWSA/s1600/baixa%20(26).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnlYhN6M_7mNoQkexZwhv0YxXcsUnIAI1hA33xnPaW4RxGI89AWhi2B2O8wdJNHClHoMtCA7vbrdyaNNacK0pH3FYagCPNPm4B-y4nrYTil910zkgfPdOUqm8QoNMtNi5onaYC8q0IqC3-cvEd2mrXojA61jjXk7hnec6fLkhmGipWJ6jc1rg4keFv2g/s256/baixa%20(27).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnlYhN6M_7mNoQkexZwhv0YxXcsUnIAI1hA33xnPaW4RxGI89AWhi2B2O8wdJNHClHoMtCA7vbrdyaNNacK0pH3FYagCPNPm4B-y4nrYTil910zkgfPdOUqm8QoNMtNi5onaYC8q0IqC3-cvEd2mrXojA61jjXk7hnec6fLkhmGipWJ6jc1rg4keFv2g/s1600/baixa%20(27).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1knC9l8mDRUcwv033YqPFl5-qq0TWiaD6hBoTOLnw8DFF4aFlAQT4K7bxZmfWZHlXXcDSIisK0Nj3OuarwKyQ0EKaICzpfz-DtSLjtQB-ApetL_h3DCs7nyk7LOU3KritFBlE1UMUdEay93HkVxadCVbnqqCXen8JLwkq6z0vNpJeJLL-BOxAow0ipA/s256/baixa%20(28).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1knC9l8mDRUcwv033YqPFl5-qq0TWiaD6hBoTOLnw8DFF4aFlAQT4K7bxZmfWZHlXXcDSIisK0Nj3OuarwKyQ0EKaICzpfz-DtSLjtQB-ApetL_h3DCs7nyk7LOU3KritFBlE1UMUdEay93HkVxadCVbnqqCXen8JLwkq6z0vNpJeJLL-BOxAow0ipA/s1600/baixa%20(28).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1Wuo0T39z3osSIcopHmBzgWceXP3wbJrpo1aWgzWKTRu0E1FT6eyN7YHOdfxM-3YYWBZdsMmfUC9X2zswvuyCf-C15FFkjttQQ2s1ZUSj2NW27wD3XnTEiVZwnbqTw7ZxdCQ2_lXaQJJKr3ildv4oHGp_XAVeOg5LWVJLQFA4aqamybl1Z9ljj0MQSg/s256/baixa%20(29).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1Wuo0T39z3osSIcopHmBzgWceXP3wbJrpo1aWgzWKTRu0E1FT6eyN7YHOdfxM-3YYWBZdsMmfUC9X2zswvuyCf-C15FFkjttQQ2s1ZUSj2NW27wD3XnTEiVZwnbqTw7ZxdCQ2_lXaQJJKr3ildv4oHGp_XAVeOg5LWVJLQFA4aqamybl1Z9ljj0MQSg/s1600/baixa%20(29).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJiTDi3jZFHOpzZvFgNpc77NCddwDKFQOb6KcX9u6LNutISmRaG6szKyih-SbE-PG_IBa1srs4FBGfcaa73oAwjVxndqX-D5-Jl5bTiZK6ntzBK2_ukchehESfqyI_7vBjsBmUqVp_7LDz26qfvYCcpsRmTLaUZWbP4qKVrEfUQj88WT7YySAFDkLRDQ/s256/baixa%20(30).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJiTDi3jZFHOpzZvFgNpc77NCddwDKFQOb6KcX9u6LNutISmRaG6szKyih-SbE-PG_IBa1srs4FBGfcaa73oAwjVxndqX-D5-Jl5bTiZK6ntzBK2_ukchehESfqyI_7vBjsBmUqVp_7LDz26qfvYCcpsRmTLaUZWbP4qKVrEfUQj88WT7YySAFDkLRDQ/s1600/baixa%20(30).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEFRu7qbi6YJwbmG6CoptjtXaQ4EJpiyTLMu0jMnLf_J3LGvWjFTjoa106K6CPDe04K0qP9ZVlCGjY26K6nwvths62YJoUz_qJyhy5b5P3MtalmvI3ie2dEO__rx_1DqY-reGl65ZkjBwKYx7tHzpUfwy8pEsv2_VfgBuoMPi4zijfJgGyIskX1xZASA/s256/baixa%20(31).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEFRu7qbi6YJwbmG6CoptjtXaQ4EJpiyTLMu0jMnLf_J3LGvWjFTjoa106K6CPDe04K0qP9ZVlCGjY26K6nwvths62YJoUz_qJyhy5b5P3MtalmvI3ie2dEO__rx_1DqY-reGl65ZkjBwKYx7tHzpUfwy8pEsv2_VfgBuoMPi4zijfJgGyIskX1xZASA/s1600/baixa%20(31).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJeKdFHrRK61Lrai0CdacP4bY6I-kTwxFj8ugm7ZnMRS35ZVwHruH5lSO14B37JSY0WCzJsKvP_p5-c08MXPTd5W38xJzyQTXTLoBMsqgsanIKsJV7F-drBgN1-_Tr53zXErRfr18pCmuXq0GfsKX_PkzgjCS3ytFBDouwK90AoK-d9UIYufa07HHvSw/s256/baixa%20(32).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJeKdFHrRK61Lrai0CdacP4bY6I-kTwxFj8ugm7ZnMRS35ZVwHruH5lSO14B37JSY0WCzJsKvP_p5-c08MXPTd5W38xJzyQTXTLoBMsqgsanIKsJV7F-drBgN1-_Tr53zXErRfr18pCmuXq0GfsKX_PkzgjCS3ytFBDouwK90AoK-d9UIYufa07HHvSw/s1600/baixa%20(32).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5XB6GoqLs9IbWd3s6BV654UzAOMvt4XEbNCtiwBqmK2TVt3lwRuxmop6_h4b1gCrg7-IhjYZjBYv_J2dyHhyUOhHIA7PPme4OTjSuk-jYCFKTkrmefWf2bouCui0w5557fFrbNaE_DQTrSmvLdXYtpU0ESY1wo28DYoA6kHj02FgJirWAaNNi4ig1yQ/s256/baixa%20(33).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5XB6GoqLs9IbWd3s6BV654UzAOMvt4XEbNCtiwBqmK2TVt3lwRuxmop6_h4b1gCrg7-IhjYZjBYv_J2dyHhyUOhHIA7PPme4OTjSuk-jYCFKTkrmefWf2bouCui0w5557fFrbNaE_DQTrSmvLdXYtpU0ESY1wo28DYoA6kHj02FgJirWAaNNi4ig1yQ/s1600/baixa%20(33).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6nv_RH1agGrBE0VYYDjrjgdFa9DdOO2x-WHzJ5zAgX6jhIbQVa4csM6MZhc2eRfxYTjqDVVXcETMtfmBt0R-o9VgOUaBUtxbOxRvuTNQ7AB9APLVERXGiNNalFIdVuw1EbgPCY9ySomgnUiZQlkhDOq7XtsUDdowwqcyxU7FvIJ-kutLS1SN4BUy8gw/s256/baixa%20(34).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6nv_RH1agGrBE0VYYDjrjgdFa9DdOO2x-WHzJ5zAgX6jhIbQVa4csM6MZhc2eRfxYTjqDVVXcETMtfmBt0R-o9VgOUaBUtxbOxRvuTNQ7AB9APLVERXGiNNalFIdVuw1EbgPCY9ySomgnUiZQlkhDOq7XtsUDdowwqcyxU7FvIJ-kutLS1SN4BUy8gw/s1600/baixa%20(34).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlB1FrxLGvdfMOl0kHF8mznRtxn-cOUSMnz0lyo_wye-RScv5zKme-Z64mWq5kc7HXEdAMnp6PecWADzmp7ylTigAsRr1MY4m6B_H6o1m0W0kg_a1ndVlaeKTr0EwfpzVuzrCpyF1Ai9VVvjB4cb2DC1XfJ22hdaGemdWBXZV8Qe5L55q0ydUrSCd8uQ/s256/baixa%20(35).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="256" data-original-width="256" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlB1FrxLGvdfMOl0kHF8mznRtxn-cOUSMnz0lyo_wye-RScv5zKme-Z64mWq5kc7HXEdAMnp6PecWADzmp7ylTigAsRr1MY4m6B_H6o1m0W0kg_a1ndVlaeKTr0EwfpzVuzrCpyF1Ai9VVvjB4cb2DC1XfJ22hdaGemdWBXZV8Qe5L55q0ydUrSCd8uQ/s1600/baixa%20(35).png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Y así podríamos seguir.... que lo disfrutéis y os sorprenda tanto como me apasiona a mí!!!!!!!&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9WU_Ih0GT801u_yaqPPg1niwoamjdPRWCD_P-4nXnXxGh-0WXJEm70LBbm63EvjaTHCiMyWCItByzIns1v9EFb5UkU4zF_l-6lJT9lSCLxah1iQ4tKOSDo7atR_Bj1tiRvJAmqjN72_-MRHrC2tTNaTPJDJNrv3bvkDhA2xVAJVa_GnhFIc5oRPcM2w/s72-c/baixa%20(4).png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Predecir el precio de la Luz 2022- 23</title><link>https://rafamartin10.blogspot.com/2022/06/predecir-el-precio-de-la-luz-2022-23.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Fri, 10 Jun 2022 20:33:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-9157067682049025393</guid><description>&lt;p&gt;&amp;nbsp;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEiiHtukZTf9V_N3_GlmhMRRu5Hvo97q9Li9Dyi1Fp7ZTbjWuumWYnzf4bmZYmysFvqr1THrQ4dzYBNbiMJ6GXETuKWMwsyPo3IoqNZK0c46IxwAZoBqe628KstPKZVJQyg8yhAXvSU6CFsTB4XLx-pcqJ5duWFVkkFgukH50N7r_nqeXV4toPctqOm5DA" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="" data-original-height="1320" data-original-width="2261" height="374" src="https://blogger.googleusercontent.com/img/a/AVvXsEiiHtukZTf9V_N3_GlmhMRRu5Hvo97q9Li9Dyi1Fp7ZTbjWuumWYnzf4bmZYmysFvqr1THrQ4dzYBNbiMJ6GXETuKWMwsyPo3IoqNZK0c46IxwAZoBqe628KstPKZVJQyg8yhAXvSU6CFsTB4XLx-pcqJ5duWFVkkFgukH50N7r_nqeXV4toPctqOm5DA=w640-h374" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2 style="text-align: center;"&gt;Modelo de predicción Machine Learning. Predecir el precio de la luz en 2022 y 2023&lt;/h2&gt;&lt;div&gt;Predecir el precio de la luz es muy difícil hoy en día. Debemos tener en cuenta todos los cambios de precio al alza exponenciales de los últimos meses, que nada tiene que ver con la tendencia normal y natural de una serie de datos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El precio de la luz depende del precio del Gas (recordemos que tenemos actualmente varios conflictos abiertos, como Ukraina, Marruecos y Algeria). También depende del coste de las emisiones de Co2 y de la producción en cada día, que dependerá de la energía fabricada mediante fuentes limpias (eólica, hidráulica, solar, ...), o bien de otras fuentes no tan limpias (nuclear, mixto, carbón, ...). Y para controlar el precio, el gobierno tiene pensado usar medidas a modo de descuento en los precios.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;¿Entonces. Cómo podemos asegurar el precio que tendremos? Ya veis que es una tarea complicada, o casi imposible. Y digo casi, porque disponemos de herramientas que nos ayudarán, como la Inteligencia Artificial, que es experta en realizar predicciones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En el &lt;a href="https://finquesfrigola.com" target="_blank"&gt;alquiler de pisos y casas&lt;/a&gt;, cuando debemos realizar cálculos predictivos para saber lo que consumirá un cliente en electricidad durante un año, es importante no alejarse mucho del resultado final. Aquí es donde entran a trabajar las redes neuronales.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Este problema nos lo hemos encontrado en la &lt;a href="https://finquesfrigola.com" target="_blank"&gt;Inmobiliaria Finques Frigola, de Calella de Palafrugell&lt;/a&gt;. Para solucionar estos problemas he realizado un modelo de red neuronal que realiza predicciones del coste de la luz. En este caso nos hemos guiado por los precios de HOLA LUZ, y con la tarifa fija (sin tramos horarios).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para una cosa tan sencilla como decir lo que costará la luz en un período de tiempo, nos hemos encontrado muchísimos problemas.&lt;/div&gt;&lt;div&gt;- Los datos adquiridos de bases oficiales vienen en diferentes formatos. Hemos tenido que unificarlos en un solo formato estándar.&lt;/div&gt;&lt;div&gt;- Faltan años para según qué datasets, así que hemos tenido que empezar a realizar el proceso de ML a partir del primer año de datos que disponíamos de los costes de electricidad, que era a partir del 2014.&lt;/div&gt;&lt;div&gt;- Hay datos que nos vienen en meses y otros en días. Hemos realizado dos datasets diferentes para realizar pruebas en cada uno de ellos y ver las predicciones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El proceso de aprendizaje se ha realizado en una máquina con tan solo 3 Mb. de Memoria, y un procesador Pentium Dual Core del 2009 aproximadamente, con una versión de Ubuntu 22.04 actual, pero debido a que este procesador no utiliza instrucciones AVX necesarias para Tensorflow 2.0, se ha utilizado una versión antigua, la 1.5.0. También hemos utilizado Keras 2.1.4 y la programación se ha llevado a cabo mediante aplicativos desarrollados en PHP y Python 2.7.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tensorflow es un devorador de memoria, por lo que se ha tenido que ampliar la memoria virtual para simular tener más memoria. Por defecto el sistema ofrece 2Gb y se ha ampliado a 8Gb, ya que entre otros modelos de redes neuronales, existen otros procesos de aprendizaje DEEP LEARNING para el reconocimiento de imágenes que explicaré en otra entrada del blog. De todas maneras, el uso de la memoria Swap es puntual.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tarda menos de 5 minutos en aprender aproximadamente los 3.600 registros del dataset, por lo que la máquina funciona de sobras. No son muchos registros que digamos, por lo que el dataset de validación se ha dividido en tan solo un 10% para no tener que desperdiciar tan pocos datos disponibles y muy valiosos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El proceso tiene en cuenta la diferencia del Mean Squared Error y en caso de tener 10 épocas de pérdidas, para antes de llegar al final y evitar el Sobreajuste ó Overfitting. Aproximadamente realizará un total de 100 Épocas. A este modelo no le hace falta más para aprender el mecanismo de cómo funciona el precio de la luz :).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Las primeras pruebas que hicimos fue sobre el dataset mensual, pero teníamos pocos datos que introducir al sistema, así que no aprendía muy bien.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reproducimos el proceso usando el dataset diario. En este caso, añadimos los datos mensuales para cada uno de los días, y así teníamos el mes completo a diario.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En este caso funcionó muy bien. En la imagen superior tenéis el resultado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Veréis que para enero todos los modelos indican una bajada muy acusada, y además, el sistema coincide en los datos previstos para febrero y marzo. Puede ser que la bajada acusada se deba a un 'fallo' en los datos. En principio parece que están correctos y queda pendiente realizar una revisión más profunda, pero para empezar, lo dejaremos así.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He realizado una gráfica con la media de las predicciones. A partir de aquí, rellenaremos cada mes los datos oficiales de Hola Luz y los costes de electricidad para ver si el sistema ha aprendido bien.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ya os iré contando....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEhUyhBhk9GkRGhkxBfVYP6ZuoxizEnZaQdNn9VUHcVCb7-INhXNuv2CelTKeBdXI4fYeegNuSlf0OB08PIwR1mr3Yb1sEL8EUMAabyN7L6nU8-lF1Hb1YBssCzapHhGaocYQ93LOSBDkniFqxPn5xmC0dp4BxTnL-31UWxK8LyQYyM6wFi0tIY6GGTtXw" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" data-original-height="1320" data-original-width="2263" height="374" src="https://blogger.googleusercontent.com/img/a/AVvXsEhUyhBhk9GkRGhkxBfVYP6ZuoxizEnZaQdNn9VUHcVCb7-INhXNuv2CelTKeBdXI4fYeegNuSlf0OB08PIwR1mr3Yb1sEL8EUMAabyN7L6nU8-lF1Hb1YBssCzapHhGaocYQ93LOSBDkniFqxPn5xmC0dp4BxTnL-31UWxK8LyQYyM6wFi0tIY6GGTtXw=w640-h374" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEiiHtukZTf9V_N3_GlmhMRRu5Hvo97q9Li9Dyi1Fp7ZTbjWuumWYnzf4bmZYmysFvqr1THrQ4dzYBNbiMJ6GXETuKWMwsyPo3IoqNZK0c46IxwAZoBqe628KstPKZVJQyg8yhAXvSU6CFsTB4XLx-pcqJ5duWFVkkFgukH50N7r_nqeXV4toPctqOm5DA=s72-w640-h374-c" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Pantalla 46'' Alta luminosidad Digital Signage</title><link>https://rafamartin10.blogspot.com/2022/04/pantalla-46-alta-luminosidad-digital.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Fri, 22 Apr 2022 22:17:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-479348290640414530</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/oXhBkM9CO-k" width="512" youtube-src-id="oXhBkM9CO-k"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;h1 style="text-align: left;"&gt;&amp;nbsp;Pantalla 46'' Alta luminosidad Digital Signage&lt;/h1&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Hoy os presento un software que he desarrollado para Finques Frigola.&lt;/p&gt;&lt;p&gt;Software de reproducción Digital Signage en Pantalla de alto brillo preparada para verse en condiciones de alta iluminación a plena luz del día. 46", 2500CD, FHD, LED BLU, Altavoces, Chasis de metal y uso (24/7).&lt;/p&gt;&lt;p&gt;El software creado a medida admite formatos de imágenes jpg, jpeg, jpe, gif, png, webp, svg, xpm, xbm, gd, gd2, bmp, pdf, tif, tiff, psd, icon, ico, wbmp, así como formatos de vídeo mp4, mpg, ogg, ogv, webm, mov, flv, aiff, mkv y avi, entre otros.&lt;/p&gt;&lt;p&gt;El sistema adapta a la pantalla los formatos de vídeo e imágenes. Permite la reproducción de imágenes en sistema Poster o doble imagen en horizontal.&lt;/p&gt;&lt;p&gt;También permite reproducir los vídeos en tramos de X segundos, a escoger por el administrador.&lt;/p&gt;&lt;p&gt;Se puede configurar la imagen de fondo de los vídeos, así como la duración de transiciones entre imágenes, tanto en formato Póster, como doble imagen horizontal independientemente.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Se puede ver en funcionamiento en&lt;/p&gt;&lt;p&gt;C/ Calau, 6&lt;/p&gt;&lt;p&gt;17210 Calella de Palafrugell (Girona)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://finquesfrigola.com" target="_blank"&gt;https://finquesfrigola.com&lt;/a&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/oXhBkM9CO-k/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Como saber qué carpetas o directorios ocupan más espacio en Linux</title><link>https://rafamartin10.blogspot.com/2022/04/como-saber-que-carpetas-o-directorios.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Thu, 21 Apr 2022 11:56:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-8712923988530086569</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikSVFP7XzEUnrpbeVisayRLqWWtgMGBlXvgYu0jyZ8HShpCWQLIdmfR63qn1utH0CQq_Sshehe4yIfu2fw5DyDNrhdEXLGd-f8Zx0IVAbMkp96MtqaJpKxpM0D7okzZB_IcV7nIqz3I7NvqUu37dNIXxneFUFFyp4EjQ1SEpXGYujTCqwxEM-CO-aIdg/s419/sudo_du.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="92" data-original-width="419" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikSVFP7XzEUnrpbeVisayRLqWWtgMGBlXvgYu0jyZ8HShpCWQLIdmfR63qn1utH0CQq_Sshehe4yIfu2fw5DyDNrhdEXLGd-f8Zx0IVAbMkp96MtqaJpKxpM0D7okzZB_IcV7nIqz3I7NvqUu37dNIXxneFUFFyp4EjQ1SEpXGYujTCqwxEM-CO-aIdg/w640-h140/sudo_du.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Con &lt;b&gt;&lt;i&gt;sudo du -sh * | grep G&lt;/i&gt;&lt;/b&gt; podemos saber las carpetas que ocupan más espacio en disco. En este caso en Gigabites. El comando mirará los directorios a partir del que estemos.&lt;p&gt;&lt;/p&gt;&lt;p&gt;En el ejemplo anterior, hemos ejecutado el comando desde la carpeta /var, y nos indica que la carpeta lib ocupa 2,6Gb y la de logs '/var/log/ ocupa 3Gb. El resto de los directorios, como no llegan a 1Gb, no los muestra.&lt;/p&gt;&lt;p&gt;Con este sencillo comando podemos monitorizar el espacio de nuestro disco para alertarnos en caso de que alguna carpeta ocupe demasiado, o bien para hacer limpieza de los directorios que ocupen más.&lt;/p&gt;&lt;p&gt;Yo lo utilizo en el servidor de la &lt;a href="https://bio-farma.es/" target="_blank"&gt;Parafarmacia&lt;/a&gt;. Tenemos fabricantes con muchísimos artículos, y cada uno de ellos con imágenes en diferentes tamaños y formatos, así que debemos prestar atención a los fabricantes que ocupan más espacio por si hay que realizar alguna actuación sobre ellos. No es lo mismo, por ejemplo, un fabricante como &lt;a href="https://bio-farma.es/fabricante/aquilea_491" target="_blank"&gt;Aquilea&lt;/a&gt;, que tiene 13 artículos, que un laboratorio como &lt;a href="https://bio-farma.es/fabricante/solgar_25" target="_blank"&gt;Solgar&lt;/a&gt; o &lt;a href="https://bio-farma.es/fabricante/pranarom_585" target="_blank"&gt;Pranarom&lt;/a&gt;, que tiene cada uno centenares de artículos.&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikSVFP7XzEUnrpbeVisayRLqWWtgMGBlXvgYu0jyZ8HShpCWQLIdmfR63qn1utH0CQq_Sshehe4yIfu2fw5DyDNrhdEXLGd-f8Zx0IVAbMkp96MtqaJpKxpM0D7okzZB_IcV7nIqz3I7NvqUu37dNIXxneFUFFyp4EjQ1SEpXGYujTCqwxEM-CO-aIdg/s72-w640-h140-c/sudo_du.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Biofarma en Arsys. Ejemplo de rendimiento, seguridad y reputación</title><link>https://rafamartin10.blogspot.com/2022/03/biofarma-en-arsys-ejemplo-de.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Thu, 10 Mar 2022 12:26:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-7050596638046303092</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEi75BMVA2hjVdhUrHMAqNwDXNLAwm35J1gACN6KWH4yh-p9QufiNFkqZh1JVuMGubk6RvnG-0ipDivAyYr5uqHs1kP5ffHp68bhxI9djVqKhxFdHKpUSj0lUjiqKo_sHddWLdbXHRcTaRVGBsIbF5qMtmW4L0balKxFJBBDwlK0i3bqXxSjvjfbG_DTcQ=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEi75BMVA2hjVdhUrHMAqNwDXNLAwm35J1gACN6KWH4yh-p9QufiNFkqZh1JVuMGubk6RvnG-0ipDivAyYr5uqHs1kP5ffHp68bhxI9djVqKhxFdHKpUSj0lUjiqKo_sHddWLdbXHRcTaRVGBsIbF5qMtmW4L0balKxFJBBDwlK0i3bqXxSjvjfbG_DTcQ=w640-h360" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h1 style="text-align: center;"&gt;Bio-farma.es: Un ejemplo&amp;nbsp;de rendimiento, seguridad y reputación&lt;/h1&gt;&lt;div&gt;Hace unos meses lanzamos el &lt;a href="https://bio-farma.es" target="_blank"&gt;proyecto de ecommerce de parafarmacia online&lt;/a&gt;. Hoy Arsys, la compañía de hosting que utilizo desde hace más de 20 años, han publicado un escrito en su &lt;a href="https://www.arsys.es/blog/" target="_blank"&gt;blog&lt;/a&gt;, analizando la capacidad y alto rendimiento de esta web.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Es una satisfacción el poder enseñar los logros tecnológicos después de tanto esfuerzo y recibir estos reconocimientos:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://www.arsys.es/blog/biofarma-hosting-esencial-rendimiento-seguridad-reputacion" target="_blank"&gt;https://www.arsys.es/blog/biofarma-hosting-esencial-rendimiento-seguridad-reputacion&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEi75BMVA2hjVdhUrHMAqNwDXNLAwm35J1gACN6KWH4yh-p9QufiNFkqZh1JVuMGubk6RvnG-0ipDivAyYr5uqHs1kP5ffHp68bhxI9djVqKhxFdHKpUSj0lUjiqKo_sHddWLdbXHRcTaRVGBsIbF5qMtmW4L0balKxFJBBDwlK0i3bqXxSjvjfbG_DTcQ=s72-w640-h360-c" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>La URL de AMP de referencia no es de una página AMP</title><link>https://rafamartin10.blogspot.com/2021/12/la-url-de-amp-de-referencia-no-es-de.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Sat, 11 Dec 2021 18:04:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-7651095765762928005</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEjB8NR995Fi1LXVQPvZ2O7dwQUA336vj84DKMYSulb_dXdSpZaVv4LkPcD5PeqQTGbq8Zh1sJNGUq-0k8WsGQWCYBu3kNezuQ9744Z2YE54nSlA2s-X-gM0v-Kdrpp4W1n-TMFd-pE_D8CMRRMr1CwmB2juavtUa2nx0HeFo5IQqOCmFjb4NlMa8Q94XQ=s844" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="283" data-original-width="844" height="107" src="https://blogger.googleusercontent.com/img/a/AVvXsEjB8NR995Fi1LXVQPvZ2O7dwQUA336vj84DKMYSulb_dXdSpZaVv4LkPcD5PeqQTGbq8Zh1sJNGUq-0k8WsGQWCYBu3kNezuQ9744Z2YE54nSlA2s-X-gM0v-Kdrpp4W1n-TMFd-pE_D8CMRRMr1CwmB2juavtUa2nx0HeFo5IQqOCmFjb4NlMa8Q94XQ=s320" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Preparando las páginas AMP del dominio &lt;a href="http://bio-farma.es" target="_blank"&gt;bio-farma.es&lt;/a&gt;, me encontré con este error, y perdí muchísimas horas buscando la solución.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En Google únicamente tenía de referencia el mensaje que me daba el soporte de google:&amp;nbsp;https://support.google.com/webmasters/answer/7478053?hl=es&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: left;"&gt;Una página canónica incluye como referencia de AMP una página que no es AMP. Consulta cómo debería hacerse referencia a páginas AMP en páginas que no son AMP.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No encontraba nada de nada, pero al final encontré la solución.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lo primero que hay que hacer es ver si Google detecta la página como AMP. Google dijo que sí, así que lo lógico era que en la página canonical apuntara a esta página AMP directamente,.... pero NO. Google dijo que no, todo y que la página de destino era bien reconocida como AMP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La url de test de páginas AMP:&lt;/div&gt;&lt;div&gt;&lt;a href="https://search.google.com/test/amp?utm_source=support.google.com/webmasters/&amp;amp;utm_medium=referral&amp;amp;utm_campaign=%207320015" rel="nofollow" target="_blank"&gt;https://search.google.com/test/amp?utm_source=support.google.com/webmasters/&amp;amp;utm_medium=referral&amp;amp;utm_campaign=%207320015&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Y el sitio del proyecto de páginas AMP:&amp;nbsp;&lt;a href="https://amp.dev/" rel="nofollow" target="_blank"&gt;https://amp.dev/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Existe un par de temas:&lt;/div&gt;&lt;div&gt;1) No utilizar una url tipo https://nombredominio.com/directorio_pagina_amp. Para ir bien, hay que especificar un nombre de fichero (.html, por ejemplo), así que hay que utilizar&amp;nbsp;https://nombredominio.com/pagina_amp.html&lt;/div&gt;&lt;div&gt;2) Para asegurarnos de cumplir con el UTF-8, enviar en el encabezado la codificación UTF-8 por si nuestro servidor utiliza otro tipo de configuración. En PHP el comando es:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;header ('Content-type: text/html; charset=utf-8');&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Con estos dos consejos, Google ya reconocerá nuestra página AMP como tal. El problema es que la url canonical enlazaba a un directorio para optimizar el SEO, y esto no era bien reconocido como Google, así que finalmente se ha utilizado el antiguo tipo de urls con nombre de fichero .html.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Un ejemplo de la página AMP final:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://bio-farma.es/azucar-integral-cana-con-melaza-1-kg_1/amp.html" target="_blank"&gt;https://bio-farma.es/azucar-integral-cana-con-melaza-1-kg_1/amp.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Espero que esta contribución ayude en Google en la respuesta que yo mismo no encontré y ahorre tiempo a otros desarrolladores.&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEjB8NR995Fi1LXVQPvZ2O7dwQUA336vj84DKMYSulb_dXdSpZaVv4LkPcD5PeqQTGbq8Zh1sJNGUq-0k8WsGQWCYBu3kNezuQ9744Z2YE54nSlA2s-X-gM0v-Kdrpp4W1n-TMFd-pE_D8CMRRMr1CwmB2juavtUa2nx0HeFo5IQqOCmFjb4NlMa8Q94XQ=s72-c" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Cuando la tienda online aprovecha la inteligencia artificial. Bio-farma.es</title><link>https://rafamartin10.blogspot.com/2021/12/cuando-la-tienda-online-aprovecha-la.html</link><category>farmacia online</category><category>parafarmacia</category><category>productos bio</category><category>productos eco</category><category>tienda online</category><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Tue, 7 Dec 2021 04:32:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-3803029467952400589</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEh83rrtNT7uFjpThN35FzD_11uSbB02dKLGQCp-Amqo9pfwi7Env3N4C-fHRjHWNMtxF0KR05QZZFBStBxbBCGemNuDHBiEaxolihiKwaTu94tm3-rFegBm-J3-2qpHonpBNFF5dUGzP1loyF6cVZYsruBM5xxuT3zo53u3QqFdpgckXYIAXdjUPypQJA=s730" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="495" data-original-width="730" height="434" src="https://blogger.googleusercontent.com/img/a/AVvXsEh83rrtNT7uFjpThN35FzD_11uSbB02dKLGQCp-Amqo9pfwi7Env3N4C-fHRjHWNMtxF0KR05QZZFBStBxbBCGemNuDHBiEaxolihiKwaTu94tm3-rFegBm-J3-2qpHonpBNFF5dUGzP1loyF6cVZYsruBM5xxuT3zo53u3QqFdpgckXYIAXdjUPypQJA=w640-h434" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="text-align: center;"&gt;Cuando una tienda online de Parafarmacia aprovecha el potencial de los servidores Linux, PHP, MySQL y cómo no, de la Inteligencia Artificial&lt;/h3&gt;&lt;div&gt;Quiero tener una tienda online. Así se presenta normalmente el cliente, entonces vienen las preguntas: ¿Quieres una estándard como Prestashop, Oscommerce,&amp;nbsp;Magento, Woocommerce, o incluso un wordpress o prefieres una tienda a medida?&lt;/div&gt;&lt;div&gt;La gente no sabe qué hacer, pero en la mayoría de los casos se deciden por el precio, no por la capacidad que le pueda ofrecer la tienda online, así que el cliente finalmente se conforma con tener una tienda online y ya está, a esperar que vengan los clientes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mi recomendación, al ser posible, siempre es la misma. Realizar una tienda online a medida, pero no todo el mundo se lo puede permitir.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://bio-farma.es" target="_blank"&gt;bio-farma.es&lt;/a&gt; es un ejemplo de una &lt;a href="https://bio-farma.es" target="_blank"&gt;tienda online especializada en Parafarmacia&lt;/a&gt; que ha sabido aprovechar todo el potencial de las nuevas tecnologías, incluso de la aplicación de la Inteligencia Artificial para su provecho.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El proceso ha sido el siguiente:&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Se ha realizado todo un proceso de importación de más de 25.500 productos, cada uno con su imagen correspondiente o bien documentos adjuntos.&lt;/li&gt;&lt;li&gt;Se ha procedido a traducir 695.634 registros automáticamente mediante la API de Google Translator a 4 idiomas (Español, Catalán, Francés e Inglés). Para realizar este proceso, en Google Translator se han traducido . En total se ha gastado en la API&amp;nbsp;USD176.77 en un total de 207,250 peticiones a la API, lo que ha sido una inversión en traducción enormemente bien invertida. Por cierto. &lt;a href="http://bio-farma.es" target="_blank"&gt;Bio-farma.es&lt;/a&gt; ha dado el permiso para liberar esta &lt;a href="https://github.com/vivesweb/GoogleTrnsltr" target="_blank"&gt;librería de traducción automática de la API de Google Translator en PHP&lt;/a&gt;. La encontraréis aquí:&amp;nbsp;&lt;a href="https://github.com/vivesweb/GoogleTrnsltr" target="_blank"&gt;https://github.com/vivesweb/GoogleTrnsltr&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;El servidor corre en un sistema web basado en PHP 8.0, y la verdad, es que para manejar la cantidad de 25.500 artículos, con sus respectivas descripciones, fotos, etc... va rapidísimo, casi instantáneo.&lt;/li&gt;&lt;li&gt;Se ha procedido a redimensionar adecuadamente imagen por imagen para que el servidor entregue en cada momento el tamaño que más se adecúe a la petición del usuario, además de transformar automáticamente cada imagen en diferentes formatos para que sea compatible con navegadores antiguos y actuales. Este proceso se ha traducido en unas 450.000 redimensiones y cambios de formatos de imágenes.&lt;/li&gt;&lt;li&gt;El sistema se ha preparado para que contacte con los proveedores para actualizar constantemente el stock y precios.&lt;/li&gt;&lt;li&gt;Las bases de datos han sido exhaustivamente testeadas con todas las consultas al servidor para optimizar los índices y conseguir velocidades de vértigo.&lt;/li&gt;&lt;li&gt;Lógicamente se han tenido en cuenta las peticiones de Google para el SEO, como el formato de las imágenes, urls amigables, velocidad de carga de la web, optimización de recursos, etc...&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Si os habéis fijado, tenemos&amp;nbsp;&amp;nbsp;695.634 registros para traducir y únicamente ha realizado 207,250 peticiones a la API de Google Translator. Entonces, ¿cómo se han traducido los registros restantes? La propia aplicación, antes de recurrir a los servicios de la API de Google, revisa si ya se había traducido el texto. En caso afirmativo, reutiliza la anterior traducción interna y en caso contrario, entonces se procede con los servicios de Google Translator. Una optimización para reudcir los costes que ha venido de perlas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La optimización del código para obtener el máximo rendimiento, base de datos, índices de las tablas y demás elementos como tamaño y formato de imágenes y código html es crucial. Cuando uno de los proveedores se puso las manos en la cabeza al saber que íbamos a incluir más de 25.000 artículos, pensando que el sistema se saturaría, no sabía realmente con quien estaba hablando ni lo que estaba a punto de suceder en esta web. Si su sistema va lento, es debido al nivel de programación de su software o base de datos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se han hecho las cosas a nivel de la excelencia, y no es que lo diga yo .... lo dice la página de PageSpeed Insights de Google. Mirad el resultado del test de velocidad de Google PageSpeed Insights teniendo en cuenta la cantidad de datos a filtrar, imágenes y traducciones multiidioma. Todos los datos se generan dinámicamente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Para Ordenador PC:&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEjBA0WpuV-D1L5YeZtQES08goB7hBEAuv711KHEytFMxUaXMCR0pqLG5n18pp2_53RH5Lxr_UkCZTOKqYtp17NIZJL6xyAA7jxYIydlzlLGHH5O-Nf1ocbN0LJLtzj0u4psr1cRmG1M30FCebNZEr-wamVdOZQXPVQZi8-pFusYnHSimz_5WgKpEJcBaA=s1366" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="768" data-original-width="1366" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjBA0WpuV-D1L5YeZtQES08goB7hBEAuv711KHEytFMxUaXMCR0pqLG5n18pp2_53RH5Lxr_UkCZTOKqYtp17NIZJL6xyAA7jxYIydlzlLGHH5O-Nf1ocbN0LJLtzj0u4psr1cRmG1M30FCebNZEr-wamVdOZQXPVQZi8-pFusYnHSimz_5WgKpEJcBaA=w640-h360" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Para teléfonos móviles:&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEj0tgE8UanrAXi8861CkJSapbDRErc3TLYGCW-qCfzD-EwkBgbgLV5K7K9EtYeAQTi9gXZxtQZgMCT9UErN2tAXq5-aNYOuxK7dyq3Eh0OPF8bqYO-oCJ_G78P9Y8qH5Eqs2t742iEkycMAJPyLAPdBMWV2HXH9T1D2vMXHc0ARf-ijos2N2-hQzhiPhg=s1366" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="768" data-original-width="1366" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEj0tgE8UanrAXi8861CkJSapbDRErc3TLYGCW-qCfzD-EwkBgbgLV5K7K9EtYeAQTi9gXZxtQZgMCT9UErN2tAXq5-aNYOuxK7dyq3Eh0OPF8bqYO-oCJ_G78P9Y8qH5Eqs2t742iEkycMAJPyLAPdBMWV2HXH9T1D2vMXHc0ARf-ijos2N2-hQzhiPhg=w640-h360" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Y la URL AMP para teléfonos móviles:&lt;/b&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEivXJKOXJDD-ZSYnHYsXB0iUhv1C2S8iH0h_-A8nR3rhLvwefu756zCb8mip8sBeHMAsIVNp2dmaSV_HdqyQZ4losKvLxWC1kXyffFtl3aeiJpOAWcz7w-w4YwbbL1taKF41tzM4pDo0WltxEVzh5rfUt-HxChKzdewuSODFXIAoinsCEZPvbAfk9q-4g=s1366" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="768" data-original-width="1366" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEivXJKOXJDD-ZSYnHYsXB0iUhv1C2S8iH0h_-A8nR3rhLvwefu756zCb8mip8sBeHMAsIVNp2dmaSV_HdqyQZ4losKvLxWC1kXyffFtl3aeiJpOAWcz7w-w4YwbbL1taKF41tzM4pDo0WltxEVzh5rfUt-HxChKzdewuSODFXIAoinsCEZPvbAfk9q-4g=w640-h360" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;Curiosamente nos ha detectado mejor rendimiento en la versión para móviles que en la propia versión AMP que está más que optimizada para móviles, pero todo y así, tanto la web como el servidor ofrecen un rendimiento espectacular. Hay que decir que el servidor se basa en la última versión de PHP de última generación que es la PHP8.0.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;Hay una nota en la página de PageSpeed Insights que dice lo siguiente:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;&lt;i&gt;Para brindar una buena experiencia de usuario, los sitios deben esforzarse por obtener una buena puntuación (90-100). Una puntuación "perfecta" de 100 es extremadamente difícil de lograr y no se espera. Por ejemplo, tomar una puntuación de 99 a 100 necesita aproximadamente la misma cantidad de mejora métrica que tomaría de 90 a 94.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;Pues bien. Esa puntuación casi imposible de lograr y que no se espera, en esta web existe en casi todas las páginas.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;Mi recomendación es que no se puede crear una tienda online así de la nada, con un sistema 'barato', y esperar que te lo haga todo. Este proyecto ha sido todo un reto, y reto conseguido!!!! El tiempo invertido hasta el momento es de 1 mes aproximadamente en programación y de 1 semana realizando el proceso de importación de datos, traducciones y preparación de ficheros automatizado. Aún queda trabajo por hacer (indexación en los buscadores, carro de la compra, pasarela de pago, conexión con automática para realizar los pedidos a los proveedores, seguimiento de los pedidos, generación de pedidos, albaranes y facturas,....), o sea que, con los resultados obtenidos y comparando con los demás modelos, para poder obtener el resultado óptimo no se puede utilizar una tienda 'barata'. Es más. Una tienda 'barata' necesitaría igualmente de programación para obtener los datos e importar los productos de cada proveedor, teniendo en cuenta que cada proveedor trabaja de una manera diferente y &lt;/span&gt;&lt;a href="http://bio-farma.es" style="text-align: left;" target="_blank"&gt;bio-farma.es&lt;/a&gt;&lt;span style="text-align: left;"&gt; se ha creado para poder trabajar con multiproveedor, sin importar el formato ni la forma en que los proveedores faciliten los datos.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El siguiente paso será finalizar algunos retoques, optimizar aún más el rendimiento, añadir nuevas opciones y otro reto más. Introducir la inteligencia artificial para ofrecer productos realmente interesantes al cliente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora que está ya todo a punto, solo queda un merecido descanso, y a disfrutar de los productos naturales, bio, eco, sin gluten, sin azúcares, ..... vaya, que además hemos ganado en salud con esta &lt;a href="https://bio-farma.es" target="_blank"&gt;parafarmacia online&lt;/a&gt;. ¿Qué más podemos pedir?&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEh83rrtNT7uFjpThN35FzD_11uSbB02dKLGQCp-Amqo9pfwi7Env3N4C-fHRjHWNMtxF0KR05QZZFBStBxbBCGemNuDHBiEaxolihiKwaTu94tm3-rFegBm-J3-2qpHonpBNFF5dUGzP1loyF6cVZYsruBM5xxuT3zo53u3QqFdpgckXYIAXdjUPypQJA=s72-w640-h434-c" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>PHP-libplot: Matplotlib-PyPlot &amp; Numpy en puro PHP</title><link>https://rafamartin10.blogspot.com/2021/10/matplotlib-pyplot-numpy-en-php.html</link><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Sat, 30 Oct 2021 08:34:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-5165863592238015758</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ifFK8iFznd8I_47RMGeGZaxpxX_uF-sN7JDPfEZrINFd_GM0RPWpaAqR9JybMgcgXAU2MIotUJvlSNFVKO92oYivC-t9lNZqcgpdu0RlDwr4_MXRg503V4BBM-QW6NkpF4IfHWiUK_V0/s2048/pairplot.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Matplotlib pyplot en php" border="0" data-original-height="1535" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ifFK8iFznd8I_47RMGeGZaxpxX_uF-sN7JDPfEZrINFd_GM0RPWpaAqR9JybMgcgXAU2MIotUJvlSNFVKO92oYivC-t9lNZqcgpdu0RlDwr4_MXRg503V4BBM-QW6NkpF4IfHWiUK_V0/w640-h480/pairplot.png" title="Matplotlib pyplot en php" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h1 style="text-align: center;"&gt;PHP-libplot: Matplotlib-PyPlot &amp;amp; Numpy en PHP&lt;/h1&gt;&lt;div style="text-align: center;"&gt;&lt;h2&gt;Librería en PHP al estilo de Matplotlib, pyplot &amp;amp; numpy.&lt;/h2&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;a href="https://github.com/vivesweb/php-libplot" target="_blank"&gt;PHP-libplot v.1.0.0&lt;/a&gt;&lt;/b&gt; es una librería escrita en puro &lt;b&gt;PHP&lt;/b&gt; que emula el funcionamiento de &lt;b&gt;Matplotlib&lt;/b&gt; escrita en &lt;b&gt;Python&lt;/b&gt;, consiguiendo un resultado muy parecido, de hecho casi indetectable, al original de &lt;b&gt;Pyplot&lt;/b&gt; y añadiendo funciones matemáticas de &lt;b&gt;Numpy&lt;/b&gt;, muy utilizadas en &lt;b&gt;Machine Learning&lt;/b&gt;, como &lt;b&gt;linspace&lt;/b&gt; o arraypow, pero como digo, utilizando únicamente código PHP, sin necesidad de tener Python instalado en el sistema ya que esta librería es nativa y no utiliza absolutamente nada de código python.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La librería para generar &lt;b&gt;gráficas de barras&lt;/b&gt;, &lt;b&gt;gráficas de líneas&lt;/b&gt;, &lt;b&gt;hacer scatters&lt;/b&gt; u obtener &lt;b&gt;pairplot&lt;/b&gt; es muy utilizada para ver los datos de los datasets en los modelos de Machine Learning, antes de realizar el aprendizaje profundo, ya que hay que modificar los datos antes de empezar el deep learning.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El objetivo de haber escrito esta librería en &lt;b&gt;puro PHP&lt;/b&gt; en lugar de utilizar la que ya hay disponible en Python es la imposibilidad de utilizar este último lenguaje de programación en servidores compartidos web, ya que están muy capados por seguridad. Poder utilizar estas gráficas era condición indispensable para &lt;b&gt;generar gráficas en php&lt;/b&gt; para algunos proyectos de &lt;b&gt;inteligencia artificial&lt;/b&gt;. Pyplot era perfecto, pero imposible de utilizar en mi caso, así que decidí crear una clase que me ofreciera la misma calidad y respetara en todo o posible la línea de esas gráficas para PHP.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Es imposible incluir todas las características de la fantástica Matplotlib por falta de tiempo, así que de momento he creado las características que necesito en este momento, aunque no descarto poco a poco ir ampliando nuevas características a la clase.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Os habéis preguntado cómo se ven los datos del IBEX35? Pues en el ejemplo superior tenéis el resultado. Es un ejemplo real de los datos del IBEX35 hasta hoy.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En esta gráfica de muestra, si os fijáis bien, existen datos que salen del grupo, otros que están a 0, .... Estos datos se llaman outliers y hay que controlarlos. Gracias a este tipo de herramientas podemos detectar estos datos que nos harían destrozar nuestro aprendizaje en la red neuronal y haría que no aprendiera debidamente.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Con estas gráficas también detectaremos datos que no están correctamente estructurados. Si nos fijamos en la última gráfica inferior derecha, veremos que la barra más alta es la primera, y si nos fijamos en las gráficas directamente superiores, detectamos que se refiere a que la mayoría de datos ocupan los valores 0. Esto hay que controlarlo para eliminar los datos o bien transormarlos en características booleanas que se puedan activar o desactivar en caso de que el valor sea 0, ya que estorban en el trabjo de nuestro modelo de dataset y repartir así el peso de los datos por todo el dataset completo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hace unos días publiqué la base de esta clase que realizaba las &lt;b&gt;&lt;a href="https://rafamartin10.blogspot.com/2021/10/graficos-de-barra-graficos-de-ineas.html" target="_blank"&gt;gráficas de barras y de líneas en php&lt;/a&gt;&lt;/b&gt;. Es la clase madre de la &lt;b&gt;&lt;a href="https://github.com/vivesweb/php-libplot" target="_blank"&gt;php-libplot&lt;/a&gt;&lt;/b&gt; que acabo de lanzar y las dos están ligadas y son como aquel que dice, inseparables. Se pueden obtener resultados tan&amp;nbsp; fantásticos y casi imposible de diferenciar de los obtenidos por Pyplot, como estos:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM4W6C-RPqRqFeoglIHa6HA0b27VAq2Ly5BlPV1lO_YYCEB6biGfDAiKHpNgBf9Fv8WuE7B0lVDpRZ8ZzG6NCIX_hFPfCYDcyIJ3nFH_iQSqRvAKzH1bYmrzqlL3zscmBPDRdfCz0sTyiL/s640/sample4.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Matplotlib pyplot en php" border="0" data-original-height="480" data-original-width="640" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM4W6C-RPqRqFeoglIHa6HA0b27VAq2Ly5BlPV1lO_YYCEB6biGfDAiKHpNgBf9Fv8WuE7B0lVDpRZ8ZzG6NCIX_hFPfCYDcyIJ3nFH_iQSqRvAKzH1bYmrzqlL3zscmBPDRdfCz0sTyiL/w640-h480/sample4.png" title="Matplotlib pyplot en php" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdme0nsGkeKadec8yZEpyPrTMUJRtjnBQCCsFa7ldAjqHS3XkHfuMuHW3zDTlu2fkMXepEPqMtqwp6YK0AgmY6Ag7gGQx7fCRzOlT_ODSN9aBN7dILM4QjST2o3ZA-Brk5JBHlEynl7Ke5/s785/multigraph1.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Matplotlib pyplot en php" border="0" data-original-height="785" data-original-width="538" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdme0nsGkeKadec8yZEpyPrTMUJRtjnBQCCsFa7ldAjqHS3XkHfuMuHW3zDTlu2fkMXepEPqMtqwp6YK0AgmY6Ag7gGQx7fCRzOlT_ODSN9aBN7dILM4QjST2o3ZA-Brk5JBHlEynl7Ke5/w438-h640/multigraph1.jpg" title="Matplotlib pyplot en php" width="438" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La clase la podéis descargar desde:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- Github: &lt;a href="https://github.com/vivesweb/php-libplot/" target="_blank"&gt;https://github.com/vivesweb/php-libplot/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;- Phpclasses.org: &lt;a href="https://www.phpclasses.org/package/12270-PHP-Matplotlib-Pyplot-written-in-PHP-Graphs-charts-.html" target="_blank"&gt;https://www.phpclasses.org/package/12270-PHP-Matplotlib-Pyplot-written-in-PHP-Graphs-charts-.html&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ifFK8iFznd8I_47RMGeGZaxpxX_uF-sN7JDPfEZrINFd_GM0RPWpaAqR9JybMgcgXAU2MIotUJvlSNFVKO92oYivC-t9lNZqcgpdu0RlDwr4_MXRg503V4BBM-QW6NkpF4IfHWiUK_V0/s72-w640-h480-c/pairplot.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Graficos de barra, gráficos de líneas, MatPlotLib en PHP</title><link>https://rafamartin10.blogspot.com/2021/10/graficos-de-barra-graficos-de-ineas.html</link><category>estadística</category><category>gráficas</category><category>gráficas de barra</category><category>gráficas de líneas</category><category>gráficos de barra</category><category>matplotlib</category><category>php</category><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Thu, 28 Oct 2021 04:07:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-7651459076541269632</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFUOMr5mU6i0k4nLCodvnr3OpLAa6SDWBH-UvNC-S1T50m40CAhwBjU9iMReAXx9LY7YE9IGqECaM1vH9L_uaLaNzDqGbRKLuuvK2su-rkixtNBSjEbxf_0JwK4XZQGXmg8ar2XlkGTjek/s1280/bigsample2.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Gráficas en PHP al estilo de MatPlotLib" border="0" data-original-height="960" data-original-width="1280" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFUOMr5mU6i0k4nLCodvnr3OpLAa6SDWBH-UvNC-S1T50m40CAhwBjU9iMReAXx9LY7YE9IGqECaM1vH9L_uaLaNzDqGbRKLuuvK2su-rkixtNBSjEbxf_0JwK4XZQGXmg8ar2XlkGTjek/w640-h480/bigsample2.jpg" title="Gráficas en PHP al estilo de MatPlotLib" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h1 style="text-align: center;"&gt;Generar gráficos de barra, gráficos de líneas en php&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-align: center;"&gt;MatPlotLib&lt;/span&gt;&amp;nbsp;es una herramienta fantástica escrita para Python, para generar gráficos cuando realizamos Machine Learning. Nos ayuda muchísimo en el momento de entender nuestros datos antes de introducirlos en nuestras redes neuronales para identificar problemas y modificarlos gracias a esta ayuda visual.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El problema que nos encontramos muchos programadores es que utilizamos servidores compartidos en la nube y no nos dejan mucho margen para instalar apicaciones de terceros, así que, cómo podemos obtener estos resultados o algo muy aproximado utilizando PHP?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La solución es &lt;a href="https://github.com/vivesweb/graph-php" target="_blank"&gt;GRAPH-PHP&lt;/a&gt;. Una herramienta que he desarrollado para generar gráficos al estilo de&amp;nbsp;&lt;span style="text-align: center;"&gt;MatPlotLib&lt;/span&gt;. Aún está en una fase muy primeriza, pero pronto podré ampliar esta herramienta con nuevas características. Todo y así ya se puede utilizar y los resultados son muy buenos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Os presento algún ejemplo que veréis muchas veces en&amp;nbsp;&lt;span style="text-align: center;"&gt;MatPlotLib&lt;/span&gt;, realizados con esta herramienta en puro PHP, sin necesidad de instalar aplicaciones externas.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidVb3-YuDLMgnyRECsjZITKV8378RwH1WrCZXBjSwJhzUzgeM4u-nWiYNSVbodwAq0mWa0sZh8Mm7Dr8t7O6C9k4RA-S0-ESLJULOtscMSq9tsfq4rjAJpuJ0_kA1L1uxYHgzna5ZpMkxX/s640/sample3.png" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="Gráficas en PHP al estilo de MatPlotLib" border="0" data-original-height="480" data-original-width="640" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidVb3-YuDLMgnyRECsjZITKV8378RwH1WrCZXBjSwJhzUzgeM4u-nWiYNSVbodwAq0mWa0sZh8Mm7Dr8t7O6C9k4RA-S0-ESLJULOtscMSq9tsfq4rjAJpuJ0_kA1L1uxYHgzna5ZpMkxX/w640-h480/sample3.png" title="Gráficas en PHP al estilo de MatPlotLib" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSZDj6BZkab0HwAgbTizObq96x5o3K13Hh38YqWD3Dr5b00npgodONHEuc-QQ7wfz3_U08Nha-giJJHKv2KUE6EbXrvO0pHlInP8nQwHLJ1Lf9dFP1z_t9yLx9VYoe8dnOKUF-RPOx1WMz/s640/sample2.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Gráficas de barras en PHP al estilo de MatPlotLib" border="0" data-original-height="480" data-original-width="640" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSZDj6BZkab0HwAgbTizObq96x5o3K13Hh38YqWD3Dr5b00npgodONHEuc-QQ7wfz3_U08Nha-giJJHKv2KUE6EbXrvO0pHlInP8nQwHLJ1Lf9dFP1z_t9yLx9VYoe8dnOKUF-RPOx1WMz/w640-h480/sample2.png" title="Gráficas de barras en PHP al estilo de MatPlotLib" width="640" /&gt;&lt;/a&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbLafoo7AikrVqfK1fE4-J3d4yvslC-M81alN2qSMyAOomQ1a1phtmabJUUDwsQwverQZfMLcsS9lLBV36BOEDgYdYia_dd0a3iR-J39kEfcxKWW1QqNjjlCI6MiaDRhbD5uGEOKGB0lgG/s640/sample4.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Gráficas de líneas en PHP al estilo de MatPlotLib" border="0" data-original-height="480" data-original-width="640" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbLafoo7AikrVqfK1fE4-J3d4yvslC-M81alN2qSMyAOomQ1a1phtmabJUUDwsQwverQZfMLcsS9lLBV36BOEDgYdYia_dd0a3iR-J39kEfcxKWW1QqNjjlCI6MiaDRhbD5uGEOKGB0lgG/w640-h480/sample4.png" title="Gráficas de líneas en PHP al estilo de MatPlotLib" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvGrWr5u8JdMHBc_0olHSzTRY0vW1iBzPVnWkCeHTbHLEO3bHX0QrN1fAdf9pPMyPH_h0p-Lscw5dnvkRLF5rv6UNsNbg1QxI-PVvYMp-ZT1IqE1L97sQ99gIiBWJ2In2mZnvoepJVp652/s785/multigraph1.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Graficas en php" border="0" data-original-height="785" data-original-width="538" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvGrWr5u8JdMHBc_0olHSzTRY0vW1iBzPVnWkCeHTbHLEO3bHX0QrN1fAdf9pPMyPH_h0p-Lscw5dnvkRLF5rv6UNsNbg1QxI-PVvYMp-ZT1IqE1L97sQ99gIiBWJ2In2mZnvoepJVp652/s16000/multigraph1.jpg" title="Graficas en php" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtgwfLyeRXndlEdGcCEuAKEMHmBq8AoB3jB_b9X6U2G1Uw5caDx6iDUpjNogf_dFARNOQSBnu72W-NNakrZfOYlfRC3JoFBeQeOb7EQqT0IspVhKp6mxzDipyyWiocMlAYtX3J1Otqqfp3/s785/multigraph2.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Graficas en php" border="0" data-original-height="785" data-original-width="538" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtgwfLyeRXndlEdGcCEuAKEMHmBq8AoB3jB_b9X6U2G1Uw5caDx6iDUpjNogf_dFARNOQSBnu72W-NNakrZfOYlfRC3JoFBeQeOb7EQqT0IspVhKp6mxzDipyyWiocMlAYtX3J1Otqqfp3/s16000/multigraph2.jpg" title="Graficas en php" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi1smzZJqWejx5VW-s-y7m2H52dPHS_RgcZUdUkRyDfz5HwFyypj3bP_ALVwN9AJ0z8W_uiqJmi6xqA5MDqfdXyUR3tyZsMOY5eGtmoibn_aSv1fPe_TAIjMcxKNxJqvqL5VuD23NrI5lh/s538/multigraph3.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Graficas en php" border="0" data-original-height="256" data-original-width="538" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi1smzZJqWejx5VW-s-y7m2H52dPHS_RgcZUdUkRyDfz5HwFyypj3bP_ALVwN9AJ0z8W_uiqJmi6xqA5MDqfdXyUR3tyZsMOY5eGtmoibn_aSv1fPe_TAIjMcxKNxJqvqL5VuD23NrI5lh/s16000/multigraph3.jpg" title="Graficas en php" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Se asemejan muchísimo a las gráficas realizadas por MatPlotLib, por lo que el objetivo ha sido cumplido con creces. Ya tenemos una primera versión de MatplotLib para PHP.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Esta clase permite dibujar líneas, barras verticales, cambiar el color de las líneas, mostrar leyenda, incuir títulos en los ejes Axis X &amp;amp; Axis Y, dibujar marcas predefinidas en los puntos de intersección, incluir tus propios iconos png como marcas, incluir imagen de fondo e incluso realizar efectos sobre ella, mostrar líneas de guía, rotar los textos del eje Axis X, Realizar un Scratter o también un histograma automáticamente.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Ya véis. Una herramienta útil y versátil.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;La podéis encontrar en:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;- PhpClasses:&amp;nbsp;&lt;a href="https://www.phpclasses.org/package/12268-PHP-graph-bars-histograms-graph-lines-marks.html" target="_blank"&gt;https://www.phpclasses.org/package/12268-PHP-graph-bars-histograms-graph-lines-marks.html&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;- Github:&amp;nbsp;&lt;a href="https://github.com/vivesweb/graph" target="_blank"&gt;https://github.com/vivesweb/graph&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFUOMr5mU6i0k4nLCodvnr3OpLAa6SDWBH-UvNC-S1T50m40CAhwBjU9iMReAXx9LY7YE9IGqECaM1vH9L_uaLaNzDqGbRKLuuvK2su-rkixtNBSjEbxf_0JwK4XZQGXmg8ar2XlkGTjek/s72-w640-h480-c/bigsample2.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Numpy linspace() en php, así como elevar un array con pow()</title><link>https://rafamartin10.blogspot.com/2021/10/numpy-linspace-en-php-asi-como-elevar.html</link><category>array-pow</category><category>linspace</category><category>numpy</category><category>numpy-php</category><category>php</category><category>pypot</category><category>pypot-php</category><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Sat, 9 Oct 2021 22:13:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-2229403526515496249</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge65cNBnLSibdBggGytawQFTgDutZH62sgeV-kWkm2jHQVu2fU3wcNbSATY5x-tCSdlHA7mGR8TW9__2viwMrENRmEjFy3KY1Yw2lKhetZW5BIVPo4oo3aeVls6XooTTXBrEG8cTTT0UTn/s1272/linspace-php.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="numpy linspace en php" border="0" data-original-height="677" data-original-width="1272" height="340" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge65cNBnLSibdBggGytawQFTgDutZH62sgeV-kWkm2jHQVu2fU3wcNbSATY5x-tCSdlHA7mGR8TW9__2viwMrENRmEjFy3KY1Yw2lKhetZW5BIVPo4oo3aeVls6XooTTXBrEG8cTTT0UTn/w640-h340/linspace-php.png" title="numpy linspace en php" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2 style="text-align: center;"&gt;Funciones linspace() o elevar arrays ya disponibles en PHP&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;He liberado una clase en PHP que puede realizar cálculos de potencias en arrays o generar un array ordenado entre dos números con un número de muestras en concreto. Esta última función es la función de numpy linspace().&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Estas funciones se suelen utilizar en Python en el Machine Learning, pero en PHP escasean, así que.... me las he inventado y ahora ya existen &#128513;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Un ejemplo muy claro de su uso sería en el siguiente código:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;&amp;nbsp;// NOTE: The graph library will be published soon. this example is only to see the use of Linspace() &amp;amp; pow()&lt;/code&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;// We assume that $ax in PHP is a graph_object, and create an ext_op_ml object in $m variable&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;// PYTHON PYPLOT&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;x = np.linspace(0, 2, 100)&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;ax.plot(x, x, label='linear')&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;# Plot some data on the axes.&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;ax.plot(x, x**2, label='quadratic')&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;# Plot more data on the axes...&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;ax.plot(x, x**3, label='cubic')&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;# ... and some more.&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;// PHP&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;$m = new ext_op_ml();&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;$x = $m-&amp;gt;linspace( 0, 2, 100 );&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;$ax-&amp;gt;plot( $x, $x, ['label'=&amp;gt;'linear'] );&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;$ax-&amp;gt;plot( $x, $m-&amp;gt;pow($x, 2), ['label'=&amp;gt;'quadratic'] );&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&amp;nbsp;$ax-&amp;gt;plot( $x, $m-&amp;gt;pow($x, 3), ['label'=&amp;gt;'cubic'] );&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como vemos, el código queda muy parecido, así que la intención es ir añadiendo las funciones que normalmente se utilitzan en Python e implementarlas en PHP. De esta manera, los ejemplos serán muy fáciles de traducir a medida que vaya publicando nuevas cases encaradas al Machine Learning, y es una manera muy fácil de aprender en PHP con ejemplos muy parecidos en Python.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Que por qué inventar una cosa que ya está inventada? No es inventar, es adaptar a mis necesidades, ya que suelo trabajar con PHP y una de las cosas muy útiles que tiene es poder utilizar estas mismas librerías en servidores públicos y en producción que suelen ser servidores web. En la mayoría de ocasiones, por seguridad, es imposible instalar los paquetes necesarios de python, y no te queda otra que trabajar direcamente en PHP, así que.... a continuar adaptando código se ha dicho.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En la versión primitiva ya podemos utilizar los siguientes métodos:&lt;/div&gt;&lt;div&gt;- linspace( $start, $end, $numsamples = null );&lt;/div&gt;&lt;div&gt;- pow( $values, $exp = 2 );&lt;/div&gt;&lt;div&gt;-&amp;nbsp;str_len_ttf( $text, $font_path, $font_size, $angle = 0 );&lt;/div&gt;&lt;div&gt;-&amp;nbsp;inch_2_pixels( $size_inch, $dpis = 72 );&lt;/div&gt;&lt;div&gt;-&amp;nbsp;hex2rgb( $hex_color );&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La librería la podéis descargar desde:&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;a href="https://www.phpclasses.org/package/12245-PHP-Extended-math-functions-on-php.html" target="_blank"&gt;https://www.phpclasses.org/package/12245-PHP-Extended-math-functions-on-php.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;-&lt;a href="https://github.com/vivesweb/ext_op_ml" target="_blank"&gt;&amp;nbsp;https://github.com/vivesweb/ext_op_ml&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge65cNBnLSibdBggGytawQFTgDutZH62sgeV-kWkm2jHQVu2fU3wcNbSATY5x-tCSdlHA7mGR8TW9__2viwMrENRmEjFy3KY1Yw2lKhetZW5BIVPo4oo3aeVls6XooTTXBrEG8cTTT0UTn/s72-w640-h340-c/linspace-php.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Leer Temperatura CPU, memoria, carga de sistema en PHP</title><link>https://rafamartin10.blogspot.com/2021/10/leer-temperatura-cpu-memoria-carga-de.html</link><category>control temperatura cpu</category><category>linux</category><category>php</category><category>temperatura cpu</category><category>uptime</category><category>uso de cpu</category><category>uso de disco</category><category>uso de memoria</category><author>noreply@blogger.com (Rafael Martín)</author><pubDate>Thu, 7 Oct 2021 21:56:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2089433008833654771.post-6623762774662673043</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDNjyAp2WwhRRnaik0-Wc1d9I7EN5gzjG_WOwbargzP-3vlSA7vT7skjwlgixglwX05tb6u9vhpWu8xf19cltox7k-JGsMuop0JIQ6XBLxcCAS8nAnLhYTmiIomF93RepLYbS-FMcHxv6-/s661/htop.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Capturar la temperatura de la cpu, carga de sistema en PHP" border="0" data-original-height="418" data-original-width="661" height="404" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDNjyAp2WwhRRnaik0-Wc1d9I7EN5gzjG_WOwbargzP-3vlSA7vT7skjwlgixglwX05tb6u9vhpWu8xf19cltox7k-JGsMuop0JIQ6XBLxcCAS8nAnLhYTmiIomF93RepLYbS-FMcHxv6-/w640-h404/htop.png" title="Capturar la temperatura de la cpu, carga de sistema en PHP" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2 style="text-align: center;"&gt;Como leer la temperatura de la CPU/GPU, Carga de sistema, Uso de memoria, uso de disco, .... desde PHP&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;A veces nos encontramos con la necesidad de conocer estos parámetros, como por ejemplo cuando estamos ejecutando nuestros backpropagations en procesos de Machine Learning. Estos procesos consumen tanta CPU o GPU que el sistema se sobrecalienta, y es imprescindible conocer en todo momento la temperatura de la CPU para no provocar un desastre. Por ejemplo. Qué pasa cuando no se controla la temperatura y se deja que el proceso siga su curso hasta poner al rojo vivo la CPU? pues que al llegar a los 100ºC&lt;span style="color: red; font-size: medium;"&gt;&lt;b&gt;&#127777;&lt;/b&gt;&lt;/span&gt; el sistema se para bruscamente.... y os lo digo por experiencia &#128517;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Creé esta clase para ayudarme en los procesos de Machine Learning en PHP, pero decidí liberarla porque la verdad es que hace muchísimas cosas más, como conocer el uso de la memoria, del disco, estado de carga de la CPU, uptime, versión del sistema, saber el número de cpu's, ...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Esta clase se puede utilizar para realizar tareas de monitorización del sistema, tanto Windows como GNU/Linux.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hay que tener en cuenta que su uso es aconsejado en entornos CLI, ya que por tema de permisos, muchas de las funciones quedarán capadas en el usuario del servidor (como por ejemplo en entornos de servidores web). En entornos virtuales, según he probado, tampoco funcionan correctamente para leer la temperatura de la CPU, pero si que funciona perfectamente para saber qué número de procesadores tiene el servidor en el que estamos ejecutando el script.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La podéis descargar desde&amp;nbsp;&lt;a href="https://github.com/vivesweb/system-resources" target="_blank"&gt;https://github.com/vivesweb/system-resources&lt;/a&gt; o bien desde&amp;nbsp;&lt;a href="https://www.phpclasses.org/package/12157-PHP-Get-values-of-the-current-computer-devices.html" target="_blank"&gt;https://www.phpclasses.org/package/12157-PHP-Get-values-of-the-current-computer-devices.html&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDNjyAp2WwhRRnaik0-Wc1d9I7EN5gzjG_WOwbargzP-3vlSA7vT7skjwlgixglwX05tb6u9vhpWu8xf19cltox7k-JGsMuop0JIQ6XBLxcCAS8nAnLhYTmiIomF93RepLYbS-FMcHxv6-/s72-w640-h404-c/htop.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>