~mrls/www

b6359d2313eb17cc720d73d45ea9657f914e4f37 — Mauro Morales 2 months ago b309d21
Add guides
8 files changed, 163 insertions(+), 19 deletions(-)

M Gemfile
M Gemfile.lock
M _config.yml
M _data/menus.yml
A _guias/sistema-operativo.md
M _layouts/post.html
M assets/main.scss
A guias.md
M Gemfile => Gemfile +14 -11
@@ 1,4 1,6 @@
source "https://rubygems.org"
# frozen_string_literal: true

source 'https://rubygems.org'
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:


@@ 7,27 9,28 @@ source "https://rubygems.org"
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "jekyll", "~> 4.0.0"
gem 'jekyll', '~> 4.0.0'
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
gem "html-proofer"
gem "rake"
gem 'html-proofer'
gem 'minima', '~> 2.5'
gem 'rake'
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
  gem "jekyll-feed", "~> 0.12"
  gem 'jekyll-compose'
  gem 'jekyll-feed', '~> 0.12'
  gem 'jekyll-redirect-from'
  gem 'jekyll-toc'
end

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do
  gem "tzinfo", "~> 1.2"
  gem "tzinfo-data"
install_if -> { RUBY_PLATFORM =~ /mingw|mswin|java/ } do
  gem 'tzinfo', '~> 1.2'
  gem 'tzinfo-data'
end

# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?

gem 'wdm', '~> 0.1.1', install_if: Gem.win_platform?

M Gemfile.lock => Gemfile.lock +6 -0
@@ 43,10 43,14 @@ GEM
      jekyll (>= 3.7, < 5.0)
    jekyll-feed (0.13.0)
      jekyll (>= 3.7, < 5.0)
    jekyll-redirect-from (0.15.0)
      jekyll (>= 3.3, < 5.0)
    jekyll-sass-converter (2.0.1)
      sassc (> 2.0.1, < 3.0)
    jekyll-seo-tag (2.6.1)
      jekyll (>= 3.3, < 5.0)
    jekyll-toc (0.12.2)
      nokogiri (~> 1.9)
    jekyll-watch (2.2.1)
      listen (~> 3.0)
    kramdown (2.1.0)


@@ 100,6 104,8 @@ DEPENDENCIES
  jekyll (~> 4.0.0)
  jekyll-compose
  jekyll-feed (~> 0.12)
  jekyll-redirect-from
  jekyll-toc
  minima (~> 2.5)
  rake
  tzinfo (~> 1.2)

M _config.yml => _config.yml +1 -0
@@ 42,6 42,7 @@ collections:

plugins:
  - jekyll-feed
  - jekyll-toc

feed:
  collections:

M _data/menus.yml => _data/menus.yml +1 -0
@@ 6,6 6,7 @@ en:
    title: Español

es:
  - path: guias.md
  - path: index.md
    title: English


A _guias/sistema-operativo.md => _guias/sistema-operativo.md +85 -0
@@ 0,0 1,85 @@
---
layout: post
title: Sistema Operativo
lang: es
date: 2020-01-22
toc: true
---

El Sistema Operativo (SO), es el software que está a cargo de la interacción
entre los dispositivos, programas y usuarios de una computadora.

## ¿Necesito aprender de SOs para programar?

No, sin embargo aprender del SO te hará un mejor programador. Todo programa que
escribimos corre en un SO, mientras mejor lo conozcas, mejor sabrás como
escribir tus programas de tal manera que aproveches los recursos del sistema.
Es decir tu software será más eficiente y tu serás más eficaz programando.

## ¿Cuáles SOs existen?

Más de 600[^1] 😱, sin embargo son tres los que dominan los escritorios de los
programadores.

1. Windows
2. MacOS
3. Linux

Lo más seguro es que quieras utilizar uno de ellos para escribir tus programas.

## ¿Cuál SO elegir?

Ninguno de los SOs es 100% superior a los demás, cada uno tiene sus ventajas
y desventajas. En esta guía me enfoco únicamente a utilizar un SO para
programar y no tomo en cuenta otras aplicaciones como vídeo juegos, ni el uso
de algún hardware en particular.

También es importante mencionar que en tu carrera muchas veces estas obligado
a utilizar más de un SO dependiendo del tipo de desarrollo que estés
realizando.

<div class="warning">
Esta no es una guía definitiva, simplemente es una sugerencia pragmática.
Tómate tu tiempo investigando qué es lo que mejor te conviene según lo que
deseas hacer.
</div>

<div class="info">
Personalmente utilizo Linux y MacOS así que por más que intente
ser objetivo, siempre tendré cierta preferencia por dichos SOs.
</div>

| Si quieres                                                      | Elije   |
|-----------------------------------------------------------------|---------|
| hacer aplicaciones para dispositivos de Apple                   | MacOS   |
| trabajar con Docker u otra tecnología de contenedores           | Linux   |
| poder correr los 3 SOs de forma virtual                         | MacOS   |
| un SO que te permita estudiar su código fuente                  | Linux   |
| hacer aplicaciones que interactuan con tecnologias de Microsoft | Windows |

