domingo, 17 de febrero de 2019

Implementar scroll infinito con Javascript y HTML en ASP.NET Razor

Cómo implementar scroll infinito con Javascript y HTML en ASP.NET Razor


Hola.

Tuve que investigar como implementar un scroll infinito como el de los sitios web de moda. De hecho así es como aprendí que lo llaman infinite scroll.

Buscando en internet con este nombre me encontré un plugin en javascript que terminé implementando de manera sencilla. El link del plugin es este:

https://infinite-scroll.com/

Tiene un par de métodos de implementación y la que describo aquí es la que en primera instancia me pareció la mas sencilla y genérica. Implementar con HTML.

Describo aquí lo que necesitan para implementarlo:

1. Descargar del link de arriba en la sección Download cualquiera de estos dos js:

infinite-scroll.pkgd.min.js (minified)
infinite-scroll.pkgd.js (un-minified)

Básicamente la diferencia es que el minified está todo en una sola línea y el otro tiene saltos de línea que lo hace legible. Por supuesto que el primero pesa menos. Yo estoy usando el minified pero da lo mismo.

2. Incluir la referencia en su HTML a donde hayan colocado el js (pueden colocar la ruta absoluta al sitio de infinite-scroll también)

<script type="text/javascript" src="/js/infinite-scroll.pkgd.min.js"></script>

3. Necesitan una pagina dinámica parcial que va a estar resolviendo el listado cuando se hace scroll en el contenido. Yo uso una pagina dinámica programada en c# con vistas cshtml aunque el lenguaje de la página dinámica es irrelevante para efectos del paginado infinito.

Algunas de las características de esta página dinámica son :

Debe recibir un parámetro para controlar el número de página de los resultados que va arrojando

La estructura básica de mi página que resuelve el listado por número de página (_Listado.cshtml):

<div class="lista" data-infinite-scroll='{ "path":".numero-pagina", "append":".elemento","status":".page-load-status","hideNav":".numero-pagina","history":"false"}'>

@{
   int j=1;    
   foreach (var xelemento in Model.Data)
   {
<div class="elemento">
<h3 on><span>@j </span><a>@xelemento.Nombre</a></h3>                          
</div>
   j = j+1;    
   }
}
</div>

<div class="page-load-status">
  <p class="infinite-scroll-request">Loading...</p>
  <p class="infinite-scroll-last">End of content</p>
  <p class="infinite-scroll-error">No more pages to load</p>
</div>

@if (Model.CurrentPage < Model.NumberOfPages)
{
int nextpage=Model.CurrentPage+1;                                                                             
@Html.ActionLink(nextpage.ToString(), "_Listado", "micontrolador", new { p = nextpage }, new { @class = "numero-pagina" })
}

Contiene el div que inicializa el scroll infinito, dentro vienen los elementos del listado, luego el div con los estatus de carga del plugin y al final una liga hacia la siguiente página.

Las clases css de estos elementos son muy importantes porque el scroll infinito se inicializa a través de los elementos con estas clases.

.elemento: es la clase del div de los elementos de la lista.
.numero-pagina: es la clase de la liga que te lleva a la siguiente pagina
.page-load-status: es la clase del div que contiene los status del plugin

En mi caso la vista parcial _Listado.cshtml recibe un parámetro de nombre p para controlar el paginado (p=1,p=2,p=3,p=4....). En el link con clase numero-pagina se ve cómo se pasa el parámetro incrementado en uno: new {p=nextpage}

4. Llamar a la página parcial dinámica desde la página principal. Algo así:

<html>
<body>
@Html.Partial("_Listado")
</body>
</html>

Con esto tienen implementado el scroll infinito dentro de su pagina web.


Espero les sirva.










domingo, 10 de febrero de 2019

Cómo desinstalar navegador Chromium de Mac

Cómo desinstalar el navegador Chromium de Mac


Hola.

Descargué FileZilla para Mac y no me di cuenta que vienen incluidos otros programas en el paquete. Entre ellos y el mas molesto fue Chromium. De hecho al inicio lo confundí con Chrome porque la interfaz gráfica es muy similar.

Este navegador Chromium por default se agrega al Dock y abre cada que prendo la maquina. Hay varias maneras de eliminarlo.

Apliqué las instrucciones que encontré aquí y no me dieron resultado:

https://nektony.com/blog/how-to-remove-chromium-from-mac

Mi problema en realidad fue tonto ya que no lo encontraba en mis aplicaciones y empece a borrar sus archivos de acuerdo al link de arriba sin éxito.

Solución.

Lo que pasó es que debía eliminarlo de mis aplicaciones de usuario. Es decir

‎⁨Macintosh HD⁩ > ⁨Users⁩ > ⁨miusuario

Aquí estuvo siempre y sólo tuve que arrastrarlo a la papelera. Eso fue todo. Pueden burlarse aquí abajo.

Espero les sirva.




Dónde encontrar el archivo php.ini en un hosting windows de godaddy

Dónde se encuentra el archivo php.ini en un hosting windows de godaddy


Hola.

Me encontré un error en un windows deluxe hosting con Wordpress de godaddy. El error era muy raro y al buscar algunas soluciones en internet me encontré una que sugería cambiar algunos parámetros del archivo php.ini

El servicio que estaba utilizando de godaddy era un windows deluxe hosting con Wordpress instalado. Así que hacia uso de php sobre un hosting de windows! Ya sé lo que están pensando pero me había funcionado bastante bien por mucho tiempo y lo mantuve así hasta esta ocasión.

