¿Por qué mi webserver se cae cuando quiere?

A veces haces un servicio web o una landing page y ¿se cae a menudo?

Yo tenía mucha curiosidad de porque unos servidores se caían, otros se quedaban colgados y bien, no esperen una explicación mega técnica, pero a la conclusión que he llegado manejando más de 10 servidores físicos y virtuales es que si bien, hay miles de otros factores que pueden intervenir en que un servidor funcione o no y una vez que descartaste tu enlace de internet, tu dominio, que la misma página pudiera estar mal programada, te digo mi conclusión personal «MEMORIA RAM».

Lógico?, tonto?, predecible?, tal vez, pero a mí nadie me lo enseño, escribo esto con la necesidad de que llegue a más personas que no somos formados en escuelas y hemos aprendido algunas cosas trabajando de cerca con personas del gremio de la industria de tecnologías de la información.

Bueno, dicho esto, en AWS u otras nubes es relativamente fácil subir tu instancia y generalmente viene con más RAM, en servidores físicos, hay que comprar más RAM e instalarla manualmente, pero… y si no tienes dinero o tiempo o conocimientos?

Te dejo una alternativa, gratuita y rápida, que puede ayudarte en la mayoría de servidores Linux

SWAP

La Swap es una espacié de memoria de intercambio que ocupa espacio físico de disco duro, pero se comporta como una memoria temporal y administrable,

Si quieres configurar una y hacer la prueba te dejo un tutorial que yo mismo uso

https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04-es

Si quieres administrar un poco el espacio podrías empezar habilitando y deshabilitando la swap

Checa el espacio que tiene libre # free -m

Deshabilita la swap: # sudo swapoff -a y te esperas como 1 minuto y puedes ver como se baja con «free -m»
Habilita la swap: # sudo swapon -a

Etiquetado ,

Reduciendo Imagenes de Sistema Operativo para Raspberry Pi en Linux

Este tutorial nace de la necesidad en la cual al hacer una copia de un sistema operativo Linux por ejemplo un Raspbian10 que ya esta corriendo en una raspberry pi y queremos respladarlo, al hacer el respaldo con el comando «dd» resulta que aunque en nuestra raspi nosotros pidamos un «df» (para ver el espacio en dico usado) y veamos que todo pesa 10GB, resulta que al hacer el respaldo termina pesando 16 o 32 GB, ¿por qué? bueno basicamente porque el respaldo pesa la totalidad de la memoria si la memeoria es de 16GB pues el respaldo pesara eso.

Esto quiere decir, que, si, estas grabando un monton de ceros, si, también los respaldas, aunque no los necesites. el proceso que haremos a continuación se encargará de no guardar ese conjunto de ceros, esto nos permitira tener imagenes más optimizadas en espacio y que se quemaran más rápido cuando grabemos la imagen en una nueva memoria SD.

Este articulo muestra como hacer el shrink a una imagen existente para tenerla en un tamaño mas optimo, nosotro vamos a necesitar un linux para replicar este post. la lista de herramientas que usaremos son: Gparted, fdisk y truncate.

Requisitos

  • Una pc con Linux
  • Conocimiento basico del uso de terminal
  • La imagen de sistema Operativo no optimizada mi_Imagen.img será nuestro ejemplo

Creando el loop del dispositivo

GParted es una gran aplicación que puede ver, manipular y redimencionar tablas de particiones  y sistemas de archivos completos sin mucha complegidad.

En este articulo nosotros usaremos Gparted para «rasurar» un sistema de archvos.

El termino en inglés de por si es complejo, es shrink, que literalmente significa rasurar, nada que ver en sistemas, esto se debe a que es un termino ideolectico, es decir cuando te rasuras te alineas y estás mejor presentado, esto es a lo que se refiere.

Gparted maneja dispositivos, estos no siempre son fisicos como un disco duro, a veces son imagenes de sistema. por esta razón primero debemos crear una imagen para poder manipularla. para hacer esto vamos a unar una funcionalidad de linux llanada loopback-functionality.

Primero vamos a habilitar el loopback si no estuviera ya habilitado:

$ sudo modprobe loop

Ahora vamos a pedir un nuevo y libre dispositivo loopback:

$ sudo losetup -f

Este sencillo comando retornara una ruta, ese es nuestro loopback, libre y listo para usar. En este ejemplo es: /dev/loop18

Vamos a crear un dispositivo que almacene nuestra imagen (esto es virtual y se hace en el directorio /dev):

$ sudo losetup /dev/loop18 mi_Imagen.img

Ahora tenemos un device /dev/loop18 que representa mi_Imagen.img. queremos tener acceso a la partición que tiene nuestra imagen, Necesitamos decirle al kernel que lo haga:

