He estado probando Docker aprovechando que quería tener una imagen de un servidor de Blockscad. La verdad es que la web oficial no suele fallar, pero con esto de Internet nunca se sabe.

Es fácil instalar en local un servidor con el código que aparece en el github de BlocksCAD, pero el hecho de crear una imagen Docker creo que me facilitará las cosas (sobre todo si aprendo a desplegarla en Windows que es lo que suele haber por todos los lados).

Además esa imagen la he desplegado en Heroku con lo que puedo tener un servidor alternativo por si falla el oficial.

La imagen la tengo en Docker Hub: imagen en Docker Hub y ahí aparecen las instrucciones para instalar en local (necesitas tener docker instalado) o desplegarla en heroku.

El código para construirla está en este enlace al código para crear la imagen:

Los fichero que le indican a Docker cómo crear la aplicación son:

  • Dockerfile

  • app.py

Código Dockerfile:

# Use an official Python runtime as a parent image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
# RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]

Y el de app.py:

import os

# Para local:
#PORT = '9000'

#Para heroku
PORT = os.environ['PORT']

os.system('python -m SimpleHTTPServer ' + PORT)

NOTA: Según se vaya a construir en local o en heroku habrá que seleccionar las líneas del puerto correspondiente.

Así es como queda desplegada en heroku :

Finalmente, podéis acceder al docker en heroku aquí:

mi docker con blockscad


nbconvert permite exportar un jupyter (antes llamados ipython) notebook a diferentes formatos, entre ellos markdown. Sin embargo, yo buscaba lo contrario, pasar de un fichero en markdown a notebook.

La razón principal, es que markdown lo edito con cualquier editor de texto, y por eso me resulta muy cómodo documentar en markdown.

Cuando quiero documentar algo relacionado con Python me gusta hacerlo en un notebook de Jupyter. Si lo que documento tiene mucho texto me resulta útil escribirlo en markdown y luego convertirlo a notebook.

¿Cómo lo hago?:

Convirtiendo ficheros Markdown a Jupyter Notebooks con notedown

Aaron O’Leary ha desarrollado la fantástica aplicación notedown que permite pasar de markdown a notebook. Tal como pone en su documentación:

Instalación

pip install notedown

Uso

notedown input.md > output.ipynb

¡ Gracias Aaron, me ha resultado muy útil!


Si tengo que recomendar una web de actividades matemáticas mediante juegos, esa sería el magnífico blog Juegos y matemáticas de Ana García Azcarate . Sirvan estas líneas de agradecimiento por tan fantástico trabajo.

El caso es que muchas de esas actividades están hechas con Tarsia. Por ejemplo: este

Buscando en Github alguna alternativa a Tarsia que fuera libre y que pudiera ejecutar en GNU-Linux, me topé con Jigsaw-generator de Julian Gilbey. ¡Muchas gracias, Julian!

Este es un ejemplo del aspecto que tienen los puzzles generados. Este en concreto se ha sacado de un ejemplo que el autor tiene colgado en el repositorio de la aplicación:

Vamos a ver cómo se instala y como se usa:

Instalando Jigsaw-generator de Julian Gilbey

Prerrequisitos

En el archivo INSTALL del repositorio indica qué es necesario tener instalado:

  • Python 3.x (¿A qué estás esperando si todavía no usas Python?)
  • Una distribución $\TeX$ ($\LaTeX$)
  • Y el módulo PyYaml para manejar ficheros Yaml

Podemos instalar el módulo PyYaml con el siguiente comando:

sudo -H pip3 install PyYAML

Instalación propiamente dicha

Se da por descontado que has descargado el repositorio de la aplicación y que la ruta de trabajo apunta a esa carpeta.

Tal como pone en INSTALL ,solo hay que ejecutar los típicos:

./configure
make
sudo make install

Si todo va bien hará la instalación sin errores

Uso básico

El comando que genera el puzzle es:

