tag:blogger.com,1999:blog-25703883714323614732024-03-13T04:04:07.802-06:00Mis proyectosSoy programador de sistemas, la finalidad de este blog es dar a conocer mis proyectos y espero con ello poder aportar mi "granito de arena", para así ayudar a otros tal y como me han ayudado a mi.J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.comBlogger190125tag:blogger.com,1999:blog-2570388371432361473.post-37727805875723869052024-01-02T16:39:00.001-06:002024-01-02T16:48:30.099-06:00Ship24 Go: Envíos rápidos en Italia, España, República Dominicana y en todo el mundo<p style="text-align: justify;"><img alt="Logo Ship24go" border="0" src="https://busquedaweb.com/blogger/proyectos/paqueteria/logo2.png" style="float: left; padding-bottom: 10px; padding-right: 10px; vertical-align: text-top;" width="105" /> En un mundo tan
competitivo es primordial contar con un sistema de entrega de paquetería rápido
y confiable, ¿no es verdad?. Es probable que muchos de nosotros en alguna
ocasión hayamos atravesado por la situación de no poder enviar un paquete tan
rápido como sea posible, o que, si lo enviamos no llega o no sabemos qué pasó
con nuestro encargo y peor aún, que la paquetería no se haga responsable por la
demora. Todo un caos sin dudas.</p><a name='more'></a>
<p class="MsoNormal" style="text-align: justify;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://busquedaweb.com/blogger/proyectos/paqueteria/logo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="679" data-original-width="800" height="524" src="https://busquedaweb.com/blogger/proyectos/paqueteria/logo.png" width="618" /></a></div><p></p><p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"> </span>Eso no sucede con <b style="mso-bidi-font-weight: normal;">Ship24go</b> , en este mundo interconectado
de hoy los envíos internacionales son cruciales y todo está en juego; no
queremos que nuestros envíos no lleguen a tiempo a su destino.<span style="mso-spacerun: yes;"> </span>Los invito a conocer esta innovadora plataforma
que va más allá de ser solo un comparador de envíos, sino que puede llegar a
ser parte de la solución integral de sus empresas.</p>
<p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"> </span>Para ello
ingresaremos a la web de <b style="mso-bidi-font-weight: normal;"><a href="https://ship24go.com/register?code=7JIAXN">Ship24go</a></b> (debemos
registrarnos para poder utilizar sus servicios, hacer clic en el enlace que
refiero), registraremos a nuestros remitentes y destinatarios para poder crear
un pedido, ejemplo de ello:</p><p class="MsoNormal" style="text-align: justify;"><o:p></o:p></p><div class="separator" style="clear: both; text-align: left;"><a href="https://busquedaweb.com/blogger/proyectos/paqueteria/register.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="416" data-original-width="800" height="325" src="https://busquedaweb.com/blogger/proyectos/paqueteria/register.jpg" width="625" /></a></div><br /><div class="separator" style="clear: both; text-align: left;"><a href="https://busquedaweb.com/blogger/proyectos/paqueteria/sender.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="152" data-original-width="800" height="140" src="https://busquedaweb.com/blogger/proyectos/paqueteria/sender.png" width="638" /></a></div><br /><p></p>
<p class="MsoNormal" style="text-align: justify;"><o:p> </o:p><span style="mso-spacerun: yes;"> </span>Una vez tengamos los
remitentes y destinatarios listos iremos a la parte superior de nuestra web y
presionaremos el botón <i style="mso-bidi-font-style: normal;">“Crear envío”</i>
para proceder a llenar el formulario de envío.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://busquedaweb.com/blogger/proyectos/paqueteria/cotizar.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="735" height="476" src="https://busquedaweb.com/blogger/proyectos/paqueteria/cotizar.jpg" width="653" /></a></div><br /><p class="MsoNormal" style="text-align: justify;"><br /></p>
<p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"> </span><br><br><br><br><br><br><br><br><br><br><br>El procedimiento es
bastante simple, solo debemos seleccionar al remitente, destinatario, llenar
todos los campos para especificar la dirección de origen y destino y agregar
las medidas y peso de nuestro paquete. Posteriormente a nuestra derecha nos
aparecerán los datos del envío, haremos clic en el botón <i>“Continuar”</i> para
generar nuestra cotización con las diferentes paqueterías disponibles y<i><b> “¡¡¡LISTO!!!”</b></i>,
ya solo tenemos que seleccionar la que gustemos y completar el proceso para hacer
uso de dicha paquetería al mejor precio posible.</p>
<h2 style="text-align: justify;">Beneficios de usar Ship24go:</h2>
<p class="MsoNormal" style="text-align: justify;"><b style="mso-bidi-font-weight: normal;"><u>* Comparador y
Courier en Uno:</u></b> Ship24go redefine la experiencia de envíos
internacionales al fusionar la funcionalidad de un comparador con la eficiencia
de un servicio de Courier y de esa manera agilizar el sistema cotizaciones.</p>
<p class="MsoNormal" style="text-align: justify;"><b style="mso-bidi-font-weight: normal;"><u>* Recogida y
Entrega Global:</u></b> Funcionando en 120 países, conectando continentes y
haciendo que tus envíos lleguen a destinos remotos sin complicaciones.<o:p></o:p></p>
<p class="MsoNormal" style="text-align: justify;"><b style="mso-bidi-font-weight: normal;"><u>* Ahorro y
Eficiencia:</u></b> ¿Buscando la mejor oferta en envíos internacionales? Con Ship24go
tiene todo eso a la mano, además en Ship24go nos preocupamos por el planeta;
por lo que la sostenibilidad se refleja en cada envío.<o:p></o:p></p>
<p class="MsoNormal" style="text-align: justify;"><b style="mso-bidi-font-weight: normal;"><u>* Experiencia del
Cliente sin Precedentes:</u></b> Desde la recogida hasta la entrega el
compromiso de Ship24go es la satisfacción del cliente. Un equipo de atención al
cliente siempre disponible para brindar asistencia y garantizando una
experiencia sin contratiempos.</p>
<p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"> </span>Finalmente Ship24go
pone a su servicio su asistencia dentro de la web con un chat con un ejecutivo,
así como su atención vía <a href="https://www.facebook.com/ship24go">Facebook</a>
para cualquier duda e inquietud.</p>
<h2 style="text-align: justify;">Conclusiones:</h2><h2 style="text-align: justify;"><o:p></o:p></h2>
<p class="MsoNormal" style="text-align: justify;"><span style="mso-spacerun: yes;"> </span>Hoy en día ya no hay
excusas para no poder enviar un paquete de manera rápida y confiable de una
ciudad a otra, dentro del mismo país e incluso internacionalmente. Pero claro,
hay que hacerlo con un servicio confiable y Ship24go se compromete a ser ese
servicio que usted tanto necesita para que sus paquetes lleguen siempre en
tiempo y forma. Visite nuestro servicio.</p>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-84397295048716162002024-01-02T13:33:00.000-06:002024-01-02T13:33:25.610-06:00Documentales informática - la llegada la inteligencia artificial<div style="text-align: justify;">
<img alt="Inteligencia artificial" border="0" src="https://busquedaweb.com/blogger/proyectos/ia.jpg" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="91" /> Hola todos, espero se encuentren muy bien, concluimos esta serie de artículos repasando un poco la historia de la informática con la llegada de la inteligencia artificial para uso cotidiano. Sean bienvenidos a este artículo.<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br /> La inteligencia artificial comenzó a dar sus primeros pasos a mediados de los años 50's del siglo pasado gracias a los aportes de <a href="https://es.wikipedia.org/wiki/Alan_Turing" target="_blank">Alan Turin</a> en este campo (<a href="https://marjuanm.blogspot.com/2019/09/documentales-informatica-dos-pioneros.html">tenemos un artículo al respecto</a> en este blog), conforme fueron pasando los años y las computadoras fueron teniendo mayores capacidades la inteligencia artificial (IA) fue adquiriendo mayores capacidades.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> En el 2023 la IA explotó con la llegada de <a href="https://es.wikipedia.org/wiki/ChatGPT" target="_blank">ChatGPT</a> y otras inteligencias artificiales conversacionales donde, podemos preguntar lo que gustemos y estas nos responden en un instante con un modelo de lenguaje muy parecido al humano, toda una revolución sin lugar a dudas.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> Dejo un ustedes un interesante documental relacionado al desarrollo de la IA junto a un artículo de <a href="https://es.wikipedia.org/wiki/Historia_de_la_inteligencia_artificial" target="_blank">Wikipedia</a> que les invito a considerar.</div><div style="text-align: justify;"><br />
<table>
<tbody>
<tr>
<td valign="top"><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/kmLf9KJwpYA?si=sZUtsHHW4asOyrne" title="YouTube video player" width="560"></iframe></td></tr></tbody></table>
INI: Inteligencia Artificial - Documental en español | <a href="http://www.youtube.com/" target="_blank">Youtube</a>
<br /><br /></div><div style="text-align: justify;"> Claro, no todo es perfección, la IA implica grandes retos en todos los aspectos, pero hablaremos de ello en un próximo artículo.
<div style="text-align: justify;">
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;"><b style="background-color: transparent; text-align: justify;">Logotipos redes sociales cortesía de <a href="https://pixabay.com/es/illustrations/inteligencia-artificial-cerebro-3382507/" target="_blank">Pixabay</a>.</b><br />
<b style="background-color: transparent; text-align: justify;"><br /></b>
<b style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube, solo es con fines informativos </b><br />
<b style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
</div>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-67242625048533611202024-01-01T23:03:00.001-06:002024-01-01T23:03:59.975-06:00Documentales informática - ascenso de las redes sociales<div style="text-align: justify;">
<img alt="Redes sociales" border="0" src="https://busquedaweb.com/blogger/proyectos/redes.jpg" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="91" /> Hola todos, espero se encuentren con bien, como comentaba <a href="https://marjuanm.blogspot.com/2024/01/he-vuelto.html">en un post anterior</a> estamos buscando retomar este blog y no se pierda el avance conseguido a lo largo de varios años<b>. </b>Hemos estado conversando sobre <a href="https://marjuanm.blogspot.com/2019/07/documentales-informatica-como-ibm.html">como Microsoft llegó a ser</a> una muy importante empresa en el sector informático y como con el tiempo se desató la <a href="https://marjuanm.blogspot.com/2020/09/documentales-informatica-la-guerra-de.html">"guerra de los navegadores web"</a> a causa de la feroz competencia entre estas empresas, en esta ocasión veremos con la llegada de nuevos competidores y nuevas tendencias cambió el panorama del Internet para siempre.<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br /> Para los que conocimos Internet a finales de los años 90's nos tocó una transición que tal vez no fue tan sencilla de asimilar al principio; estaba en lo personal acostumbrado a comunicarme con mis amigos usando el correo electrónico y posteriormente asimilar la llegada de los programas de mensajería electrónica tales como el <a href="https://es.wikipedia.org/wiki/MSN_Messenger" target="_blank">MSN Messenger</a> y otros. <b>Me encantaban los foros de discusión</b> y era participante muy activo en varios de ellos, pero hoy en día están prácticamente muertos en favor de las redes sociales, <i>"¿y qué son las redes sociales y porqué se volvieron tan populares en tan poco tiempo?"</i>.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> Para ello les comparto un interesante video encontrado en Youtube que habla de la historia de las redes sociales que espero sea de su completo agrado.</div><div style="text-align: justify;"><br />
<table>
<tbody>
<tr>
<td valign="top"><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/nLfhUR7fpjk?si=MDkuv06gB3R3jCTD" title="YouTube video player" width="560"></iframe></td></tr></tbody></table>
LAS REDES SOCIALES - Historia de una Tecnologia que Cambio el Mundo | <a href="http://www.youtube.com/" target="_blank">Youtube</a>
<br /><br /></div><div style="text-align: justify;"> Recuerdo que el ascenso de eta nueva tecnología fue meteórico y redes sociales vinieron y se fueron con los años para quedar al final Facebook y Twitter (ahora X) como grandes ganadores.
<div style="text-align: justify;">
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;"><b style="background-color: transparent; text-align: justify;">Logotipos redes sociales cortesía de <a href="https://ar.pinterest.com/pin/758364024747033501/" target="_blank">Pinterest</a>.</b><br />
<b style="background-color: transparent; text-align: justify;"><br /></b>
<b style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube, solo es con fines informativos </b><br />
<b style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
</div>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-64819779873766955312024-01-01T22:04:00.002-06:002024-01-01T22:20:48.933-06:00He vuelto!!!!!<img alt="He vuelto" border="0" src="https://busquedaweb.com/blogger/proyectos/hevuelto.jpg" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="120" /> Hola que tal a todos, pues después de 3 años estamos de regreso, <i>"¿Y eso porqué?, ¿ha había muerto o qué?"</i>. Pues no, lo que pasa es que me he visto rebasado en todos los aspectos, además de problemas, mucho trabajo, más problemas y otras tantas cosas, pero bueno, ya estamos aquí de nuevo.<div><br />
<a name='more'></a>
<div style="background-color: #003466; height: 2px; width: 100%;"></div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div><div><br /></div><h3 style="text-align: left;">
Bueno, ¿y que voy a hacer ahora?</h3></div><div> Básicamente continuar donde me he quedado, tengo un montón de proyectos en los que estoy trabajando que iré comentando poco a poco en este blog y me gustaría los visitaran y me apoyaran, voy a reconstruir buena parte de este blog porque muchos recursos estaban montados en un servidor gratuito y no es buena idea, ahora tengo un hosting propio desde donde voy a enlazar todo.</div><div><br /></div><div> También como mencioné voy a dar continuidad a este blog después de las <i>"vacaciones forzadas"</i> y esperamos volver a ponernos al corriente con todo.</div><div><br /></div><div>Muchas gracias por su apoyo y estamos de regreso esperando nos vaya bien de nuevo.</div><div><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://busquedaweb.com/blogger/proyectos/hevuelto.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="295" data-original-width="720" height="221" src="https://busquedaweb.com/blogger/proyectos/hevuelto.jpg" width="541" /></a></div><br /><div><br /></div><div><br /></div>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-14413202414242223782020-10-24T00:35:00.006-05:002024-01-01T22:06:59.458-06:00Navegadores web más populares entre 1993 - 2020<div style="text-align: justify;">
<img alt="Guerra de navegadores" border="0" src="https://busquedaweb.com/blogger/proyectos/ievsns.jpg" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="120" /> Algunas semanas atrás publiqué <a href="http://marjuanm.blogspot.com/2020/09/documentales-informatica-la-guerra-de.html">un par de vídeos en este blog hablando de la Guerra de los navegadores</a>, <i>un episodio de la informática que se caracterizó por una feroz competencia entre Internet Explorer de Microsoft y Netscape de Netscape Comunications.</i> Si no han visto el vídeo por favor véanlo previamente; <i>hoy les comparto otro vídeo pero este es una estadística del uso de los navegadores web durante los años 1993 al 2020</i> lo que nos muestra gráficamente el resultado de las dos guerras de los navegadores antes mencionadas.<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br /> Agradezco antes que nada al canal <a href="https://www.youtube.com/c/CaptainGizmo" target="_blank">Captain Gizmo</a> en Youtube por compartir este interesante vídeo, como mencioné hace un momento en este vídeo podemos ver la evolución en el uso de los navegadores durante 27años. En un principio reinaba Netscape y como al final, en nuestro año en curso ahora es Chrome quien tiene ese trono.</div><div style="text-align: justify;"></div>
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/W4wWdmfOibY" width="560"></iframe>
</td>
</tr>
<tr>
<td valign="top">Most Popular Web Browsers 1993 - 2020 | <a href="http://www.youtube.com/" target="_blank">Youtube</a>
</td>
</tr>
</tbody></table>
<br />
<div style="text-align: justify;"> ¿Cambiará en algún momento la situación, es decir que venga otro navegador y ocupe su lugar?, no sabemos, todo puede pasar. Sin embargo se ve difícil que eso suceda, habrá que esperar para verlo.</div><div style="text-align: justify;"><br /></div>
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" style="background-color: #1c1c21;" valign="middle"><div ne="0.6927644652020428" style="color: #bfbfbf; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;"><b ne="0.9737140065735441" style="background-color: transparent; text-align: justify;">Internet Explorer vs Netscape, cortesía de <a href="https://nigelbaker.name/?m=20181201" target="_blank">https://nigelbaker.name/?m=20181201</a>.</b><br />
<b ne="0.8551786584049148" style="background-color: transparent; text-align: justify;"><br /></b>
<b ne="0.5213337721645497" style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube, solo es con fines informativos </b><br />
<b ne="0.4743012371204569" style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<div><br /></div>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com2tag:blogger.com,1999:blog-2570388371432361473.post-71604078442544402872020-09-07T17:58:00.001-05:002024-01-01T22:17:57.817-06:00Documentales informática - La guerra de los navegadores<div style="text-align: justify;">
<img alt="Guerra de navegadores" border="0" src="https://busquedaweb.com/blogger/proyectos/vs.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="120" /> Durante los años 90's los que ya somos veteranos en el uso del Internet fuimos testigos de la llamada <b>"Guerra de navegadores"</b>, ¿Pero en que consistió esta peculiar <i>"guerra"</i>?, <i>¿quién ganó?, ¿nosotros como espectadores ganamos o perdimos algo?</i>. Los invito a continuar la lectura de este artículo para dar respuesta a estas preguntas.<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br /> <i>La guerra de los navegadores fue un episodio en la historia de la informática, concretamente en el área de los navegadores web.</i> Hasta hacía unos años atrás Internet era terreno solo para unas pocas entidades pero la situación cambió hacia mediados de los años 90's.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> <b>En un principio Microsoft no vio interés en el naciente Internet</b>, había fracasado estrepitosamente pocos años atrás recreando un modelo similar, así que, en un principio Microsoft quedaba fuera de este modelo de negocio.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> Tarde ya reconocieron su error y a toda prisa compraron un navegador web y lo rebautizaron como Internet Explorer para competir principalmente con Netscape Navigator, el navegador web líder del momento.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> <i>Para acaparar todo el mercado posible Microsoft recurrió a prácticas cuestionables</i> (como por ejemplo integrar su navegador web en el sistema operativo para que el usuario final no tuviera que instalar el navegador de la competencia, entre otras) que pronto pusieron en jaque a Netscape desatándose <i>dicha guerra que consistió en una feroz competencia: Microsoft tratando de quitarle el mercado a Netscape y Netscape tratando de reconquistar el mercado que su contrincante le arrebataba.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> <i><b>El ganador obvio fue Microsoft con su Internet Explorer</b>, pero la guerra no terminó ahí</i>, solo hubo un recuperar energías por unos cuantos años dando lugar a la segunda guerra de los navegadores.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> El frente fue el mismo pero en diferentes condiciones, <i>Microsoft dormido en sus laureles reaccionó tarde al crecimiento de Firefox (derivado del difunto Netscape) y posteriormente a la llegada de Chrome y una larga estela de otros navegadores menores basados en Chrome.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> <b>Demasiados contrincantes en esta ocasión y Microsoft ya no pudo con tantos a la vez siendo derrotado y resultando como gran vencedor Google Chrome.</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> Dejo con ustedes un par de documentales que nos narran la historia de este singular episodio dentro de la informática.</div><div style="text-align: justify;">
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/m2SyYv0iOQU" width="560"></iframe>
</td>
</tr>
<tr>
<td valign="top">Guerra de los Navegadores - Fase 1 | <a href="http://www.youtube.com/" target="_blank">Youtube</a>
</td>
</tr>
</tbody></table>
<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/pBCnW95zLy8" width="560"></iframe>
</td>
</tr>
<tr>
<td valign="top">Guerra de los Navegadores - Fase 2 | <a href="http://www.youtube.com/" target="_blank">Youtube</a><br /><br />
</td>
</tr>
</tbody></table><h3>Resultado de la guerra de los navegadores</h3></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> <i>En la primer fase de esta guerra el gran ganador fue Microsoft llevando a la extinción de Netscape</i>, no sin sufrir bajas considerables como por ejemplo tener que ir a los tribunales y enfrentarse a diversas investigaciones por prácticas monopólicas.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> Aunque Netscape <i>"murió"</i> volvió a vivir en la forma de Firefox, quien luego de varios años de crecimiento obligó a Microsoft a salir de su sueño mejorando a su navegador si quería mantenerse en el terreno.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> <i>Para la segunda fase Microft se ve enfrentado por todas partes y ya no puede hacer frente a todos sus competidores, Google con su Chrome se erige como gran ganador hasta nuestros días.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> Hubo empresas que ganaron y perdieron, <i>nosotros como espectadores "ganamos" en el sentido que ahora tenemos más opciones para navegar por la red,</i> si un navegador web no nos convence ahora tenemos un amplio abanico para elegir. <i>Pero hace 20 años atrás no era así: o usabas Internet Explorer o usabas Netscape navigator</i> y cabe aclarar que no todas las webs se veían bien con los mismos navegadores.</div><div style="text-align: justify;"><br /></div>
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;"><b style="background-color: transparent; text-align: justify;">Memes por la muerte de Internet Explorer, Derechos reservados de <a href="https://peru.com/epic/tecnologia/internet-explorer-mira-memes-muerte-navegador-noticia-433052-1358298" target="_blank">Peru.com</a> </b><br />
<b style="background-color: transparent; text-align: justify;">Usada únicamente con fines informativos.</b><br />
<b style="background-color: transparent; text-align: justify;"><br /></b>
<b style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube, solo es con fines informativos </b><br />
<b style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
<div><b>Lecturas recomendadas:</b></div><div><br /></div><div><a href="https://es.wikipedia.org/wiki/Guerra_de_navegadores" target="_blank">Guerra de navegadores</a><br /></div><div><a href="https://www.elvigia.net/columnas/mundo-digital/2015/4/16/antigua-guerra-navegadores-internet-194203.html" target="_blank">La “antigua” guerra de los navegadores de internet</a><br /></div><div><a href="https://www.mclibre.org/consultar/htmlcss/otros/historia-navegadores.html" target="_blank">Historia de la Web: los navegadores</a><br /></div><div><a href="https://es.wikipedia.org/wiki/MSN" target="_blank">MSN</a><br /></div><div><a href="https://www.unirioja.es/cu/jvarona/VerdadesYMentiras.html" target="_blank">Verdades y Mentiras de Microsoft</a><br /></div>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-41149106613990058882020-09-07T11:43:00.002-05:002024-01-01T22:11:06.653-06:00Documentales informática - Empresas que dieron paso a la informática actual<div style="text-align: justify;">
<img alt="Usando un Ipad" border="0" src="https://busquedaweb.com/blogger/proyectos/ipad.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="91" /> Nuevamente una disculpa por haber dejado mucho tiempo de lado este blog, pero pasaron tantas cosas, rebasado en muchos aspectos, la muerte de mi madre, tener que cambiar de residencia, etc, etc, etc y bueno, eso hizo que me tomara una pausa forzosa de este blog; pero ya estamos de regreso y continuando con los documentales en video sobre como la informática fue avanzando y revolucionando nuestro mundo<b>.</b><br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br /> <i>Es difícil hablar de todas las empresas informáticas que dieron forma a nuestro mundo actual</i>, sin embargo comparto con ustedes la historia de algunas de ellas esperando les sea de interés los mismas<i>.</i><br />
<br /> <i>Comenzaremos por la historia de la empresa Apple</i>, esta empresa creo una serie de estándares para el diseño que perduran hasta nuestros días, sin duda Jobs fue un visionario <i>(aunque no mi informático favorito, pero bueno, eso es otra historia)</i> que se anticipó mucho a su época.
<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/_Flq9cQmBAg" width="560"></iframe></td></tr></tbody></table></div>
Historia de Apple - Steve Jobs y Steve Wozniak | <a href="http://www.vimeo.com/" target="_blank">Vimeo</a>
<br />
<br /> De IBM y Microsoft ya hablé en un <a href="http://marjuanm.blogspot.com/2019/07/documentales-informatica-como-ibm.html">artículo anterior</a>, pero conviene repasar sus historias pues son por demás interesantes, <i>IBM fue el mayor proveedor de computadoras hasta bastante entrados los años 90's, también gracias a esta empresa Microsoft saltó a la fama y las computadoras se hicieron accesibles para las masas</i>. <div><br /></div><div> <i>De Microsoft es difícil no decir que halla alguien que no conozca la empresa hoy en día, <b>¿pero cómo comenzó y sobretodo como llegó a esa posición en la que lo dominaba todo?</b></i>, este documental nos cuenta la historia de Microsoft desde sus inicios hasta los años 90's en donde estaba en la cima.<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/dXJ07F_UzQc" width="560"></iframe></td></tr></tbody></table>
¿Qué le pasó a IBM? - Ascenso y caída, cambiando industrias | <a href="http://www.youtube.com/" target="_blank">Youtube</a>
<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/5P9qalP4BEM" width="560"></iframe></td></tr></tbody></table>
Historia de Microsoft - Bill Gates y Paul Allen | <a href="http://www.youtube.com/" target="_blank">Youtube</a> <div>
<div> Solo me resta agradecer de nuevo su paciencia con un servidor que está volviendo a retomar su trabajo después de mucho (demasiado) tiempo, agradezco todas sus visitas a este blog y gracias nuevamente. Espero les gusten los videos que he compartido, quedo en atenta espera de sus comentarios.
<div style="text-align: justify;">
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;"><b style="background-color: transparent; text-align: justify;">Usando un Ipad cortesía de <a href="https://pixabay.com/es/photos/ipad-comprimido-tecnolog%C3%ADa-contacto-820272/" target="_blank">Pixabay</a>.</b><br />
<b style="background-color: transparent; text-align: justify;"><br /></b>
<b style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube, solo es con fines informativos </b><br />
<b style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
</div></div></div>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-67025570913143807212019-09-17T23:04:00.002-05:002024-01-01T22:19:07.870-06:00Documentales informática - Dos pioneros de la informática: Ada Lovelace y Alan Turing<div style="text-align: justify;">
<img alt="Maquina diferencial" border="0" src="https://busquedaweb.com/blogger/proyectos/maquina.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="91" /> Que tal, una disculpa, nuevamente los retrasos, lo lamento. Bueno, estamos de regreso, esta vez con dos documentales que espero sean de su agrado. Estos son dedicados a la vida y obra de dos pioneros de la informática: <b>Ada Lovelace y Alan Turing.</b><br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Entre texto -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
Es muy difícil citar a todas las personas que han contribuido en algo en el desarrollo de la informática. En esta ocasión quiero compartir dos documentales que encontré en la red que me han parecido interesantes, pues estas dos personas contribuyen de manera notable a desarrollar la informática como la conocemos hoy en día. <b><i>Ada Lovelace</i></b><i> creó el primer programa informático de la historia y <b>Alan Turing</b> desarrolló muchos de los conceptos modernos que son parte del funcionamiento de las computadoras hoy en día.</i><br />
<br />
Comencemos con el primero de ellos. Este se encuentra hospedado en el sitio web Vimeo, dicho vídeo está en Inglés, pero posible mostrar los subtítulos en Español.
<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="autoplay; fullscreen" allowfullscreen="" frameborder="0" height="358" src="https://player.vimeo.com/video/188265119" width="640"></iframe>
</td>
</tr>
<tr>
<td valign="top">Ada Lovelace: la Condesa de los Ordenadores (subtitulado) | <a href="http://www.vimeo.com/" target="_blank">Vimeo</a>
</td>
</tr>
</tbody></table>
<br />
Para activar los títulos sobre el vídeo en la parte superior a estas líneas debemos presionar el botón azul con las letras <i>"CC"</i> y seleccionaremos la opción <i>"Español (España)"</i>.<br />
<br />
Espero les guste este video, en lo personal me ha gustado pues también soy programador de sistemas y da gusto conocer de una <i>"colega"</i> y de su obra.<br />
<br />
El segundo video lo encontramos en Youtube:
<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="358" src="https://www.youtube.com/embed/pnoS5xdhxl0" width="640"></iframe>
</td>
</tr>
<tr>
<td valign="top">La curiosa guerra de Alan Turing | <a href="http://www.youtube.com/" target="_blank">Youtube</a>
</td>
</tr>
</tbody></table>
<br />
<b>Alan Turing</b> <i>fue un matemático que colaboró con el gobierno Inglés durante la segunda guerra mundial ayudando a desencriptar las comunicaciones de los nazis usando principios matemáticos</i> y que hoy en día forman parte de la criptografía moderna. Igualmente sentó las bases de la informática moderna al desarrollar diversos conceptos como por ejemplo una <i>"máquina"</i> teórica capaz de resolver cualquier problema teniendo para ello una entrada de datos y una salida esperada.<br />
<br />
Espero les agradecen este par de documentales, nos veremos en el siguiente post y gracias por seguirnos visitando.</div>
<div style="text-align: justify;">
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b style="background-color: transparent; text-align: justify;">Maquina diferencial de Charles Babbage, Derechos reservados de <a href="https://www.eldiario.es/hojaderouter/tecnologia/charles_babbage-ada_lovelace-maquina_analitica_0_515498563.html" target="_blank">eldiario.es</a> </b><br />
<b style="background-color: transparent; text-align: justify;">Usada únicamente con fines informativos.</b><br />
<b style="background-color: transparent; text-align: justify;"><br /></b>
<b style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube y Vimeo, solo es con fines informativos </b><br />
<b style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-76471830682806414232019-07-26T17:22:00.004-05:002024-01-01T22:19:56.815-06:00Documentales informática - Maravillas Modernas "El ordenador"<div style="text-align: justify;">
<img alt="Logotipo History Channel" border="0" src="https://busquedaweb.com/blogger/proyectos/history.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="91" /> Semanas atrás publiqué <a href="http://marjuanm.blogspot.com/2019/07/documentales-informatica-como-ibm.html">un par de documentales</a> sobre como es que el MS-DOS de Microsoft terminó siendo preinstalado en las computadoras de IBM en los inicios de la informática moderna y otro documental sobre el mismo tema. La intención de esta secuencia de posts es mostrar el desarrollo de la informática hasta llegar a nuestros días, me da gusto que les hallan gustado los documentales, por cierto en <a href="https://www.publish0x.com/msproys" target="_blank">Publish0x</a> se están publicando otros documentales adicionales, los invito a que los vean.<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Entre texto -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
History Channel es un canal que desde que lo conocí me gustó mucho, hace tiempo tenían una sección llamada <i>"Maravillas modernas"</i>, estos son documentales sobre tecnología. Quiero compartirles uno que en lo personal me pareció muy interesante, pues es una crónica del progreso en la informática, desde sus inicios allá en el siglo XIX hasta mediados de la década pasada, espero les sea de su agrado.<br />
<table>
<tbody>
<tr>
<td valign="top"><a href="https://www.documaniatv.com/ciencia-y-tecnologia/maravilla-modernas-el-ordenador-video_a95682d42.html" target="_blank"><img alt="Video maravillas modernas: el ordenador" border="0" src="http://otakuzone.freestarthost.com/proyectos/video.jpg" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="400" /></a>
</td>
</tr>
<tr>
<td valign="top">Maravillas Modernas <b>"El ordenador"</b><span style="text-align: justify;"> | </span><a href="https://www.documaniatv.com/ciencia-y-tecnologia/maravilla-modernas-el-ordenador-video_a95682d42.html" style="text-align: justify;" target="_blank">Documania TV</a></td>
</tr>
</tbody></table>
<br />
Nos veremos en el siguiente post y gracias por seguirnos visitando.</div>
<div style="text-align: justify;">
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b style="background-color: transparent; text-align: justify;">Logotipo de History Channel pertenece a la misma empresa</b><br />
<b style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube, solo es con fines informativos </b><br />
<b style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-56388216142060070002019-07-01T23:55:00.003-05:002022-09-28T16:05:47.296-05:00Documentales informática - Como IBM terminó usando MS-DOS en lugar de CP/M (1995) y La historia de Microsoft visto desde el punto de vista de IBM y El sistema operativo QDOS<div style="text-align: justify;">
<img alt="Logotipo MS-DOS" border="0" src="http://otakuzone.freestarthost.com/proyectos/logodos.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="91" /> Algunas semanas atrás publiqué en este blog <a href="http://marjuanm.blogspot.com/2019/06/entrevista-jim-hall-creador-de-freedos.html">una entrevista con el señor Jim Hall </a>creador del sistema operativo FreeDOS. Ahora estaré publicando algunos documentales relacionados con los inicios de la informática, todos ellos están en Español (quizá llegue a publicar alguno en otro idioma pero haré lo posible porque se encuentre subtitulado al Español), espero que sean de su agrado y quedo abierto a sus comentarios.<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
De la mano de <b>"Crónicas de la computación"</b> (1995) nos llega este documental titulado <b>"Como IBM terminó usando MS-DOS en lugar de CP/M"</b>. En el se nos narra como es que el sistema operativo <a href="https://es.wikipedia.org/wiki/CP/M" target="_blank">CP/M</a> de <a href="https://es.wikipedia.org/wiki/Digital_Research" target="_blank">Digital Research</a> no termino siendo la opción de IBM para su reciente línea de computadoras personales (a inicio de los años 80's) si al parecer tenía mayores oportunidades y terminaron decantándose por elegir el sistema de Microsoft: <b><a href="https://es.wikipedia.org/wiki/MS-DOS" target="_blank">MS-DOS</a></b>.<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/k5C_xzG5N70" width="560"></iframe>
</td>
</tr>
<tr>
<td valign="top">Como IBM terminó usando MS-DOS en lugar de CP/M (1995) | <a href="http://www.youtube.com/" target="_blank">Youtube</a></td>
</tr>
</tbody></table>
<br />
El siguiente documental (propiedad de <a href="https://www.historyplay.tv/mx/" target="_blank">History Channel</a> - solo se está usando como crestomatía) está relacionado con el anterior. Al fracasar las negociaciones con Digital Research para suministrar un sistema operativo a las nacientes computadoras de IBM Microsoft tomó el relevo. Este documental muestra como se llevó a cabo esta operación comercial y transformó a Microsoft de una empresa apenas existente a una poderosa industria.<br />
<table>
<tbody>
<tr>
<td valign="top"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/j2OPK5gGTWI" width="560"></iframe>
</td>
</tr>
<tr>
<td valign="top">La historia de Microsoft visto desde el punto de vista de IBM | <a href="http://www.youtube.com/" target="_blank">Youtube</a>
</td>
</tr>
</tbody></table>
<br />
Dos documentales muy interesantes de ver, en el siguiente artículo continuaremos con estos temas y otros más.</div>
<div style="text-align: justify;">
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b style="background-color: transparent; text-align: justify;">Logotipo de MS-DOS perteneciente a Microsoft</b><br />
<b style="background-color: transparent; text-align: justify;">Los videos fueron tomados de Youtube, solo es con fines informativos </b><br />
<b style="background-color: transparent; text-align: justify;">y pertenecen a sus respectivos autores.</b></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com5tag:blogger.com,1999:blog-2570388371432361473.post-16808404684176983722019-06-18T08:40:00.001-05:002019-06-18T09:16:27.253-05:00Entrevista a Jim Hall creador de FreeDOS<div style="text-align: justify;">
<img alt="Blinky - mascota de FreeDOS" border="0" src="http://otakuzone.freestarthost.com/proyectos/freedos/blinky.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="78" /> En esta ocasiones estoy compartiendo con ustedes una entrevista hecha recientemente al señor <b>Jim Hall</b>. Es el creador del sistema operativo <b>FreeDOS</b>; para quienes no conozcan aún este sistema operativo haremos una breve introducción del mismo.<br />
<a name='more'></a><br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Entre texto -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
FreeDOS es un sistema operativo que surge como alternativa al MS-DOS cuando Microsoft anuncia que próximamente sería descontinuado. Claro, esto no sucedió de inmediato pues en aquel entonces aún era muy usado por Windows 95-98 como poder iniciar,<sup><a href="http://marjuanm.blogspot.com/2019/06/entrevista-jim-hall-creador-de-freedos.html#referencia1">1</a></sup> entre otras funciones. Pero también quedó claro que en algún momento Microsoft dejaría de soportarlo, cosa que finalmente si sucedió con la llegada de Windows XP.<sup><a href="http://marjuanm.blogspot.com/2019/06/entrevista-jim-hall-creador-de-freedos.html#referencia2">2</a> <a href="http://marjuanm.blogspot.com/2019/06/entrevista-jim-hall-creador-de-freedos.html#referencia3">3</a></sup><br />
<br />
Previendo esto Jim Hall en compañía de otros programadores comenzaron el desarrollo de un clon para el MS-DOS. Dejo con ustedes a continuación una entrevista que me concedió y a quien agradezco mucho. La entrevista original fue hecha en el idioma Inglés pero la cuelgo en este sitio en idioma Español, si desean ver la entrevista original pueden hacer <a href="https://docs.google.com/document/d/1FyL82TCS49rp1Lmm-7P7uKDGa7gPNBS3dQ6UpBKhf88/edit?usp=sharing" target="_blank">clic en este enlace</a>.<br />
<br />
<h4>
<span style="color: #20124d;">1.- ¿Podrías decirnos cómo comenzó el proyecto FreeDos? ¿Cuál fue la motivación para hacerlo?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Cuando estaba creciendo en la década de 1980, nuestra familia tenía una PC con MS-DOS. Realmente me gustó el DOS. Pensé que el DOS era un sistema operativo muy poderoso, ciertamente más poderoso que la computadora Apple II que teníamos antes.<br />
<br />
Más tarde, aprendí cómo escribir programas en C y expandí la línea de comandos de MS-DOS escribiendo pequeñas utilidades en C. Al principio, estos eran experimentos que simplemente reproducían la línea de comandos de MS-DOS. Eso no es muy difícil; Muchos de los comandos de MS-DOS son bastante simples. Con el tiempo, escribí más utilidades avanzadas de DOS que me permitieron hacer más en la línea de comandos.<br />
<br />
En 1993, era estudiante universitario, estudiaba física. Al chatear en línea a través de los grupos de noticias de Usenet, descubrí Linux, que instalé en mi computadora. Todavía corrí DOS. Me inicié en Linux para ejecutar análisis de datos para mis laboratorios de física. Y arranqué en MS-DOS para ejecutar aplicaciones como un procesador de textos o una hoja de cálculo.<br />
<br />
A principios de 1994, comencé a leer artículos en revistas informáticas que Microsoft planeaba eliminar MS-DOS cuando lanzaran su próxima versión de Windows. Yo había usado Windows 3 antes de esto. Windows no era genial, y no parecía haber mejorado mucho desde Windows 2. Decidí que si Windows 4 iba a ser como Windows 3, preferiría ejecutar DOS.<br />
<br />
Y decidí que si íbamos a tener un DOS para usar, alguien tendría que escribirlo. Anuncié el 29 de junio de 1994, acerca de un proyecto llamado <b>"PD-DOS"</b> ("PD" = "Dominio público") que más tarde llamamos <b>"Free-DOS"</b> y luego <b>"FreeDOS"</b>. Compartí las utilidades de DOS que tenía escritos, los que reproducían la línea de comandos de MS-DOS y algunos que se expandían en ella. Compartí todo bajo la GPL de GNU, para que cualquiera pudiera usar y estudiar mi código fuente.<br />
<br />
A otros les gustó lo que había hecho y comenzaron a contribuir a FreeDOS. Pronto tuvimos un <i>COMMAND.COM</i> (el <i>"shell"</i> de la interfaz de la línea de comandos para DOS) y un montón de otras utilidades útiles. Lanzamos la distribución FreeDOS Alpha 1 el 16 de septiembre de 1994. FreeDOS creció a partir de ahí.<br />
<br />
<h4>
<span style="color: #20124d;">2.- En comparación con el MS-DOS, ¿qué ventajas ofrece FreeDOS?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Creo que la mayor ventaja es que todavía estamos trabajando en FreeDOS, pero Microsoft dejó de trabajar en MS-DOS en 2000. En realidad, dejaron de vender MS-DOS en 2000; Microsoft dejó de desarrollar DOS después de MS-DOS 6.22, lanzado en 1994.<br />
<br />
Nos mantenemos muy cerca de la idea original de <i>"DOS"</i>. Por lo tanto, FreeDOS no tiene una interfaz gráfica de usuario (GUI) estándar, aunque sí incluimos varias GUI en la distribución de FreeDOS. Pero puedes ejecutar prácticamente cualquier programa de DOS en FreeDOS en estos días.<br />
Al desarrollar FreeDOS y agregar nuevas funciones, hemos intentado agregar solo funciones que la mayoría de los usuarios encontrarían útiles. De esta manera, FreeDOS es más avanzado que MS-DOS, simplemente por las utilidades adicionales que proporcionamos. FreeDOS tiene utilidades de archivo como Zip y Unzip, herramientas de desarrollo, compiladores y ensambladores para que pueda crear nuevos programas, varios editores, compatibilidad con redes y, por supuesto, un montón de nuevas utilidades con las que MS-DOS solo podría soñar.<br />
<br />
También incluimos varias utilidades que imitan la línea de comandos de Unix, por lo que FreeDOS será más familiar para los usuarios de Linux. Por ejemplo, FreeDOS incluye versiones de <i>cal, du, grep, head, less, tee, touch, uptime, which</i> y varios otros comandos similares a Unix.<br />
<br />
Una breve lista de las características adicionales en FreeDOS es:<br />
<br />
<ul>
<li>Soporte de CD-ROM con XCDROM y SHSUCDX (similar a MSCDEX).</li>
<li>Controlador de ratón CUTEMOUSE con soporte de rueda de desplazamiento.</li>
<li>Editores de texto multi-ventana EDIT y SETEDIT.</li>
<li>Soporte de sistema de archivos FAT32.</li>
<li>Administración de energía FDAPM: información/control/suspensión/apagado de APM, aceleración ACPI, ahorro de energía HLT.</li>
<li>FDAV antivirus y escáner de virus.</li>
<li>Gestor de paquetes FDNPKG, con soporte de red.</li>
<li>GRAPHICS imprime en ESC/P, HP PCL y impresoras PostScript.</li>
<li>HTMLHELP visor de ayuda.</li>
<li>JEMM386 (XMS, EMS) gestor de memoria.</li>
<li>Controladores de modo protegido de 32 bits como JLMs (Módulos cargables JEMM).</li>
<li>Caché de disco LBACACHE.</li>
<li>Soporte de disco LBA.</li>
<li>Soporte LFN a través del controlador DOSLFN.</li>
<li>Reproductor de medios MPXPLAY: <i>mp3, ogg, wmv</i> con controladores incorporados AC97 y SB16.</li>
<li>Visor de texto PG (similar a LIST).</li>
<li>Varias utilidades portadas desde Linux gracias a DJGPP.</li>
</ul>
<br />
<h4>
<span style="color: #20124d;">3.- ¿Desarrolló este proyecto solo o tuvo la colaboración de amigos u otros programadores?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
FreeDOS llegó a donde está hoy debido a que muchos programadores trabajan juntos. Incluso al principio, FreeDOS solo despegó porque otras personas contribuyeron al proyecto.<br />
<br />
No puedo agradecer a todos; Esa lista sería muy larga. Pero Tim Norman escribió nuestro primer COMMAND.COM (llamado FreeCOM), M. <i>"Hannibal"</i> Toal creó nuestro primer sitio web, y Pat Villani escribió nuestro primer núcleo. Y, por supuesto, tenemos muchos otros desarrolladores que han contribuido (o siguen contribuyendo) a FreeDOS: Tom, Eric, Rugxulo, Jerome, Mike, rar4, Aitor, Steffen, Joe, Jim T., Paul, Dale y muchos otros.<br />
<br />
<h4>
<span style="color: #20124d;">4.- ¿Qué tipo de recepción ha recibido FreeDos entre los usuarios?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Cuando anuncié FreeDOS por primera vez en 1994, muchas personas estaban interesadas en lo que habíamos planeado para nuestro proyecto de DOS. La gente en general me apoyó mucho, y creo que esa es la razón por la que tantos desarrolladores se unieron a FreeDOS en los primeros años.<br />
<br />
En estos días, el desarrollo ha disminuido. FreeDOS no está persiguiendo a un objetivo en movimiento, y FreeDOS alcanzó la paridad con MS-DOS hace años. Entonces, si observan los cambios en el kernel o en COMMAND.COM u otras utilidades <i>"centrales"</i>, las cosas no se están moviendo rápidamente. Pero en cambio, las personas están escribiendo nuevas características, además del núcleo actual. FreeDOS no es tan activo como Linux, pero todavía hay muchas personas que continúan trabajando en FreeDOS.<br />
<br />
Durante los últimos meses, hemos mantenido aproximadamente 40,000 (<b>cuarenta mil</b>) descargas de la distribución de FreeDOS por mes.<br />
<br />
<h4>
<span style="color: #20124d;">5.- ¿Qué usos le podemos dar a FreeDos hoy?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Siempre hemos visto tres formas principales en las que las personas usan FreeDOS:<br />
<br />
<b>1. Jugar juegos clásicos de DOS.</b> El hecho de que un juego sea viejo no significa que haya dejado de ser divertido para jugar. Creo que la mayoría de las personas que usan FreeDOS lo usan para jugar.<br />
<br />
<b>2. Ejecutar aplicaciones DOS heredadas.</b> Aún puede ver aplicaciones de DOS, incluso en 2019. Algunas personas las ejecutan porque necesitan las aplicaciones para su negocio. Tal vez tengan datos en una aplicación de DOS y eso es lo que usan. Otros ejecutan aplicaciones de DOS porque les gustan. Por ejemplo, siempre me han gustado las hojas de cálculo, y AsEasyAs de TRIUS Software es mi hoja de cálculo de DOS favorita.<br />
<br />
<b>3. Soportar sistemas embebidos.</b> Mientras que la mayoría de los sistemas integrados más nuevos (piense en "Internet de las Cosas" o "IoT") se ejecutan en Linux, aún se ven algunos sistemas integrados más antiguos que se ejecutan en DOS. Y FreeDOS puede hacer esto muy bien. Pero debo admitir que los sistemas integrados son probablemente el caso de uso más pequeño de FreeDOS en 2019.<br />
<br />
También debería mencionar las actualizaciones de la BIOS. Algunos fabricantes de placas base distribuyen actualizaciones de BIOS como un programa de DOS, por lo que necesita tener DOS para actualizar su BIOS. Muchas personas usan FreeDOS para esto.<br />
<br />
<h4>
<span style="color: #20124d;">6.- ¿Qué planes tienen para FreeDos en el futuro?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Estamos trabajando en la distribución FreeDOS 1.3. Al planear la versión 1.3, hemos decidido que <i>"1.x"</i> debería estar más cerca del DOS tradicional. Así que nuestros supuestos básicos para FreeDOS 1.3 son:<br />
<br />
<ul>
<li>La compatibilidad es clave.</li>
<li>FreeDOS 1.3 seguirá siendo de 16 bits.</li>
<li>FreeDOS 1.3 mantendrá el enfoque en un entorno de línea de comandos de un solo usuario.</li>
<li>FreeDOS 1.3 continuará ejecutándose en PC antiguas (XT, 286, 386, etc.) pero admitirá hardware nuevo con soporte de controlador expandido, cuando sea posible.</li>
<li>El grupo de paquetes <i>"Base"</i> contendrá todo lo que replica la funcionalidad de MS-DOS.</li>
</ul>
<br />
Creo que el mayor cambio será que puede arrancar FreeDOS 1.3 como una imagen en vivo. Hemos hecho esto en versiones anteriores, por lo que si sale del instalador, irá directamente a la línea de comandos de DOS. Pero no incluimos muchas utilidades de FreeDOS en ese entorno de DOS limitado, por lo que no podía hacer mucho excepto ejecutar el instalador. Lo estamos cambiando en FreeDOS 1.3, por lo que puede instalar FreeDOS en una computadora o simplemente iniciar la distribución de FreeDOS 1.3 y ejecutarla desde el CDROM.<br />
<br />
<h4>
<span style="color: #20124d;">7.- Sabemos que algunos fabricantes ofrecen computadoras al público sin una versión de Microsoft Windows preinstalada, pero FreeDos preinstalada. ¿Qué puede decirnos al respecto?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Dell comenzó a vender computadoras de la serie N con FreeDOS en agosto de 2002. Creo que fueron el primer fabricante de computadoras importante en preinstalar FreeDOS.<br />
<br />
Entiendo que esta era una forma inteligente de sortear un requisito de licencia de Microsoft, por lo que el fabricante podría ahorrar dinero en los costos de la licencia al no instalar Windows. Sin embargo, no conozco los detalles, así que probablemente no debería hacer conjeturas aquí.<br />
<br />
En estos días, puedes encontrar muchas computadoras con FreeDOS en ellas. Miré la compra de una computadora nueva hace unos años y HP tenía algunos sistemas que tenían FreeDOS. Muchas computadoras de menor costo de distribuidores externos también instalan FreeDOS en sus computadoras.<br />
<br />
No veo esto como un indicador de que FreeDOS se hará cargo del mercado de las computadoras de escritorio. FreeDOS (como cualquier DOS) no está realmente diseñado para sistemas de 64 bits. Si desea aprovechar un sistema moderno de 64 bits, coloque Linux o Windows en él. (Yo corro exclusivamente Linux, por cierto)<br />
<br />
<h4>
<span style="color: #20124d;">8.- ¿Cuáles son sus planes para el futuro en la informática?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Para FreeDOS, estoy atento a cómo se vería FreeDOS "2.0". Faltarán varios años y probablemente se verá muy diferente de lo que puedo imaginar ahora. Lo he mencionado en las listas de correo electrónico de FreeDOS. Hay un grupo trabajando en un kernel de DOS en modo protegido, llamado NightDOS (porque "PM" significa "Modo protegido", pero en los EE. UU., "PM" también indica las horas posteriores al mediodía y antes de la medianoche). NightDOS pretende crear un kernel de DOS multitarea que pueda ejecutar programas DOS clásicos de 16 bits. Si pueden generar un kernel DOS operativo que cumpla con esos objetivos, consideraríamos incluirlo como un kernel opcional en FreeDOS 2.0.<br />
<br />
NightDOS está todavía muy temprano en el desarrollo. Pero estamos viendo eso.<br />
<br />
Además de FreeDOS, he escrito o contribuido a docenas de proyectos de software de código abierto/software libre. Un proyecto en el que también trabajo es el escritorio de GNOME. No escribo código para GNOME, pero uso mi experiencia en pruebas de usabilidad para hacer pruebas de usabilidad en GNOME. También soy mentor de internos para hacer pruebas de usabilidad.<br />
<br />
En el trabajo, recientemente comencé mi propia empresa. He sido Director de Información durante más de 8 años y medio, y he estado en puestos de Liderazgo y Gestión de TI durante más de 20 años. Mi pasión es ayudar a los líderes de TI con la planificación estratégica. Así que eso es lo que estoy haciendo con mi nueva empresa: IT Mentor Group LLC. <a href="https://itmentorgroup.biz/" target="_blank">https://itmentorgroup.biz/</a><br />
<br />
<h4>
<span style="color: #20124d;">9.- ¿Cuál es el origen de la mascota FreeDos? ¿tiene un nombre?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
La mascota de FreeDOS es un pez. <i>Su nombre es <b>Blinky</b></i>.<br />
<br />
FreeDOS no tuvo una mascota durante mucho tiempo. En algún momento de 1997 o quizás de 1996, alguien me envió una imagen graciosa donde "Linux" y "FreeDOS" estaban aplastando cajas de Windows 95. La idea era que el software libre/de código abierto finalmente superaría al software propietario como Windows. Por supuesto, Linux tenía una mascota (Tux el pingüino) pero FreeDOS no la tenía. Así que insertó una mascota que parecía una bola azul con brazos y piernas, y ojos saltones, y pegó el logotipo de FreeDOS en ella. Pero eso nunca fue una mascota oficial de FreeDOS.<br />
<br />
No estaba seguro de tener una mascota para FreeDOS. Me gustó la idea de una mascota; después de todo, parecía que todos los proyectos de software de código abierto/software libre más importantes en ese entonces tenían una mascota. GNU tenía el ñu, BSD tenía el pequeño demonio con tenis y Linux tenía el pingüino. Así que pensé que FreeDOS podría tener una mascota. Pero no sabía qué mascota sería la mejor para nosotros.<br />
<br />
Si adoptáramos una mascota, pensé que un lémur sería una buena idea. Pero eso no fue por ninguna buena razón, excepto que me gustaron los lémures.<br />
<br />
Entonces pensé que sería bueno si la mascota de FreeDOS pudiera "llevarse bien" con la mascota de Linux. Así que tal vez sea una mascota de foca, porque las focas y los pingüinos van juntos. Pero ya existía un proyecto de Interfaz Gráfica de Usuario de DOS llamado SEAL, y no quería robar a su mascota.<br />
<br />
Luego, un usuario de FreeDOS (creo que era Mike Green) me envió una nueva idea de logotipo. Usó un pez, y dijo que el pez representaba la libertad. Pensé que el logotipo estaba bien, pero no era lo que necesitábamos, así que simplemente lo archivé.<br />
<br />
Unos años más tarde, Bas Snabilie me contactó. Era un artista digital, y había creado una mascota de peces FreeDOS actualizada, y un nuevo logotipo para acompañarla. La mascota de los peces de Bas era linda y caricaturesca. El pez tenía grandes ojos saltones, incluyendo un ojo de insecto grande, así que lo llamé Blinky porque pensé que era un nombre lindo.<br />
<br />
Mateusz Viste contribuyó con un dibujo vectorial escalar de la mascota Blinky, así que tengo que agradecerle a Mateusz por su ayuda. Rikard Lang también contribuyó con una versión ligeramente diferente de la mascota Blinky, en púrpura con un reflejo brillante de "brillo". Usamos el pez "brillante" en nuestra cuenta de redes sociales.<br />
<br />
<h4>
<span style="color: #20124d;">10.- Finalmente, ¿qué les dirías a los programadores que están comenzando proyectos libres o ya están manteniendo algunos?</span></h4>
<div>
<span style="color: #20124d;"><br /></span></div>
Cuando comencé a utilizar FreeDOS, no sabía que escribir un sistema operativo sería un gran problema. Así que supongo que podrías decir que no sabía lo suficiente como para pensar dos veces sobre lo que estaba haciendo. Así que simplemente salté a él.<br />
<br />
<b>¡Pero saltar a un proyecto que amas es una gran idea!</b> Así que, para cualquier desarrollador que esté pensando en comenzar su propio proyecto de software de código abierto/software libre, <b>¡digo, adelante!</b> No te preocupes si no eres un programador experto. Yo era solo un programador novato autodidacta cuando inicié FreeDOS, y ese proyecto sigue vivo 25 años después. <b>¡Simplemente hazlo!</b><br />
<br />
<br />
Agradecemos mucho al señor Jim Hall la entrevista concedida, sin duda muy interesante. Este año (2019) FreeDOS está cumpliendo 25 años de existencia y esperamos dure muchos más.<br />
<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/freedos/jimhall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Jim Hall" border="0" src="http://otakuzone.freestarthost.com/proyectos/freedos/jimhall.png" data-original-height="300" data-original-width="300" height="200" title="" width="200" /></a></td>
</tr>
<tr>
<td valign="top"><div style="text-align: center;">
El señor Jim Hall, pueden contactarlo por</div>
<div style="text-align: center;">
Email (<a href="mailto:jhall@freedos.org">jhall@freedos.org</a>) o por Twitter.<br />
<a href="https://twitter.com/FreeDOS_Project" target="_blank">@FreeDos</a> <a href="https://twitter.com/jimfhall" target="_blank">@jimfhall</a></div>
</td></tr>
</tbody></table>
<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/freedos/freedos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="FreeDOS 1.2" border="0" src="http://otakuzone.freestarthost.com/proyectos/freedos/freedos.png" title="" width="600" /></a></td>
</tr>
<tr>
<td valign="top"><div style="text-align: center;">
<div style="text-align: left;">
Aquí tenemos funcionando a FreeDOS 1.2, pueden descargarlo desde su <a href="http://www.freedos.org/download/" target="_blank">web oficial</a> estando disponible en formato CD-ROM como USB para poder instarlarse.</div>
</div>
</td></tr>
</tbody></table>
<br />
Del mismo modo es posible descargar el código fuente de este sistema operativo para estudiarlo o incluso adaptarlo a otros proyectos (mientras respetemos la licencia original). Solo basta ir a <a href="https://sourceforge.net/p/freedos/svn/HEAD/tree/" target="_blank">https://sourceforge.net/p/freedos/svn/HEAD/tree/</a> y descargarnos una copia.<br />
<br />
Instalar FreeDOS 1.2 en VirtualBox es realmente muy sencillo, pero si necesitan una mano dejo aquí un <a href="https://www.youtube.com/watch?v=1VllrpKQzaw" target="_blank">tutorial en vídeo</a> de como instalarlo (no tiene audio el vídeo pero las interfaces están en Español). Igualmente si quieren probar la versión anterior (1.1) pueden <a href="https://linux.softpedia.com/get/System/Operating-Systems/Other/FreeDOS-14087.shtml" target="_blank">descargarla desde la red</a> para pruebas junto con su <a href="https://www.softzone.es/2014/11/03/nostalgia-como-instalar-freedos-paso-paso/" target="_blank">respectivo manual de instalación</a> (esta vez si en idioma Español).<br />
<br />
<b>Referencias:</b><br />
<br />
<a href="https://www.blogger.com/null" name="referencia1">1.-</a> <a href="https://devblogs.microsoft.com/oldnewthing/20071224-00/?p=24063" target="_blank">What was the role of MS-DOS in Windows 95?</a><br />
<a href="https://www.blogger.com/null" name="referencia2">2.-</a> <a href="http://www.forosdelweb.com/f42/urgente-no-puedo-ejecutar-programas-msdos-xp-216931/#post737598" target="_blank">Urgente: No puedo ejecutar programas MSDOS en XP</a><br />
<a href="https://www.blogger.com/null" name="referencia3">3.-</a> <a href="https://www.emezeta.com/articulos/ejecutar-programas-o-juegos-dos-en-windows" target="_blank">Ejecutar programas/juegos DOS en Windows</a></div>
<div style="text-align: justify;">
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com2tag:blogger.com,1999:blog-2570388371432361473.post-79690723600119172312019-06-06T23:39:00.000-05:002019-06-07T14:06:09.225-05:00Dos nuevos blogs<div style="text-align: justify;">
<img alt="Escritor" border="0" src="http://otakuzone.freestarthost.com/proyectos/escritor.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" width="85" /> Que tal: Antes que nada quiero agradecer a quienes leen este blog, así como también nos siguen por las diversas redes sociales que tenemos. Como pueden ver picamos un poquito de todo: publicar artículos aquí, darle <i>"una manita de gato"</i> (modernizaciones) al blog de vez en cuando, desarrollar software, etc, en fin parece que no descanso nunca jejeje. Creo que ya me acostumbré a siempre estar ocupado en algo, me aburro si no hago lo contrario. Bueno, pues en esta ocasión aprovecho para <b>anunciar la existencia</b> de un par de blogs en los que también estaré publicando códigos fuentes que le han sido de utilidad a un servidor así como notas relacionadas con la informática.<br />
<a name='more'></a><br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span><br />
<script language="javascript" type="text/javascript">
lz="http://ocio.leadzu.com/banner_request.php?m=1HRUSITE74205X8&a=&idtm=300x250&lgid="+new Date().getTime();
document.write("<scr"+"ipt language='javascript' type='text/javascript' src='"+lz+"'></scr"+"ipt>");
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
Estos dos blogs no vienen a reemplazar a este, sino más bien a complementarlo. Desde un principio este blog se sacó en Blogger porque es una plataforma gratuita para escribir blogs (no es perfecta pero ha dado buenos resultados), no me decanté por una opción comercial porque aunque muchos viven de sus blogs el caso de un servidor no es así. A lo largo de estos 4 años de existencia no voy a decir que no se ha podido sacar algo de dinero de este blog, pero tampoco ha sido mucho, de hecho la suma total quizá solo daría para pagar un año o dos de pago de hospedaje, de manera que estaría en números rojos.<br />
<br />
Bien podría haber hecho un blog viral y tener miles y miles de visitas al mes (y probablemente también miles de <a href="https://es.wikipedia.org/wiki/Trol_(Internet)" target="_blank">trolls</a>) y sacar una buena pasta con ello, pero no era lo que yo quería, <i>algo chiquito pero de calidad, aportar algo útil a la comunidad de informáticos y me parece que lo he logrado</i>. Así que si bien no voy a vivir de este blog al menos si creo que ha servido de algo para alguien más y <a href="https://marjuanm.blogspot.com/2017/09/gracias-por-probar-mis-programas-una.html" target="">me siento satisfecho por ello</a>.<br />
<br />
Pero siendo honestos todos queremos sacar aunque sea una pequeña remuneración, en el caso de este blog se ha hecho con reseñas patrocinadas y banners a lo largo del blog y digamos que <i>"hay la llevamos"</i>. Algo un poquito más rentable son las redes de blogs, es decir un conjunto de blogs bajo el mismo dueño y sacar ingresos de todos ellos, generalmente se comparten contenido para así traer visitas de un blog a otro y todos salgan beneficiados. Repito, <i>no es mi intención blogs virales que al final de cuentas no aportan nada util</i>.<br />
<br />
Es por ello que se han habilitado un par de blogs que un servidor va a atender (quienes nos siguen en redes sociales ya habrán visto los primeros artículos republicados), los cuales son los siguientes:<br />
<br />
<h3>
Blog <a href="https://steemit.com/@marjuanm" target="_blank">"Mis Proyectos"</a> en Steemit:</h3>
<a href="http://otakuzone.freestarthost.com/proyectos/steemit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://otakuzone.freestarthost.com/proyectos/steemit.png" data-original-height="108" data-original-width="800" height="86" width="640" /></a>
<br />
<br />
Aunque la cuenta en Steemit la saqué desde el año pasado solo recientemente le empecé a dar uso. <a href="https://steemit.com/" target="_blank">Steemit</a> es una red social para escritores donde <i>el principal atractivo es que los usuarios pueden votar por el contenido que les gusta y eso se traduce en dinero para los autores</i>. El pago depende de cuantos voten y cuanto prestigio tengan los votantes, de ahí que se puede ganar unos centavos de dólar por artículo hasta varias decenas de dólares.<br />
<br />
Sin embargo no se trata de escribir lo primero que nos pase por la mente, no. Aquí he visto que se es muy exigente; <i>no por poner lo que sea la gente vendrá en masa a votar por ti, tiene que gustarles tu estilo</i> y solo hay siete días a partir de la redacción del artículo para reunir votos válidos y obtener alguna bonificación.<br />
<br />
Como dije antes, <b>quiero aportar algo útil</b>, es por eso que este blog va a estar recogiendo varios códigos fuentes que no he publicado en el blog que ya conocen (Blogger) y otras notas más, así a la par tendremos dos blogs (bueno tres, ver la nota más abajo) que se van a ir complementando entre si.<br />
<br />
Puesto que este blog <i>"paga"</i> por publicar (solo pagan si hay votos válidos) no se va a meter ningún spot publicitario entre los artículos, solo resta invitarlos a que lo visiten y si no tienen una cuenta en Steemit saquen uno y me den un voto si les gusta alguno de mis artículos.<br />
<br />
<h3>
Blog <a href="https://www.publish0x.com/msproys" target="_blank">"Mis Proyectos"</a> en Publish0x:</h3>
<a href="http://otakuzone.freestarthost.com/proyectos/publish0x.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://otakuzone.freestarthost.com/proyectos/publish0x.png" data-original-height="134" data-original-width="800" height="106" width="640" /></a>
<br />
<br />
Una propuesta muy similar al blog en Steemit: las dos redes sociales pagan por los artículos (siempre y cuando los usuarios voten por los artículos) usando criptomonedas. Steemit lo hace en una combinación de <a href="https://es.wikipedia.org/wiki/Steem#STEEM" target="_blank">STEEM</a> y <a href="https://es.wikipedia.org/wiki/Steem#Steem_Dollar_(SBD)" target="_blank">STEEM DOLLARS</a> mientas que Publish0x usa una combinación de <a href="https://es.coinnewstelegraph.com/what-is-hydrogen-cryptocurrency/" target="_blank">HIDRO</a> y <a href="https://tendenciasmillonarias.com/que-es-y-como-funciona-la-criptomoneda-dai/" target="_blank">DAI</a>.<br />
<br />
Sin embargo, a diferencia de Steemit aquí es <i>"más sencillo"</i> ganar bonificaciones, basta que alguien nos de su voto para obtener el 80% de la recompensa que Publis0x piensa darnos por nuestro artículo, mientas que el otro 20% va para quien votó por nosotros. Del mismo modo si votamos en un artículo ganaremos el 20% del monto del voto, osea: <b>todos ganan</b>.<br />
<br />
Por supuesto, esto hace que los montos cobrados entre cada voto sean mucho menores que Steemit y se tenga que alcanzar montos mínimos considerables para poder cobrar mientras que en Steemit no hay ese problema, basta que tengamos algo de STEEM o STEEM DOLLAR para poderlo vender y retirar ese pago a otra billetera de criptomonedas.<br />
<br />
<h3>
En resumen:</h3>
<br />
Más trabajo, ahora son tres blogs que estaré atendiendo (sin descuidar otras responsabilidades), espero poder ofrecer un producto que les agrade y los invito a seguirnos apoyando como hasta ahora lo han hecho y cosa que agradezco profundamente.<br />
<br />
Sin más solo resta despedirme y seguirle echando ganas, si gustan apoyarnos y aún no tienen cuentas en Steemit o Publish0x les dejo abajo los enlaces para registrarse, hasta la próxima.<br />
<br />
<a href="https://signup.steemit.com/" target="_blank">Crear cuenta en Steemit</a>: La activación es manual y puede tomar de una a dos semanas antes de que la autoricen.<br />
<br />
<a href="https://www.publish0x.com/register" target="_blank">Crear cuenta en Publish0x</a>: A diferencia de Steemit la activación es inmediata (nos llega la confirmación del alta a nuestro correo, la activaremos y listo).<br />
<br />
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>File: Por escrito </b></div>
<div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>URL:</b> <a href="https://pixabay.com/es/photos/por-escrito-escribir-1209121/" rel="" style="color: #49779e;" target="_blank">https://pixabay.com/es/photos/por-escrito-escribir-1209121/</a></div>
<div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></div>
</td></tr>
</tbody></table>
</div>
<div style="text-align: justify;">
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-71518184700660716242019-06-01T21:40:00.000-05:002019-06-01T21:41:42.191-05:00Como instalar .NET framework 3.5 en Windows 10 aunque aparezca el error 0x800F081F<div style="text-align: justify;">
<img alt="Logo .NET" border="0" height="45" src="https://upload.wikimedia.org/wikipedia/en/0/0d/Microsoft_.NET_Framework_v4.5_logo.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" /> Soy informático en una empresa y desde algún tiempo atrás al instalar computadoras nuevas con Windows 10 está apareciendo en ocasiones una solicitud para instalar el Framework NET 3.5 de Microsoft. Es raro porque <i>"se supone"</i> que Windows 10 viene con la versión 4 del Framework por lo que no necesitaría del 3.5,<sup><a href="http://marjuanm.blogspot.com/2019/06/como-instalar-net-framework-35-en.html#referencia1">1</a></sup> pero en fin, cosas de Microsoft.<br />
<br />
El caso es que cuando quiero instalar la versión 3.5 desde la sección <i>"Activar o desactivar características de Windows"</i> no es posible hacerlo, obtenemos el error <i>"0x800F081F"</i>. Entonces, <i>"¿cómo podemos instalarlo?"</i>, es realidad es muy sencillo, sigan leyendo este post para averiguar como resolver este problema.<br />
<a name='more'></a><br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span><br />
<script language="javascript" type="text/javascript">
lz="http://ocio.leadzu.com/banner_request.php?m=1HRUSITE74205X8&a=&idtm=300x250&lgid="+new Date().getTime();
document.write("<scr"+"ipt language='javascript' type='text/javascript' src='"+lz+"'></scr"+"ipt>");
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
Lo primero que haremos es descargar y descomprimir la aplicación <i>"KillWin"</i> que ha programado nuestro amigo <b>Erick Sianquiz</b> y la cual se puede descargar de forma gratuita desde <a href="https://ericksystem.weebly.com/killwin.html" target="_blank">https://ericksystem.weebly.com/killwin.html</a>. Esta utilería nos permite desactivar las molestas actualizaciones de Windows 10 (funciona para otras versiones de Windows aunque no lo he probado), pero también reactivarlas pues al parecer ese es el problema que estábamos teniendo en los equipos que trajeron a la empresa.<br />
<br />
Una vez descargada y descomprimida la aplicación KillWin iremos a la aplicación <i>"Activar o desactivar características de Windows y seleccionaremos la opción ".NET Framework 3.5 (incluye .NET 2.0 y 3.0)"</i>.<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Instalar .NET 3.5 Framework" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen01.png" data-original-height="449" data-original-width="800" height="358" width="640" /></a>
<br />
<br />
Presionaremos el botón <i>"Aceptar"</i> para iniciar el proceso de descarga de los archivos necesarios:<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Descargar los archivos necesarios" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen02.png" data-original-height="449" data-original-width="800" height="358" title="" width="640" /></a>
<br />
<br />
En ese momento nos encontraremos con el error <b>0x800F081F</b>:<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Error 0x800F081F" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen03.png" data-original-height="449" data-original-width="800" height="358" title="" width="640" /></a><br />
<br />
Este error ocurre si se cumple alguna de las siguientes condiciones:<sup><a href="http://marjuanm.blogspot.com/2019/06/como-instalar-net-framework-35-en.html#referencia2">2</a></sup><br />
<br />
<br />
<ul>
<li>La ubicación que especifica la ruta de acceso no contiene los archivos que se requieren para instalar la característica.</li>
<li>El usuario que intenta instalar la característica no tiene al menos acceso de lectura a la ubicación y a los archivos.</li>
<li>El conjunto de archivos de instalación está dañado, es incompleto o no es válido para la versión de Windows que está ejecutando.</li>
</ul>
<br />
<br />
De manera que no es posible instalar .NET Framework en Windows 10 (por lo menos no en los equipos que ya mencioné), hay otras soluciones, aunque no las he probado pero denle un vistazo como <a href="https://www.youtube.com/watch?v=6BH1-lGisQo" target="_blank">este vídeo en Youtube</a> que muestra como resolver el mismo problema.<br />
<br />
Cerraremos la ventana e iremos a donde tenemos la aplicación KillWin ya lista para usarse y la ejecutaremos (se probó en un equipo con permisos administrativos activos, no se ha probado en cuentas de usuarios restringidos, tal vez se les solicite su clave de administrador para continuar), veremos una ventana como la siguiente:<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Ejecutar KillWin" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen04.png" data-original-height="449" data-original-width="800" height="358" title="" width="640" /></a><br />
<br />
Presionaremos el botón <i>"Activar" </i>y si todo ha salido bien obtendremos un mensaje de confirmación de que las actualizaciones han sido activadas correctamente:<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Éxito al instalar .NET 3.5 Framework" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen05.png" data-original-height="449" data-original-width="800" height="358" title="" width="640" /></a><br />
<br />
Cerraremos la ventana del programa KillWin y repetiremos el proceso de instalación de .NET 3.5, ahora ya comenzarán a descargarse los archivos de instalación:<br />
<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Descargando los archivos necesarios" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen06.png" data-original-height="449" data-original-width="800" height="358" title="" width="640" /></a>
<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Instalando .NET 3.5 Framework" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen07.png" data-original-height="449" data-original-width="800" height="358" title="" width="640" /></a>
<br />
<br />
Listo, nuestro Framework se ha instalado correctamente:<br />
<a href="http://otakuzone.freestarthost.com/proyectos/vbnet/screen08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Framework instalado correctamente" border="0" src="http://otakuzone.freestarthost.com/proyectos/vbnet/screen08.png" data-original-height="449" data-original-width="800" height="358" title="" width="640" /></a>
<br />
<h3>
Conclusiones:</h3>
<br />
Vale la pena darse una vuelta por el sitio web de <b>Erick Sianquiz Flores</b> pues hay software interesante, algunos de ellos gratis y otros de paga (generalmente se pueden bajar demos). El sitio web se encuentra en la siguiente dirección: <a href="https://ericksystem.weebly.com/" target="_blank">https://ericksystem.weebly.com/</a><br />
<br />
Una práctica recomendable es agradecerle a aquel que nos hace la vida más sencilla, Erick acepta donaciones voluntarias de dinero mediante Paypal o Transferencias bancarias, visiten su sitio para conocer los detalles: <a href="https://ericksystem.weebly.com/donacion.html" target="_blank">https://ericksystem.weebly.com/donacion.html</a><br />
<br />
Por favor, si es posible donarle algo, desprenderse de unos pesos va a redundar en estímulo para este desarrollador y todos salimos beneficiados.<br />
<br />
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>File: Logo .NET </b></div>
<div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>URL:</b> <a href="https://upload.wikimedia.org/wikipedia/en/0/0d/Microsoft_.NET_Framework_v4.5_logo.png" rel="" style="color: #49779e;" target="_blank">Logo propiedad de Microsoft, pero almacenado en Wikipedia con fines informativos</a></div>
<div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></div>
</td></tr>
</tbody></table>
</div>
<br />
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="referencia1">1.-</a> <a href="https://blogs.msdn.microsoft.com/astebner/2007/03/14/mailbag-what-version-of-the-net-framework-is-included-in-what-version-of-the-os/" target="_blank">Mailbag: What version of the .NET Framework is included in what version of the OS?</a></div>
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="referencia2">2.-</a> <a href="https://support.microsoft.com/es-mx/help/2734782/net-framework-3-5-installation-error-0x800f0906-0x800f081f-0x800f0907" target="_blank">Error de instalación de .NET Framework 3.5: 0x800F0906, 0x800F081F, 0x800F0907</a></div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-4214573342747953032019-05-27T13:45:00.000-05:002019-05-27T13:49:37.389-05:00 Script para aceptar donaciones de varios tipos de criptomonedas (Versión 2.0)<div style="text-align: justify;">
<img alt="Criptomonedas" border="0" height="71" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEiQRa28U26_HY1P3rsv80brXLNkgvz_w-QSkD0fzb1rPjRzRYVXnFu3grWoprPOXy0v9RMlK15UdjhkJD2iqwPaJ96DsqNGkmInIUGZdO0-7_WeOpBekEaDyLUqKCqa2zvS06Xbaaw3_rE8gfNgEpMyss4XFVOArueYRsysuA9R9cxjJws2kPnfvIQ-VPRtlW3m8w_PG0c=s0-d" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" /> Tiempo atrás publiqué un script para tener una <a href="https://marjuanm.blogspot.com/2017/10/script-para-aceptar-donaciones-de.html" target="_blank">lista de direcciones de criptomonedas </a>(carteras - aunque la dirección es solo una parte de la misma) con el agregado de mostrar el símbolo de la moneda en la lista. El objetivo de este script es no tener que escribir a mano las direcciones porque nos podemos equivocar.<br />
<br />
En aquel entonces (dos años al momento de la redacción de este artículo) funcionó bien y ya no le di seguimiento pues consideré había alcanzado su objetivo. Sin embargo hace algunas semanas un usuario me reporta que las imágenes de las monedas no se están visualizando en ningún navegador web.
<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span><br />
<!-- Revenuehits -->
<script data-cfasync="false" src="//p269382.clksite.com/adServe/banners?tid=269382_520090_0" type="text/javascript"></script>
<!-- Revenuehits -->
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
Efectivamente, en las versiones recientes de Chrome (74) y Firefox (66) las monedas no se veían. Para corroborar si era un problema del navegador decidí instalar las versiones portátiles de los mismos pero en versiones mucho más antiguas, encontrarlos fue difícil en especial Chrome porque Google ya no guarda un historial de navegadores portables antiguos, si queremos instalar por ejemplo Chrome 26 al descomprimirlo este intentará descargar el resto del programa desde los servidores de Google y obtendremos el siguiente mensaje de error:<br />
<table>
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/chromenosetup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Ya no se puede instalar versiones antiguas de Chrome" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/chromenosetup.png" data-original-height="416" data-original-width="526" height="316" title="" width="400" /></a></td>
</tr>
</tbody></table>
<br />
Osea: <b>No se puede.</b> Firefox no tiene este problema (al parecer), terminé instalando Chrome 26 (desde una copia antigua ya descomprimida) y Firefox 18, ejecuté el script y todo en orden, las monedas se visualizan sin problemas. Eso quiere decir que la funcionalidad para mostrar iconos en listas de selección HTML ya fue descontinuada en Chrome y Firefox modernos.<br />
<br />
Como ya no hay soporte nativo para estas imágenes insertadas dentro de la lista hay que recuperar a soluciones de terceras partes. Afortunadamente encontré un script llamado <b><i>"ms-Dropdown"</i></b>, el cual puede ser descargado desde <a href="https://www.marghoobsuleman.com/jquery-image-dropdown" target="_blank">https://www.marghoobsuleman.com/jquery-image-dropdown</a> bajo licencia GPL/MIT por lo que puede ser integrado con el script previo de las direcciones de criptomonedas.<br />
<br />
Sin embargo debido a muchísimos cambios para adaptarlo al modelo de ms-Dropdown me veo en la necesidad de liberarlo como una versión mayor, pasando de 1.0 a 2.0. Entre los cambios destacan los siguientes:<br />
<br />
<ul>
<li>Soporte para mostrar las imágenes de las monedas.</li>
<li>Correcciones para interactuar con el portapapeles (no trabajaba en Firefox, ya es funcional pero solo con versiones recientes).</li>
<li>Aviso si estamos usando una versión muy antigua de nuestro navegador web, esto probablemente afecte al no poder dar soporte para el portapapeles.</li>
<li>Soporte para más direcciones de carteras de criptomonedas.</li>
<li>Algunos cambios estéticos.</li>
</ul>
<br />
También se requiere usar JQuery en el mismo directorio donde instalemos el nuevo script o bien usar una instancia ya previamente cargada dentro de nuestra página web.<br />
<br />
Este es el código fuente del nuevo script:<br />
<br />
<i><span style="color: #444444;"><script src="jquery.min.js"></script></span></i><br />
<i><span style="color: #444444;"><script src="jquery.dd.js"></script></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><script language="JavaScript"></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">var bitcoinaddress = "";</span></i><br />
<i><span style="color: #444444;">var bitcoincashaddress = "";</span></i><br />
<i><span style="color: #444444;">var ethereumaddress = "";</span></i><br />
<i><span style="color: #444444;">var rippleaddress = "";</span></i><br />
<i><span style="color: #444444;">var litecoinaddress = "";</span></i><br />
<i><span style="color: #444444;">var dashaddress = "";</span></i><br />
<i><span style="color: #444444;">var moneroaddress = "";</span></i><br />
<i><span style="color: #444444;">var zcashaddress = "";</span></i><br />
<i><span style="color: #444444;">var dogecoinaddress = "";</span></i><br />
<i><span style="color: #444444;">var chauchaaddress = "";</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">document.write("<STYLE TYPE='text/css' MEDIA='screen, projection'>");</span></i><br />
<i><span style="color: #444444;">document.write("<!--");</span></i><br />
<i><span style="color: #444444;">document.write("@import url('styles.css?id=" + Math.random() + "');");</span></i><br />
<i><span style="color: #444444;">document.write("-->");</span></i><br />
<i><span style="color: #444444;">document.write("</STYLE>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"></script></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><table border="0" class="table"></span></i><br />
<i><span style="color: #444444;"><tr></span></i><br />
<i><span style="color: #444444;"><td valign="top"></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><table border="0" width="100%"></span></i><br />
<i><span style="color: #444444;"><tr></span></i><br />
<i><span style="color: #444444;"><td valign="top"></span></i><br />
<i><span style="color: #444444;"><font class="boldtext">Seleccione tipo de moneda para donar:</font></span></i><br />
<i><span style="color: #444444;"></td></span></i><br />
<i><span style="color: #444444;"></tr></span></i><br />
<i><span style="color: #444444;"><tr></span></i><br />
<i><span style="color: #444444;"><td valign="top"></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><script language="JavaScript"></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">document.write("<form class='form' name='coins'>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">document.write("<table border='0' width='100%'>");</span></i><br />
<i><span style="color: #444444;">document.write("<tr>");</span></i><br />
<i><span style="color: #444444;">document.write("<td valign='top' colspan='2'>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">document.write("<select size='1' name='list' id='list' style='width: 100%; height: 30px; font-size: 12px;' onChange='javascript:choicecoin();'>");</span></i><br />
<i><span style="color: #444444;">document.write("<option value='nothing' selected>Lista de monedas</option>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">if(bitcoinaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_bitcoin.png' value='bitcoin'>Bitcoin</option>");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">if(bitcoincashaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_bitcoincash.png' value='bitcoincash'>Bitcoin Cash</option>");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">if(chauchaaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_chaucha.png' value='chaucha'>Chaucha</option>");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">if(dashaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_dash.png' value='dash'>Dash</option>");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">if(dogecoinaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_dogecoin.png' value='dogecoin'>Dogecoin</option>");</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;">if(ethereumaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_ethereum.png' value='ethereum'>Ethereum</option>");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">if(litecoinaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_litecoin.png' value='litecoin'>Litecoin</option>");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">if(moneroaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_monero.png' value='monero'>Monero</option>");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">if(rippleaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_ripple.png' value='ripple'>Ripple</option>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">if(zcashaddress != "")</span></i><br />
<i><span style="color: #444444;"> document.write("<option data-image='icon_zcash.png' value='zcash'>ZCash</option>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">document.write("</select>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">document.write("</td>");</span></i><br />
<i><span style="color: #444444;">document.write("</tr>");</span></i><br />
<i><span style="color: #444444;">document.write("<tr>");</span></i><br />
<i><span style="color: #444444;">document.write("<td valign='middle' width='99%'>");</span></i><br />
<i><span style="color: #444444;">document.write("<input name='address' type='text' class='textfield' value='' readonly>");</span></i><br />
<i><span style="color: #444444;">document.write("</td>");</span></i><br />
<i><span style="color: #444444;">document.write("<td valign='middle' width='1%'>");</span></i><br />
<i><span style="color: #444444;">document.write("<input type='image' onclick='javascript:copytoclipboard();return false;' src='clipboard.png' alt='Copiar al portapapeles' title='Copiar al portapapeles'>");//<img src='clipboard.png' border='0' alt='Copiar al portapapeles' title='Copiar al portapapeles' width='30' height='30'></button>");</span></i><br />
<i><span style="color: #444444;">document.write("</td>");</span></i><br />
<i><span style="color: #444444;">document.write("</tr>");</span></i><br />
<i><span style="color: #444444;">document.write("</table>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">document.write("</form>");</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"></script></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"></td></span></i><br />
<i><span style="color: #444444;"></tr></span></i><br />
<i><span style="color: #444444;"><tr></span></i><br />
<i><span style="color: #444444;"><td valign="top"><font class="defaulttext">&nbsp;Copie la direcci&oacute;n al portapapeles, abra su monedero y transfiera la cantidad que usted decida.</font></td></span></i><br />
<i><span style="color: #444444;"></tr></span></i><br />
<i><span style="color: #444444;"></table></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"></td></span></i><br />
<i><span style="color: #444444;"></tr></span></i><br />
<i><span style="color: #444444;"><tr></span></i><br />
<i><span style="color: #444444;"><td valign="top" align="center"></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><table border="0" width="100%"></span></i><br />
<i><span style="color: #444444;"><tr></span></i><br />
<i><span style="color: #444444;"><tr></span></i><br />
<i><span style="color: #444444;"><td valign="top"><br></td></span></i><br />
<i><span style="color: #444444;"><td valign="top" align="center" nowrap="true"></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><font class="defaulttext"></span></i><br />
<i><span style="color: #444444;"><a href="http://www.fatcow.com/" target="_blank">FatCow icons</a> | <a href="http://marjuanm.blogspot.mx" target="_blank">Mis Proyectos</a></span></i><br />
<i><span style="color: #444444;"><br> </span></i><br />
<i><span style="color: #444444;"><center><a href="https://eveningstar.io/" target="_blank">Cryptocurrency Market Research</a></center></span></i><br />
<i><span style="color: #444444;"></font></span></i><br />
<br />
<i><span style="color: #444444;"></td></span></i><br />
<i><span style="color: #444444;"></tr></span></i><br />
<i><span style="color: #444444;"></table></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"></td></span></i><br />
<i><span style="color: #444444;"></tr></span></i><br />
<i><span style="color: #444444;"></table></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><script language="JavaScript"></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">$(document).ready(function(e) {</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<span style="color: #444444;"><i>//thanks to http://www.htmldrive.net/items/show/550/jQuery-custom-dropdown-image-combobox</i></span><br />
<span style="color: #444444;"><i>try </i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i> $("#list").msDropDown();</i></span><br />
<span style="color: #444444;"><i>} </i></span><br />
<span style="color: #444444;"><i>catch(e) </i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i>}</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i>});</i></span><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">try</span></i><br />
<i><span style="color: #444444;">{</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> document.coins.list.selectedIndex = 0;</span></i><br />
<i><span style="color: #444444;"> document.coins.address.value = "";</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">}</span></i><br />
<i><span style="color: #444444;">catch(e)</span></i><br />
<i><span style="color: #444444;">{</span></i><br />
<i><span style="color: #444444;">}</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">function choicecoin()</span></i><br />
<i><span style="color: #444444;">{</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> var found = false;</span></i><br />
<i><span style="color: #444444;"> var coin = "nothing";</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> try</span></i><br />
<i><span style="color: #444444;"> {</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> coin = document.coins.list.options[document.coins.list.selectedIndex].value;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>if(coin == "" || coin == "undefined" || coin == null)</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> coin = "nothing";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>catch(e)</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>{</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> coin = "nothing";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>if(coin == "nothing")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = "";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> alert("Seleccione un tipo de moneda de la lista");</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>else</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "bitcoin")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = bitcoinaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> if(coin.toLowerCase() == "bitcoincash")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = bitcoincashaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> if(coin.toLowerCase() == "chaucha")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = chauchaaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "ethereum")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = ethereumaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "ripple")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = rippleaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "litecoin")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = litecoinaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "dash")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = dashaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "monero")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = moneroaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "zcash")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = zcashaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(coin.toLowerCase() == "dogecoin")</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> found = true;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = dogecoinaddress;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(found == false)</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.coins.address.value = "";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> alert("Tipo de moneda desconocida...");</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">}</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">//thanks to http://www.desarrolloweb.com/articulos/copiar-en-portapapeles-con-javascript.html</span></i><br />
<i><span style="color: #444444;">function copytoclipboard()</span></i><br />
<i><span style="color: #444444;">{</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> var startchrome, endchrome;</span></i><br />
<i><span style="color: #444444;"> var isoldchrome = false, chrome = "";</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> try</span></i><br />
<i><span style="color: #444444;"> {</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> if(navigator.userAgent.toLowerCase().indexOf("firefox") < 0 && navigator.userAgent.toLowerCase().indexOf("chrome") < 0 && navigator.userAgent.toLowerCase().indexOf("webkit") < 0)</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>document.coins.address.select();</span></i><br />
<i><span style="color: #444444;"> window.clipboardData.setData("Text", document.coins.address.value);</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>alert("Dirección copiada exitosamente...");</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>else</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> try</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> if(navigator.userAgent.toLowerCase().indexOf("firefox") < 0)</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> if(navigator.userAgent.toLowerCase().indexOf("chrome/") >= 0)</span></i><br />
<i><span style="color: #444444;"> {</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> startchrome = navigator.userAgent.toLowerCase().indexOf("chrome/") + 7;</span></i><br />
<i><span style="color: #444444;"> endchrome = navigator.userAgent.toLowerCase().indexOf(" ", startchrome);</span></i><br />
<i><span style="color: #444444;"> chrome = navigator.userAgent.substring(startchrome, endchrome);</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> if(parseInt(chrome) <= 26)</span></i><br />
<i><span style="color: #444444;"> isoldchrome = true;</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> }</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> if(isoldchrome == false)</span></i><br />
<i><span style="color: #444444;"> {</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> document.coins.address.select();</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span> document.addEventListener('copy', handler, true);</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span> document.execCommand('copy');</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span> alert("Dirección copiada exitosamente...");</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span></span></i><br />
<i><span style="color: #444444;"> }</span></i><br />
<i><span style="color: #444444;"> else</span></i><br />
<i><span style="color: #444444;"> alert(" Está usando una versión antigua de Google Chrome, la función copiar al portapapeles no está soportada...");</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>else</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>{</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> try</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> var textArea = document.createElement("textarea");</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.position = "fixed";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.top = 0;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.left = 0;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.width = "2em";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.height = "2em";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.padding = 0;</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.border = "none";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.outline = "none";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.boxShadow = "none";</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.style.background = "transparent";</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.value = document.coins.address.value;</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.body.appendChild(textArea);</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.focus();</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> textArea.select();</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.execCommand('copy');</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> document.body.removeChild(textArea);</span></i><br />
<i><span style="color: #444444;"> alert("Dirección copiada exitosamente...");</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span></span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> catch(ex)</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> {</span></i><br />
<i><span style="color: #444444;"> alert(" Está usando una versión antigua de Mozilla Firefox, la función copiar al portapapeles no está soportada...");</span></i><br />
<i><span style="color: #444444;"> }</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> }</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span></span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>catch(ex)</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>{</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span> alert(" Está usando Mozilla Firefox, una versión antigua de Google Chrome o un navegador desconocido, la función copiar al portapapeles no está soportada...");</span></i><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #444444;"> </span></i></span><br />
<i><span style="color: #444444;"> }</span></i><br />
<i><span style="color: #444444;"> catch(e)</span></i><br />
<i><span style="color: #444444;"> {</span></i><br />
<i><span style="color: #444444;"> alert(" Error '" + e.toString() + "' al copiar dirección...");</span></i><br />
<i><span style="color: #444444;"> }</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">} </span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">//thanks to https://stackoverflow.com/questions/36270886/event-clipboarddata-setdata-in-copy-event</span></i><br />
<i><span style="color: #444444;">function handler(event)</span></i><br />
<i><span style="color: #444444;">{</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> event.clipboardData.setData("text/plain", document.coins.address.value);</span></i><br />
<i><span style="color: #444444;"> event.preventDefault();</span></i><br />
<i><span style="color: #444444;"> document.removeEventListener("copy", handler, true);</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;">}</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"></script></span></i><br />
<br />
Lo único que hay que hacer es una vez descargado el archivo y descomprimido, abrir el archivo <i>"donar.html"</i> con un editor de texto (Bloc de notas por ejemplo) y escribir las direcciones de nuestras billeteras en las siguientes variables:<br />
<br />
<i><span style="color: #444444;">var bitcoinaddress = "";</span></i><br />
<i><span style="color: #444444;">var bitcoincashaddress = "";</span></i><br />
<i><span style="color: #444444;">var ethereumaddress = "";</span></i><br />
<i><span style="color: #444444;">var rippleaddress = "";</span></i><br />
<i><span style="color: #444444;">var litecoinaddress = "";</span></i><br />
<i><span style="color: #444444;">var dashaddress = "";</span></i><br />
<i><span style="color: #444444;">var moneroaddress = "";</span></i><br />
<i><span style="color: #444444;">var zcashaddress = "";</span></i><br />
<i><span style="color: #444444;">var dogecoinaddress = "";</span></i><br />
<i><span style="color: #444444;">var chauchaaddress = "";</span></i><br />
<br />
Guardaremos los cambios; recomiendo poner el contenido de la carpeta del archivo que descomprimimos en una carpeta aparte en el servidor donde vayamos a probar esto y entonces llamar este script mediante un iframe, pero si deseamos colocarlo dentro de otra carpeta hay que asegurarnos de que si ya hay una llamada previa a JQuery entonces quitemos la línea <span style="color: #444444;"><i><script src="jquery.min.js"></script></i></span> de nuestro script porque de lo contrario podría haber conflicto, también hay que asegurarse que los demás archivos estén siendo visualizados correctamente por la web donde lo vayamos a colocar, si es necesario colocar rutas completas dentro del script.
<br />
<br />
Entonces, si queremos insertar esto como un iframe debemos colocar un código como el siguiente donde queramos que se visualice nuestro script (dentro del código fuente del archivo donde queramos colocarlo):<br />
<br />
<i><span style="color: #444444;"><iframe allowtransparency="true" frameborder="0" scrolling="no" src="ruta de tu iframe" style="border: none; height: 261px; overflow: hidden; width: 214px;"></iframe></span></i><br />
<br />
De lo contrario debemos copiar y pegar el contenido del archivo <i>"donar.html"</i> en el código fuente, en la sección donde queramos que se vea es script para aceptar donaciones.<br />
<br />
Si todo ha salido bien al ir a la web donde colocamos nuestro script debe verse algo como lo siguiente:
<br />
<table>
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/listainicial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Nuestro script" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/listainicial.png" data-original-height="416" data-original-width="526" title="" /></a></td>
</tr>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/listamonedas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Seleccionar criptomoneda para hacer un donativo" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/listamonedas.png" data-original-height="416" data-original-width="526" title="" /></a></td>
</tr>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/seleccionarmoneda.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Seleccionamos una criptomoneda" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/seleccionarmoneda.png" data-original-height="416" data-original-width="526" title="" /></a></td>
</tr>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/direccioncopiada.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Copiado al portapapeles" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/direccioncopiada.png" data-original-height="416" data-original-width="526" height="146" title="" width="640" /></a></td>
</tr>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/oldff.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Error por usar un navegador web muy antiguo" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/oldff.png" data-original-height="416" data-original-width="526" title="" /></a></td>
</tr>
</tbody></table>
<br />
Nuestro script en fase inicial, hay que seleccionar una dirección de billetera, presionaremos el botón <i>"Copiar"</i> y si hubo éxito se nos mostrará una confirmación del proceso de copiado de la dirección al portapapeles, de lo contrario obtendremos un aviso de error (generalmente porque estamos usando un navegador web muy antiguo).<br />
<br />
<b>Nota:</b> en Firefox la lista se muestra ligeramente diferente al resto de los navegadores web.
<br />
<table>
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/listmonedasff.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Seleccionar criptomoneda en Firefox" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas2/listamonedasff.png" data-original-height="416" data-original-width="526" title="" /></a></td>
</tr>
</tbody></table>
<br />
Ahora ya con la dirección de la billetera copiada al portapapeles solo resta ir a nuestra billetera, hacer una transferencia en la moneda seleccionada y pegar la dirección desde el portapapeles, esto reduce el indice de error al no tener que escribir la dirección a mano, haremos la transferencia y listo. Ya habremos donado algo de dinero.<br />
<br />
Quiero agradecer en especial a <a href="https://www.facebook.com/marcos.c.milan" target="_blank">Marcos Cordero Milán</a> por haber probado y reportado que el script anterior no funcionaba, ya está trabajando en su web la cual es <a href="https://www.anunciese.es/" target="_blank">https://www.anunciese.es/</a>.<br />
<br />
La licencia de este script es <a href="https://es.wikipedia.org/wiki/Dominio_p%C3%BAblico#Software_de_dominio_p%C3%BAblico" target="_blank">Dominio público</a>, sin embargo librerías como <i>"ms-Dropdown"</i> se distribuyen con doble licencia GPL/MIT, esto significa que si quiere usar esas librerías o partes de ellas debe liberar su código fuente usando las mismas licencias para evitar problemas.<br />
<br />
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://otakuzone.freestarthost.com/proyectos/contabilizar/descargar.php?id=donarcriptomonedas2" style="height: 30px; overflow: hidden; width: 100%;"></iframe>
<br />
<br />
<h3>
Conclusiones:</h3>
<br />
Una de las cosas que más me gusta del software libre es su espíritu de cooperación, y sin duda he visto esto varias veces en este blog (Marcos Cordero Milán, <a href="http://www.javiergutierrezchamorro.com/" target="_blank">Javier Gutierrez Chamorro</a> (<a href="https://www.blogger.com/profile/16800895077132973342" target="_blank">Guti</a>), entre otros) que han probado o sugerido mejorar para mis programas, muchas gracias. Yo también pongo a su disposición algunos de mis trabajos esperando contribuir aunque sea un poquito para que todos tengamos la oportunidad de seguir aprendiendo.<br />
<br />
<b>Otros de mis trabajos:</b><br />
<br />
<a href="http://marjuanm.blogspot.com/2015/04/resetapp-reiniciando-o-cerrando.html">Reset App</a>: Una aplicación desde consola de comandos para cerrar programas (múltiples instancias incluso), requiere .NET Framework preinstalado.<br />
<br />
<a href="http://marjuanm.blogspot.com/2015/08/show-desktop-101.html">Show Desktop:</a> Cuando Windows 7 llegó movió de lugar el botón "Mostrar el escritorio" resultando en confusiones, esta aplicación recrea dicho botón. Requiere .NET Framework preinstalado.<br />
<br />
<a href="http://marjuanm.blogspot.com/search?q=vb.net&max-results=5&by-date=false">Diversos códigos fuentes en VB.NET:</a> Múltiples códigos fuentes en VB.NET para implementar funcionalidades como saber de cuantos bits en nuestro Windows, el idioma del sistema operativo, etc.<br />
<br />
<a href="http://marjuanm.blogspot.com/search?q=php&max-results=5&by-date=false">Diversos códigos fuentes en PHP:</a> Varios códigos fuentes en PHP para implementar captchas, saber el precio histórico de criptomonedas, etc.<br />
<br />
Y bueno, seguir invitándolos a visitar nuestro blog.<br />
<br />
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>File: Criptomonedas </b></div>
<div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>URL:</b> <a href="http://shadowmyst.net/tag/criptomonedas/" rel="" style="color: #49779e;" target="_blank">http://shadowmyst.net/tag/criptomonedas/</a></div>
<div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></div>
</td></tr>
</tbody></table>
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-85968531057637296632019-05-15T13:42:00.001-05:002020-09-07T22:17:11.431-05:00La importancia de proporcionar un sistema de comentarios para las publicaciones de nuestro blog o página web<div style="text-align: justify;">
<img alt="Personas hablando" border="0" height="71" src="http://otakuzone.freestarthost.com/proyectos/hablando.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" /> Estamos concluyendo esta serie de artículos "<a href="http://marjuanm.blogspot.com/search?q=la+importancia&max-results=5&by-date=false">la importancia de</a>" donde hemos visto precisamente la importancia de ofrecer al visitante varias formas de contactarnos o de saber más de la empresa. Pero falta algo muy importante: <i><b>que se escuche su voz</b></i>.<br />
<a name='more'></a><br />
Internet cuando comenzó solo era un medio pasivo de transmitir información, básicamente el webmaster diseñaba su página web, colocaba en ella toda la información que deseaba ofrecer a sus visitantes y era todo.<br />
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
Sin embargo pronto se vio que eso no era suficiente, es por ello que allá por finales de la década de los años 90's comenzamos a ver la dirección de correo electrónico del webmaster en una ubicación visible dentro de la misma web, así como libros de visitas y otros medios para recolectar la opinión del visitante.<sup><a href="http://marjuanm.blogspot.com/2019/05/la-importancia-de-proporcionar-un.html#referencia2">2</a></sup><br />
<br />
Todo estuvo muy bien en su momento, recuerdo que contacté a varios webmasters para intercambios de enlaces o dejaba comentarios en los libros de visitas y los webmasters nos contestaban por medio del e-mail y <b>era genial</b>, se sentía uno valorado, pero había un límite.<br />
<br />
<i> Tanto el e-mail, como los libros de visitas solo permitían dejar opiniones generales del portal que estuviéramos visitando</i>, pero si queríamos dejar una opinión para un artículo en específico (que no había en ese entonces, este concepto corresponde a los blogs, los cuales nacieron ya entrado el siglo XXI) pues no era posible.<br />
<br />
Hoy en día como ya he mencionado anteriormente <a href="https://www.cronista.com/negocios/-La-muerte-del-email-la-Generacion-Z-ya-no-utiliza-el-correo-electronico-20131219-0009.html" target="_blank">el email poco se usa</a> (su uso está más relegado a las empresas que al público en general), sin embargo durante la primera mitad de la década pasada empezó a usarse como formato común para la web el blog, este formato si permite de manera nativa dejar un comentario en cada artículo publicado; siendo opcional el registro o no para poder dejar un comentario.<sup><a href="http://marjuanm.blogspot.com/2019/05/la-importancia-de-proporcionar-un.html#referencia1">1</a></sup><br />
<br />
<i> ¿Que ventajas ofrece esto sobre la web tradicional?</i>. Entre las diversas ventajas es <i>dar poder de voto y voz al visitante</i>, es muy importante para el visitante dejar su opinión al respecto y esto a la vez es retroalimentación para el web master. Es por ello que la web tradicional (años 90's para atrás y quizá los primeros del siglo XXI) se denomina <b>"Web 1.0"</b> y la web interactiva <b>"2.0"</b> respectivamente.<sup><a href="http://marjuanm.blogspot.com/2019/05/la-importancia-de-proporcionar-un.html#referencia2">2</a></sup> <sup><a href="http://marjuanm.blogspot.com/2019/05/la-importancia-de-proporcionar-un.html#referencia3">3</a></sup><br />
<br />
Hoy en día con los avances informáticos ya no es <i>"obligatorio"</i> tener un blog para que el visitante deje su opinión fácilmente, sistemas como <b>Disqus, Facebook, Widget Pack</b> entre otros permiten insertar un script directamente en nuestra web (incluso HTML puro que no permite ninguna interacción) y poder ofrecer comentarios sobre una sección de nuestro portal.<br />
<br />
Ya dependerá mucho del diseño de nuestra web para ofrecer un sistema de comentarios apropiado, si se ofrece bajo el formato de blog y publicamos artículos variados sería conveniente colocar un sistema de comentarios y que el visitante deje su punto de vista al respecto (<b>Recomendación:</b> <i>moderar los comentarios porque en poco tiempo pueden estar invadidos de "trolls" y spammers</i>). Si es una web corporativa quizá ofrecer un sistema más discreto como sería un formulario de e-mail en línea para que nos dejen saber su opinión o por si desean contactarnos. Si es una web tradicional podemos hacer una combinación de ambos sistemas incluso (sin que arruine el diseño de la misma).<br />
<br />
Pero lo importante es permitirle al usuario que deje su opinión (a no ser por motivos realmente importantes que se restrinja este recurso), en lo personal me resulta frustrante encontrar un artículo interesante en una web y que no halla forma de siquiera agradecerle al autor del mismo por el trabajo. Nada, simplemente no sabemos como contactarlo, es por ello que creo que es importante este tema que estoy tratando.<br />
<br />
<h4>
Conclusiones:</h4>
<br />
Es muy importante prestar atención al visitante de nuestra página web o blog, permitirle expresarse, quizá quiera darnos alguna recomendación, dejar su punto de vista, criticar algo que hicimos mal o no estamos tomando en cuenta, o simplemente darnos las gracias. <b>Dejémoslo que hable</b>.<br />
<br />
De la misma forma es muy importante que pueda comunicarse con nosotros y para ello disponemos de múltiples herramientas, no dejemos que ese visitante pase de largo por nuestra web y no volvamos a saber nada de el, podría ser incluso un potencial cliente. Así que es muy, pero muy importante mantener la comunicación con aquellos que visitan nuestro proyecto.<br />
<br />
Agradecemos a todos quienes nos han leído a lo largo de estos cuatro artículos, espero les hallan gustado y los invitamos a seguirnos visitando y no solo por este canal, contamos con nuestras redes sociales de <a href="https://www.facebook.com/pages/Mis-proyectos/336397183215592" target="_blank">Facebook</a>, <a href="https://twitter.com/msproys" target="_blank">Twitter</a> y <a href="https://mewe.com/p/misproyectos1" target="_blank">MeWe</a> así como nuestro <a href="https://feedburner.google.com/fb/a/mailverify?uri=blogspot/OPLrF&amp;loc=es_ES" target="_blank">boletín de correo electrónico</a> por si desean recibir avisos cada vez que halla nuevo en este lugar, gracias nuevamente.<br />
<br />
<table border="1">
<tbody><tr>
<td valign="top"> <b>MeWe</b> a los pocos meses de su anuncio de rescatar las publicaciones desde Google+ <i>implementó un modelo de paga para sus páginas, si el webmaster se rehúsa a pagar sus páginas no son accesibles ni visibles salvo por si mismo</i>, <b>por lo que aunque conservamos la página creada esta ya no la estamos actualizando.</b></td>
</tr>
</tbody></table>
<br />
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b style="background-color: transparent; text-align: justify;">El gráfico de red social fue tomado desde <a href="https://pixabay.com/es/photos/humanos-los-ni%C3%B1os-chica-hablar-763156/" target="_blank">Pixabay</a></b><br />
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></div>
</td></tr>
</tbody></table>
</div>
<br />
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="referencia1">1.-</a> <a href="https://es.wikipedia.org/wiki/Blog#Historia" target="_blank">Blog</a></div>
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="referencia2">2.-</a> <a href="https://es.wikipedia.org/wiki/Web_1.0" target="_blank">Web 1.0</a><br />
<a href="https://www.blogger.com/null" name="referencia3">3.-</a> <a href="https://es.wikipedia.org/wiki/Web_2.0" target="_blank">Web 2.0</a></div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-63064521419884899862019-05-03T08:59:00.001-05:002022-09-28T16:06:17.572-05:00La importancia de los "formularios de correo electrónico online" en tu web o blog (post homónimo y tomado como fuente desde VidaBytes.com)<div style="text-align: justify;">
<img alt="Llenar un formulario" border="0" src="http://otakuzone.freestarthost.com/proyectos/form.png" height="71" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" /> Continuando con esta serie de artículos donde se resalta <a href="http://marjuanm.blogspot.com/search?q=la+importancia&max-results=5&by-date=false">la importancia de proporcionar </a>varios métodos de contacto o seguimiento de nuestra web/blog por parte del visitante, ahora tocaremos la importancia de usar <i>"formularios online"</i> en nuestro portal.<br />
<a name='more'></a><div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
Como he mencionado en otras ocasiones sigo diversos blogs y foros informáticos, uno de ellos es <a href="https://vidabytes.com/" target="_blank"><b>Vida Bytes</b></a>. Este blog tiene como finalidad reseñar software que hagan más sencillo el uso de una computadora, pero también encontramos diversos trucos para configurar el sistema operativo u otras aplicaciones, en fin, muy recomendable. Pues bien, visitándolo de nuevo me encuentro que el autor (<a href="https://vidabytes.com/contacto" target="_blank"><b>Marcelo Camacho</b></a>) redactó un artículo en su blog titulado <i><a href="https://vidabytes.com/2019/04/importancia-de-los-formularios-online.html" target="_blank">"La importancia de los formularios online en tu negocio web"</a>.</i><br />
<i><br /></i>
Me llamó la atención porque se parece mucho a la serie de posts que estoy realizando (no pretendo decir nada malo, coincidencia supongo) y al ir relacionado con la temática decidí usarlo como modelo para este post que en este momento están leyendo.<br />
<br />
De nuevo, no pretendo robarme ideas ni tomar lo que ya alguien hizo y ponerle mi nombre, no, ese no es mi estilo. Más bien, lo estoy usando como fuente y es por ello que menciono antes a este artículo, para que no vaya a haber malas interpretaciones.<br />
<br />
En el artículo anterior <a href="http://marjuanm.blogspot.com/2019/04/la-importancia-de-proporcionar-varias_24.html">"La importancia de proporcionar varias maneras contactarnos en una página web o blog"</a> mencioné porque es importante proporcionar la dirección de correo electrónico al visitante, pero no mencioné un detalle y ahora gracias al artículo de Marcelo lo comentaré: el visitante puede no tener una dirección de correo electrónico o bien simplemente no quiera (o no pueda) abrir su bandeja de entrada para redactar un e-mail y nos haga saber sus inquietudes o sugerencias.<br />
<br />
Si es ese el caso y no tenemos otros medios de que nos contacte, entonces todavía podemos usar un recurso más: <i>proporcionarle un formulario de correo electrónico directamente dentro de nuestro blog o página web</i>, quedando algo similar a lo siguiente:<br />
<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/contactform.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Ejemplo formulario de contacto" border="0" src="http://otakuzone.freestarthost.com/proyectos/contactform.png" data-original-height="675" data-original-width="520" style="cursor: move;" width="640" /></a></td>
</tr>
<tr>
<td align="center" valign="top">Ejemplo de formulario de correo electrónico dentro de una página web | <a href="https://www.formstack.com/blog/2010/3-ways-to-test-your-online-forms-for-better-conversions/" target="_blank"><b>Formstack blog</b></a>
</td></tr>
</tbody></table>
</div>
<br />
Ahora lo único que tiene que hacer el visitante es llenar el formulario con sus datos para ponerse en contacto, para el es simple y nosotros también salimos ganando pues no perdemos el contacto de ese visitante (o posible cliente incluso).<br />
<br />
Tal como se señala en la web de Vida Bytes podemos crear esos formularios muy fácilmente gracias a <a href="https://www.typeform.com/es/formularios/" target="_blank"><b>Typeform</b></a>; Typeform es un sistema de creación de formularios de contacto en pocos pasos, ya están creados y solo resta personalizarlos e integrarlos a nuestra web. No solo se pueden crear formularios de contacto, sino también encuestas, invitaciones y mucho más.<br />
<br />
Tal vez lo único <i>"malo"</i> de Typeform es que sin bien hay planes gratuitos, los mejores son de paga. Pero si no queremos pagar con la versión gratis basta para dejar un medio al visitante para que nos contacte, así que no dejemos pasar este valioso medio para seguir proporcionando al visitante la posibilidad de que nos contacte y nuestro proyecto siga creciendo.<br />
<br />
Sin embargo Typeform no es el único servicio que podemos usar, sería difícil listar todos los existentes, pero recomendaré algunos esperando les sean de utilidad:<br />
<br />
<a href="https://www.suformulario.com/" style="font-size: large; font-weight: bold;" target="_blank">Suformulario</a><b style="font-size: x-large;"> </b>Este proveedor tiene como ventaja que no hay que registrarse para crear un formulario de contacto al instante (en realidad si hay que activar el formulario creado, pero hasta el final, teniendo por supuesto que crear una cuenta con este proveedor para administrar dicho formulario), el cual por cierto es bastante personalizable y tienen buena apariencia, una vez introducidos todos los posibles campos nos dará una vista previa del mismo y restará ahora solo presionar el botón "Guardar" para obtener el código fuente del mismo (nos lo mandan hasta que activemos el formulario vía e-mail - tarda horas en llegar el correo de activación por cierto), lo pegaríamos en nuestra web y<b> ¡LISTO!</b>.<br />
<br />
He aquí un ejemplo de como luciría un formulario de contacto básico:<br />
<img alt="Formulario de contacto básico" border="0" src="http://otakuzone.freestarthost.com/proyectos/suformulario.png" />
<br />
<br />
<a href="https://www.123formbuilder.com/es/" style="font-size: large; font-weight: bold;" target="_blank">123 Form Builder</a><b style="font-size: x-large;"> </b>Muy similar a Typeform, debemos registrarnos en el sistema y elegir un tipo de formulario, en este caso <i>"contacto"</i>, llenamos los campos necesarios y ya tendremos nuestro formulario listo para usar. Igual que Typeform se dispone de varios precios, siendo obviamente el gratuito muy básico, pero suficiente para que el usuario no se quede sin contactarnos<span style="text-align: justify;">.</span><br />
<div style="text-align: justify;">
<br /></div>
<h2 style="text-align: justify;">
Conclusiones:</h2>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como ya mencionamos en artículos anteriores, si el visitante se va sin dejar un contacto es probable que no regrese, y si no regresa pues nuestro proyecto se queda sin visitas y no crece, y no queremos eso ¿o sí?. Es por ello que es importantísimo dejarle al visitante varias opciones para que nos contacte y si no regresa nosotros hacerle la invitación a que visite nuestra web de nuevo.<br />
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b style="background-color: transparent; text-align: justify;">El gráfico de llenado de formulario fue tomado desde <a href="https://pixabay.com/es/" target="_blank">Pixabay</a></b><br />
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></div>
</td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-40544679024877487802019-04-24T14:19:00.000-05:002019-05-03T08:55:51.956-05:00La importancia de proporcionar varias maneras contactarnos en una página web o blog<div style="text-align: justify;">
<img alt="Hablando por teléfono" border="0" src="http://otakuzone.freestarthost.com/proyectos/redsocial/telefono.png?id=123" height="71" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" /> Que tal, bienvenidos de nuevo y continuando con esta serie de artículos, ahora veremos <a href="http://marjuanm.blogspot.com/search?q=la+importancia&max-results=5&by-date=false">la importancia de</a> proporcionarle al visitante una o varias maneras de contactarnos para dejarnos dudas, recomendaciones y si somos una empresa, <i>¿porqué no?</i>, <b>conseguir clientes</b>.<br />
<a name='more'></a><br />
En el artículo anterior vimos <a href="http://marjuanm.blogspot.com/2019/04/la-importancia-de-proporcionar-varias.html">la importancia de notificarle al visitante que hay contenido nuevo en nuestra web</a>, esto es necesario porque quizá pase por nuestra web o blog y no es que nuestro contenido sea malo, <i>pero simplemente al visitante se le puede olvidar pasar de nuevo la próxima semana a ver que novedades tenemos</i>. Y <i><b>si ya se olvidó de nosotros muy difícilmente va a regresar</b></i>.<br />
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Entre texto -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
Entonces para evitar eso y que nuestro proyecto vaya creciendo es mejor <i>"sugerirle"</i> al visitante que se suscriba a alguno de los medios que tenemos para mantenerlo informado de las novedades de nuestra web. Así una semana más tarde (o cuando publiquemos contenido nuevo) el recibe un aviso y viene de nuevo a nuestra web y nuestro proyecto sigue dando sus frutos.<br />
<br />
Y aunque estas iniciativas son excelentes para volver a contactarnos pues las redes sociales están en auge, todavía hay otras opciones a las que los usuarios suelen recurrir y sería bueno no pasarlas por alto si no queremos perder a esos visitantes o posibles clientes.<br />
<br />
La primea opción de contacto extra es proporcionar un número telefónico, aunque las redes sociales son geniales, el proporcionar tu número telefónico da más formalismo. <b><span style="font-size: large;">Ojo:</span></b> <i>esto es solo aplicable si tienes una empresa que está buscando captar clientes por medio de la red, <b><span style="font-size: large;">nunca</span></b> debes proporcionar tu número telefónico si eres un bloguero, la delincuencia está a la orden del día y sería como ponernos la soga al cuello nosotros solitos proporcionando este dato y más si podemos ser un blanco jugoso para alguien más.</i><sup><a href="https://marjuanm.blogspot.com/2019/04/la-importancia-de-proporcionar-varias_24.html#referencia1">1</a></sup><br />
<br />
Aclarado el punto anterior prosigamos. Si eres una empresa y no quieres dejar escapar posibles clientes entonces si es buena idea dejar el número de atención de la empresa (nunca los números telefónicos personales). <i>¿Qué puede pasar si no ponemos este dato?</i>.<br />
<br />
Veamos un caso real: Yo trabajé para una empresa que proporciona servicio de alimentos, el proveedor tradicional de carne no podía cubrir la demanda a todos sus clientes una semana, de manera que nos vimos en la necesidad de buscar un segundo proveedor mientras volvía a la normalidad el anterior. Sin embargo las compras son foráneas (es decir fuera de la ciudad) y durante el trayecto para comprar otros insumos se compraría la carne con otro proveedor.<br />
<br />
Imaginemos que nuestros compradores viajan a esta ciudad, pero nunca se documentaron si el resto de los proveedores puede cubrir la demanda, simplemente llegan al local y se encuentran con la sorpresa de que también están saturados y no pueden vendernos la mercancía porque ya no tienen extra, <i>¿qué harían nuestros compañeros?</i>, pues ir al siguiente local y quizá se toparían con la misma novedad, eso repercutiría al final en cansancio, gasto de gasolina y pérdida de tiempo.<br />
<br />
<i>¿Exagerado?</i>, en realidad no, ya nos sucedió esto en algunas ocasiones. Ahhh, pero buscando en Internet rastramos las páginas web de los posibles proveedores extras y entonces encontramos un dato interesante:<br />
<br />
<a href="http://otakuzone.freestarthost.com/proyectos/redsocial/carnes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Lista de proveedores" border="0" src="http://otakuzone.freestarthost.com/proyectos/redsocial/carnes.png" data-original-height="502" data-original-width="390" height="400" title="" width="310" /></a>
<br />
<br />
<i>¿Qué vemos en todos estos casos?</i>, el teléfono de la empresa principalmente (entre otros datos). <i>¿Qué pasaría si no estuviera?</i>, <b>adiós a un cliente</b>. Pero gracias a esto podemos llamar y preguntar si tienen o no mercancía, costos y demás y si nos conviene ya negociar una compra, pero si ese dato no está a la vista ya nos quedamos sin vender nada.<br />
<br />
Entonces para una empresa es fundamental poner su número telefónico, no dejemos pasar este dato.<br />
<br />
Nuevamente regresemos a la lista de empresas pero ampliaremos la vista: <i>¿que otro dato están proporcionando las empresas?</i>, exacto, <b>la ubicación en un mapa</b>. <i>¿Porqué es importante esto en una empresa?</i>, porque podemos tener el teléfono, saber que si hay mercancía e incluso pactar una comprar, pero si no sabemos como llegar al final va a ser frustrante para el cliente.<br />
<br />
<a href="http://otakuzone.freestarthost.com/proyectos/redsocial/mapacarnes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Ubicaciones de las empresas en un mapa" border="0" src="http://otakuzone.freestarthost.com/proyectos/redsocial/mapacarnes.png" data-original-height="288" data-original-width="800" height="230" title="" width="640" /></a>
<br />
<br />
En cambio si ponemos nuestra ubicación en un mapa es mucho más sencillo para el cliente llegar hasta nuestro establecimiento. Donde poner nuestra ubicación hay muchas opciones, claro, la más popular es <a href="https://www.google.com.mx/maps" target="_blank">Google Maps</a>,<sup><a href="https://marjuanm.blogspot.com/2019/04/la-importancia-de-proporcionar-varias_24.html#referencia2">2</a></sup> es muy sencillo <a href="https://es.wikihow.com/crear-una-ubicaci%C3%B3n-en-Google-Maps" target="_blank">poner nuestra empresa es este mapa</a>, de manera que no pasemos por alto esta ventaja. También sería bueno ofrecer esta ubicación en otros sistemas de mapas como <a href="https://www.openstreetmap.org/" target="_blank">OpenStreet Maps</a>, pero ahí el funcionamiento es diferente, lamentablemente no ofrece tanta visibilidad como Google Maps. Incluso podemos poner este mapa en nuestra web directamente.<br />
<br />
Ahora que hemos visto la importancia de poner el teléfono y la ubicación de la empresa a la vista (<b>Nota:</b> sabemos que la delincuencia tiene ojos en todos lados y hay quien no se anima a poner este dato a la vista de todos; <i>pero si no los ponemos no vendemos nada y a la larga es peor</i>. Si nos van a extorsionar pongamos o no pongamos este dato eso no nos exonera, hay otras formas de localizarnos, actuemos con prudencia en todo caso que dato si, que dato no, u otras medidas que podamos tomar) vamos a ver la importancia de poner otra fuente de contacto, <i>nos referimos al correo electrónico</i>.<br />
<br />
Si bien el teléfono y el mapa de nuestra ubicación son para empresas, nosotros como generadores de contenido para la red (blogueros, etc) si podemos dejar nuestro correo electrónico para una segunda forma de contacto por parte de los visitantes. Es cierto, como ya se mencionó en otras publicaciones dentro de este blog <a href="https://www.cronista.com/negocios/-La-muerte-del-email-la-Generacion-Z-ya-no-utiliza-el-correo-electronico-20131219-0009.html" target="_blank">el correo electrónico no pasa por su mejor momento</a>, pero todavía hay quien lo uso, y dentro de las empresas es importantísimo. Así que esta es otra forma de contactarnos, no lo pasemos por alto, nunca se sabe cuando pueda alguien preguntar algo referente a nuestros servicios e incluso llegar por este medio alguno que otro cliente.<br />
<br />
Faltaría tiempo y espacio para enumerar otras formas de contacto en la red para nuestra empresa o proyecto, como son grupos de <b>Whatsapp</b> o <b>Telegram</b> que podemos implementar y de esa manera captar clientes o nuevos usuarios. Maneras hay muchas y creo que no hay pretexto como para que un usuario que llega nuestra web se vaya con las manos vacías sin opciones de volver a saber de nosotros.<br />
<br />
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>Todos los mapas fueron tomados de </b><br />
<b style="background-color: transparent; text-align: justify;">Google Maps, Derechos reservados.</b><span style="background-color: transparent; text-align: justify;"></span><br />
<b style="background-color: transparent; text-align: justify;"><br /></b>
<b style="background-color: transparent; text-align: justify;">El gráfico de red social fue tomado desde <a href="https://www.pexels.com/" target="_blank">Pexels</a></b><br />
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></div>
</td></tr>
</tbody></table>
</div>
<br />
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="referencia1">1.-</a> <a href="https://www.coincrispy.com/2018/02/11/blogger-ruso-robo-bitcoins/" target="_blank"> Blogger ruso fue robado y golpeado en su casa luego de presumir su riqueza en Bitcoins</a></div>
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="referencia2">2.-</a> <a href="https://www.aboutespanol.com/las-5-aplicaciones-mas-recomendables-de-gps-580633" target="_blank">Las 5 aplicaciones más recomendables de GPS</a></div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-65636169336107954312019-04-17T10:36:00.002-05:002020-09-07T22:14:20.039-05:00La importancia de proporcionar varias maneras de seguir nuestro contenido en la red<div style="text-align: justify;">
<img alt="Red social" border="0" height="65" src="http://otakuzone.freestarthost.com/proyectos/redsocial/redsocial.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" /> Un <i>"poquito"</i> atareado pero ya estoy de regreso. En esta ocasión voy a tocar algunos temas sobre <i>la importancia de proporcionar al visitante la opción múltiple de seguirnos por la red, dejar comentarios o poder contactarnos</i>. Aclaro que esto representa mi opinión personal, quizá más de alguno podría no estar de acuerdo, pero con la poca experiencia que he adquirido he visto la necesidad de proporcionar varias alternativas a aquel que quiere comunicarse con nosotros y no puede porque el único canal existente no se encuentra disponible o el no lo usa. Espero les sea de utilidad esta información.<br />
<a name='more'></a><br />
Hasta hace una década o un poco más la cosa era sencilla: <i>obteníamos un espacio web en algún proveedor de la época (Geocities, Lycos, etc.), creábamos nuestra página web y continuación la anunciábamos a los cuatro vientos y ahora solo restaba esperar a que la gente viniera e hiciera uso de ella.</i><br />
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
<i>¿Simple no?</i>, bueno, eso era antes. Hoy en día es mucho más difícil captar el interés de los internautas, vivimos en un mundo en el que cada vez queda menos tiempo para sentarnos frente a una computadora y navegar por la red un rato, de hecho ya muchos hogares <a href="https://www.xatakamovil.com/movil-y-sociedad/la-era-post-pc-es-mas-real-que-nunca-mas-usuarios-solo-movil-que-solo-escritorio-en-eeuu" target="_blank">ni una computadora tienen, solo celulares y tabletas con acceso a Internet</a>.<br />
<br />
Y ahí es donde está el problema. A finales de los años 90's y la primera mitad de la década pasada solo bastaba tener una página web o blog y que se viera bien en los principales navegadores web de la época. Si queríamos volver a contactar al visitante había que dejar una dirección de correo electrónico en nuestra web invitándole a escribirnos, o bien que el dejara el suyo mediante el clásico libro de visitas o la suscripción a nuestro boletín de noticias.<br />
<br />
Con estos datos ya podíamos contactar a nuestro visitante e invitarlo a que siguiera visitando nuestra web y funcionaba el método. Pero hoy en día ya no es así: a no ser para empresas <a href="https://www.cronista.com/negocios/-La-muerte-del-email-la-Generacion-Z-ya-no-utiliza-el-correo-electronico-20131219-0009.html" target="_blank">el correo electrónico está prácticamente muerto</a>, lo mismo puede decirse de los libros de visitas (hace años que no veo ninguno en páginas web actuales, pero si era un recurso muy usado en los años 90's), así que ya no son métodos confiables para contactar de nuevo al visitante e invitarlo a que siga visitándonos de vez en cuando.<br />
<br />
<b>Pero no todo está perdido:</b> si bien hoy en día ya es poco probable que un internauta entre a nuestra web usando su navegador para ver que hay de nuevo, también es cierto que al menos verá por encima lo que hay en ella y las redes sociales están de moda hoy en día <a href="https://www.inboundcycle.com/blog-de-inbound-marketing/la-importancia-de-las-redes-sociales-a-la-hora-de-captar-trafico" target="_blank">quedando probado que son una excelente manera de retener al visitante</a> (o que por lo menos sepa de nosotros y se anime quizá a visitarnos de nuevo). Lo único que hay que hacer es publicar en nuestras redes sociales el contenido actual de nuestro blog o página web e invitar a que nos visiten o interactuen con nuestro contenido, eso sí, hay que buscar maneras creativas de hacerlo porque de lo contrario solo quedará en un intento y seguiremos sin traer visitas a nuestro blog (o web) que es lo que nos interesa.<br />
<br />
Las redes sociales hoy en día son fundamentales para todo webmaster,<sup><a href="http://marjuanm.blogspot.com/2019/04/la-importancia-de-proporcionar-varias.html#ref1">1</a></sup> en los 90's y años posteriores dependíamos de los buscadores web, usábamos los libros de visitas de otras webs para promocionarnos, chats, etc. Y aunque hoy en día todavía se puede traer algo de tráfico mediante esos medios, definitivamente ninguno de ellos se compara a lo que pueden hacer las redes sociales por nosotros y en especial Facebook.<br />
<br />
Facebook es la red social más importante,<sup><a href="http://marjuanm.blogspot.com/2019/04/la-importancia-de-proporcionar-varias.html#ref2">2</a></sup> <b>pero no es la única</b>; y por ello en lo personal creo que no es buena idea depender de un solo producto a la hora de promocionar un producto. Hay un dicho que dice <i>"no es buena idea poner todos los huevos en una misma canasta"</i>.<br />
<br />
Y esto es cierto en cuanto a Facebook, todo puede ir muy bien dentro de esta red social, tenemos cientos o miles de seguidores, contenido que subamos contenido que tiene una reacción, pero "¡Oh sorpresa!", <i>un buen día Facebook bloquea nuestra web por alguna razón</i> (de hecho Facebook pocas veces da explicaciones) y ya no podemos republicar nada de nuestra web en esta red social. <i>¿Y ahora que hacemos?</i>.<br />
<br />
También es probable que el visitante no tenga una cuenta en Facebook (o no la use), por lo que si solo ofrecemos la opción de seguirnos por Facebook nosotros solos nos estamos limitando. Lo ideal es tener varias redes sociales asociadas a nuestra web o blog y estar republicando en ellas para que, si una falla (como las <a href="https://www.milenio.com/tecnologia/facebook-se-cae-usuarios-reportan-fallas" target="_blank">caídas frecuentes de Facebook</a> en lo que va del mes y mes anterior a esta publicación) tengamos otras. Claro, en todas ellas debemos tener un buen número de seguidores para que el impacto sobre nuestra marca sea poco.<br />
<br />
Pensando en ello este blog tiene concretamente tres redes sociales que pueden seguir y de esa manera estar al tanto de lo que publicamos, se agradecen mucho de antemano sus visitas y su tiempo para observar lo que publicamos en este blog.<br />
<br />
Nuestra primer red social es <b>Facebook</b> (<a href="https://www.facebook.com/msproys/" target="_blank">https://www.facebook.com/msproys/</a>), en ella republicamos todo lo que aparece en este blog, pero también contenido desde otras webs, les invitamos a que nos sigan pues todo el contenido publicado en esta red social es con la finalidad de tener proporcionar herramientas a los informáticos.<br />
<img alt="Logo de Facebook" border="0" height="120" src="http://otakuzone.freestarthost.com/proyectos/redsocial/fb.png" width="320" />
<br />
<br />
La segunda red social que tenemos activa es <b>Twitter</b> (<a href="https://twitter.com/msproys" target="_blank">https://twitter.com/msproys</a>), al igual que Facebook nos sirve para republicar el contenido de este blog y traer visitantes al mismo. Pero también se republica contenido desde otras webs que consideramos es de importancia para todo informático, esperamos sea de su agrado.<br />
<img alt="Logo de Twitter" border="0" height="120" src="http://otakuzone.freestarthost.com/proyectos/redsocial/tw.png" width="320" />
<br />
<br />
Por último tenemos a <b>MeWe</b> (<a href="https://mewe.com/p-front/misproyectos1" target="_blank">https://mewe.com/p-front/misproyectos1</a>), esta red social ya tiene algunos años en andanza, pero saltó a la fama recientemente por ser el reemplazo para la difunta Google+ (donde también tuvimos <a href="https://web.archive.org/web/20190318131431/https://plus.google.com/117697993669984910914" target="_blank">una cuenta para este blog</a>). Si bien esta red social puede ser el reemplazo perfecto (<a href="http://marjuanm.blogspot.com/2019/03/bye-bye-google-bienvenido-mewe-o-mas-o.html">o no tan perfecto</a>) para Google+ aún tiene mucho camino que recorrer, pero también puede ser un buena manera de traer visitantes y por esta razón la tenemos en uso.<br />
<img alt="Logo de MeWe" border="0" height="120" src="http://otakuzone.freestarthost.com/proyectos/redsocial/mw.png" width="320" />
<br />
<br />
Con estas tres redes sociales es suficiente, tampoco queremos abrumar al visitante dándole mil redes sociales si probablemente no tenga cuenta en todas, si acaso en una o dos.<br />
<br />
Igualmente, aunque las redes sociales son geniales para traer trafico a nuestra web no es el único medio. Otra manera es usar los clásicos boletines por correo electrónico a los que podemos suscribirnos, <b>sí, dije hace un rato que el e-mail está muerto</b>, pero todavía hay quienes lo usamos (aunque su uso ya es meramente para recibir avisos y contactar soportes técnicos), si la persona se suscribió es porque aún usa su correo electrónico y no deberíamos desaprovechar este medio. <b>Feedburner</b> es una buena manera de recoger las direcciones de correo de aquellos que aún prefieran este método de seguir nuestra web.<br />
<br />
Otra forma en que los visitantes pueden seguirnos sin tener que entrar a nuestra web (quizá por falta de tiempo) es mediante los <a href="https://es.wikipedia.org/wiki/RSS" target="_blank">lectores RSS</a>. Mediante ellos obtienen una lista con los posts de nuestro y pueden ver rápidamente que hay de nuevo en nuestro blog y si les interesa entrar a un artículo para leerlo a más detalle. Este blog es compatible con el formato RSS por lo que si desean seguirnos por este medio adelante, a continuación explico cual es el procedimiento.<br />
<br />
Dentro de nuestro blog hemos activado la sección <a href="http://marjuanm.blogspot.com/p/seguirnos.html" target="_blank">"Seguirnos"</a>, al ingresar verán un listado de todas nuestras redes sociales activas, así como las instrucciones detalladas para suscribirse a nuestro boletín mediante Feedburner o bien mediante los lectores RSS.<br />
<br />
Si desean seguirnos mediante RSS primero debe instalar ese lector en su pc o crear una cuenta online si lo prefieren, acceder a ella y dar de alta nuestro archivo RSS para seguir al tanto de las noticias, en esa sección de nuestra web se explica como hacerlo de una manera sencilla, pero si tienen dudas con toda confianza pueden preguntar.<br />
<br />
<h3 style="text-align: start;">
Conclusiones:</h3>
<br />
Hoy en día en un mundo tan ajetreado ya no podemos esperar pacientemente a que el visitante llegue a nuestra web, hay que ir a buscarlo, y una vez que lo encontremos debemos asegurarnos que si bien, tal vez no regrese a nuestra web al menos sepa que estamos haciendo, y quien sabe, tal vez se anime a visitar nuestra web de nuevo.</div><div style="text-align: justify;"><br />
<table border="1">
<tbody><tr>
<td valign="top"> <b>MeWe</b> a los pocos meses de su anuncio de rescatar las publicaciones desde Google+ <i>implementó un modelo de paga para sus páginas, si el webmaster se rehúsa a pagar sus páginas no son accesibles ni visibles salvo por si mismo</i>, <b>por lo que aunque conservamos la página creada esta ya no la estamos actualizando.</b></td>
</tr>
</tbody></table>
<br />
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>Todos los logotipos pertenecen a </b><br />
<b style="background-color: transparent; text-align: justify;">Facebook, Twitter y MeWe respectivamente, Derechos reservados.</b>
<b style="background-color: transparent; text-align: justify;"><br /></b>
<br />
<b style="background-color: transparent; text-align: justify;">El gráfico de res social fue tomado desde <a href="http://www.pixabay.com/" target="_blank">Pixabay</a></b><br />
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></div>
</td></tr>
</tbody></table>
</div>
<br />
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="ref1">1.-</a> <a href="https://www.puromarketing.com/42/15383/razones-fundamentales-para-estar-redes-sociales.html" target="_blank"> 5 Razones fundamentales para estar en redes sociales</a></div>
<div style="text-align: justify;">
<a href="https://www.blogger.com/null" name="ref2">2.-</a> <a href="https://mx.blastingnews.com/opinion/2017/06/facebook-la-red-social-mas-grande-del-mundo-pero-a-que-costo-001794603.html" target="_blank">Facebook la red social más grande del mundo, pero, ¿a qué costo?</a></div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-46051237955666184472019-03-30T07:31:00.001-06:002020-09-07T22:11:06.711-05:00Bye bye Google+, bienvenido MeWe (o más o menos)<div style="text-align: justify;">
<img alt="Logo MeWe" border="0" height="65" src="http://otakuzone.freestarthost.com/proyectos/logomewe.png" style="float: left; padding-bottom: 10px; padding-right: 10px; text-align: justify; vertical-align: text-top;" /> Como sabemos para los que tenemos una página en Google+, este va a cerrar definitivamente el próximo día <a href="https://www.infobae.com/america/tecno/2019/02/01/google-el-cierre-definitivo-sera-el-2-de-abril/" target="_blank">2 de abril del año en curso</a>. Desde marzo se nos hizo la notificación y ya procedimos a hacer el respaldo de todo lo necesario, pero ahora la pregunta era <i>"¿y ahora qué?"</i>.
<br />
Bueno, la opción más simple era llevar ese archivo de respaldos a otra red social <i>"parecida"</i>, importar todo y todo seguiría igual. <a href="https://mewe.com/" target="_blank">MeWe</a> anunció que ellos eran la alternativa y decidí darles una oportunidad, vamos a ver como nos fue.<br />
<a name='more'></a><br />
Por <a href="https://www.merca20.com/por-que-fracaso-google-5-razones-por-las-que-nunca-pudo-trascender/" target="_blank">varias razones</a> Google+ la red social que plantearía cara a Facebook no funcionó, terminó convertida en un pueblo fantasma, por lo que Google decidió cerrarla. Y aunque es cierto que <i>"nadie"</i> la usaba a nosotros como webmasters si nos servía. Una característica que me gustó era que estaba integrada con Blogger, de manera que cada vez que se redactaba un artículo este automáticamente se republicaba en Google+, ahorrándonos el trabajo de enlazar nuestros posts en las redes sociales (por lo menos en la de Google) y de esa manera aumentar la visibilidad de nuestros blogs.
<br />
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span><br />
<script language="javascript" type="text/javascript">
lz="http://ocio.leadzu.com/banner_request.php?m=1HRUSITE74205X8&a=&idtm=300x250&lgid="+new Date().getTime();
document.write("<scr"+"ipt language='javascript' type='text/javascript' src='"+lz+"'></scr"+"ipt>");
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
A raíz del cierre de Google+ la red social MeWe ha decidido ser el relevo y <a href="https://wwwhatsnew.com/2018/10/12/mewe-se-esta-convirtiendo-en-la-mejor-alternativa-a-google-para-muchos-usuarios/" target="_blank">anunció que todo lo que Google+ tenía ellos también lo tenían y mejor</a>, <b>¿sería cierto?</b>, bueno, solo hay una manera de saberlo y es probarla.<br />
<br />
MeWe para quienes aún no la conozcan es una red social que asegura <a href="http://www.mewe.com/#video" target="_blank">"no vende la información a nadie"</a>, se levanta como la gran alternativa a Facebook (en sus propias palabras, no lo digo yo aclaro) y ahora también pretende ser la alternativa a Google+.<br />
<br />
Bueno, hasta aquí muy bonito todo, me convencieron, vamos a probarlos entonces. Procedo a crear mi cuenta y la página para el proyecto, <i>"pero hay un pequeño detalle"</i>: resulta que aún no está lista la función para importar el archivo histórico desde Google+, lo tendrán listo para el día 12 de marzo (faltaba una semana para esa fecha cuando saqué mi cuenta), <b>¿cómo?, ¿no que la gran alternativa y aún no tienen la modalidad de importar mi página de Google+?</b>.<br />
<br />
<b>Problema número 1</b>... ok, entiendo que los tomó por sorpresa el cierre de Google (el anuncio se dio iniciando marzo) y está bien, estoy dispuesto a esperar unos días, mientras tanto fui personalizando mi perfil y la página, no quise postear nada porque la idea era continuar donde nos quedamos, traer todos los posts desde Google+ y luego ya empezar a meter los nuevos, pero entonces me encuentro con <i>"otro detalle"</i>.<br />
<br />
MeWe no permite que las páginas de los usuarios sean públicas, necesariamente hay que iniciar sesión en su sistema, supongo que todo esto en aras de la privacidad. Francamente no me gustó esa característica pues pierde visibilidad la página para todo aquel que no tenga una cuenta en MeWe pero creo que tampoco se puede hacer mucho.<br />
<br />
Llegó el día 12 de marzo y el importador de archivos de Google+ nada, el 13 nada, por fin el 14 ya estaba listo, ok, entiendo el retraso. Procedí a solicitar la importación de un archivo de 1.21 MB, yo pensé que iba a ser importado en el acto pero <i>"¡¡¡ Sorpresa!!!"</i>, hay que hacer fila, ahora tenía esta aviso en pantalla:<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Pendiente" border="0" src="http://otakuzone.freestarthost.com/proyectos/pendiente.png" width="512" /></td>
</tr>
</tbody></table>
<br />
Bueno, esperaré unas horas (o días), pero conforme van pasando los días el aviso es exactamente el mismo: <i>siga en la fila, espere su turno</i>. Los días se transforman en prácticamente dos semanas y no hay ningún aviso de si ya falta poco, o como vamos, simplemente <i>"espere su turno"</i>.<br />
<br />
Después de casi dos semanas esperando decido cancelar el proceso y empezar a meter los posts manualmente, total, el archivo de Google+ no es más que un zip con todos los archivos html de mis posts, puedo hacerlo a mano aunque me tarde más, pero <i>"¡¡¡ Ohhh sorpresa!!!"</i>, no se puede cancelar el proceso (otro mensaje de error).<br />
<br />
Así que:<br />
<br />
<br />
<ol>
<li>No estaba listo el archivo de importación para cuando sacamos nuestra cuenta.</li>
<li>Eternidad para importar el archivo y cero información del avance.</li>
<li>No se puede cancelar el proceso por un error del sistema.</li>
</ol>
<br />
<b>Valiente debut de MeWe</b>. Reporté el error tanto a través de su plataforma como por Twitter y solo me remitieron a un correo de soporte que por cierto nunca me contestaron como para saber si lo leyeron o no, solo quedaba una opción: <b>borrar la cuenta y empezar de nuevo</b>.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Borrar cuenta" border="0" src="http://otakuzone.freestarthost.com/proyectos/borrar%20cuenta.png?xyz" width="512" /></td>
</tr>
<tr>
<td valign="top"><i><span style="font-size: x-small;">MeWe asegura que se borra todo al cerrar la cuenta definitivamente.</span></i></td>
</tr>
</tbody></table>
<br />
MeWe asegura que al momento de borrar la cuenta se borra <b>TOOOOODO</b> para siempre (a diferencia de Facebook que conserva los datos un tiempo por si el usuario se arrepiente). Acepté la opción y efectivamente, ahora que he vuelto a crear la cuenta (con el mismo correo para continuar donde me quedé) veo que ya no me aparece el cuadro de diálogo de esperar mi turno para importar la comunidad de Google+.<br />
<br />
La razón de borrar mi cuenta es porque me di cuenta de que al parecer si MeWe tenía éxito al importar el archivo de Google+ es que esos posts serían parte de mi perfil, no de mi página que era lo que me importaba. Así que a empezar de nuevo, volví a personalizar mi perfil y ahora procedo a crear mi página para el proyecto, todo bien, pero <i>"ehhh???"</i>, el link es "<a href="https://mewe.com/p/misproyectos1" target="_blank">https://mewe.com/p/misproyectos1</a>" cuando anteriormente tenía "<a href="https://mewe.com/p/misproyectos" target="_blank">https://mewe.com/p/misproyectos</a>", <i>¿me lo habrán ganado?</i>, voy a ver.<br />
<br />
<i>"¡¡¡ Sorpresa!!!"</i>, esa página es la que yo tenía y ahora ya no se puede borrar ni reclamar la autoría. Así que si MeWe dice que borra todo al cerrar la cuenta pues lamento decirles que no es cierto, por lo menos no las páginas creadas (que por cierto no veo esa opción desde el administrador).<br />
<br />
Finalmente decidí comenzar a crear los posts desde cero, a mano. El funcionamiento es el mismo que Facebook, copiamos el enlace del post, lo pegamos en la sección compartir algo, esperamos a que nos genere la vista previa y luego vamos a meter una descripción breve y los hashtags para que me encuentren con facilidad desde otras páginas o desde el buscador, pero <i>"¿que creen?"</i>, los hashtags al presionarlos desde el post solo funcionan dentro de la página en cuestión (Mis Proyectos) y no enlazan en ningún momento con el resto de las comunidades (aunque si funcionan en el buscador). Todo al estilo Wordpress y no Facebook.<br />
<br />
Otro <i>"detalle"</i> que noté es que al compartir un enlace y esperar a que se genere la vista previa con la descripción del mismo, MeWe no recupera la descripción del enlace (cosa que hace Facebook sin problemas). Sin embargo MeWe permite ingresar la descripción junto con poder cambiar la vista miniatura por otra imagen o un video (entre otras opciones), cosa que Facebook no puede hacer y en lo personal me agradó esta característica.<br />
<br />
Bueno, ya comencé a agregar mis primeros posts, para aquellos que no era posible recuperar la vista previa les agregué una imagen manualmente, pero ahí viene <i>"otro problema"</i>: esas imágenes se van a una carpeta que por supuesto está consumiendo espacio del que tenemos disponible (8 GB) y no se puede reutilizar imágenes, es decir si requiero que dos o más posts usen la misma imagen miniatura pues tengo que subir dos o más veces la misma imagen (suspiro).<br />
<br />
<h4>
En resumen</h4>
<br />
MeWe parece una buena opción, pero francamente creo que aún no está a la altura de Facebook, si de verdad quiere destronarlo tiene muchísimo trabajo por hacer, tiene que corregir todos estos fallos y quizá otros que pudiera haber. No encontré otra opción para portar mi comunidad de Google+ (Facebook y Twitter ya tengo y están <i>"enlazados"</i> con este blog), varias opciones se veían buenas pero no están en español y creo que eso le afectaría bastante, así que me decanté por MeWe.<br />
<br />
No digo que sea una mala opción, pero si que le falta madurar y mucho, espero que corrijan todos estos problemas. Como punto a favor una vez iniciada nuestra sesión podemos mandar sugerencias al equipo de desarrolladores y esperar a que las implementen (ya mandé varias).<br />
<br />
Estéticamente la plataforma se ve bien, iconos agradables, me gustó la opción de poder reaccionar a un post con todos los emoticonos disponibles y no solo con el me gusta, me encanta, me enoja, etc de Facebook, no, aquí podemos poner lo que queramos. Está muy bien eso junto a otras características útiles.<br />
<br />
Estamos en proceso de incorporar toda la comunidad de Google+ a MeWe, va lento pero espero pronto ponerme al corriente (ya está archivada la cuenta de <a href="https://web.archive.org/web/20190318131431/https://plus.google.com/117697993669984910914" target="_blank">Google+</a> en <a href="http://marjuanm.blogspot.com/2018/12/como-guardar-una-version-historica-de.html">WayBack Machine</a>). Los invitamos a seguirnos también por Mewe o por las otras redes sociales, gracias por su tiempo.<br />
<br />
<a href="https://www.facebook.com/pages/Mis-proyectos/" target="_blank">Facebook</a><br />
<a href="https://twitter.com/msproys" target="_blank">Twitter</a><br />
<a href="https://mewe.com/p/misproyectos1" target="_blank">MeWe</a></div><div style="text-align: justify;"><br />
<table border="1">
<tbody><tr>
<td valign="top"> <b>MeWe</b> a los pocos meses de su anuncio de rescatar las publicaciones desde Google+ <i>implementó un modelo de paga para sus páginas, si el webmaster se rehúsa a pagar sus páginas no son accesibles ni visibles salvo por si mismo</i>, <b>por lo que aunque conservamos la página creada esta ya no la estamos actualizando.</b></td>
</tr>
</tbody></table>
<br />
<table border="1"><tbody>
<tr><td bgcolor="" valign="middle"><b><span style="color: #444444;">Procedencia de las imágenes:</span></b></td></tr>
<tr><td bgcolor="white" valign="middle"><div style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;">
<b>Todos los logotipos y capturaras de pantalla </b><br />
<b>pertenecen a MeWe, Derechos reservados.</b></div>
</td></tr>
</tbody></table>
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-23917729946321478812019-03-27T08:51:00.000-06:002019-03-27T08:51:21.203-06:00Joyas de la red - dividir un archivo grande en varias partes usando Hacha<div style="text-align: justify;">
<img alt="Logo Hacha" border="0" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_logo.png" style="float: left; padding-bottom: 10px; padding-right: 10px; vertical-align: text-top;" title="" width="81" /> Hubo una época en que era difícil trasladar un archivo de una máquina a otra, o para compartirlo en Internet. Había varias opciones: <i>comprimirlo en un archivo zip y dividirlo en varios discos, <a href="http://marjuanm.blogspot.com/2019/02/detectan-falla-de-seguridad-en-winrar-o.html">comprimirlo en formato rar</a> o dividirlo en varias partes para ir pasando una por una o bien para ir subir todas sus partes a Internet por separado.</i><br />
Es ahí donde entra el software que en esta ocasión reseñaremos: <b>Hacha</b>, <i>todo un clásico de la década pasada y como ayudó a resolver el problema de compartir archivos muy grandes en Internet</i>, los invito a continuar leyendo este post esperando les traigo bonitos recuerdos.<br />
<a name='more'></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span><br />
<!-- Revenuehits -->
<script data-cfasync="false" src="//p269382.clksite.com/adServe/banners?tid=269382_520090_0" type="text/javascript"></script>
<!-- Revenuehits -->
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
<div style="text-align: justify;">
Internet ha cambiado mucho <i><b>(demasiado)</b></i> en casi dos décadas: allá a principios de la década del 2000 la única fuente de descargas de videos por ejemplo eran servidores ftp que proporcionaban este contenido o páginas personales que para nada eran aptas para compartir este tipo de contenido. <i>¿Porqué razón?</i>, porque no eran plataformas de streaming, <i>había que esperar a que bajara todo el video para poder verlo y tomando en cuenta el tamaño del archivo y las velocidades de esa época eso podría tomar desde horas hasta días enteros.</i><br />
<br />
Compartir estos archivos tampoco era sencillo: la mayoría de los sitios web daban poco espacio para subirlos (además de no estar permitido muchos de estos formatos) y la velocidad de conexión hacía que en muchos casos fuera francamente imposible. Por otra parte se encontraban en auge los programas P2P (Ares, Kazza, etc), pero el panorama era más o menos el mismo: <i>conexiones lentísimas teniendo que esperar en el mejor de los casos días para bajar siquiera un archivo.</i><br />
<br />
Pero había otra solución: <i>dividir el archivo a compartir en muchas partes de tamaño razonable para trasladarlo de una computadora a otra, o subirlo a Internet y que no tomara tanto tiempo enviarlo (cada parte) ni tampoco su descarga.</i> Hacha se volvió muy popular gracias a esta característica que a continuación vamos a explicar y como aún hoy en día podemos seguirle sacando mucho provecho a este programa.<br />
<br />
Hacha fue creado por <b>Leonardo Donaire</b> (Dr. Software), este programador de Perú cuenta en su portafolio con centenares de programas desarrollados a lo largo de 34 años de carrera como desarrollador (<b>WOW</b>). Nace de la necesidad de poder dividir fácilmente un programa en varias partes y poderlo reconstruir sin mayores problemas; muchísimo material en Internet se encontraba en este formato: archivos divididos con Hacha y por supuesto siempre la liga y las instrucciones para instalarlo y reconstruir el archivo.<br />
<br />
Aunque hoy en día gracias a las velocidades de la red y servicios especializados ya no es tan necesario dividir un archivo grande para compartirlo, pero aún así de vez en cuando es necesario disponer de herramientas de este tipo. Hacha se encuentra en dos versiones que podemos descargar desde su web oficial <a href="http://www.hacha.org/" target="_blank">http://www.hacha.org</a>.<br />
<br />
Hacha se encuentra en dos versiones: <b>clásico</b> (que es el que conocimos muchos de nosotros) y <b>Hacha.NET</b>. Hacha clásico permite dividir y reconstruir un archivo de hasta un máximo de 2 GB de tamaño, si queremos dividir un archivo mayor ya no será posible y obtendremos un mensaje de error. Hacha.NET no tiene ese problema, el funcionamiento es más o menos el mismo en los dos casos.<br />
<br />
Comenzaremos reseñando la versión clásica de Hacha:<br />
<br />
Necesitaremos descargar el software, mismo que puede ser descargado desde su web oficial, coloco aquí el enlace para descarga directa: <a href="https://www.hacha.org/programas/hacha.rar" target="_blank">https://www.hacha.org/programas/hacha.rar</a>, descomprimimos el archivo descargado y ejecutaremos el archivo <i>"hacha.exe"</i> teniendo ahora como resultado una pantalla como la siguiente:<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Pantalla inicial de Hacha" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico01.png" title="" /></td>
</tr>
</tbody></table>
<br />
El funcionamiento es realmente simple: solo dos botones, cortar o pegar el archivo. Empezaremos por cortar un archivo.<br />
<br />
Para ello presionaremos el botón <i>"CORTAR"</i>, se nos abrirá un cuadro de diálogo desde el cual seleccionaremos el archivo que queremos dividir, una vez seleccionado ahora veremos la siguiente pantalla:<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Iniciar parámetros para dividir archivo" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico02.png" title="" /></td>
</tr>
</tbody></table>
<br />
Seleccionaremos el tamaño de cada archivo, en mi caso seleccionaré 100 KB pues es un archivo pequeño y solo para pruebas, escribiré 0.1 en el cuadro <i>"Tamaño:"</i> y desmarcaremos la opción <i>"Origen = Destino"</i> para que se nos permita especificar donde queremos guardar el archivo dividido y presionaremos el botón <i>"Metele Hacha"</i>. Debemos ahora seleccionar la carpeta destino desde la siguiente ventana (presionaremos el botón <i>"Aceptar"</i> cuando ya tengamos la ruta seleccionada.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Seleccionar destino de archivos (fragmentos)" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico03.png" title="" /></td>
</tr>
</tbody></table>
<br />
Veremos ahora la siguiente pantalla, dejaremos las opciones marcadas tal cual y solo nos limitaremos a presionar el botón <i>"Continuar..."</i>.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Confirmar proceso" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico04.png" title="" /></td>
</tr>
</tbody></table>
<br />
Tendremos a continuación una confirmación de que nuestro archivo fue dividido exitosamente, en cuantas partes fue dividido y cuando tiempo le tomó al programa realizar el trabajo.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Archivo dividido exitosamente" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico05.png" title="" /></td>
</tr>
</tbody></table>
<br />
Efectivamente, nuestro archivo ha sido dividido, ya podríamos estos archivos subirlos a un servidor web y de esa manera no sería tan lento tener que subir todo de una vez teniendo que esperar horas en el proceso (y si acaso se podía en ocasiones).<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Archivo dividido" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico06.png" title="" /></td>
</tr>
</tbody></table>
<br />
Ahora vamos a reconstruirlo:<br />
<br />
Este era el segundo paso una década o más atrás, en la red se encontraban muchos archivos divididos con Hacha, debíamos bajarlos todos y unirlos para tener el archivo original de nuevo. El procedimiento es igualmente, muy simple.<br />
<br />
Una observación: si estamos tratando de reconstruir un archivo ejecutable es mejor desactivar el antivirus antes de cualquier cosa. En esta pc tenía Microsoft Security Essentials, cuando quise reconstruir un ejecutable usando Hacha clásico el archivo resultante resultó corrupto, con el antivirus desactivado no hubo ningún problema.<br />
<br />
Regresaremos a la pantalla inicial y ahora presionaremos el botón <i>"PEGAR"</i>. Seleccionaremos el primer archivo de nuestra lista para comenzar el proceso de unión, para ello iremos a la carpeta donde tenemos descargados los archivos a unir desde el cuadro de diálogo que Hacha genera y lo seleccionaremos; en mi caso es el archivo <i>"a todos.pptx.0"</i>.<br />
<br />
Ahora tendremos la siguiente pantalla, dejaremos las opciones marcadas tal cual y presionaremos el botón <i>"Pegar Archivos"</i>.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Confirmar parámetros para unir archivos" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico09.png" title="" /></td>
</tr>
</tbody></table>
<br />
Si todo salió bien veremos un aviso en pantalla confirmándonos que el archivo fue reconstruido exitosamente y en la carpeta donde tenemos los fragmentos ahora tendremos el archivo reconstruido.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Archivo reconstruido exitosamente" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico07.png" title="" /></td>
</tr>
<tr>
<td valign="top"><img alt="Archivo reconstruido" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_clasico08.png" title="" /></td>
</tr>
</tbody></table>
<br />
Como pueden ver es muy sencillo usar Hacha, pero el inconveniente es que solo se pueden dividir archivos de hasta 2 GB, si tenemos un archivo de mayor tamaño debemos usar Hacha.NET.<br />
<br />
Descargaremos el programa (<a href="https://www.hacha.org/programas/hacha_net.rar" target="_blank">https://www.hacha.org/programas/hacha_net.rar</a> descarga directa, aunque el autor no especifica si necesitamos alguna librería extra, el icono del programa corresponde a los programas generados para la plataforma <i>.NET</i> de Microsoft, con Windows XP y superiores suele venir preinstalada la versión 3.5, si Hacha no corre hay que bajarla o la última versión de preferencia), lo descomprimimos y ejecutamos el archivo <i>"Hacha.exe"</i>, veremos la siguiente pantalla:<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Pantalla inicial de Hacha.NET" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net01.png" title="" /></td>
</tr>
</tbody></table>
<br />
Como vemos, es la misma pantalla que la versión clásica (salvo que están invertidos los botones), por lo que presionaremos igualmente el botón <i>"CORTAR"</i> para iniciar el proceso de división de nuestro archivo.<br />
<br />
Ahora ya no será necesario especificar de que tamaño queremos cada bloque para los archivos, sinó cuantos pedazos queremos y conforme vayamos seleccionando numero de piezas veremos el tamaño de cada archivo resultante.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Pantalla dividir archivo" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net02.png" title="" /></td>
</tr>
</tbody></table>
<br />
Seleccionaremos el archivo que queremos dividir, en cuantas partes lo queremos dividir y donde queremos guardar todas sus partes, tendremos algo como lo siguiente en pantalla (Nota: archivos muy pequeños Hacha.NET no los puede dividir, obtenemos un mensaje indicándonos que el archivo es muy pequeño para dividir, resulta curioso que Hacha clásico no tiene este problema, pues dividí un archivo de 483 KB sin mayores inconvenientes, en la versión .NET tuve que seleccionar otro para prueba, este de 9.18 MB):<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Confirmar parámetros para dividir archivo" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net03.png" title="" /></td>
</tr>
</tbody></table>
<br />
Ya solo resta presionar el botón <i>"CORTAR"</i> y si todo salió bien veremos la confirmación del proceso de cortado del archivo.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Archivo dividido exitosamente" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net04.png" title="" /></td>
</tr>
</tbody></table>
<br />
Como podemos ver ahora cambia la extensión de los archivos, en lugar de terminar en .0, .1 y así sucesivamente ahora las extensiones son .H00, .H01, etc.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Archivo dividido (fragmentos)" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net05.png" title="" /></td>
</tr>
</tbody></table>
<br />
Una cosa que me gustó de Hacha.NET aparte de poder dividir archivos mucho más grandes es que el número de pasos se reduce para dividir el archivo, sin embargo ya es incompatible este formato con el de Hacha clásico, tampoco puede reconstruir un archivo creado con Hacha clásico (obteniéndose un error de ejecución).<br />
<br />
Ahora reconstruiremos el archivo.<br />
<br />
Iremos nuevamente a la pantalla de inicio y seleccionaremos el botón <i>"PEGAR"</i>, tendremos una pantalla como la siguiente:<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Pantalla reconstruir archivo" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net06.png" title="" /></td>
</tr>
</tbody></table>
<br />
Seleccionaremos el archivo que queremos reconstruir, para ello presionaremos el primer botón para superior derecha y en el cuadro de diálogo seleccionaremos la ruta y el primer archivo de la secuencia, en este caso se llama <i>"patisserie.7z.H00"</i>.<br />
<br />
Dejaremos todo tal cual pues queremos que se reconstruya en la misma carpeta donde están todos sus fragmentos, solo resta presionar el botón "PEGAR".<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Confirmar parámetros para pegar archivos" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net07.png" title="" /></td>
</tr>
</tbody></table>
<br />
Si todo ha salido bien tendremos una confirmación del éxito al unir el archivo y ya lo veremos en la carpeta que seleccionamos como destino.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Archivo reconstruido exitosamente" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net08.png" title="" /></td>
</tr>
<tr>
<td valign="top"><img alt="Archivo reconstruido" src="http://otakuzone.freestarthost.com/proyectos/hacha/hacha_net09.png" title="" /></td>
</tr>
</tbody></table>
<br />
Es todo, ya hemos dividido y reconstruido nuestro archivo, tanto con la versión clásica de Hacha, como con su versión .NET.<br />
<br />
Se agradece mucho este software gratuito al señor <a href="http://hacha.org/yo.html" target="_blank">Leonardo</a>, si desean saber más de el, trabajos que ha realizado, contactarlo, etc pueden visitar su página web que es <a href="http://www.hacha.org/" target="_blank">http://www.hacha.org</a>, responde del mismo modo por correo electrónico en <a href="mailto:leonardo_donaire@yahoo.com">leonardo_donaire@yahoo.com</a> o pueden seguirlo en las redes sociales de <a href="https://www.facebook.com/leonardo.donaire.969" target="_blank">Facebook</a> o <a href="https://twitter.com/donaireleonardo" target="_blank">Twitter.</a><br />
<br />
<h3 style="text-align: start;">
Conclusiones:</h3>
<div style="text-align: start;">
<br /></div>
<div style="text-align: start;">
Como pueden ver era muy sencillo subir archivos de gran volumen a la red gracias a Hacha, y aunque hoy en día ya no es muy necesario esto aún sigue siendo de mucha utilidad este software, por ejemplo en mi trabajo tenía que mover un archivo de varios GB a un disco externo formateado como FAT32 y no era posible (FAT32 no permite mover archivos de más de 4 GB). <b>¿Solución?</b>, <i>dividir el archivo y tenerlo por partes, cuando se necesite se va a reconstruir</i>.</div>
<div style="text-align: start;">
<br /></div>
<div style="text-align: start;">
Así que hay Hacha para rato.</div>
<br /></div>
<div style="text-align: justify;">
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><div style="margin: 0px;">
<b>Procedencia de las imágenes:</b></div>
</td></tr>
<tr><td bgcolor="white" valign="middle"><div style="margin: 0px;">
Todas las imagenes aquí usadas son tomadas de los programas<br />
Hacha y Hacha.NET y corresponden a su respectivo desarrollador,<br />
solo se han usado con fines educativos.</div>
</td></tr>
</tbody></table>
</div>
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com2tag:blogger.com,1999:blog-2570388371432361473.post-14821037214848077672019-03-13T16:02:00.005-06:002022-09-28T16:06:45.980-05:00Joyas de la red - editar la lista de autocompletar en Outlook usando NK2Edit<div style="text-align: justify;">
<img alt="Email" border="0" src="http://otakuzone.freestarthost.com/proyectos/emailmarketing/email.png" style="float: left; padding-bottom: 10px; padding-right: 10px; vertical-align: text-top;" width="85" /> Hace años que el correo electrónico <a href="https://www.cronista.com/negocios/-La-muerte-del-email-la-Generacion-Z-ya-no-utiliza-el-correo-electronico-20131219-0009.html" target="_blank">ha dejado de usarse entre el público en general</a> y ha sido reemplazado por <b>Facebook, Whatsapp y otras aplicaciones similares</b>. Pero no así dentro de las empresas, <i><b>ahí el email parece no tener para cuando ser reemplazado</b></i>. Pues bien, una de las aplicaciones de email más usadas es Microsoft Outlook, también una característica muy usada es una vez enviado un correo solo teclear una o dos letras del nombre del destinatario al momento de redactar el email para sacar su dirección y no tener que preocuparse por aprendérsela o guardarla en algún lugar. Pero, <i>¿y si por error o fallo del sistema se borrara?, ¿como volverla a agregar?</i>. Les invito a seguir leyendo este post para de una manera muy sencilla editar esa lista.<br />
<a name='more'></a></div>
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
<div style="text-align: justify;">
Trabajo para una empresa dando soporte técnico,<i> aparentemente es una tarea muy trivial si la dirección de email de un cliente o proveedor no aparece en la lista de autocompletar de Outlook teclearla de nuevo</i>; <b>pero no</b>, <i>creo que con cada año que pasa nos volvemos un "poco" más perezosos.</i> Queremos tenerlo todo a la mano, <i>¿para que guardar un contacto, teclearlo entre los contactos o en un archivo de texto si Outlook puede guardarlo y recuperarlo automáticamente al momento de escribir uno nuevo?</i>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Suena muy bonito que Outlook haga todo por nosotros, <i>¿pero y el día que falla?</i>, o que por error nuestro borremos esa entrada y ahora ya no salga la dirección (y de paso tampoco el usuario quiere teclearla porque como dijera Jaimito el cartero <b>"quiere evitar la fatiga"</b>). <i>¿Que hacemos para arreglarle su lista?</i> (o la nuestra).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Afortunadamente la solución es muy simple, tan solo necesitamos una aplicación para ello. Lo primero que haremos es descargar <b>NK2Edit</b> desde <a href="https://www.nirsoft.net/utils/outlook_nk2_edit.html" target="_blank">https://www.nirsoft.net/utils/outlook_nk2_edit.html</a> (se encuentra en idioma Inglés la aplicación probada, revisen la misma web para ver las traducciones adicionales).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Este software es gratis para uso personal y si queremos usarlo dentro de una empresa hay que pagar después de 14 días (como lo he usado pocas veces no sabría decirles si después de ese tiempo deje de funcionar, de hecho el software consiste en un solo ejecutable, es decir es portable - a no ser que guarde alguna llave extra en alguna parte, pero es no lo se con exactitud). Una vez descargado y descomprimido cerraremos previamente nuestro Outlook y haremos doble clic sobre el archivo <i>NK2Edit.exe</i>, automáticamente nos detectará la lista de correos con la que ya hemos interactuado previamente en nuestro Outlook (probado con Oulook 2013 y 2007) viendo entonces una pantalla similar a la siguiente:</div>
<table>
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/outlook/outlook.png"><img alt="Pantalla principal de la aplicación" border="0" src="http://otakuzone.freestarthost.com/proyectos/outlook/outlook.png" height="340" width="640" /></a></td>
</tr>
</tbody></table>
<div style="text-align: justify;">
Siempre es bueno hacer una copia de seguridad "por si acaso" de cualquier cosa, y nuestra de Outlook no será la excepción, esta se encuentra en <i>%appdata%\Microsoft\Outlook</i>, siendo el ultimo archivo editado con extensión .NK2 el que debemos respaldar en otra parte.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
La interfaz de la aplicación es algo compleja, tan solo nos centraremos en estos tres botones para lo que necesitamos hacer:</div>
<table>
<tbody>
<tr>
<td valign="top"><img alt="Botones de la aplicación" border="0" src="http://otakuzone.freestarthost.com/proyectos/outlook/btnoutlook.png" width="100" /></td>
</tr>
</tbody></table>
<br />
<ul>
<li style="text-align: justify;"> El primero de ellos nos permitirá sobreescribir el archivo de autocompletar una vez hallamos terminado.</li>
<li style="text-align: justify;"> Con el segundo editaremos un registro que hallamos previamente seleccionado. Esto es por si alguno de los datos de ese contacto es incorrecto.<br /><img alt="Editar contacto" border="0" src="http://otakuzone.freestarthost.com/proyectos/outlook/editcontacto.png" height="360" width="400" /></li>
<li style="text-align: justify;"> Y el tercero de ellos nos permitirá crear un contacto nuevo en la lista de autocompletar, debemos llenar todos los datos necesarios, presionaremos el botón <i>"OK"</i>, guardaremos el archivo NK2 (hay que confirmar los cambios) y saldremos de la aplicación, abriremos Microsoft Outlook y al crear un nuevo correo ya tendremos el nuevo contacto en la lista.<table><tbody>
<tr><td valign="top"><img alt="Crear nuevo contacto" border="0" src="http://otakuzone.freestarthost.com/proyectos/outlook/newcontacto.png" height="360" width="400" /></td></tr>
<tr><td valign="top"><img alt="Crear nuevo contacto" border="0" src="http://otakuzone.freestarthost.com/proyectos/outlook/newlista.png" width="400" /></td></tr>
</tbody></table>
</li>
</ul>
<div style="text-align: justify;">
<br /></div>
<h3>
Conclusiones:</h3>
<br />
NK2Edit nos permite de una manera muy sencilla editar o crear nuevas entradas en la lista de autocompletar de Microsoft Outlook, espero les sea de utilidad este software.<br />
<br />
<div class="post-body entry-content" id="post-body-5027498949341057027" itemprop="description articleBody" style="color: #555555; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 16.5px; line-height: 1.4; position: relative; text-align: start; width: 742px;">
<div style="text-align: justify;">
<table border="1" style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b>Procedencia de las imágenes:</b></td></tr>
<tr><td bgcolor="white" valign="middle"><b>Logotipo y pantallas de NK2Edit, también el logotipo</b><br />
<b>de Email fue tomado desde <a href="http://www.pixabay.com/" target="_blank">Pixabay</a></b><br />
<br />
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a></td></tr>
</tbody></table>
</div>
<div style="clear: both;">
</div>
</div>
<div class="post-footer" style="color: #737373; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 1.6; margin: 0.5em 0px 0px; text-align: start;">
<div class="post-footer-line post-footer-line-1">
<span class="post-author vcard" style="margin-left: 0px; margin-right: 0px;"></span><br />
<div style="height: 3px;">
<span class="post-author vcard" style="margin-left: 0px; margin-right: 0px;"><br /></span></div>
<span class="post-author vcard" style="margin-left: 0px; margin-right: 0px;">
</span></div>
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-53051164049913010532019-03-03T23:56:00.002-06:002019-03-03T23:56:46.460-06:00Joyas de la red - WifiGuard, software para saber quien está conectado a tu Internet (o te lo está robando)<div style="text-align: justify;">
<img alt="Logo WifiGuard" border="0" src="http://otakuzone.freestarthost.com/proyectos/wifiguard_logo.gif" style="float: left; padding-bottom: 10px; padding-right: 10px; vertical-align: text-top;" width="85" /> Algún tiempo atrás hablé de <a href="http://marjuanm.blogspot.com/2017/05/joya-de-la-red-wireless-network-watcher.html">Wireless Network Watcher</a>, este programa nos permite saber de una manera muy sencilla quien está conectado a nuestro modem y si no es ninguno de nuestros dispositivos entonces <i>"muy probablemente nos esté robando el internet"</i>.<br />
El funcionamiento de WifiGuard es muy similar a Wireless Network Watcher y vale tenerlo como alternativa. A continuación paso a reseñarlo por si desean probarlo.<br />
<a name='more'></a></div>
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Entre texto -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
A diferencia del programa anterior WifiGuard no es gratuito, sin embargo tiene un demo para uso personal que es completamente funcional (al parecer si queremos usarlo con fines comerciales hay que pagar). Viene en versiones de 32 y 64 bits y podemos descargarlo tanto en versión instalable como portátil desde <a href="https://www.softperfect.com/products/wifiguard/" target="_blank">https://www.softperfect.com/products/wifiguard/</a>.<br />
<br />
Una vez instalado al iniciar veremos una pantalla como la siguiente:<br />
<table>
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/guard01.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Equipos conectados a nuestro módem" border="0" src="http://otakuzone.freestarthost.com/proyectos/guard01.png" data-original-height="426" data-original-width="800" height="341" width="640" /></a>
</td>
</tr>
</tbody></table>
<br />
Si por alguna razón no aparece ningún dispositivo presionaremos el botón <i>"Buscar"</i> para actualizar la lista y ahora veremos todos los dispositivos conectados. Esta pantalla contiene los detalles generales de los equipos encontrados como la dirección IP, la dirección MAC, el fabricante del dispositivo, entre otros.<br />
<br />
Conforme vayan apareciendo dispositivos podemos etiquetarlos como conocidos o no. En mi caso tengo 5 dispositivos conectados al modem, si apareciera uno extra vería un aviso similar al siguiente:<br />
<table>
<tbody>
<tr>
<td valign="top"><img alt="Dispositivo desconocido" border="0" src="http://otakuzone.freestarthost.com/proyectos/guard02.png" data-original-height="426" data-original-width="800" />
</td>
</tr>
</tbody></table>
<br />
Si conocemos dicho dispositivo podemos registrarlo para no llevarnos sorpresas en la siguiente búsqueda (podemos modificarlo posteriormente con simplemente seleccionarlo de la lista y presionar el botón <i>"Propiedades"</i> de la barra de tareas). No olvidemos darle un vistazo al menú de configuración que se encuentra dentro del menú <i>"Archivo"</i> o directamente en la barra de herramientas del programa.<br />
<table>
<tbody>
<tr>
<td valign="top"><img alt="Configuraciones" border="0" src="http://otakuzone.freestarthost.com/proyectos/guard03.png" data-original-height="426" data-original-width="800" />
</td>
</tr>
</tbody></table>
<br />
Las opciones no son muy complicadas y conviene dejarlas en modo predeterminado (a mi me detectó automáticamente el adaptador de red de mi laptop, cosa que no sucedió siempre en Wireless Network Watcher teniendo que activar la opción manualmente).<br />
<br />
<h3>
Conclusiones:</h3>
<br />
WifiGuard se trata realmente de un programa muy sencillo de usar, pero de gran utilidad al igual que Wirelesss Network Watcher si sospechamos que "el vecino" (o alguien más nos está tomando el Internet sin permiso.<br />
<br />
Hay que aclarar que ninguno de estos programas permite blindar nuestra red contra intrusos, ya debemos tomar nosotros las medidas necesarias.<br />
<br />
<div class="post-body entry-content" id="post-body-5027498949341057027" itemprop="description articleBody" style="color: #555555; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 16.5px; line-height: 1.4; position: relative; text-align: start; width: 742px;">
<div style="text-align: justify;">
<table border="1" style="color: #555555; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px;"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><b>Procedencia de las imágenes:</b></td></tr>
<tr><td bgcolor="white" valign="middle"><b>Logotipo y pantallas de WifiGuard</b><br />
<b>Licencia:</b> <a href="http://www.creativecommons.mx/" style="color: #49779e;" target="_blank">Creative Commons</a><br />
<div>
<br /></div>
</td></tr>
</tbody></table>
</div>
<div style="clear: both;">
</div>
</div>
<div class="post-footer" style="color: #737373; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 1.6; margin: 0.5em 0px 0px; text-align: start;">
<div class="post-footer-line post-footer-line-1">
<span class="post-author vcard" style="margin-left: 0px; margin-right: 0px;"></span><br />
<div style="height: 3px;">
<span class="post-author vcard" style="margin-left: 0px; margin-right: 0px;"><br /></span></div>
<span class="post-author vcard" style="margin-left: 0px; margin-right: 0px;">
</span></div>
</div>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-85038935735608414542019-02-23T08:49:00.000-06:002019-02-23T08:49:30.266-06:00Detectan falla de seguridad en Winrar o casi una década y media, ¿qué hacer, cómo protegerse?<div style="text-align: justify;">
<img alt="Logo Winrar" border="0" src="http://otakuzone.freestarthost.com/proyectos/compresor/logowinrar.png" style="float: left; padding-bottom: 10px; padding-right: 10px; vertical-align: text-top;" title="" width="81" /> Como he comentado en otras ocasiones, suelo visitar con frecuencia diversos blogs y foros informáticos para estar al tanto de este entorno. Algunas noticias resultan curiosas y otras es bueno prestarles atención. Tal es el caso de noticia reciente publicada en <a href="https://www.fayerwayer.com/2019/02/winrar-seguridad-falla-19" target="_blank">FayerWayer</a> donde se nos informa que se ha detectado un fallo grave en el compresor/descompresor de archivos Winrar al manejar incorrectamente archivos <a href="https://es.wikipedia.org/wiki/ACE_(formato_de_fichero)" target="_blank">ACE</a> que podrían hacer que terminemos con malware en nuestra pc. <i>¿Cómo resolverlo?</i>, les invito a seguir leyendo este post y daré algunas impresiones al respecto esperando les puedan ser de ayuda.<br />
<br />
<a name='more'></a></div>
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Entre texto -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
<div style="text-align: justify;">
Conocí Winrar allá por el año 2002-2003 cuando estaba junto con un amigo preparando nuestro proyecto de titulación, en ese entonces la única manera de pasarnos información para ir a la par era mediante disquetes. El problema es que los archivos eran enormes y no cabían en un solo disquete, <b><i>¿solución?</i></b>, <i>comprimir los archivos en formato zip y dividirlos en varios disquetes</i>.<br />
<br />
La idea era buena, excepto por el problema de que los disquetes se dañaban con frecuencia y adiós a todo el archivo comprimido. Fue entonces que mediante este amigo (Eduardo) conocí <a href="https://www.winrar.es/descargas" target="_blank">Winrar</a>. Winrar la verdad me encantó porque ahora era posible comprimir ese archivo en un solo disquete (<a href="https://www.winrar.es/soporte/manual/HELPRARVersusZIP" target="_blank">el formato rar comprime mucho más que el formato zip</a>), ya no se estropeaba tan fácil el trabajo y en general hizo más sencillo el trabajo. Durante muchos años usé Winrar como mi compresor de archivos favoritos hasta que conocí el <a href="https://es.wikipedia.org/wiki/7z" target="_blank">formato 7z</a>.<br />
<br />
El formato 7z comprime todavía mucho más los archivos, ideal para pasar documentos por Internet (sobretodo con conexiones lentas) o si tenemos restricciones en cuanto al tamaño de los archivos. Así terminé abandonando Winrar por <a href="http://www.peazip.org/" target="_blank">PeaZip</a> (un compresor/descompresor de archivos en formato 7z) y hasta la fecha es el que uso.<br />
<br />
Todavía uso Winrar, aunque poco la verdad. Bien, leyendo el artículo ya antes mencionado vemos que las versiones anteriores a 5.7 Beta 1 dan soporte al formato ACE mediante la librería <b>UNACEV2.DLL</b>. Esta librería no fue desarrollada por el equipo de Winrar, sino por otras personas que dejaron de darle soporte y hace 14 años que ha permanecido intacta (se modificó por última vez el <i>viernes, 26 de agosto de 2005, 12:50:00 a.m</i> de acuerdo con la siguiente imagen.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Librería UNACEV2.DLL" border="0" src="http://otakuzone.freestarthost.com/proyectos/compresor/desde2005.png" /></td>
</tr>
</tbody></table>
<br />
<b>Esta librería tiene un error:</b> bajo ciertos casos (<i>recomiendo leer el artículo ya mencionado para ahondar en los detalles</i>) es posible descomprimir partes de nuestro archivo en otras ubicaciones diferentes a la elegida. Eso podría hacer que se transmitiera malware u otros tipos de software dañinos sin que en ningún momento nos demos cuenta de ello (<i>habría que ver si nuestro antivirus detecta esto a tiempo, se recomienda siempre tenerlo actualizado</i>).<br />
<br />
Al ya no haber soporte para esa librería y tampoco al ser ellos sus desarrolladores, el equipo de Winrar decidió cortar por lo sano. <i>Simplemente esa librería ya no incluirla en las nuevas instalaciones</i>. Vamos a ver esto en acción para poder protegernos de un posible ataque.<br />
<br />
Lo primero que vamos a hacer es asegurarnos de que tenemos la librería UNACEV2.DLL en nuestro sistema, para ello usaré el buscador de archivos <a href="http://marjuanm.blogspot.com/2015/11/joyas-de-la-red-everthing.html">Everything</a> (podemos usar el que gustemos o tengamos instalado) y efectivamente, la librería forma parte de la instalación de Winrar 5.21 (que es la versión actual en mi Pc).<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/compresor/dllencontrada.png"><img alt="Librería UNACEV2.DLL" border="0" src="http://otakuzone.freestarthost.com/proyectos/compresor/dllencontrada.png" height="159" width="640" /></a></td>
</tr>
</tbody></table>
<br />
Procederemos a ir a la página web de Winrar y descargaremos la versión 5.71 Beta 2. Teclearemos en nuestro navegador web la dirección <a href="https://www.winrar.es/descargas" target="_blank">https://www.winrar.es/descargas</a> y descargaremos la versión de 32 o 64 bits dependiendo de nuestro sistema operativo.<br />
<br />
Debemos desinstalar la versión que ya teníamos previamente para quitar esta librería, ya no se incluye en las nuevas versiones pero es mejor quitarla completamente por seguridad. Ya con nuestro archivo descargado procederemos a instalarlo (no voy a entrar en detalles) y ahora volveremos a buscar la librería UNACEV2.DLL.<br />
<br />
<i>¿Qué tenemos ahora?</i>, nada, la librería ya no se encuentra (nota, vemos una carpeta llamada unace, esta es parte de PeaZip, pero está en blanco la carpeta, PeaZip 6.4.1 no tiene soporte para el formato ACE.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/compresor/dllnoencontrada.png"><img alt="Librería UNACEV2.DLL" border="0" src="http://otakuzone.freestarthost.com/proyectos/compresor/dllnoencontrada.png" height="142" width="640" /></a></td>
</tr>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/compresor/peazip.png"><img alt="PeaZip" border="0" src="http://otakuzone.freestarthost.com/proyectos/compresor/peazip.png" height="238" width="640" /></a></td>
</tr>
</tbody></table>
<br />
Si miramos las configuraciones de Winrar 5.21 y 5.71 Beta 2 vemos que Winrar ha dejado de darle soporte a los archivos ACE.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/compresor/old.png"><img alt="Winrar 5.21" border="0" src="http://otakuzone.freestarthost.com/proyectos/compresor/old.png" height="441" width="640" /></a></td>
</tr>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/compresor/new.png"><img alt="Winrar 5.71 Beta 2" border="0" src="http://otakuzone.freestarthost.com/proyectos/compresor/new.png" height="503" width="640" /></a></td>
</tr>
</tbody></table>
<br />
<b>¿Esto es bueno o malo?</b>, en mi opinión es bueno, ya no tendremos esa vulnerabilidad y resolverla es de lo más simple. Lo malo es que ya no tenemos soporte para el formato ACE, pero siendo francos yo nunca los he usado ni tampoco he conocido a alguien que me comparta algo en ese formato. En formato zip, rar y 7z si, un montón de veces, pero nunca en ace. <i>Así que a no ser que uses mucho ese formato creo que no lo vas a extrañar (tal vez ni siquiera sabías que existía)</i>.<br />
<br /></div>
<h3 style="text-align: justify;">
Conclusiones:</h3>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Se agradece al equipo de Winrar el corregir este problema, y siempre es preferente tener nuestros sistemas al día para evitar cualquier sobresalto, aunque a veces no es posible. Gracias por leernos.<br />
<br /></div>
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><div style="margin: 0px;">
<b>Procedencia de las imágenes:</b></div>
</td></tr>
<tr><td bgcolor="white" valign="middle"><div style="margin: 0px;">
<div style="text-align: start;">
Todas las pantallas y logotipos pertenecen a Winrar<br />
y PeaZip respectivamente.</div>
</div>
</td></tr>
</tbody></table>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com8tag:blogger.com,1999:blog-2570388371432361473.post-78240110725515421982019-02-18T23:40:00.000-06:002019-03-19T11:29:06.870-06:00Como tener el precio histórico de las criptomonedas usando PHP (últimos 6 meses) <div style="text-align: justify;">
<img alt="Criptomonedas" border="0" src="http://otakuzone.freestarthost.com/proyectos/proyectos/criptomonedas/criptomonedas.jpg" style="float: left; padding-bottom: 10px; padding-right: 10px; vertical-align: text-top;" title="" width="81" /> Tiempo atrás publiqué una serie de scripts para graficar el precio de los últimos seis meses para diversas criptomonedas usando Excel. Sin embargo se quedó pendiente como poder generar estos mismos gráficos pero usando PHP; pues bien, he aquí entonces lo que quedó en deuda esperando les sea de utilidad <img align="absmiddle" alt="Guiño" border="0" src="http://otakuzone.freestarthost.com/proyectos/smileys/wink.png" />.<br />
<br />
<a name='more'></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span><br />
<iframe frameborder="0" height="250" marginheight="0" marginwidth="0" scrolling="no" src="http://otakuzone.freestarthost.com/proyectos/banners2.php" width="300"></iframe>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
<div style="text-align: justify;">
Si por alguna razón aún no le han dado un vistazo a los scripts para graficar los precios de las criptomonedas en los últimos seis meses pueden visitar los siguientes enlaces, pues este script está basado en los ya mencionados pero adaptando el código fuente a PHP.<br />
<br />
<a href="http://marjuanm.blogspot.com/2018/02/como-tener-el-precio-historico-de-las.html">Como tener el precio histórico de las criptomonedas en un archivo de Excel (últimos 6 meses) - I</a><br />
<a href="http://marjuanm.blogspot.com/2018/03/como-tener-el-precio-historico-de-las.html">Como tener el precio histórico de las criptomonedas en un archivo de Excel (últimos 6 meses) - II</a><br />
<a href="http://marjuanm.blogspot.com/2018/03/como-tener-el-precio-historico-de-las_23.html">Como tener el precio histórico de las criptomonedas en un archivo de Excel (últimos 6 meses) - III</a><br />
<br />
<h4>
Preparativos </h4>
<br />
El siguiente script puede funcionar tanto en un servidor PHP local como uno en Internet, pero es necesario hacer algunas configuraciones previamente para asegurarnos que todo va a marchar bien. Yo estoy usando <a href="https://es.wikipedia.org/wiki/XAMPP" target="_blank">XAMPP</a> y haremos uso de la función <i>"file_get_contents"</i> para leer el contenido de un archivo externo a nuestro servidor web.<br />
<br />
Sin embargo es necesario habilitar dicha funcionalidad previamente en nuestro servidor web. Para ello <i>(la siguiente información aplica para configurar nuestro servidor local, para el servidor en Internet necesitamos revisar que tipo de servidor tenemos y donde se almacena el archivo php.ini para poder editarlo)</i> abriremos la carpeta donde está instalado XAMPP, en mi caso se encuentra en la carpeta <i>"C:\trabajos\programas\xampplite"</i>.<br />
<br />
Uso Windows 7, en el explorador de archivos ya abierto en la ruta donde tenemos XAMPP sobre el área de búsqueda del mismo escribiremos <i>*.ini</i> y esperaremos a que se muestren todos los resultados.<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Buscando archivos ini" border="0" src="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/ini.png" /></td>
</tr>
</tbody></table>
<br />
Ahora con un editor de texto plano (ejemplo Notepad) abriremos todos los archivos INI que comiencen con el nombre <i>php</i>, para ello iremos arrastrando de uno por uno a nuestro editor y buscaremos la cadena <i>;extension=php_openssl.dll</i>, la reemplazaremos por <i>extension=php_openssl.dll</i>, guardaremos cambios y haremos lo mismo para todos los archivos. Concretamente deben quedar editados los archivos <i><b>php.ini-recommended, php.ini-dist y php.ini</b></i> (todos los que encontremos). Guardaremos cambios y reiniciaremos nuestro servidor web.<br />
<br />
Es todo, ya la función file_get_contents debe trabajar sin problemas.<br />
<br />
<h4>
Código fuente</h4>
<br />
El script se compone de tres archivos: <i>emptyframe.html, graph.php e index.php, además de una carpeta llamada Cache y otra llamada pChart</i>. El primer archivo <i>emptyframe.html</i> solo contiene la estructura básica de un archivo html por lo que no lo detallaré, solo sirve de trasfondo al iniciar el script principal.<br />
<br />
El archivo <i>index.php</i> es la estructura principal del script, mediante el elegiremos la critpmoneda de la cual queremos saber su comportamiento, luciendo de la siguiente manera una vez puesto en marcha:<br />
<table border="0">
<tbody>
<tr>
<td valign="top"><img alt="Página de inicio" border="0" src="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/index.png" /></td>
</tr>
</tbody></table>
<br />
Elegiremos una criptmoneda de la lista o bien podemos ingresar sus iniciales en el campo de texto y presionaremos el botón <i>"Otra"</i> para consultar otra criptomoneda que no se encuentre en la lista. Este es el código fuente del archivo index.php.<br />
<br />
<i><span style="color: #666666;"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"></span></i><br />
<i><span style="color: #666666;"><html></span></i><br />
<i><span style="color: #666666;"><head></span></i><br />
<i><span style="color: #666666;"><meta http-equiv="content-type" content="text/html; charset=utf-8"></span></i><br />
<i><span style="color: #666666;"><meta name="generator" content="PSPad editor, www.pspad.com"></span></i><br />
<i><span style="color: #666666;"><title>Precio hist&oacute;rico de criptomonedas</title></span></i><br />
<i><span style="color: #666666;"><style type="text/css"></span></i><br />
<i><span style="color: #666666;"><!--</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">html </span></i><br />
<i><span style="color: #666666;">{</span></i><br />
<i><span style="color: #666666;"> overflow: hidden;</span></i><br />
<i><span style="color: #666666;">}</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">--></span></i><br />
<i><span style="color: #666666;"></style></span></i><br />
<i><span style="color: #666666;"><script language="JavaScript"></span></i><br />
<i><span style="color: #666666;"><!--</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">function gethistory()</span></i><br />
<i><span style="color: #666666;">{</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"> var coin = document.coin.list.options[document.coin.list.selectedIndex].value;</span></i><br />
<i><span style="color: #666666;"> var title = document.coin.list.options[document.coin.list.selectedIndex].text;</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> if(coin == "-")</span></i><br />
<i><span style="color: #666666;"> alert("Debe seleccionar una moneda de la lista.");</span></i><br />
<i><span style="color: #666666;"> else</span></i><br />
<i><span style="color: #666666;"> window.open("graph.php?coin=" + coin + "&name=" + title + "&time=" + Math.random(), "graph");</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;">}</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">function getother()</span></i><br />
<i><span style="color: #666666;">{</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"> var coin = document.coin.other.value;</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> if(coin == "" || coin == null || coin == "undefined")</span></i><br />
<i><span style="color: #666666;"> alert("Debe ingresar el simbolo de la criptomoneda");</span></i><br />
<i><span style="color: #666666;"> else</span></i><br />
<i><span style="color: #666666;"> window.open("graph.php?coin=" + coin + "&time=" + Math.random(), "graph");</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;">}</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">--></span></i><br />
<i><span style="color: #666666;"></script></span></i><br />
<i><span style="color: #666666;"></head></span></i><br />
<i><span style="color: #666666;"><body></span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"><form name="coin"></span></i><br />
<i><span style="color: #666666;"><table border="0" width="100%" height="100%"></span></i><br />
<i><span style="color: #666666;"><tr></span></i><br />
<i><span style="color: #666666;"><td valign="middle" colspan="2" height="1%"><h2>Seleccione una criptomoneda</h2></td></span></i><br />
<i><span style="color: #666666;"></tr></span></i><br />
<i><span style="color: #666666;"><td valign="middle" width="30%" height="1%"></span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"><select name="list" size="1" style="width: 100%; height: 30px; font-size: 14px;" onchange="javascript:gethistory();"></span></i><br />
<i><span style="color: #666666;"><option value="-">Criptomonedas disponibles</option></span></i><br />
<i><span style="color: #666666;"><option value="bitcoin">Bitcoin</option></span></i><br />
<i><span style="color: #666666;"><option value="bitcoin-cash">Bitcoin Cash</option></span></i><br />
<i><span style="color: #666666;"><option value="dash">Dash</option></span></i><br />
<i><span style="color: #666666;"><option value="dogecoin">Dogecoin</option></span></i><br />
<i><span style="color: #666666;"><option value="ethereum">Ethereum</option></span></i><br />
<i><span style="color: #666666;"><option value="litecoin">Litecoin</option></span></i><br />
<i><span style="color: #666666;"><option value="monero">Monero</option></span></i><br />
<i><span style="color: #666666;"><option value="ripple">Ripple</option></span></i><br />
<i><span style="color: #666666;"><option value="golem">Golem</option></span></i><br />
<i><span style="color: #666666;"><option value="curecoin">Curecoin</option></span></i><br />
<i><span style="color: #666666;"><option value="nem">XEM</option></span></i><br />
<i><span style="color: #666666;"><option value="zcash">Zcash</option></span></i><br />
<i><span style="color: #666666;"><option value="factom">Factom</option></span></i><br />
<i><span style="color: #666666;"><option value="bytecoin">Bytecoin</option></span></i><br />
<i><span style="color: #666666;"><option value="steem">STEEM</option></span></i><br />
<i><span style="color: #666666;"><option value="lisk">Lisk</option></span></i><br />
<i><span style="color: #666666;"><option value="gridcoin-research">GridCoin</option></span></i><br />
<i><span style="color: #666666;"><option value="ethereum-classic">Ethereum classic</option></span></i><br />
<i><span style="color: #666666;"><option value="bitcore">Bitcore</option></span></i><br />
<i><span style="color: #666666;"><option value="blackcoin">Blackcoin</option></span></i><br />
<i><span style="color: #666666;"><option value="cardano">Cardano</option></span></i><br />
<i><span style="color: #666666;"><option value="peercoin">Peercoin</option></span></i><br />
<i><span style="color: #666666;"><option value="primecoin">Primecoin</option></span></i><br />
<i><span style="color: #666666;"><option value="chaucha">Chaucha</option></span></i><br />
<i><span style="color: #666666;"></select></span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"></td></span></i><br />
<i><span style="color: #666666;"><td valign="top" width="70%"></span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"><table border="0"></span></i><br />
<i><span style="color: #666666;"><tr></span></i><br />
<i><span style="color: #666666;"><td valign="top"></span></i><br />
<i><span style="color: #666666;"><input type="text" name="other" value="" maxlenght="10" style="width: 150px; height: 30px; font-size: 14px;"></span></i><br />
<i><span style="color: #666666;"></td></span></i><br />
<i><span style="color: #666666;"><td valign="top"></span></i><br />
<i><span style="color: #666666;"><input type="button" value="Otra" style="height: 30px; font-size: 14px;" onclick="javascript:getother();"></span></i><br />
<i><span style="color: #666666;"></td></span></i><br />
<i><span style="color: #666666;"></tr></span></i><br />
<i><span style="color: #666666;"></table></span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"></td></span></i><br />
<i><span style="color: #666666;"></tr></span></i><br />
<i><span style="color: #666666;"><tr></span></i><br />
<i><span style="color: #666666;"><td valign="top" colspan="2" height="1%"></span></i><br />
<i><span style="color: #666666;"><hr></span></i><br />
<i><span style="color: #666666;"></td></span></i><br />
<i><span style="color: #666666;"></tr></span></i><br />
<i><span style="color: #666666;"><tr></span></i><br />
<i><span style="color: #666666;"><td valign="top" colspan="2" height="97%"></span></i><br />
<i><span style="color: #666666;"><iframe src="emptyframe.html" frameborder="0" scrolling="no" width="100%" height="100%" name="graph">Su navegador no soporta iframes.</iframe></span></i><br />
<i><span style="color: #666666;"></td></span></i><br />
<i><span style="color: #666666;"></tr></span></i><br />
<i><span style="color: #666666;"></table><?</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"> //thanks to http://thisinterestsme.com/php-delete-all-files-from-a-folder/</span></i><br />
<i><span style="color: #666666;"> $folder = "Cache";</span></i><br />
<i><span style="color: #666666;"> $files = glob($folder."/*");</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> foreach($files as $file)</span></i><br />
<i><span style="color: #666666;"> if(is_file($file))</span></i><br />
<i><span style="color: #666666;"> @unlink($file);</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">?></span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"></body></span></i><br />
<i><span style="color: #666666;"></html></span></i><br />
<br />
Básicamente lo que hacemos es mostrar una una lista de criptomonedas, cada elemento tiene asociada la cadena con que <a href="http://www.coingecko.com/" target="_blank">coingecko.com</a> la conoce (es quien nos presta el servicio de consulta histórica de los precios de diversas criptomonedas). Una vez seleccionada una criptomoneda mandamos llamar la función <i>"gethistory()"</i> para recuperar los detalles de la criptomoneda y posteriormente cargamos el archivo <i>"graph.php"</i> en un iframe que hasta el momento teníamos oculto (es por ello la existencia del archivo emptyframe.html).<br />
<br />
Lo mismo aplica para el botón <i>"Otra"</i>, aquí tomaremos las iniciales de la criptomoneda a analizar (es importante saber como se llama previamente en coingecko.com) y nuevamente haremos uso del iframe con el archivo <i>graph.php</i> y los parámetros adecuados tomados de la criptomoneda a analizar.<br />
<br />
<i><span style="color: #666666;">if(coin == "-")</span></i><br />
<i><span style="color: #666666;"> alert("Debe seleccionar una moneda de la lista.");</span></i><br />
<i><span style="color: #666666;">else</span></i><br />
<i><span style="color: #666666;"> window.open("graph.php?coin=" + coin + "&name=" + title + "&time=" + Math.random(), "graph");</span></i><br />
<br />
Si miramos al final de nuestro archivo index.php veremos el siguiente código fuente:<br />
<br />
<i><span style="color: #666666;"><?</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"> //thanks to http://thisinterestsme.com/php-delete-all-files-from-a-folder/</span></i><br />
<i><span style="color: #666666;"> $folder = "Cache";</span></i><br />
<i><span style="color: #666666;"> $files = glob($folder."/*");</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> foreach($files as $file)</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> if(is_file($file))</span></i><br />
<i><span style="color: #666666;"> @unlink($file);</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">?></span></i><br />
<br />
Cuando el gráfico es generado se almacena en la carpeta <i>"Cache"</i> que se encuentra en la ruta raíz de nuestro script (a la altura del archivo index.php). Esto tiene la ventaja de no generar el mismo gráfico por segunda vez para si por ejemplo volvemos a consultar una misma moneda, pero si hay cambios en la moneda en largo tiempo, el gráfico no se actualizaría hasta que no borráramos el contenido de esa carpeta. Pues bien, esa es la funcionalidad de éste código fuente. Cada vez que ingresemos por primera vez al script entonces automáticamente se vaciará la carpeta <i>"Cache"</i> para asegurarnos que por lo menos en esa sesión los datos estén frescos.<br />
<br />
Ahora veamos el contenido del archivo graph.php.<br />
<br />
<i><span style="color: #666666;"><?php</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"> include("pChart/pChart/pData.class"); </span></i><br />
<i><span style="color: #666666;"> include("pChart/pChart/pChart.class"); </span></i><br />
<i><span style="color: #666666;"> include("pChart/pChart/pCache.class"); </span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"> if(isset($_GET["coin"]))</span></i><br />
<i><span style="color: #666666;"> $coin = trim($_GET["coin"]);</span></i><br />
<i><span style="color: #666666;"> else</span></i><br />
<i><span style="color: #666666;"> $coin = "";</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> if(isset($_GET["name"]))</span></i><br />
<i><span style="color: #666666;"> $name = trim($_GET["name"]);</span></i><br />
<i><span style="color: #666666;"> else</span></i><br />
<i><span style="color: #666666;"> $name = "Criptomoneda desconocida";</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> $price = array();</span></i><br />
<i><span style="color: #666666;"> $time = array();</span></i><br />
<br />
<i><span style="color: #666666;"> if(trim($coin) == "")</span></i><br />
<i><span style="color: #666666;"> echo "No ingres&oacute; el simbolo de ninguna criptomoneda.";</span></i><br />
<i><span style="color: #666666;"> else</span></i><br />
<i><span style="color: #666666;"> {</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> ini_set('memory_limit', '1024M' );</span></i><br />
<i><span style="color: #666666;"> set_time_limit(0);</span></i><br />
<i><span style="color: #666666;"> </span></i><br />
<i><span style="color: #666666;"> //thanks to http://php.net/manual/fr/function.file-get-contents.php</span></i><br />
<i><span style="color: #666666;"> //thanks to https://www.coingecko.com</span></i><br />
<i><span style="color: #666666;"> //thanks to https://www.softqubes.com/blog/how-csv-data-can-be-read-in-php-array/</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $csv = @file_get_contents("https://www.coingecko.com/price_charts/export/".trim($coin)."/usd.csv");</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $lines = explode("\n", $csv);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> if((int)count($lines) <= 1)</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> echo "Simbolo inv&aacute;lido.";</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> else</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> { </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $i = 0;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $j = 0;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $pos = 0;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $max = 0;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> if(count($lines) <= 180)</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $pos = 0;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $max = count($lines);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> else</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $max = count($lines);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $pos = ($max - 180) - 1;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>for($j=$pos; $j < $max; $j++)</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> if(trim($lines[$j]) != "")</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>if(strpos(".".strtolower(trim($lines[$j])), "snapped_at") <= 0)</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $myarray = explode(",", trim($lines[$j]));</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $time[$i] = date("d/m/Y", strtotime(substr(trim($myarray[0]), 0, 10)));</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$history[$i] = trim($myarray[1]);</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> $i++;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$DataSet = new pData(); </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span>$DataSet->AddPoint($history, "Serie1"); </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span>$DataSet->AddAllSeries(); </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span>$DataSet->SetAbsciseLabelSerie("X");</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$DataSet->SetSerieName("USD", "Serie1"); </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span></span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span>$Cache = new pCache(); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Cache->GetFromCache("Graph1", $DataSet->GetData()); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test = new pChart(1038, 486); //full area to work</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 8); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setGraphArea(50, 60, 981, 458); //graph area </span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>//gray body rectangle</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawFilledRoundedRectangle(7, 7, 993, 482, 5, 240, 240, 240); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawRoundedRectangle(5, 5, 995, 484, 5, 230, 230, 230);</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawGraphArea(255, 255, 255, TRUE); //graph background color </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span>$Test->drawScale($DataSet->GetData(), $DataSet->GetDataDescription(), SCALE_NORMAL, 0, 0, 0, TRUE, 0,2); //usd metter colors </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span></span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>//configure bar color, thanks to http://wiki.pchart.net/doc.settings.setpalette.html</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setColorPalette(0, 63, 153, 178); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setLineStyle(2); //heigth line border thanks to http://pchart.sourceforge.net/documentation.php?topic=pChart#</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>// Draw the cubic curve graph</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawCubicCurve($DataSet->GetData(), $DataSet->GetDataDescription()); </span></i><br />
<br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>// series titles</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 13); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawLegend(872, 32, $DataSet->GetDataDescription(), 255, 255, 255); </span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>//title</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 16); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawTitle(50, 32,"Historial ".trim($name)." (6 meses)", 50, 50, 50, 585); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 13); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawTitle(50, 52,"Fuente: Coingecko.com", 50, 50, 50, 585); </span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$diff1 = 798 / 3;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos1 = 0;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos4 = count($time) - 1;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$diff2 = ceil(($pos4 - $pos1) / 3);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos2 = (($pos1 + $diff2)) - 1;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos3 = ($pos2 + $diff2);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos1txt = $time[$pos1];</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos4txt = $time[$pos4];</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos2txt = $time[$pos2];</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$pos3txt = $time[$pos3];</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>//x axis labels</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 10); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawTitle(46, 477, $pos1txt, 50, 50, 50); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawTitle(909, 477, $pos4txt, 50, 50, 50);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawTitle(111 + $diff1 - 70, 477, $pos2txt, 50, 50, 50);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->drawTitle(111 + ($diff1 * 2) + 5, 477, $pos3txt, 50, 50, 50);</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>// Render the graph </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Cache->WriteToCache("Graph1",$DataSet->GetData(),$Test); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$Test->Stroke();</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">?></span></i><br />
<br />
Las partes interesantes son las siguientes:<br />
<br />
<i><span style="color: #666666;">@file_get_contents("https://www.coingecko.com/price_charts/export/".trim($coin)."/usd.csv");</span></i><br />
<i><span style="color: #666666;">$lines = explode("\n", $csv);</span></i><br />
<br />
Mediante este par de líneas recuperaremos el precio histórico de una criptomoneda desde coingecko.com en formato <a href="https://es.wikipedia.org/wiki/Valores_separados_por_comas" target="_blank">CSV</a>, una vez recuperado el archivo lo separaremos línea por línea para poderlo analizar.<br />
<br />
Si hubo resultados (caso contrario mostraremos un aviso de error) iremos dividiendo cada línea en columnas y cargaremos las que nos interesan.<br />
<br />
Como nos interesa solo tener los datos de los últimos seis meses aplicaremos dicho filtro (coingecko.com retorna todo el historial existente) recuperando únicamente los últimos 180 registros (es uno por día):<br />
<br />
<i><span style="color: #666666;">$i = 0;</span></i><br />
<i><span style="color: #666666;">$j = 0;</span></i><br />
<i><span style="color: #666666;">$pos = 0;</span></i><br />
<i><span style="color: #666666;">$max = 0;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;">if(count($lines) <= 180)</span></i><br />
<i><span style="color: #666666;">{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"> $pos = 0;</span></i><br />
<i><span style="color: #666666;"> $max = count($lines);</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;">}</span></i><br />
<i><span style="color: #666666;">else</span></i><br />
<i><span style="color: #666666;">{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"> $max = count($lines);</span></i><br />
<i><span style="color: #666666;"> $pos = ($max - 180) - 1;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;">}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;">for($j=$pos; $j < $max; $j++)</span></i><br />
<i><span style="color: #666666;">{</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"> if(trim($lines[$j]) != "")</span></i><br />
<i><span style="color: #666666;"> {</span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;"> if(strpos(".".strtolower(trim($lines[$j])), "snapped_at") <= 0)</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> {</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$myarray = explode(",", trim($lines[$j]));</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$time[$i] = date("d/m/Y", strtotime(substr(trim($myarray[0]), 0, 10)));</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$history[$i] = trim($myarray[1]);</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>$i++;</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> }</span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span>}</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;"> }</span></i><br />
<br />
Una vez recuperados vamos a empezar a generar nuestro gráfico:<br />
<br />
<i><span style="color: #666666;">$DataSet = new pData(); </span></i><br />
<i><span style="color: #666666;">$DataSet->AddPoint($history, "Serie1"); </span></i><br />
<i><span style="color: #666666;">$DataSet->AddAllSeries(); </span></i><br />
<i><span style="color: #666666;">$DataSet->SetAbsciseLabelSerie("X");</span></i><br />
<i><span style="color: #666666;">$DataSet->SetSerieName("USD", "Serie1"); </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span></span></i><br />
<i><span style="color: #666666;">$Cache = new pCache(); </span></i><br />
<i><span style="color: #666666;">$Cache->GetFromCache("Graph1", $DataSet->GetData()); </span></i><br />
<i><span style="color: #666666;"><span style="white-space: pre;"> </span> </span></i><br />
<i><span style="color: #666666;">$Test = new pChart(1038, 486); //full area to work</span></i><br />
<i><span style="color: #666666;">$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 8); </span></i><br />
<i><span style="color: #666666;">$Test->setGraphArea(50, 60, 981, 458); //graph area </span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;">//gray body rectangle</span></i><br />
<i><span style="color: #666666;">$Test->drawFilledRoundedRectangle(7, 7, 993, 482, 5, 240, 240, 240); </span></i><br />
<i><span style="color: #666666;">$Test->drawRoundedRectangle(5, 5, 995, 484, 5, 230, 230, 230);</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;">$Test->drawGraphArea(255, 255, 255, TRUE); //graph background color </span></i><br />
<i><span style="color: #666666;">$Test->drawScale($DataSet->GetData(), $DataSet->GetDataDescription(), SCALE_NORMAL, 0, 0, 0, TRUE, 0,2); //usd metter colors </span></i><br />
<i><span style="color: #666666;"> <span style="white-space: pre;"> </span></span></i><br />
<i><span style="color: #666666;">//configure bar color, thanks to http://wiki.pchart.net/doc.settings.setpalette.html</span></i><br />
<i><span style="color: #666666;">$Test->setColorPalette(0, 63, 153, 178); </span></i><br />
<i><span style="color: #666666;">$Test->setLineStyle(2); //heigth line border thanks to http://pchart.sourceforge.net/documentation.php?topic=pChart#</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;">// Draw the cubic curve graph</span></i><br />
<i><span style="color: #666666;">$Test->drawCubicCurve($DataSet->GetData(), $DataSet->GetDataDescription()); </span></i><br />
<br />
<i><span style="color: #666666;">// series titles</span></i><br />
<i><span style="color: #666666;">$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 13); </span></i><br />
<i><span style="color: #666666;">$Test->drawLegend(872, 32, $DataSet->GetDataDescription(), 255, 255, 255); </span></i><br />
<i><span style="color: #666666;"><br /></span></i>
<i><span style="color: #666666;">//title</span></i><br />
<i><span style="color: #666666;">$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 16); </span></i><br />
<i><span style="color: #666666;">$Test->drawTitle(50, 32,"Historial ".trim($name)." (6 meses)", 50, 50, 50, 585); </span></i><br />
<i><span style="color: #666666;">$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 13); </span></i><br />
<i><span style="color: #666666;">$Test->drawTitle(50, 52,"Fuente: Coingecko.com", 50, 50, 50, 585); </span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;">$diff1 = 798 / 3;</span></i><br />
<i><span style="color: #666666;">$pos1 = 0;</span></i><br />
<i><span style="color: #666666;">$pos4 = count($time) - 1;</span></i><br />
<i><span style="color: #666666;">$diff2 = ceil(($pos4 - $pos1) / 3);</span></i><br />
<i><span style="color: #666666;">$pos2 = (($pos1 + $diff2)) - 1;</span></i><br />
<i><span style="color: #666666;">$pos3 = ($pos2 + $diff2);</span></i><br />
<i><span style="color: #666666;">$pos1txt = $time[$pos1];</span></i><br />
<i><span style="color: #666666;">$pos4txt = $time[$pos4];</span></i><br />
<i><span style="color: #666666;">$pos2txt = $time[$pos2];</span></i><br />
<i><span style="color: #666666;">$pos3txt = $time[$pos3];</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;">//x axis labels</span></i><br />
<i><span style="color: #666666;">$Test->setFontProperties("pChart/Fonts/tahoma.ttf", 10); </span></i><br />
<i><span style="color: #666666;">$Test->drawTitle(46, 477, $pos1txt, 50, 50, 50); </span></i><br />
<i><span style="color: #666666;">$Test->drawTitle(909, 477, $pos4txt, 50, 50, 50);</span></i><br />
<i><span style="color: #666666;">$Test->drawTitle(111 + $diff1 - 70, 477, $pos2txt, 50, 50, 50);</span></i><br />
<i><span style="color: #666666;">$Test->drawTitle(111 + ($diff1 * 2) + 5, 477, $pos3txt, 50, 50, 50);</span></i><br />
<span style="white-space: pre;"><i><span style="color: #666666;"> </span></i></span><br />
<i><span style="color: #666666;">// Render the graph </span></i><br />
<i><span style="color: #666666;">$Cache->WriteToCache("Graph1",$DataSet->GetData(),$Test); </span></i><br />
<i><span style="color: #666666;">$Test->Stroke();</span></i><br />
<br />
Este script hace uso de la librería <b>pChart</b> la cual se encarga de generarnos diversos tipos de gráficos a partir de un archivo CSV o un array de datos. La pueden descargar desde <a href="http://pchart.sourceforge.net/" target="_blank">http://pchart.sourceforge.net/</a> y se encuentra liberada bajo licencia <a href="https://es.wikipedia.org/wiki/GNU_General_Public_License" target="_blank">GPL</a>.<br />
<br />
Si todo está listo, ya tenemos la estructura de nuestro script teniendo en la carpeta raíz los archivos <i>index.php, graph.php, emptyframe.html, la carpeta Cache y la pChart</i> (misma que contiene la librería) entonces ya solo resta ir a nuestro navegador web (previamente iniciado nuestro servidor web) y teclear <i>http://127.0.0.1/historico (o el nombre que le hallamos dado a nuestro proyecto)</i> y una vez mostrada la página de inicio podemos seleccionar la criptomoneda que gustemos para ver su comportamiento.<br />
<br />
He aquí algunos ejemplos:<br />
<br />
<b><span style="font-size: large;">Bitcoin:</span></b><br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/btc.png"><img alt="Historico Bitcoin" border="0" src="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/btc.png" height="432" width="640" /></a></td>
</tr>
</tbody></table>
<br />
<b><span style="font-size: large;">Ethereum:</span></b><br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/eth.png"><img alt="Historico Ethereum" border="0" src="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/eth.png" height="432" width="640" /></a></td>
</tr>
</tbody></table>
<br />
<b><span style="font-size: large;">Monero:</span></b><br />
<table border="0">
<tbody>
<tr>
<td valign="top"><a href="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/xmr.png"><img alt="Historico Monero" border="0" src="http://otakuzone.freestarthost.com/proyectos/criptomonedas-historico/xmr.png" height="432" width="640" /></a></td>
</tr>
</tbody></table>
<br />
El script completo lo pueden bajar en formato zip desde el siguiente link que a continuación se mostrará. Una vez descargado el archivo zip descomprimirlo y dentro encontraremos una carpeta llamada <i>"historico"</i>, esa carpeta la copiaremos a donde se encuentre la carpeta "htdocs" de nuestra instalación de XAMPP, iniciaremos el servidor web y teclearemos en la barra del navegador web <i>http://127.0.0.1/historico</i> para empezar a usarlo.<br />
<br />
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://otakuzone.freestarthost.com/proyectos/contabilizar/descargar.php?id=criptomonedasphp" style="height: 30px; overflow: hidden; width: 100%;"></iframe><br /></div>
<h3 style="text-align: justify;">
Conclusiones:</h3>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Concluimos con este artículo donde se muestra como poder empezar a analizar el comportamiento de las criptomonedas a lo largo del tiempo. Sin embargo estas no solo sirven para almacenarse como dinero, sino para todo comercio electrónico (siempre y cuando la otra persona las acepte), pero también se están desarrollando proyectos para por ejemplo almacenar archivos, documentos muy importantes y muchísimas aplicaciones basadas en el blockchain. Si aún no han leido los diversos artículos dedicados a las criptomonedas en este blog, les pido por favor lo hagan <a href="http://marjuanm.blogspot.com/search?q=criptomonedas&updated-max=2016-01-05T14:48:00-08:00&max-results=5&by-date=true">haciendo clic en este enlace</a>. Gracias por leernos.<br />
<br /></div>
<div style="text-align: justify;">
<div style="text-align: justify;">
<div style="font-family: "times new roman";">
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><div style="margin: 0px;">
<b>Procedencia de las imágenes:</b></div>
</td></tr>
<tr><td bgcolor="white" valign="middle"><div style="margin: 0px;">
<div style="text-align: start;">
<b>File: </b><span style="background-color: transparent; text-align: justify;"><b>Criptomonedas</b></span><br />
<b>URL</b>: <a href="http://shadowmyst.net/tag/criptomonedas/" rel="nofollow" target="_blank">http://shadowmyst.net/tag/criptomonedas/</a><br />
<b>Licencia:</b> <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">Creative Commons</a></div>
</div>
<div style="margin: 0px;">
</div>
</td></tr>
</tbody></table>
</div>
</div>
</div>
<br />
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
<br />
<hr />
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://otakuzone.freestarthost.com/proyectos/donaciones/general.html" style="border: none; height: 430px; overflow: hidden; width: 90%;"></iframe>J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0tag:blogger.com,1999:blog-2570388371432361473.post-83270458454088776532019-02-12T08:30:00.001-06:002022-09-28T16:07:15.393-05:00Como incrustar un archivo PDF en un iframe y desactivar el botón derecho del mouse sobre ese archivo<div style="text-align: justify;">
<img alt="Logo PDF" border="0" src="http://otakuzone.freestarthost.com/proyectos/pdf.png" style="float: left; padding-bottom: 10px; padding-right: 10px; vertical-align: text-top;" title="" width="69" /> <i>El presente tutorial no pretende ser una medida de seguridad exhaustiva, sino un simple truco para proteger nuestra información a mostrarse en Internet.</i> Queremos mostrar un archivo PDF insertado en nuestra web, pero que al mismo tiempo no se pueda copiar su contenido, ni guardarlo ni mucho menos imprimirlo. <b><i>¿Cómo lo podríamos lograr?</i></b>, les invito a seguir leyendo este post.<br />
<a name='more'></a></div>
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<span style="color: #003466; font-size: 16px; font-weight: bold;">Publicidad</span>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!--Entre texto-->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-3184210105383953" data-ad-slot="8414637682" style="display: inline-block; height: 250px; width: 300px;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div style="background-color: #003466; height: 2px; width: 100%;">
</div>
<br />
<div style="text-align: justify;">
Supongamos que queremos mostrar un archivo PDF en nuestra web, pero que sea solo de consulta, no ofreciendo al visitante la posibilidad de copiar nuestro contenido, <i><b>OK</b>, sabemos que no es posible proteger del todo nuestra información en la red y el único método 100% seguro es simplemente no ponerla,</i> pero aún así a veces vamos a tener que poner algo que al menos de primera instancia no sea tan sencillo de copiar.<br />
<br />
Para ello haremos uso del siguiente código fuente:<br />
<br />
<i><span style="color: #444444;"><html></span></i><br />
<i><span style="color: #444444;"><head></span></i><br />
<i><span style="color: #444444;"><title>Embed PDF</title></span></i><br />
<i><span style="color: #444444;"><script language="JavaScript"></span></i><br />
<i><span style="color: #444444;"><!--</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">function loadpdf()</span></i><br />
<i><span style="color: #444444;">{</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> var path = "ruta de nuestro archivo pdf";</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> //thanks to https://www.codexworld.com/embed-pdf-document-file-in-html-web-page/</span></i><br />
<i><span style="color: #444444;"> document.getElementById("pdf").src = trim(path) + "#toolbar=0&statusbar=0&navpanes=0";</span></i><br />
<i><span style="color: #444444;"> document.getElementById("pdf").style.display = "block";</span></i><br />
<i><span style="color: #444444;"> document.getElementById("pdf").style.visibility = "visible";</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> document.getElementById("nomenu").style.display = "block";</span></i><br />
<i><span style="color: #444444;"> document.getElementById("nomenu").style.visibility = "visible";</span></i><br />
<i><span style="color: #444444;"> </span></i><br />
<i><span style="color: #444444;"> document.getElementById("loading").style.visibility = "hidden";</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">}</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<span style="color: #444444;"><i>function loadfunctions()</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i> //thanks to https://stackoverflow.com/questions/31835095/keycode-for-print-screen-44-is-not-working</i></span><br />
<span style="color: #444444;"><i> window.addEventListener("keyup", keydetect, false);</i></span><br />
<span style="color: #444444;"><i> </i></span><br />
<span style="color: #444444;"><i>}</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i>function keydetect(e)</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i> //thanks to https://stackoverflow.com/questions/31835095/keycode-for-print-screen-44-is-not-working</i></span><br />
<span style="color: #444444;"><i> if(e.keyCode == "44")</i></span><br />
<span style="color: #444444;"><i> copytoclipboard("No esta permitido copiar y pegar este PDF sin permiso del autor. Disculpe las molestias.");</i></span><br />
<span style="color: #444444;"><i> </i></span><br />
<span style="color: #444444;"><i>}</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i>//thanks to http://www.desarrolloweb.com/articulos/copiar-en-portapapeles-con-javascript.html</i></span><br />
<span style="color: #444444;"><i>//thanks to https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript</i></span><br />
<span style="color: #444444;"><i>function copytoclipboard(str)</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<br />
<div style="text-align: left;">
<span style="color: #444444;"><i> try</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> {</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: left;">
<i style="color: #444444;"> if(navigator.userAgent.toLowerCase().indexOf("firefox") < 0 && navigator.userAgent.toLowerCase().indexOf("chrome") < 0 && navigator.userAgent.toLowerCase().indexOf("webkit") < 0)</i></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> window.clipboardData.setData("Text", str);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> else</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> {</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>try</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>{</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> </i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> if(navigator.userAgent.toLowerCase().indexOf("firefox") < 0)</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> {</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> </i></span><i style="color: #444444;">var textArea = document.createElement("textarea");</i></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> </i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> textArea.style.position = "fixed";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.top = 0;</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.left = 0;</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.width = "2em";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.height = "2em";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.padding = 0;</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.border = "none";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.outline = "none";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.boxShadow = "none";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.background = "transparent";</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.value = str;</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>document.body.appendChild(textArea);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.focus();</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.select();</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>document.execCommand('copy');</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>document.body.removeChild(textArea);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span></i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> }</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> else</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> alert(str);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span></i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> }</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> catch(ex)</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> {</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> }</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> }</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<i style="color: #444444; text-align: justify;">}</i></div>
<span style="color: #444444;"><i>catch(e)</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i>}</i></span><br />
<span style="color: #444444;"><i> </i></span><br />
<i><span style="color: #444444;"></span></i><br />
<span style="color: #444444;"><i>}</i></span><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">--></span></i><br />
<i><span style="color: #444444;"></script></span></i><br />
<i><span style="color: #444444;"></head></span></i><br />
<i><span style="color: #444444;"><body oncontextmenu="return false;" onkeydown="return false;" onselectstart="return false;" ondragstart="return false;" </span></i><span style="color: #444444;"><i>onload="javascript:loadfunctions();"</i></span><i><span style="color: #444444;">></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><!-- Thanks to https://stackoverflow.com/questions/737022/how-do-i-disable-right-click-on-my-web-page --></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><div id="loading" style="position: absolute; left: 0px; top: 0px; width: 100%; height: 100%;"><font class='defaulttext'>Cargando, espere un momento por favor...</font></div></span></i><br />
<i><span style="color: #444444;"><iframe src="emptyframe.php" id="pdf" frameborder="0" width="100%" height="100%" style="visibility: hidden;" onload="javascript:loadpdf();">Su navegador web no soporta iframes.</iframe></span></i><br />
<i><span style="color: #444444;"><div id="nomenu" style="position: absolute; left: 0px; top: 0px; width: 98%; height: 100%; visibility: hidden; z-index: 1000;"></div></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"><!-- Thanks to https://stackoverflow.com/questions/737022/how-do-i-disable-right-click-on-my-web-page --></span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"></body></span></i><br />
<i><span style="color: #444444;"></html></span></i><br />
<br />
El funcionamiento es el siguiente:<br />
<br />
En el cuerpo de la página web donde queremos insertar nuestro PDF tenemos una capa que muestra el texto <i>"Cargando, espere un momento por favor..."</i>, esto para evitar que el navegante vea solo una pantalla en blanco mientras inicia la carga del archivo PDF y así no tenga la sensación de que nada está pasando.<br />
<br />
Posteriormente tenemos la etiqueta <i><iframe></iframe></i> que será la responsable de cargar nuestro archivo PDF, inicialmente está cargando un simple archivo en blanco, no lo pongo en éste tutorial porque simplemente no tiene nada, solo la estructura básica de un archivo html con el color de fondo del documento en color blanco. Fijamos la visibilidad del iframe a hidden mediante la hoja de estilos integrada al iframe (<i>style="visibility: hidden;"</i>) y finalmente cuando se halla cargado el archivo PDF se disparará el evento loadpdf mediante el evento onload del iframe.<br />
<br />
A continuación viene la parte esencial de este tutorial: una capa oculta identificada como <i>"nomenu"</i>, puesta de forma absoluta sobre el iframe (estamos asumiendo que lo único que vamos a mostrar es un iframe en la página web ocupando todo el espacio disponible también. Si vamos a colocar el iframe en otra posición necesitaremos ajustar estos parámetros.<br />
<br />
Esta capa lleva la siguiente hoja de estilos: <i>style="position: absolute; left: 0px; top: 0px; width: 98%; height: 100%; visibility: hidden; z-index: 1000;"</i><br />
<br />
Donde:<br />
<br />
position: absolute; visibility: hidden y z-index: 1000 garantizan que esta capa ocultará el contenido del iframe, pero siendo transparente al mismo tiempo.<br />
<br />
left: 0px; top: 0px; width: 98%; y height: 100%; harán que efectivamente esta capa se coloque sobre sobre el iframe con el archivo PDF cargado consiguiendo que ya no sea posible mostrar el menú emergente que el navegador genera al hacer clic con el botón derecho o secundario del mouse y por lo tanto desaparecerían las opciones de copiar, guardar e imprimir el archivo incrustrado. El ancho de 98% permite que si se visualicen la barra vertical del iframe y poder navegar por el archivo incrustado sin problemas.<br />
<br />
Finalmente la etiqueta <i><body oncontextmenu="return false;" onkeydown="return false;" onselectstart="return false;" ondragstart="return false;" onload="javascript:loadfunctions();"></i> deshabilitaría el botón emergente sobre todo el documento de manera que no podamos seleccionar nada, no podamos mostrar el menú emergente del navegador web sobre el texto y mucho menos ver el código fuente por este medio (como dije antes, esto no es una medida de seguridad exhaustiva, hay otras maneras de ver el código fuente) disuadiendo al menos por un tiempo a los navegantes novatos.<br />
<br />
Cuando la página web inicia su proceso de carga veremos en primer lugar un aviso que nos indica que se encuentra cargando el archivo, posteriormente una vez cargado se dispara la función loadpdf y mediante el código fuente se oculta la capa <i>"loading"</i>, se muestra el iframe y se muestra la capa <i>"nomenu"</i> y así queda protegido nuestro archivo PDF tal como se muestra mediante el siguiente código fuente:<br />
<br />
<i><span style="color: #444444;">function loadpdf()</span></i><br />
<i><span style="color: #444444;">{</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> var path = "ruta de nuestro archivo pdf";</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> //thanks to https://www.codexworld.com/embed-pdf-document-file-in-html-web-page/</span></i><br />
<i><span style="color: #444444;"> document.getElementById("pdf").src = trim(path) + "#toolbar=0&statusbar=0&navpanes=0";</span></i><br />
<i><span style="color: #444444;"> document.getElementById("pdf").style.display = "block";</span></i><br />
<i><span style="color: #444444;"> document.getElementById("pdf").style.visibility = "visible";</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> document.getElementById("nomenu").style.display = "block";</span></i><br />
<i><span style="color: #444444;"> document.getElementById("nomenu").style.visibility = "visible";</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;"> document.getElementById("loading").style.visibility = "hidden";</span></i><br />
<i><span style="color: #444444;"><br /></span></i>
<i><span style="color: #444444;">}</span></i><br />
<br />
Para añadir un <i>"poco"</i> más de seguridad no se puede copiar cualquier texto que hubiera en pantalla ni mostrar el menú emergente del navegador, además de proteger el pdf mediante una capa. Pero también es posible evitar que el usuario vaya a copiar nuestro pdf usando la tecla <i>"Imprimir pantalla"</i>. Para ello mediante la función <i>"loadfunctions"</i> que se dispara al cargar la web interceptaremos dicha tecla de la siguiente manera.<br />
<br />
<span style="color: #444444;"><i>function loadfunctions()</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i> //thanks to https://stackoverflow.com/questions/31835095/keycode-for-print-screen-44-is-not-working</i></span><br />
<span style="color: #444444;"><i> window.addEventListener("keyup", keydetect, false);</i></span><br />
<span style="color: #444444;"><i> </i></span><br />
<span style="color: #444444;"><i>}</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i>function keydetect(e)</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i> //thanks to https://stackoverflow.com/questions/31835095/keycode-for-print-screen-44-is-not-working</i></span><br />
<span style="color: #444444;"><i> if(e.keyCode == "44")</i></span><br />
<span style="color: #444444;"><i> copytoclipboard("No esta permitido copiar y pegar este PDF sin permiso del autor. Disculpe las molestias.");</i></span><br />
<span style="color: #444444;"><i> </i></span><br />
<span style="color: #444444;"><i>}</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
Hasta aquí lo que hacemos es disparar la función <i>keydetect</i> cada vez que se presiona una tecla, verificamos que se trate de la tecla <i>"Imprimir pantalla"</i> <b>(código 44)</b>, si es así llamamos a la función <i>"copytoclipboard"</i> pasando un texto cualquiera como parámetro. <i>¿qué vamos a hacer?</i>, <b>sobreescribir el portapapeles del navegador y así destruir la imagen que el usuario halla capturado</b>.<br />
<span style="color: #444444;"><i><br /></i></span>
<span style="color: #444444;"><i>//thanks to http://www.desarrolloweb.com/articulos/copiar-en-portapapeles-con-javascript.html</i></span><br />
<span style="color: #444444;"><i>//thanks to https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript</i></span><br />
<span style="color: #444444;"><i>function copytoclipboard(str)</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i><br /></i></span>
<br />
<div style="text-align: left;">
<span style="color: #444444;"><i> try</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> {</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: left;">
<i style="color: #444444;"> if(navigator.userAgent.toLowerCase().indexOf("firefox") < 0 && navigator.userAgent.toLowerCase().indexOf("chrome") < 0 && navigator.userAgent.toLowerCase().indexOf("webkit") < 0)</i></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> window.clipboardData.setData("Text", str);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> else</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> {</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>try</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>{</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> </i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> if(navigator.userAgent.toLowerCase().indexOf("firefox") < 0)</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> {</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> </i></span><i style="color: #444444;">var textArea = document.createElement("textarea");</i></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> </i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> textArea.style.position = "fixed";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.top = 0;</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.left = 0;</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.width = "2em";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.height = "2em";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.padding = 0;</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.border = "none";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.outline = "none";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.boxShadow = "none";</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.style.background = "transparent";</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.value = str;</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>document.body.appendChild(textArea);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.focus();</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>textArea.select();</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>document.execCommand('copy');</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span>document.body.removeChild(textArea);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span></i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> }</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> else</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> alert(str);</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span></i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> }</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> catch(ex)</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> {</i></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> }</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<span style="color: #444444;"><i> }</i></span></div>
<div style="text-align: left;">
<span style="white-space: pre;"><span style="color: #444444;"><i> </i></span></span></div>
<div style="text-align: left;">
<i style="color: #444444; text-align: justify;">}</i></div>
<span style="color: #444444;"><i>catch(e)</i></span><br />
<span style="color: #444444;"><i>{</i></span><br />
<span style="color: #444444;"><i>}</i></span><br />
<span style="color: #444444;"><i> </i></span><br />
<i><span style="color: #444444;"></span></i><br />
<span style="color: #444444;"><i>}</i></span><br />
<br />
El funcionamiento es como sigue: Si no estamos usando Google Chrome ni Firefox usaremos la función <i style="color: #444444; text-align: left;">window.clipboardData.setData("Text", str);</i><span style="color: #444444; text-align: left;"> </span><span style="text-align: left;">para sobreescribir el contenido del portapapeles con el texto que hallamos enviado y de esa manera evitaremos que el usuario copie la pantalla, en lugar de ello tendrá solo un texto de advertencia cuando quiera pegar el contenido (es texto plano, si lo quiere pegar en Paint y similares solo tendrá un cuadro blanco o un mensaje de error).</span><br />
<span style="text-align: left;"><br /></span>
<span style="text-align: left;"> Este código no funciona en Firefox, de hecho en Firefox no se puede manipular el portapapeles por código fuente (a no ser que se cambien las configuraciones del navegante, que no es viable), por lo que si el usuario usa Firefox solo le mostraremos un mensaje de advertencia pero no podemos evitar que copie el texto o la imagen al portapapeles. Pero si podemos hacerlo en Chrome.</span><br />
<span style="text-align: left;"><br /></span>
<span style="text-align: left;"> Este código genera una caja de texto, inserta en ella el mensaje de advertencia, selecciona todo el texto y luego lo pasa al portapapeles por medio del comando </span><i style="color: #444444; text-align: left;">document.execCommand('copy');</i><span style="text-align: left;"> y finalmente removemos dicho control de texto anulando cualquier copia de material no autorizado al portapapeles.</span><br />
<br />
Como pueden ver, <i>se trata de un código fuente muy sencillo. No ofrece una seguridad total</i>, pero para usuarios novatos o con muy pocos conocimientos puede servir de algo, espero les halla sido de mucha utilidad.<br />
<br />
Les invito del mismo modo a ver el post en este blog sobre <a href="http://marjuanm.blogspot.com/2016/11/evitar-que-enlacen-y-descarguen-tu.html">como prevenir la descarga de algunos tipos de archivos, por ejemplo MP3</a>, que se puede combinar con este tutorial para ofrecer un poco más de seguridad.<br />
<br />
<div style="text-align: justify;">
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<table border="1"><tbody>
<tr><td bgcolor="#cccccc" valign="middle"><div style="margin: 0px;">
<b>Procedencia de las imágenes:</b></div>
</td></tr>
<tr><td bgcolor="white" valign="middle"><div style="margin: 0px;">
<div style="text-align: start;">
<b style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; text-align: justify;">File: Logotipo oficial de Adobe PDF </b><br />
<b style="background-color: transparent; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px; text-align: justify;">Licencia:</b><span style="background-color: transparent; color: #555555; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 15px; text-align: justify;"> </span><a href="http://www.creativecommons.mx/" style="background-color: transparent; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: 15px; text-align: justify;" target="_blank"><span style="color: blue;">Creative Commons</span></a></div>
</div>
<div style="margin: 0px;">
</div>
</td></tr>
</tbody></table>
</div>
</div>
</div>
<br />
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
<br />
<hr />
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://otakuzone.freestarthost.com/proyectos/donaciones/general.html" style="border: none; height: 430px; overflow: hidden; width: 90%;"></iframe>
J. Manuel Mar H.http://www.blogger.com/profile/12498673899784158957noreply@blogger.com0