$ sudo partprobe /dev/loop18

Al teclear el comando pasado debe de darnos algo así cuando tecleamos la ruta de nuestro loop /dev/loop18p1, En este caso p1 representa la primer partición de nuestra imagen mi_Imagen.img. No necesitamos la partición directamente, pero, GParted si la necesita.

Redimencionar particiones usando GParted

Ahora podemos cargar el dispositivo usando GParted:

$ sudo gparted /dev/loop18

Deberías ver una ventana parecida a la siguiente con el numero de tu loop:

Ahora podemos notar algunas cosas:

  • Sólo hay una partición.
  • La particion esta alojada en todo el sistema de archvos montados disk/device/image.
  • La partición esta medio vacia,, si, el espacio blanco que ves es espacio vacio y que vamos a quitar.

Queremos redimencionar esta partición, pero no mucho, y sin afectar el contenido original.

Selecciona la partición y da click en  Resize/Move/Mover. Una ventan similiar a la siguiente imagen va a emerger:

Arrastra la barra de derecha a izquierda lo más posible.

Nota que algunas veces Gparted necesitará unos MB extra para datos extra, tu puedes hacerlo tan estrecho como puedas, pero si no es sgeuro Gparted no te lo permitira, recomendación, hazle caso a Gparted.

Y finalmente presiona en Resize/Move. esto regresara a la vetana de Gparted y se vera algo parecido a la siguiente imagen.

Nota que la parte que quitaste ahora se ve en el disco como unallocated.

Esta parte del disco no será usada por la partición, entonces lo que quede como unallocated es el espacio que se liberara en la memoria SD y es la parte que en los siguientes pasos vamos a eliminar.

Presiona Apply/Aplicar en GParted. y ahora se moveran los archvios y finalmente ya esta rasurada nuestra partición, después de apĺicar el cambio. Este proceso tomara 1 minutos 2, todo depende de la potencia de tu equipo de computo y de la velocidad de escritura después de eso puedes cerra GParted.

Ya no necesitamos más el loopback-device, así que sólo lo vamos a descargar:

$ sudo losetup -d /dev/loop18

Shaving la imagen

Ahora que tenemos separada la data importante de los «ceros» y espacios vacions y es tiempo de hacer nuestro Shaving. Primero necesitamos conocer donde nuestra particin termina y donde empieza a estar lo que quedó como unallocated en el paso pasado.Para esto usaremos fdisk:

$ fdisk -l mi_Image.img

Ese comando reorna una salida como la siguiente:

Disk myimage.img: 6144 MB, 6144000000 bytes, 12000000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ea37d

      Device Boot      Start         End      Blocks   Id  System
mi_Image.img1            2048     9181183     4589568    b  W95 FAT32

deberías notar 2 cosas en la salida:

  • La partición termina en el bloque 9181183 (mostrado abajo de End)
  • El tamaño de los bloques es de 512 bytes (mostrado como sectors of 1 * 512)

Usaremos los pasados numeros el resto del ejemplo así que guarda esta información, los bloques de 512 bytes con a menudo siempre igaules, pero la diferencia es donde termina el bloque, (9181183) esto definitivamente va a ser distinto para ti. El numero quiere decir que la particion util termina en 9181183*512 de la imagen de disco duro, esos son megabytes reales, después de eso viene la parte unallocated.

Esto quiere decir que solo los 9181182*512 bytes será usables para nuestra imagen.

Vamos a rasurar la archivo de imagen para que solo contenga la particion y no tantos ceros o no tanta basura, para esto usaremos el comando truncate para usar truncate necesitamos sustituir el tamaño del archivo en bytes que queremos conservar, esto lo haremos con una sencilla operación matematica y se hace como sigue para mi ejemplo, el de ustedes va a ser un poco diferenre Tenemos que tener como referencia el ultimo bloque que en nuestro ejemplo fue  9181183, esto quiere decir que nuestros bytes a conservar estaran definidos por  (9181183+1)*512 bytes. Esto es muy importante, si se hace mal vas a arruinar la imagen de sistema operativo, por lo que debes prestar mucha atención a los calculos que hagas.

ANTES DE CORRER EL SIGUIENTE COMANDO ASEGURATE DE HACER UN RESPALDO.

si te equivocas y algo sale mal vas a perder la imagen, así que ten una copia del archivo orginal, sólo por precaución.

$ sudo truncate --size=$[(9181183+1)*512] mi_Imagen.img

Despues del pasado comando lo unico que tienes que hacer es revisar el tamaño d ela imagen y verás que se ha reducido considerablemente pero que si la pones en cualquier lugar debe tener el mismo contendo.