$ jigsaw-generate

Si lo ejecutamos sin ningún parámetro devolverá lo siguiente:

El error que nos da indica que necesitamos pasarle un fichero .yaml con toda la información del puzzle:

Veamos el ejemplo que corresponde con la imagen del puzzle que hemos visto antes y que aparece en el repositorio del autor:

# A hexagonal jigsaw puzzle, from http://www.mrbartonmaths.com/jigsaw.htm
format: 1
type: hexagon
title: Powers and roots
note: "The `?' means a number for you to fill in"
pairs:
    - ['$10^6\div10^3$', '$1000$']
    - ['$10^{23}\div10^{21}$', '$100$']
    - ['$9^4\times9^5$', '$9^9$']
    - ['$(3^2)^2$', '$81$']
    - ['$6\times6^2$', '$216$']
    - ['$2^4\div2^6$', '$\dfrac{1}{4}$']
    - - '$4^2\times4$'
      - puzzletext: '?'
        solutiontext: '$64$'
    - ['$2^6\times2$', '$128$']
    - ['$23.1^0$', '$1$']
    - ['$3^3\times3^3$', '$3^6$']
    - ['$\sqrt{64}-2^3$', '$0$']
    - ['$\dfrac{1}{5^2}\times\dfrac{1}{5}$', '$\dfrac{1}{5^3}$']
    - ['$5^2\div5^4$', '$\dfrac{1}{5^2}$']
    - ['$3^2\times3^3$', '$3^5$']
    - ['$(3^3)^3$', '$3^9$']
    - ['$2^3\div\sqrt{16}$', '$2$']
    - - '$2^6\div2^4$'
      - puzzletext: '?'
        solutiontext: '$4$'
    - ['$4^4\times4^4$', '$4^8$']
    - ['$\sqrt{49}$', '$7$']
    - ['$\sqrt{25}\times\sqrt{36}$', '$30$']
    - ['$\sqrt{144}\div\sqrt{16}$', '$3$']
    - ['$2^3\div2^4$', '$\dfrac{1}{2}$']
    - ['$2\times2^2\times2^2$', '$32$']
    - ['$10^2\times100$', '$10\,000$']
    - ['$3^6\div3^9$', '$\dfrac{1}{3^3}$']
    - ['$3^8\div3^5$', '$3^3$']
    - ['$5^5\div5\times5^2$', '$5^6$']
    - ['$9^9\times9^9$', '$9^{18}$']
    - ['$(9^9)^9$', '$9^{81}$']
    - ['$(4^4)^4$', '$4^{16}$']
edges:
    - '$-1$'
    - '$10$'
    - '$13^2\div13$'
    - '$39$'
    - '$13^3$'
    - '$108$'
    - '$\dfrac{1}{2}$'
    - '$\sqrt{128}$'
    - '$\sqrt{20}$'
    - '$2^{\frac{1}{2}}$'
    - '$\dfrac{3}{2}$'
    - '$9^{10}$'

El fichero yaml tiene una serie de campos:

  • format: la versión del formato de archivo, debe tener 1 ya que solo hay una versión de la aplicación
  • type: El tipo de rompecabezas que se está creando.
    • smallhexagon, que consta de 6 triángulos
    • hexagon, que consta de 24 triángulos
    • triangle, que consiste en 16 triángulos más pequeños
    • parquet, que consta de 4 cuadrados y 8 triángulos.
  • title: Título
  • puzzleTextSize o solutionTextSize: Tamaño del texto. Va de 0-9 siendo el 0 el más pequeño. Por defecto vale 5
  • note: Subtítulo o nota explicativa arriba en la páginas
  • pairs: Pares de ejercicio-solución. Se ponen entre corchetes y en código $\LaTeX$
  • edges: Ejercicios que no se asocian a ninguna solución porque forman las esquinas del puzzle