Así que la pregunta que me tomo un tiempo contestar era, en dónde se encuentra el archivo php.ini en  Wordpress instalado en windows en godaddy.

Solución

En realidad el archivo no se encuentra en esta configuración. Lo que tienen que buscar es el archivo

.user.ini

.user.ini es el archivo equivalente al php.ini en esta configuración

Búsquenlo en el directorio raíz de la instalación de Wordpress.


Espero les sirva

Cancelar enter en una caja de texto con javascript

Cómo cancelar enter en una caja de texto con javascript


Dentro de un documento html existen eventos default asociados con cada objeto dentro del documento.

Resulta que necesito cancelar el enter dentro de un textbox, es decir cuando el usuario da enter estando el enfoque en la caja de texto.

Esto es un requerimiento común porque es muy natural que el usuario haga enter una vez que ha terminado de llenar algún formulario. El problema es cuando tienes varios eventos asociados en tu caja de texto y entran en conflicto varios eventos.

Primero que nada la razón de este comportamiento es que la caja de texto se encuentra dentro de un elemento <form> y el evento default de éste siempre es hacer submit. Es decir que cualquier caja de texto dentro del form hace submit al dar enter.

Mi html basico luce así:

<form>
<input type="text" />
</form>

Ahora lo que hay que hacer es bloquear el enter dentro del control y regresar un false para evitar que el elemento form haga submit.

Esto lo logramos usando el evento onkeypress del textbox. KeyCode = 13 es la tecla Enter. Eso devolverá false cuando el keyCode sea enter y eso cancela el submit de la forma html.

<input type="text" onkeypress="return event.keyCode != 13;" />

Si tienen tiempo y quieren ver el código de cada tecla,  agreguen un alert en el mismo evento.

Este ejemplo es con javascript puro. Si quieren usar y tienen jQuery incluido en el documento, pueden usarlo para bloquear todas las cajas de texto o a través de algún selector jQuery.

Algo así:

$(document).on("keypress", "form", function(event) { 
    return event.keyCode != 13;
});

Como saben, las posibilidades son infinitas.

Espero les sirva.


sábado, 9 de febrero de 2019

Editar el archivo robots.txt en Blogger (blogspot)

Cómo editar el archivo robots.txt en Blogger (blogspot)


Pues ahora checando las estadísticas de este su blog, resulta que tengo una alerta sobre ciertas rutas de búsqueda que no están siendo consideras en buscadores debido a que el archivo robots.txt las está bloqueando.

La razón es que las rutas de búsqueda están siendo bloqueadas debido a esta línea en robots.txt

Disallow: /search

Independientemente de las consecuencias de remover esta línea, el propósito de este post es mostrar cómo editar el archivo robots.txt en blogger.

Les dejo aquí los pasos para editar el archivo robots.txt de una cuenta de blogger.

1.- Dentro de tu cuenta de blogger, selecciona: Settings > Search Preferences
2.- En la sección Crawlers and indexing, click en Custom robots.txt - Edit
3.- Seleccionar Yes y en el area de texto que aparece pegar el contenido del archivo robots.txt

Editar robots.txt en blogger
4.- Click en guardar cambios y listo.

Para no esperar a que el buscador pase de nuevo en algunos días, se puede indicar a google que el archivo ha cambiado manualmente.

Para hacer esto pueden entrar al Search Console de google > Crawl > Robots.txt Tester.

Click en Submit y seleccionar la opción: Ask Google to update

Robots.txt Tester

Con esto Google está informado que el archivo ha cambiado para la siguiente vez que el sitio sea indexado.

Espero les sirva



lunes, 4 de febrero de 2019

VMWare Horizon pantalla negra en OSX Mojave

VMWare Horizon pantalla negra en OSX Mojave


Estaba utilizando el cliente VMWare Horizon version 3.8 y algo en macOS Sierra sin problemas pero recientemente acepte la actualización a MacOS Mojave.

Lo que obtuve, ademas del disgusto, fue que sí pude conectarme con el cliente de VMWare Horizon aparentemente bien pero la pantalla negra que inicialmente aparece al conectarse nunca se quitó.

Esto me ocurría con anterioridad pero siempre después de algunos segundos la pantalla negra pasa a la pantalla azul de inicio de windows. Además de esto se puede escuchar el sonido cuando intentas entrar mandando las teclas de ctrl + alt + suprimir. Osea que sí se conecta pero no se ve nada.

Investigando un poco encontré que hay que actualizar la version el cliente de VMWare Horizon. La versión que soporta MacOS Mojave es la 4.10

Aquí les dejo el link descarga del cliente VMWare Horizon 4.10:


Espero les sirva.


miércoles, 30 de enero de 2019

contact form 7 Sender email address does not belong to the site domain

Contact form 7 Sender email address does not belong to the site domain

Este error me salió al intentar integrar el plugin Contact form 7 en Wordpress. Después de una actualización tanto de contact form como de word press.

El error sale en el campo From del formulario.

Se arregla colocando algún email en este campo. Si no cuentas con un email siempre puedes poner un email de noreply

Cambiar:
[your-name] <[your-email]>

Por algo así:
[your-name] <noreply@tudominio.com>


Debe verse algo como esto:


En la imagen se ve el error porque puse noreply@tudominio.com y no coincide con el dominio donde está hospedado. Hace la validación al aire mientras estás editando.


Espero les sirva.