Publicidad y privacidad

Cómo gana dinero este sitio — y qué se niega a hacer

Esta página existe porque «gratis» suele esconder algo. Aquí tienes todo, en lenguaje sencillo y con el código que de verdad se ejecuta en el sitio. Sin letra pequeña.

La versión corta

Afirmación 1 — tu código no se sube

Todo lo que escribes lo compila JSCPP, un intérprete de C++ escrito en JavaScript que se carga una vez en tu página:

// js/site.js — el único lugar donde se descarga el motor
var SELF = document.currentScript;
var VENDOR_BASE = (function () {
  var src = (SELF && SELF.src) || "";
  var i = src.indexOf("js/site.js");
  return i >= 0 ? src.slice(0, i) : "";   // funciona desde /, /zh/ y /es/
})();

// Un archivo local que se publica con el sitio. No es un CDN: la página
// no carga nada de un dominio de terceros.
var JSCPP_URL = VENDOR_BASE + "vendor/jscpp.min.js";

// ... y así es como se ejecuta tu programa: localmente, en esta pestaña.
function runInPage(code, stdin) {
  return loadEngineScript().then(function (JSCPP) {
    var out = "";
    var exitCode = JSCPP.run(code, stdin || "", {
      stdio: { write: function (s) { out += s; } }
    });
    return { ok: true, output: out, exitCode: exitCode };
  });
}

No hay ningún fetch, ningún XMLHttpRequest ni ningún envío de formulario en el código de corrección. Puedes comprobarlo: abre las herramientas de desarrollo (DevTools) → Red, ejecuta cualquier problema y verás que ninguna petición lleva tu código fuente.

Afirmación 2 — sin anuncios junto al editor ni a los resultados de las pruebas

El sitio tiene 370 comentarios de hueco publicitario. Solo siete tipos tienen permiso para mostrar realmente un anuncio. Los demás — incluidos todos los huecos de «parte superior de la página» — quedan inactivos para siempre, porque empujarían el contenido hacia abajo:

// js/ads.js — la lista de permitidos que se aplica de verdad en este sitio
var CPPLAB_AD_PLACEMENT = {
  allow: [
    "below solution",      // un solo punto, después de la solución del problema
    "mid-article",         // solo artículos largos, entre secciones
    "mid-lesson unit",
    "end of article",
    "end-of-lesson unit",
    "bottom of hub",       // pie de página de una página de listado
    "bottom unit"
  ]
  // "top of article", "top of hub", "above lesson content" y
  // "top responsive unit" no están aquí a propósito. Nunca se renderizan.
};

Y este es el bucle que recorre la página en busca de marcadores — fíjate en el filtro allow.some(...): todo lo que no está en la lista se omite, no se renderiza:

if (/^\s*AD:/.test(t) && allow.some(function (k) { return t.indexOf(k) !== -1; })) {
  marks.push(walker.currentNode);   // solo los huecos permitidos reciben un anuncio
}

Qué significa esto para ti, que estás aprendiendo: cuando escribes código y lees si ha pasado o ha fallado, no hay nada que pulsar ni nada que compita por tu atención. El primer anuncio con el que te puedes encontrar en una página de problema aparece después de la solución, es decir, cuando ya has terminado.

Afirmación 3 — sin cookies de seguimiento por nuestra parte

Este sitio guarda exactamente cinco cosas, todas locales, y todas las puedes leer y borrar tú:

ClaveQué guarda
cpplab.thememodo claro u oscuro
cpplab.langtu elección de idioma
cpplab.codetu borrador del editor
cpplab.practice.…tu borrador de cada problema
cpplab.gameproblemas resueltos, logros y racha

No ponemos cookies propias. Si borras los datos del sitio en tu navegador, desaparece todo lo anterior y no se pierde nada por nuestra parte — porque no tenemos ninguna copia.

Afirmación 4 — qué hace Google, con honestidad

Para que el sitio siga siendo gratis, tenemos previsto mostrar publicidad de Google AdSense. Cuando esté activa:

Lo que nunca haremos

Cómo comprobar todo esto por tu cuenta

  1. Mira el código: los archivos de arriba (js/site.js, js/ads.js) son JavaScript normal, íntegro y sin ningún paso de compilación.
  2. Observa la red: herramientas de desarrollo → Red → resuelve un problema. Ninguna petición contiene tu código.
  3. Cuenta los anuncios: en una página de problema, el primer hueco de anuncio está después de la solución; en un artículo, nunca por encima del primer encabezado.
  4. Limpia: herramientas de desarrollo → Aplicación → Almacenamiento local → borra las claves. Recarga. Vuelves a ser un visitante completamente nuevo.

Si algo de esta página resulta no coincidir con lo que el sitio hace en realidad, es un error — avísanos y corregiremos el código o la página. Política de privacidad completa.