Existen más opciones, para más detalle se remite a la documentación de la aplicación.

Ejemplo de uso

Vamos entonces a crear un puzzle sencillo:

El más sencillo es de tipo smallhexagon de 6 triángulos. Luego necesito 6 pairs y 6 edges. Creamos el fichero prueba_angulos.yaml:

type: smallhexagon
title: Radianes y grados
note: "Identifica ángulos iguales"
pairs:
    - ['$0$','$0$']
    - ['$90$','$\frac{\pi}{2}$']
    - ['$180$','$\pi$']
    - ['$270$','$\frac{3\pi}{2}$']
    - ['$360$','$2\pi$']
    - ['$45$','$\frac{\pi}{4}$']
edges:
    - '$\frac{\pi}{6}$'
    - '$\frac{2\pi}{6}$'
    - '$\frac{\pi}{3}$'
    - '$\frac{\pi}{5}$'
    - '$\frac{5\pi}{6}$'
    - '$\frac{2\pi}{6}$'

Solo nos queda ejecutar:

$ jigsaw-generate prueba_angulos.yaml

El resultado es:

Y su solución:

Y eso es todo. Como veis, en realidad, una vez instalado el programa solo hay que generar un fichero yaml con los datos y el tipo de puzzle.


En este artículo voy a escribir cómo he configurado retropie para que funcione con la GameHat de WaveShare con su wiki. Desde allí descargué la imagen preconfigurada para que funcione todo. Bueno, casi:

Kodi

  • Desde el menú de configuración de Retropie, gestión de paquetes opt, podemos instalar el Port de Kodi
  • El mando: Kodi no reconoce el mando. Hay que ir a settings-input-attached_devices ahí con el ratón, pulsar la primer tecla a mapear, una vez seleccionada, pulsaremos la tecla de nuestro teclado a mapear. Así sucesivamente.
  • El tamaño de fuente: Los menús se ven pequeños en la pantalla. Podemos editar
sudo nano /usr/share/kodi/addons/skin.estuary/xml/Font.xml

Yo he sumado 5 a cada tamaño de la fuente por default y ya me va bien

  • Ver la TV por internet: Por defecto, retropie instala kodi sin PVR. Yo he ejecutado:
    sudo apt-get install kodi-pvr-iptvsimple
    

Para acceder a la presentación pincha en el siguiente enlace


Para que el blog esté disponible desde la red hay que leer esto


\[\lvert{x - 2}\rvert - 1\leqslant0 \rightarrow 1 \leq x \wedge x \leq 3\] \[\lvert{2 x + 3}\rvert - 4<0 \rightarrow - \frac{7}{2} < x \wedge x < \frac{1}{2}\] \[\lvert{x + 5}\rvert - 2\leqslant0 \rightarrow -7 \leq x \wedge x \leq -3\] \[\lvert{3 x - 2}\rvert - 0.5\leqslant0 \rightarrow 0.5 \leq x \wedge x \leq 0.833333333333333\] \[\lvert{x - 1}\rvert - 2>0 \rightarrow \left(-\infty < x \wedge x < -1\right) \vee \left(3 < x \wedge x < \infty\right)\] \[\lvert{x + 2}\rvert - 5>0 \rightarrow \left(-\infty < x \wedge x < -7\right) \vee \left(3 < x \wedge x < \infty\right)\] \[\lvert{2 x - 3}\rvert - 1\geqslant0 \rightarrow \left(2 \leq x \wedge x < \infty\right) \vee \left(x \leq 1 \wedge -\infty < x\right)\] \[\lvert{2 x + 1}\rvert - 0.5\geqslant0 \rightarrow \left(-0.25 \leq x \wedge x < \infty\right) \vee \left(x \leq -0.75 \wedge - \infty < x\right)\]


En el siguiente enlace puedes probar todo lo que se explica en este artículo:

View in Colaboratory

Lo primero que necesitamos hacer es importar las librerías de Python que necesitaremos