Adicionalmente si deseas trabajar con un lenguaje de programación o aplicación
en particular, investiga su soporte en cada SO. Por ejemplo, el lenguaje de
programación Ruby, tiene buen soporte en MacOS y Linux pero deja mucho que
desear en Windows. Las 

## ¿En qué lenguaje de programación está escrito el SO?

Depende de que parte del sistema operativo. Los Kernels en su mayoría están
escritos en C, tanto Windows como la familia de SOs basados en Unix (Linux,
Android, BSD, MacOS, iOS). Cada uno implementa diferentes componentes
adicionales en C, C++, Objective-C y/o Java.

Hoy en día hay proyectos que se basan en Rust y Go pero de momento son
solamente pruebas de concepto.[^2]

## ¿Dónde aprender más sobre SOs?

En la [página de
Wikipedia](https://es.wikipedia.org/wiki/Sistema_operativo){:target="_blank"}
encontrarás una definición más amplia sobre SOs, sus componentes y su historia.
Y si deseas aprender más a profundidad puedes leer el libro [Operating Systems:
Three Easy Pieces](http://www.ostep.org/){:target="_blank" class="en_us"}

[^1]: Según [operating-system.org](https://www.operating-system.org/betriebssystem/_english/os-liste.htm){:target="_blank" class="en_us"}, puedes ver un [listado SOs en Wikipedia](https://es.wikipedia.org/wiki/Anexo:Sistemas_operativos){:target="_blank"}.
[^2]: Si estás interesado en aprender más al respecto, te recomiendo que veas [Redox](https://www.redox-os.org/es/){:target="_blank"}, un SO escrito en Rust o la guía de Phillip Oppermann sobre [Escribir un SO en Rust](https://os.phil-opp.com/){:target="_blank" class="en_us"}.


M _layouts/post.html => _layouts/post.html +20 -4
@@ 6,20 6,36 @@ layout: default
  <header class="post-header">
    <h1 class="post-title p-name" itemprop="name headline">{{ page.title | escape }}</h1>
    <p class="post-meta">
      📅
      <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
        {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
        {{ page.date | date: date_format }}
      </time>
      {%- if page.place -%}
        • <span itemprop="place" itemscope itemtype="http://schema.org/Place"><span class="p-author h-card" itemprop="name">{{ page.place }}</span></span>&nbsp;
        🌐 <span itemprop="place" itemscope itemtype="http://schema.org/Place"><span itemprop="name">{{ page.place }}</span></span>&nbsp;
      {%- endif -%}
      {%- if page.category -%}
        • <span class="p-author h-card">{{ page.category | replace: "-", " " | capitalize }}</span>
      {%- endif -%}</p>
        🗄️ <span>{{ page.category | replace: "-", " " | capitalize }}</span>&nbsp;
      {%- endif -%}
      {%- if page.updated_on -%}
        📝 <span>{{ page.updated_on| date: date_format }}</span>&nbsp;
      {%- endif -%}
      {%- unless page.tags == empty -%}
        🏷️
        {%- for tag in page.tags -%}
        {%- if forloop.first == false -%}
        ,
        {% endif %}
        <span>{{ tag | replace: "-", " " | capitalize }}</span>
        {%- endfor -%}
      {%- endunless -%}
    </p>
  </header>

  <div class="post-content e-content" itemprop="articleBody">
    {{ content }}
    {{ page.excerpt }}
    {% toc %}
    {{ content | remove: page.excerpt  }}
  </div>

  <div class="comments">

M assets/main.scss => assets/main.scss +14 -4
@@ 4,21 4,31 @@

@import "minima";

.en_us::after {
  content: ' 🇺🇸';
}

.license {
  font-size: 0.9em;
}

.info::before {
  content: 'ℹ️';
}

.info {
  background-color: lightyellow;
  padding: 10px;
  font-style: italic;
  margin-bottom: 1em;
  padding: 0.5em;
}

.warning::before {
  content: '⚠️';
}
.warning {
  background-color: lightcoral;
  padding: 10px;
  font-style: italic;
  margin-bottom: 1em;
  padding: 0.5em;
}

.page-content {

A guias.md => guias.md +22 -0
@@ 0,0 1,22 @@
---
layout: page
title: Guías
lang: es
---

<div class="info">
  Estas guías están en español y no tienen costo, sin embargo algunos de los
  enlaces externos llevan el emoji  🇺🇸 o  💵 para enfatizar que están en
  inglés o son pagados respectivamente.
</div>

Mi intención creando las siguientes guías es que tanto tú como yo podamos
aprender un poco más de computación.

> Enseñando se aprende
>
> -- Séneca

{% for guia in site.guias %}
- [{{ guia.title }}]({{ guia.url }})
{% endfor %}