Felicidades, espero te haya ayudado mucho este post copiado y traducido con algunos tips extra que aprendimos trabajando con estas herramientas por algunos años.

Cambio de tipo de dato en Golang

No hay mucha documentación de Go en español, cuando tuve que aprender Go por trabajo fue de las primeras cosas que me di cuenta, en al siguiente serie de minipost trabajaremos con ejemplos sencillos que nos facilitaran mucho las primeras traeas en Go.

Antes de empezar debes de entender que Go en un lenguaje de programación Hardtyped, es decir, de Tipado duro, por esto mismo vamos a empezar convirtiendo tipos de datos a otros formatos.

imaginemos que tenemos que hacer una operación aritmentica y luego pasarla a un string para entregar un json, todo el arreglo debe de ser del mismo tipo de dato. pero si es string desde que se crea es imposible hacer operaciones aritmenticas con él, por esto la recomendación general siempre es;

La variable siempre debe ser declarada en el tipo de dato más comodo para trabajar y la conversion a otro tipo de dato se debe hacer justo antes de presentarla.

Empezaremos con un programa sencillo

package main

import "fmt"

var A int = 3
var B int = 4

func main() {
  C := A + B
  fmt.Println("El resultado es: ", C)
}

Pueden ver el ejemplo corriendo desde el playground de Golang aqui:

https://play.golang.org/p/UtKPko9ik8c

Pero, si no queremos o no podemos usar FMT, tenemos que convertir C a string para después presentarla,

el más básico modo es directo de  int a string

D := strconv.Itoa(C)
D = "10"
package main

import
(      "fmt"
	"strconv"
) 
var A int = 3
var B int = 4

func main() {
C := A + B 
D := strconv.Itoa(C)
E := ("el resultado es: " + D)
fmt.Println(E) 
}

Pueden ver el ejemplo corriendo desde el playground de Golang aqui:

https://play.golang.org/p/qwyITBH2CBN

pero, hay que si necesitamos entre comillado doble en nuestro arreglo, en ese caso hay que añadir el siguiente código:

con_comillas := strconv.Quote(D)

Y el resultado final sería algo como:

package main

import
(      "fmt"
	"strconv"
) 
var A int = 3
var B int = 4

func main() {
C := A + B
D := strconv.Itoa(C)
con_comillas := strconv.Quote(D)
E := ("el resultado es: " + con_comillas)
fmt.Println(E)
}

Pueden ver el ejemplo corriendo desde el playground de Golang aqui:

https://play.golang.org/p/oiJATw-QhMm

Etiquetado ,

iot

iotggh.jpg

Elinox, Zaifehr y Drones

Gran combinación, ¿no?

Bueno, la verdad tengo algunos días perdido y quisiera retomar el camino del bien con algo de mi nuevo trabajo, Software Libre en Drones, si, un kernel GNU/Linux vivo x86 corriendo a 60 metros de altura, bueno, esto no sería posible sin DRONECODE, un proyecto de la Linux Foundation que busca unificar los asistentes de vuelo, Arduipilot, pixhawk, parachute, y todos los asistentes de planificación para Linux.

Aquí les dejo una Infografía como primer aporte de esta nueva pasión.

dronecode_infographic

Etiquetado , , , , ,

Tiempos violentos

Nada, nada que ver con el película, es sólo que por estos tiempos, desde ahora y las próximas dos semanas no voy a estar en redes sociales muy seguido ni voy a  responder a las dudas del Blog, disculpen, tengo un trabajo que me gusta mucho y esta por finalizar, así que voy a aprender mucho de él y a aprovechar al máximo este tiempo que resta

Antes de empezar con Yocto

Si quieres empezar a usar Yocto y empezaste por clonar el proyecto y quisiste hacer tu primera Distro embebida, lo más probable es que el sistema no haya corrido adecuadamente, aquí te presentamos los requisitos para que funcione YOCTO en tu equipo con núcleo GNU/Linux en sus distintos sabores.

Si tienes algo basado en ubuntu/debian debes teclear

sudo apt-get install gawk wget git-core diffstat unzip texinfo \

gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

Si por alguna razón lo que estas usando es CentOS debes teclear

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \

build-essential chrpath socat libsdl1.2-dev xterm

Si, como muchos de nosotros, tu piensas que OpenSuse es la mejor distro que existe, o, simplemente tienes debilidad por las cosas alemanas, pues esto es lo que debes teclear para tener las dependencias necesarias por construir tus proyectos con yocto.

sudo zypper install python gcc gcc-c++ git chrpath make wget python-xml \

diffstat makeinfo python-curses patch socat libSDL-devel xterm

Por ultimo, si piensas que Fedora es la buena, la que nunca da problemas en desarrollo, o, la que te aguanta el paso, pues espero te sirvan las siguientes lineas.

sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \

diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \

ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue socat \

findutils which SDL-devel xterm

Yo personalmente probé estos requerimientos en todas las distros bajo maquinas virtuales y funciono todo adecuadamente, espero, realmente esta pequeña intro sirva para que inicies en el desarrollo de Yocto.

Si tu tienes inquietudes de aprender Yocto o de como funciona o de sus alcances te recomiendo checarlo en youtube, si tienes dudas más especificas, pues con gusto te ayudo, lanzame una mención en twitter, me encuentras bajo el user

@zaifehr

,

Etiquetado , , , , , , , , , ,

Curso completo de Yocto

Este es un pequeño curso Yocto-Labs lanzado bajo licencia CC por Free Electrons http://free-electrons.com esta hecho para ser muy básico pero te guia de la mano para empezar con esta maravillosa tecnología, espero les sirva, si aún quedan dudas, yo sé que las habrá los dejo con el mega manual de Yocto, que es la máxima autoridad en Desarrollo de Yocto y trata de aclarar todas las dudas en todos los escenarios poisbles.

Mega Manual http://www.yoctoproject.org/docs/1.8/mega-manual/mega-manual.html

Etiquetado , , , , , , ,

Qué llevar a #CPMX6

El año pasado fui un primerizo en campus,  y batalle mucho buscando que llevar en dos maletas que me permitieran moverme cómodamente a GDL, esta es la lista de artículos que no te pueden faltar.

Del viaje: Celular, ropa cómoda, galletas, fruta, monedas para propinas y transporte, tu equipaje, batería de emergencia para el celular, un libro, dulces.

Del Camping y aseo personal. Sleeping, cobija, de ser posible colchón inflable, pijama, jabón, pasta de dientes, cepillo de dientes, hilo dental, rastrillos, Desodorante, sandalias, toalla, botellas de agua, candado.

De la ropa: Ropa muy muy cómoda, tenis, 2 o 3 playeras (seguro en Campus consigues más), jeans, ropa interior limpia, sudaderas ligeras.

De lo tecnológico: Celular, laptop, cargadores, memorias SD, USB, Discos duros externos, cámara digital, kitMaker, Raspberry Pi, Tablet, acces point, cables y conexiones varias.

De la comida: Sopas maruchan(5), bebidas energetizantes(3), galletas(5 o 6 paquetes), Dulces(los suficientes), frijoles refritos en practipack(3 o 4 bolsas), Atún(3 o 4 latas), Yakisobas(2 platos), Cajas de jugo(3 o 4 litros), botellas de agua(6 o 7 litros), Dulces típicos de tu región(muy prácticos para dar como detalle a tus nuevos amigos), paquetes de avena  (2 o 3 para el desayuno), Cereales (para el desayuno o botanear (5 bolsitas), usualmente con eso se viven los 5 días, pero si quieres llevar más o comes más o, sencillamente quieres probar la rica gastronomía de Jalisco, pues desayunar y cenar con tus cosas y para la comida te sales a los ricos lugares que hay cerca de la ExpoGuadalajara. espero la guía te haya servido si eres nuevo campusero. yo compré toda  esta comida y gaste 250 pesos, espero te sirva si eres estudiante o muy muy pobre como lo soy yo.

Y todo preferentemente debe estar en dos maletas medianas y una mochila. es un gran reto, pero lo vale, #ActitudCampusera.

Etiquetado , , , , , ,

Como instalar LaTeX en Ubuntu y derivados

En esta sencilla entrada vamos a citar el comando necesarios para instalar LaTeX, recuerden que necesitan una conexión a Internet.

$        sudo apt-get install texlive-full texmaker

Con esta sencilla línea se instalara LATEX, y el Texmaker para tener una interfaz gráfica de ayuda. 

#NOTA tengan precaución, en la mayoria de los casos se deben instalar entre 3.5 y 4 GB, deben de tener una conexión estable a Internet y un poco de paciencia, con mi conexión de 3mbps tardo alrededor de 4 horas, me cuentan que tal les fue a ustedes.

Finalmente para hacer una prueba hay que dirigirse a oficina y ahí encontraremos el icono de Texmaker al abrirlo debemos crear un nuevo archivo, teclear lo siguiente y guardarlo, al compilar nos debe de aparecer un PDF con algunas cuentas Letras si esto ocurre, LaTeX fue instalado correctamente.

\documentclass[a4paper,14pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[activeacute,spanish]{babel}

\begin{document}

¡Hola, Elinox!

SI esto esta escrito en un documento PDF significa que la instalación se ha hecho adecuadamente.

\end{document}

Gracias por visitar el Blog, ya no lo tendré tan descuidado.

Etiquetado , , , , , ,