from sympy import *
from IPython.display import Markdown as md
from IPython.display import display

from __future__ import division
from sympy import *
x, y, z, t = symbols('x y z t')
k, m, n = symbols('k m n', integer=True)
f, g, h = symbols('f g h', cls=Function)
init_printing(use_latex=False)

Resolviendo inecuaciones

Inecuaciones con valores absolutos

Para poder resolver inecuaciones con valores absolutos hay que utilizar la función reduce_abs_inequality.

La función recibe tres parámetros resuelve inecuaciones con el miembro de la derecha 0 (por lo tanto hay que ):

  • La expresión algebraica del miembro de la izquierda
  • El símbolo de la desigualdad
  • La variable, normalmente x

Ejemplo:

Resuelve la inecuación \(\lvert x-2 \rvert \leq 1\)

La inecuación anterior es equivalente a $\lvert x-2 \rvert -1 \leq 0$ y se resuelve con el siguiente código:

reduce_abs_inequality(Abs(x-2)-1,'<=',x)

Solución:

1 ≤ x ∧ x ≤ 3

Referencias


Programa de Matemáticas de 1º Bachillerato de Ciencias

Planificación por semanas

Con un poco más de detalle (pincha sobre la foto para verlo más grande):

Secuencia de contenidos:

Matemáticas 1º Bachillerato CIT - Contenidos

BLOQUE 1: Aritmética y álgebra

Tema 1: Números reales
Topología en la recta real / Valor Absoluto. Distancia / 
Tema 2: Potencias, aproximaciones y raíces
Potencias / Aproximaciones decimales / Notación científica / Radicales / 
Tema 3: Números combinatorios
Factorial de un número / Números Combinatorios / Binomio de Newton / 
Tema 4: Polinomios
Definición y operaciones / Factorización de polinomios / 
Tema 5: Fracciones algebraicas
Definición / Operaciones / 
Tema 6: Ecuaciones de 2o grado
Resolución de ecuaciones de segundo grado con soluciones no reales e interpretación de la solución. / Ecuaciones que se reducen a una de segundo grado / 
Tema 7: Sistemas de ecuaciones
Sistemas lineales / Método de gauss / 
Tema 8: Inecuaciones y sistemas
Resolución de inecuaciones / Sistemas de inecuaciones / 
Tema 9: Otras ecuaciones
Ecuaciones exponenciales / Ecuaciones logarítmicas / 

BLOQUE 2: Geometría

Tema 10: Vectores
Vector fijo y libre / Operaciones con vectores / Combinación lineal de vectores. Dependencia e independencia lineal / Base. Coordenadas. Dimensión / Vector de posición / Definición de vector: módulo, dirección y sentido. Representación. / Operaciones con vectores: suma, resta, producto de un vector por un escalar. Interpretación gráfica de dichas operaciones. / Expresión de un vector como combinación lineal de otros. / Coordenadas de un vector respecto a una base. Tipos de bases. Vectores libres y ligados. / Producto escalar de vectores: definición, propiedades, expresión analítica e interpretación geométrica. Obtención de vectores a partir de ciertas condiciones. / Cálculo del ángulo de dos vectores. / 
Tema 11: Producto escalar
Definición de producto escalar y propiedades / Vectores ortogonales y base ortonormal / Ecuaciones de la recta en el plano: vector de dirección y pendiente. Diferentes tipos de ecuaciones. Paso de un tipo de ecuación a otro. / Expresión del producto escalar en una base ortonormal / Norma de un vector / Ángulo formado por dos vectores / 
Tema 12: Trigonometría
Razones trigonométricas / Identidades trigonométricas / Razones trigonométricas de ciertos ángulos / Reducción al primer cuadrante / Razones trigonométricas del ángulo suma y diferencia / Razones trigonométricas del ángulo doble y mitad / Resolución de triángulos / Transformaciones de sumas en productos / 
Tema 13: Cónicas
Circunferencia / Elipse / Hipérbola / Parábola / 

