Skip to content

Commit

Permalink
Cálculo de tiempo de lectura en Rakefile
Browse files Browse the repository at this point in the history
  • Loading branch information
jesustorresdev committed Oct 6, 2020
1 parent ee98fb7 commit 16cd8ca
Show file tree
Hide file tree
Showing 15 changed files with 100 additions and 102 deletions.
32 changes: 29 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
require "nokogiri"

PROJECT_DIR = Rake.application.original_dir

CONTENT_DIR = File.join(PROJECT_DIR, "content")
CONFIG_DIR = File.join(PROJECT_DIR, "config")
SCRIPTS_DIR = File.join(PROJECT_DIR, "scripts")
OUTPUT_DIR = File.join(PROJECT_DIR, "output")

INPUT_FILES = FileList[File.join(CONTENT_DIR, "**/*.adoc")]
Expand All @@ -23,6 +24,7 @@ OUTPUT_EPUB_DIR = File.dirname(OUTPUT_EPUB_FILE)

DOCUMENT_MAIN_FILE = File.join(CONTENT_DIR, "main.adoc")
DOCSTATS_FILE = File.join(CONTENT_DIR, "docstats.adoc")
READING_SPEED_IN_WORDS_PER_MINUTE = 200

task :default => :html

Expand Down Expand Up @@ -72,8 +74,32 @@ directory OUTPUT_EPUB_DIR

desc 'Generar el archivo de información estadística'
task :docstats => :html_only do |t|
docstats_bin = File.join(SCRIPTS_DIR, "update-docstats")
sh docstats_bin, CONTENT_DIR, DOCSTATS_FILE
document = Nokogiri::HTML.parse(open(OUTPUT_HTML_FILE))
docstats = open(DOCSTATS_FILE, "w")
document.css(".sect1 > h2 + .sectionbody").each do |sectionbody|
if matches = /^(?<chapter_number>\d+)\. /.match(sectionbody.previous_element)
chapter_number = matches['chapter_number']

wordcount = sectionbody.text().scan(/[\p{Alnum}\-']+/).length()
reading_time = (wordcount.to_f / READING_SPEED_IN_WORDS_PER_MINUTE).round

# Construir la cadena de texto con el tiempo de lectura
if reading_time == 1
reading_time_string = "1 minuto"
elsif reading_time < 60
reading_time_string = "#{reading_time} minutos"
elsif reading_time == 60
reading_time_string = "1 hora"
else
reading_time_string = "#{reading_time / 60} horas y #{reading_time % 60} minutos"
end

docstats.puts ":C%02i_words: %i" % [chapter_number, wordcount]
docstats.puts ":C%02i_reading_time: %s" % [chapter_number, reading_time_string]

puts "C%02i: %8i %8i (%s)" % [chapter_number, wordcount, reading_time, reading_time_string]
end
end
end

desc 'Ejecutar los tests'
Expand Down
10 changes: 10 additions & 0 deletions TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Revisar enlaces y referencias
Revisar referencias
Sobre por lo introducido en los últimos temas de apuntes.
Por ejemplo sobre sistemas de archivos con Copy-on-write

Ojo con el uso del término tiempo compartido (mejor propósito general o multitarea)

Mira libro de system programming para los diagramas de secuencia de hilos para usar en SS.OO

// TODO: Guía de estilo... en README.md
2 changes: 1 addition & 1 deletion content/C01-definición/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C01_stats_reading_time}
{C01_reading_time}
====

¿Qué es un sistema operativo? ¿cuáles son sus responsabilidades en el contexto de un sistema informático? ¿cómo cumple con ellas?
Expand Down
2 changes: 1 addition & 1 deletion content/C02-tipos_de_sistemas/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C02_stats_reading_time}
{C02_reading_time}
====

Ahora que sabemos que todos los sistemas operativos hacen lo mismo pero que el «cómo» lo hacen difiere de un tipo de sistema informático a otro, vamos a ver los tipos de sistemas informáticos, las características de los sistemas operativos que los gestionan y cómo han evolucionado a lo largo de la historia.
Expand Down
2 changes: 1 addition & 1 deletion content/C03-historia/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C03_stats_reading_time}
{C03_reading_time}
====

La historia de los sistemas operativos se puede dividir en cinco grandes etapas o generaciones, obviamente conectadas con las generaciones de los ordenadores donde funcionaban.
Expand Down
2 changes: 1 addition & 1 deletion content/C04-componentes/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C04_stats_reading_time}
{C04_reading_time}
====

Crear un software tan complejo como un sistema operativo no es sencillo, por ello resulta más práctico dividirlo en piezas más pequeñas especializadas en aspectos concretos de la gestión del sistema.
Expand Down
2 changes: 1 addition & 1 deletion content/C05-servicios/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C05_stats_reading_time}
{C05_reading_time}
====

Un sistema operativo proporciona un entorno para la ejecución de programas.
Expand Down
2 changes: 1 addition & 1 deletion content/C06-api/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C06_stats_reading_time}
{C06_reading_time}
====

Un sistema operativo proporciona un entorno controlado para la ejecución de programas.
Expand Down
2 changes: 1 addition & 1 deletion content/C07-modo_dual/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C07_stats_reading_time}
{C07_reading_time}
====

