Nuestros Blogs

comunidad
participantes
ejemplos
galería
Autores/as

Adrian Canova Herrandiz

Andrés De la Rosa Portilla

Denisse Alejandra Diaz Romo

Guadalupe Méndez Dewar

Juan José Hernández Viveros

Mordecai

Nohemy Cardona Claros

Ulises Zarate

Vicky Delgadillo

Victoria Carolina

Fecha de publicación

Xalapa, Ver., 2 de mayo, 2025

Blogs de participantes

Haremos una página con una galería de muestra de los blogs que estamos construyendo. Por favor comparte tus datos para poderlo hacer. Actualmente tenemos estos Blogs registrados.

muestra el escript:
pacman::p_load(imager, magick, surveydown, flextable, dplyr, stringr, glue, rvest)


db <- sd_db_connect(env_file = ".env", 
                    ignore = FALSE,
                    gssencmode = "prefer")
✔ Successfully connected to the database.
muestra el escript:
data <- sd_get_data(db = db)


data <- data |> 
  mutate(blog = str_extract(url_blog, 
                  "(?<=//)(.*)(?=\\.netlify\\.app)"),
         git = str_extract(url_git, 
                  "(?<=https://github.com/)(.*)"),
         url_git = if_else(!is.na(data$url_git), 
                           paste0(data$url_git, "/issues"), NA),
         git = str_replace(git, "\\w*/", ""),
         git = str_replace(git, "/issues", ""))


  
figs <- list()
for (blog in data$url_blog)
{
  pag <- tryCatch(
    {
      pag <- read_html(blog)
    },
    error = function(e)
    {
      pag <- NA
#      cat("Ocurrió un error:", e$message, "\n")
      return(pag)
    }
  )
  if (!is.na(pag))
  {
    img <- pag |> 
    html_elements("img") |> 
    html_attr('src') |> 
    as_tibble() |> 
    slice(if_else(str_detect(blog,  "limon"), 2, 1)) |> 
    str_remove("\\./") |> 
    paste0(blog, "/",. = _) |> 
    str_replace_all(" ", "%20") |> 
    str_replace_all("\\\\", "/") |> 
    str_replace("(\\w)(//)(\\w)", "\\1/\\3") |> 
    image_read() |> 
    image_scale("100x100>")
    
    titulo <- paste0("img/", str_extract(blog, "(?<=//)(.*?)(?=\\.net)"), ".png")
    image_write(img, titulo)
    
    figs <- append(figs, titulo)
  } else 
  {
    img <- image_read("img/blog-caido.png") |> 
      image_scale("100x100>")

    titulo <- paste0("img/", str_extract(blog, "(?<=//)(.*?)(?=\\.net)"), ".png")
    
    image_write(img, titulo)
    
    figs <- append(figs, titulo)
  }
}


data |> 
  mutate(fig = unlist(figs)) |> 
  filter(nombre != "") |>     
  arrange(nombre) |> 
  select(fig, nombre, git, url_git, blog, url_blog) |> 
  flextable() |> 
  set_header_labels(nombre = "Autor", git = "Github", 
                    blog = "Blog", fig = "Portada") |> 
  mk_par(j = "fig", 
          value = as_paragraph(as_image(src = fig))) |> 
  mk_par(j = "git", 
          value = as_paragraph(hyperlink_text(x = git, url = url_git))) |> 
  mk_par(j = "blog", 
          value = as_paragraph(hyperlink_text(x = blog, url = url_blog))) |>
  delete_columns(j = c(4, 6)) |> 
  flextable::width(j=2:4, width = c(3, 4, 3))

Portada

Autor

Github

Blog

Adrian Canova Herrandiz

Ecoeficiencia-combinado-con-LCA-y-DEA

ecoeficiencia-en-cafe

Ana Maria Salazar Suárez

moscas-2

moscas-2a

Andrés De la Rosa Portilla

Herramientas-SIG

herrameintas-sig

Denisse Alejandra Diaz Romo

CIENTIFI-KT

cientifi-kt

Juan José Hernández Viveros

juanjo-BARRENADORES-EN-VERACRUZ

barrenadores-en-veracruz