BLOQUE 3: Estadística y probabilidad

Tema 14: Estadística unidimesional
Población y muestra / Variables estadísticas / Tablas de frecuencias / Gráficos estadísticos / Parámetros de centralización / Parámetros de posición / Parámetros de dispersión / 
Tema 15: Estadística bidimesional
Tablas y gráficos / Distribuciones marginales / Parámetros / Correlación. Coeficiente de correlación / Regresión / 
Tema 16: Probabilidad
Experimentos aleatorios / Probabilidad de un suceso / Probabilidad condicionada / Experimentos compuestos / Teoremas de Probabilidad / 
Tema 17: Variables aleatorias
Definición de variables aleatorias / Variables aleatorias discretas / Distribución binomial / Variables aleatorias continuas / Distribución Normal / La distribución binomial se aproxima a la normal / 

BLOQUE 4: Análisis

Tema 18: Sucesiones
Definición de sucesión / Representación de sucesiones / Progresiones aritméticas / Progresiones Geométricas / Monotonía / Acotación / 
Tema 19: Funciones
Definición, dominio e imagen / Propiedades de las funciones / Operaciones con funciones / Algunas funciones importantes / 
Tema 20: Límites
Límite de una función / Límites laterales / Propiedades de las funciones convergentes / Límites en el infinito / Límites cuando x tiende a un número real / Operaciones con límites / Asíntotas / 
Tema 21: Continuidad de funciones
Continuidad en un punto / Continuidad en un intervalo / Discontinuidades. Tipos de discontinuidades / Continuidad de funciones elementales / Operaciones con funciones continuas / 
Tema 22: Derivada de una función
Tasa de variación media / Derivada de una función en un punto / Interpretación geométrica de la derivada / Derivabilidad y Continuidad / Función derivada / Reglas de derivación / Diferencial de una función / Función derivada y operaciones / Derivada de una función compuesta. Regla de la cadena / Derivada de funciones inversas / 
Tema 23: Aplicaciones de la derivada
Crecimiento y decrecimiento / Extremos relativos. Máximos y mínimos / Concavidad y convexidad / Puntos de Inflexión / Optimización de funciones / Representación de funciones / 
Tema 24: Primitivas. Integral indefinida
Integral indefinida de una función / Integrales inmediatas / Tabla de integrales compuesta / Métodos de Integración / 

Programa de Matemáticas de 1º Bachillerato de Humanidades

Planificación por semanas

Con un poco más de detalle (pincha sobre la foto para verlo más grande):

Secuencia de contenidos:

Matemáticas 1º Bachillerato CHS - Contenidos

BLOQUE 1: ARITMÉTICA Y ÁLGEBRA

Tema 1: Números reales
 Lenguaje matemático: conjuntos y símbolos. /  Los números reales. La recta real. /  Intervalos y semirrectas. /  Radicales. Propiedades. /  Logaritmos. Propiedades. /  Expresión decimal de los números reales. /  Aproximación. Cotas de error. /  Notación científica. / 
Tema 2: Álgebra
 Las igualdades en álgebra. /  Factorización de polimomios. /  Dividir un polinomio entre  x – a.  Regla de Ruffini. /  Divisibilidad de polinomios. /  Fracciones algebraicas. Operaciones. /  Ecuaciones de segundo grado y bicuadradas. /  Ecuaciones con radicales. /  Ecuaciones racionales. /  Ecuaciones exponenciales y logarítmicas. /  Sistemas de ecuaciones. /  Método de Gauss para la resolución de sistemas lineales. /  Inecuaciones y sistemas de inecuaciones con una incógnita. /  Inecuaciones y sistemas de inecuaciones con dos incógnitas. / 

BLOQUE 2: ESTADÍSTICA Y PROBABILIDAD