Dado que el sistema operativo y los procesos de usuarios comparten los recursos del sistema informático, necesitamos estar seguros de que un error en un programa sólo afecte al proceso que lo ejecuta —por ejemplo, que un proceso no puede modificar la memoria de otro proceso o la del núcleo del sistema—.
Expand Down
2 changes: 1 addition & 1 deletion content/C08-estructura/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C08_stats_reading_time}
{C08_reading_time}
====

Ya hemos discutido anteriormente acerca de los componentes más comunes en un sistema operativo (véase el <<_componentes_del_sistema>>).
Expand Down
2 changes: 1 addition & 1 deletion content/C09-procesos/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C09_stats_reading_time}
{C09_reading_time}
====

Los primeros sistemas informáticos solo permitían que un programa se ejecutara cada vez.
Expand Down
2 changes: 1 addition & 1 deletion content/C10-ipc/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C10_stats_reading_time}
{C10_reading_time}
====

El *((paso de mensajes))* es un mecanismo que permite a los procesos compartir información y sincronizar sus acciones sin necesidad de compartir recursos —compartir memoria, archivos, etc.—
Expand Down
2 changes: 1 addition & 1 deletion content/C11-memoria_compartida/capítulo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include::../../config/attributes.adoc[]
[.right]
====
.Tiempo estimado de lectura
{C11_stats_reading_time}
{C11_reading_time}
====

La *((memoria compartida))* es una estrategia para comunicar procesos dónde uno de ellos gana acceso a regiones de la memoria del otro; algo que por lo general el sistema operativo siempre intenta evitar.
Expand Down
90 changes: 50 additions & 40 deletions content/docstats.adoc
Original file line number Diff line number Diff line change
@@ -1,40 +1,50 @@
:C01_stats_words: 1405
:C01_stats_reading_time: 7 minutos
:C02_stats_words: 4574
:C02_stats_reading_time: 22 minutos
:C03_stats_words: 3816
:C03_stats_reading_time: 19 minutos
:C04_stats_words: 2320
:C04_stats_reading_time: 11 minutos
:C05_stats_words: 1025
:C05_stats_reading_time: 5 minutos
:C06_stats_words: 3055
:C06_stats_reading_time: 15 minutos
:C07_stats_words: 3354
:C07_stats_reading_time: 16 minutos
:C08_stats_words: 1946
:C08_stats_reading_time: 9 minutos
:C09_stats_words: 7922
:C09_stats_reading_time: 39 minutos
:C10_stats_words: 6525
:C10_stats_reading_time: 32 minutos
:C11_stats_words: 1042
:C11_stats_reading_time: 5 minutos
:C12_stats_words: 3192
:C12_stats_reading_time: 15 minutos
:C13_stats_words: 1612
:C13_stats_reading_time: 8 minutos
:C14_stats_words: 6626
:C14_stats_reading_time: 33 minutos
:C15_stats_words: 1753
:C15_stats_reading_time: 8 minutos
:C16_stats_words: 2207
:C16_stats_reading_time: 11 minutos
:C17_stats_words: 9192
:C17_stats_reading_time: 45 minutos
:C18_stats_words: 2030
:C18_stats_reading_time: 10 minutos
:C19_stats_words: 8292
:C19_stats_reading_time: 41 minutos
:C20_stats_words: 5620
:C20_stats_reading_time: 28 minutos
:C01_words: 1371
:C01_reading_time: 7 minutos
:C02_words: 4501
:C02_reading_time: 23 minutos
:C03_words: 3833
:C03_reading_time: 19 minutos
:C04_words: 2242
:C04_reading_time: 11 minutos
:C05_words: 987
:C05_reading_time: 5 minutos
:C06_words: 3004
:C06_reading_time: 15 minutos
:C07_words: 3278
:C07_reading_time: 16 minutos
:C08_words: 1907
:C08_reading_time: 10 minutos
:C09_words: 7806
:C09_reading_time: 39 minutos
:C10_words: 6451
:C10_reading_time: 32 minutos
:C11_words: 1044
:C11_reading_time: 5 minutos
:C12_words: 4665
:C12_reading_time: 23 minutos
:C13_words: 5954
:C13_reading_time: 30 minutos
:C14_words: 1709
:C14_reading_time: 9 minutos
:C15_words: 2077
:C15_reading_time: 10 minutos
:C16_words: 7523
:C16_reading_time: 38 minutos
:C17_words: 1326
:C17_reading_time: 7 minutos
:C18_words: 423
:C18_reading_time: 2 minutos
:C19_words: 220
:C19_reading_time: 1 minuto
:C20_words: 1279
:C20_reading_time: 6 minutos
:C21_words: 4295
:C21_reading_time: 21 minutos
:C22_words: 1711
:C22_reading_time: 9 minutos
:C23_words: 1893
:C23_reading_time: 9 minutos
:C24_words: 4147
:C24_reading_time: 21 minutos
:C25_words: 1347
:C25_reading_time: 7 minutos
48 changes: 0 additions & 48 deletions scripts/update-docstats

This file was deleted.

0 comments on commit 16cd8ca

Please sign in to comment.