Katya Margarita Zaleta Salas

zaleta-limon-persa

limon-2

Nohemy Cardona Claros

EEMMs

eemms

Pita

Boskes

bosques

Ulises Zarate

Sistemas-Agroforestales-SAF-

agrosistemascaf

Victoria Carolina

CIENCIAABIERTA

quercus-misteriosos

Registros repetidos

muestra el escript:
repet <- data |>
  filter(!is.na(nombre)) |> 
  group_by(nombre) |>
  filter(n() > 1) |>
  ungroup() |> 
  select(nombre:url_blog)

if (length(repet$nombre) > 0)
{
  repet |> 
    flextable() |> 
    set_header_labels(nombre = "Nombre", correo = "e-mail", 
                      url_git = "GitHub", url_blog = "Blog")
} else {
    cat("No hay registros repetidos\n")
}
No hay registros repetidos

Registros sin datos

muestra el escript:
vacios <- data |>
  filter(is.na(nombre)) |> 
  select(nombre:url_blog) |> 
  summarise(vacios = n())

if (vacios == 1)
{  cat(glue("Hay {vacios} registro vacío.  "))
} else {
  cat(glue("Hay {vacios} registros vacíos.  "))
}
Hay 0 registros vacíos.  

URL equivocadas

muestra el escript:
data <- sd_get_data(db = db)

url_err <- data |>
  filter(str_detect(url_git, "netlify") | str_detect(url_blog, "github") ) |> 
  select(nombre:url_blog)

if (length(url_err) == 0)
{
  url_err |> 
    flextable(col_keys = c("nombre", "url_git", "url_blog")) |> 
    set_header_labels(nombre = "Nombre", 
                      url_git = "GitHub", 
                      url_blog = "Blog")
} else {
    cat("No se detectaron fallas en el registro de URL")
}
No se detectaron fallas en el registro de URL

   

Opiniones

Sigue una encuesta hecha en Google forma, que estoy vinculando aquí como un recurso iframe. Lo que hice fue crear el formato en Google forms de la manera usual y obtener allá el código mediante la opción Incorporar HTML que encontré en opciones (los puntitos arriba a la izquierda en el sitio). Lo siguiente es poner esas líneas en un bloque de código html así:  

<iframe 
  src="https://docs.google.com/forms/d/e/1FAIpQLSfwhhNegX8-R6jfCSnvZwUfabBNIUIb4fqxESnZKHYrDTnj-g/viewform?embedded=true" 
  width="800" 
  height="1600" 
  frameborder="0" 
  marginheight="0" 
  marginwidth="0">
  Cargando…
</iframe>

 

Comentarios

muestra el escript:
pacman::p_load(googlesheets4, stringr, dplyr, 
               tidyr, ggplot2, flextable, DT)

# keyring::key_get(service = "google-sheets", "equihuam")

options(gargle_oauth_email = "equihuam@gmail.com", 
        gargle_oob_default = TRUE,
        gargle_oauth_client_type = "web")

gs4_auth()

url_gs <- "https://docs.google.com/spreadsheets/d/1bHAFCwoJToh8VVbfsmqx2GNaBvEiq7RYA4Pt1ljVtD4/edit?resourcekey=&gid=834459562#gid=834459562"
datos_id <- str_extract(url_gs, "(?<=/d/)(.*?)(?=/edit)")

datos_blogs <- read_sheet(datos_id) 
Auto-refreshing stale OAuth token.
✔ Reading from "Opinión sobre blogs".
✔ Range 'Respuestas de formulario 1'.
muestra el escript:
etiqueta <- "Datos de la encuesta"
muestra el escript:
datos_blogs |> 
  select(`Blog que revisaste`, Comentarios) |> 
  arrange(`Blog que revisaste`) |> 
  datatable(colnames = c("Blog", "Comentarios"),
            rownames = FALSE,
            options = list(
              autoWidth = TRUE,
              columnDefs = list(
                  list(targets = 0,       # Primera columna (blog)
                       width = '150px'    # ancho de 200 pixels
                       ),
                  list(targets = 1,       # Columna 2 comentarios
                       width = '4 00px'))))