Tema 3: Estadística unidimensional
Estadística unidimensional / 
Tema 4: Distribuciones bidimensionales
 Nubes de puntos. /  Correlación. Regresión. /  Correlación lineal. /  Parámetros asociados a una distribución bidimensional: centro de gravedad, covarianza, coeficiente de correlación. /  Recta de regresión. Método de los mínimos cuadrados. /  Hay dos rectas de regresión. /  Tablas de contingencia. / 
Tema 5: Dist. de variable discreta
 Cálculo de probabilidades (experiencias compuestas independientes, experiencias compuestas dependientes). /  Distribución estadística y distribución de probabilidad. /  Distribuciones de probabilidad de variable discreta. /  Parámetros en una distribución de probabilidad. /  Distribución binomial. Descripción. /  Cálculo de probabilidades en una distribución binomial. /  Ajuste de un conjunto de datos a una distribución binomial. / 
Tema 6: Dist. de variable continua
 Distribuciones de probabilidad de variable continua. Parámetros. /  Cálculo de probabilidades a partir de la función de densidad. /  La distribución normal. /  Cálculo de probabilidades en distribuciones normales. /  La distribución binomial se aproxima a la normal. /  Ajuste de un conjunto de datos a una distribución normal. / 

BLOQUE 3: ANÁLISIS

Tema 7: Funciones elementales
 Concepto de función. /  Dominio de definición y recorrido de una función. /  Funciones lineales y = mx + n. /  Interpolación lineal. /  Funciones cuadráticas. /  Funciones de proporcionalidad inversa. /  Funciones raíz. /  Funciones definidas “a trozos”. /  Funciones interesantes: “parte entera”, “parte decimal”, “valor absoluto”. /  Transformaciones elementales de funciones: traslaciones, simetrías, estiramientos y contracciones. /  Valor absoluto de una función. / 
Tema 8: Funciones exponenciales, logarítmicas y trigonométricas
 Composición de funciones. /  Función inversa o recíproca de otra. /  Las funciones exponenciales. /  Las funciones logarítmicas. /  Funciones trigonométricas. / 
Tema 9: Límites de funciones. Continuidad y ramas infinitas
 Continuidad. Tipos de discontinuidades. /  Límite de una función en un punto. Continuidad. /  Cálculo del límite de una función en un punto. /  Comportamiento de una función cuando x → + ∞. /  Cálculo del límite de una función cuando  x → + ∞. /  Comportamiento de una función cuando  x → – ∞. /  Ramas infinitas. Asíntotas. /  Ramas infinitas en las funciones racionales. /  Ramas infinitas en las funciones trigonométricas, exponenciales y logarítmicas. / 
Tema 10: Iniciación al cálculo de derivadas. Aplicaciones
 Crecimiento de una función en un intervalo. /  Crecimiento de una función en un punto. /  Derivada. /  Obtención de la derivada a partir de la expresión analítica. /  Función derivada de otra. /  Reglas para obtener las derivadas de algunas funciones sencillas (constante, identidad, potencia). /  Reglas para obtener las derivadas de funciones trigonométricas, exponenciales y logarítmicas. /  Reglas para obtener las derivadas de resultados operativos (constante por función, suma, producto, cociente). /  Regla de la cadena. /  Utilidad de la función derivada (puntos singulares, optimización). /  Representación de funciones polinómicas. /  Representación de funciones racionales. / 

BLOQUE 4: MATEMÁTICA FINANCIERA

Tema 11: Aritmética mercantil
 Aumentos y disminuciones porcentuales. /  Cálculo de la cantidad inicial conociendo la final. /  Tasas y números índices. /  Intereses bancarios. /  ¿Qué es la “tasa anual equivalente” (T.A.E.)? /  Amortización de préstamos. /  Progresiones geométricas. /  Cálculo de anualidades o mensualidades para amortizar deudas. /  Productos financieros. /