summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitattributes5
-rw-r--r--.travis.yml3
-rw-r--r--Gemfile5
-rw-r--r--README.markdown2
-rw-r--r--Rakefile23
-rw-r--r--es-es/wolfram-es.html.markdown138
-rw-r--r--html.html.markdown2
-rw-r--r--kdb+.html.markdown11
-rw-r--r--python3.html.markdown8
-rw-r--r--sk-sk/elixir.html.markdown24
-rw-r--r--tests/encoding.rb32
-rw-r--r--tests/yaml.rb21
12 files changed, 248 insertions, 26 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..71715700
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,5 @@
+bf.html.markdown linguist-language=Brainfuck
+bf-*.html.markdown linguist-language=Brainfuck
+c-*.html.markdown linguist-language=C
+c.html.markdown linguist-language=C
+ruby*.html.markdown linguist-language=Ruby
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..ab89cb23
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,3 @@
+language: ruby
+rvm:
+ - 2.2
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 00000000..c30a6497
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,5 @@
+source 'http://rubygems.org'
+group :test do
+ gem 'rake'
+ gem 'charlock_holmes'
+end
diff --git a/README.markdown b/README.markdown
index a71e85bd..9a8a3752 100644
--- a/README.markdown
+++ b/README.markdown
@@ -1,5 +1,7 @@
# [Learn X in Y minutes][1]
+[![Build Status](https://travis-ci.org/adambard/learnxinyminutes-docs.svg?branch=master)](https://travis-ci.org/adambard/learnxinyminutes-docs)
+
Whirlwind tours of (several, hopefully many someday) popular and
ought-to-be-more-popular programming languages, presented as valid, commented
code and explained as they go.
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 00000000..6a31bd72
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,23 @@
+task default: %w[encoding yaml return_code]
+$failure = 0
+task :encoding do
+ begin
+ ruby 'tests/encoding.rb'
+ rescue Exception => msg
+ puts msg
+ $failure += 1
+ end
+end
+task :yaml do
+ begin
+ ruby 'tests/yaml.rb'
+ rescue Exception => msg
+ puts msg
+ $failure += 1
+ end
+end
+task :return_code do
+ if $failure != 0
+ raise "Failed #{$failure} tests!!"
+ end
+end
diff --git a/es-es/wolfram-es.html.markdown b/es-es/wolfram-es.html.markdown
new file mode 100644
index 00000000..44ec9e09
--- /dev/null
+++ b/es-es/wolfram-es.html.markdown
@@ -0,0 +1,138 @@
+---
+language: wolfram
+lang: es-es
+contributors:
+ - ["Daniel Caballero", "http://github.com/danielcaballero796/"]
+filename: learnwolfram-es.md
+---
+
+Wolfram es un lenguaje subyacente originalmente utilizado en Mathematica, pero ahora esta disponible para su uso en múltiples contextos.
+
+El lenguaje de Wolfram tiene varias interfaces:
+* La interfaz de línea de comandos kernel de Raspberry Pi (recién llamada _The Wolfram Language_) que se ejecuta interactivamente y no puede producir entrada gráfica.
+* _Mathematica_ que es un texto rico / editor de matemáticas con Wolfram interactivo construido: presionando shift + Return en una "celda de código" crea una celda de salida con el resultado, que no es dinámica
+* _Wolfram Workbench_ la cual es la interfaz de Eclipse del lenguaje Wolfram
+
+El código de este ejemplo se puede escribir en cualquier interfaz y editarlo con Wolfram Workbench. Cargar directamente en Matematica puede resultar incómodo porque el archivo no contiene información de formato de celda (lo que haría que el archivo sea un desastre enorme para ser leído como texto) - puede ser visto / editado pero tal vez requerira algún ajuste.
+
+```
+(* Esto es un comentario *)
+
+(* En Mathematica en lugar de utilizar estos comentarios, puede crear una celda de texto
+ Y anotar su código con texto e imágenes bien escritas *)
+
+(* Escribe una expresión devuelve el resultado *)
+2*2 (* 4 *)
+5+8 (* 13 *)
+
+(* Llamada de función *)
+(* Nota, los nombres de funciones (y todo lo demás) distingue entre mayúsculas y minúsculas *)
+Sin[Pi/2] (* 1 *)
+
+(* Sintaxis alternativa para la Llamada de una función con un parámetro *)
+Sin@(Pi/2) (* 1 *)
+(Pi/2) // Sin (* 1 *)
+
+(* Cada sintaxis en WL tiene algún equivalente como una llamada de función *)
+Veces[2, 2] (* 4 *)
+Mas[5, 8] (* 13 *)
+
+(* El uso de una variable por primera vez lo define y lo hace global *)
+x = 5 (* 5 *)
+x == 5 (* verdadero, Estilo-C asignación y pruebas de igualdad *)
+x (* 5 *)
+x = x + 5 (* 10 *)
+x (* 10 *)
+Modifique[x, 20] (* No estaba bromeando cuando dije que TODO tiene una función equivalente *)
+x (* 20 *)
+
+(* Debido a que WL se basa en un sistema de álgebra computacional, *)
+(* El uso de variables indefinidas está bien, simplemente obstruyen la evaluación *)
+cow + 5 (* 5 + cow, cow es indefinido por lo que no puede evaluar más *)
+cow + 5 + 10 (* 15 + cow, Va a evaluar lo que puede *)
+% (* 15 + cow, % Busca el último retorno *)
+% - cow (* 15, cow variable indefinida cancelada *)
+moo = cow + 5 (* Cuidado, moo ahora tiene una expresión, no un número! *)
+
+(* Definición de una función *)
+Double[x_] := x * 2 (* Nota: = para evitar la evaluación inmediata del RHS
+ y después de x para indicar que no hay restricciones de concordancia de patrones *)
+Double[10] (* 20 *)
+Double[Sin[Pi/2]] (* 2 *)
+Double @ Sin @ (Pi/2) (* 2, @-Sintaxis evita colas de paréntesis *)
+(Pi/2) // Sin // Double(* 2, //-Sintaxis lista las funciones en orden de ejecución *)
+
+(* Para un uso de programación de estilo imperativo; Para separar declaraciones *)
+(* Descarta cualquier salida de LHS y ejecuta RHS *)
+miPrimero[] := (Print@"Hola"; Print@"Mundo") (* Tenga en cuenta que los padres externos son críticos
+ ; La precedencia es menor que := *)
+miPrimero[] (* Hola Mundo *)
+
+(* Estilo-C para bucle *)
+PrintTo[x_] := For[y=0, y<x, y++, (Print[y])] (* Start, test, incr, body *)
+PrintTo[5] (* 0 1 2 3 4 *)
+
+(* bucle *)
+x = 0; While[x < 2, (Print@x; x++)] (* Ciclo con prueba y cuerpo *)
+
+(* Si y condicionales *)
+x = 8; If[x==8, Print@"Yes", Print@"No"] (* Condición, Caso verdadero, Caso distinto*)
+Switch[x, 2, Print@"Two", 8, Print@"Yes"] (* Interruptor de estilo de coincidencia de valor *)
+Which[x==2, Print@"No", x==8, Print@"Yes"] (* estilo de caso distinto *)
+
+(* Las variables distintas de los parámetros son globales por defecto, incluso dentro de las funciones *)
+y = 10 (* 10, Variable global y *)
+PrintTo[5] (* 0 1 2 3 4 *)
+y (* 5, Global por contador de bucle dentro de PrintTo *)
+x = 20 (* 20, Variable global x *)
+PrintTo[5] (* 0 1 2 3 4 *)
+x (* 20, x en PrintTo Es un parámetro y automáticamente local *)
+
+(* Las variables locales se declaran utilizando la metafunción del módulo *)
+(* Version con variable local*)
+BetterPrintTo[x_] := Module[{y}, (For[y=0, y<x, y++, (Print@y)])]
+y = 20 (* Variable global y *)
+BetterPrintTo[5] (* 0 1 2 3 4 *)
+y (* 20, eso es mejor *)
+
+(* El módulo realmente nos permite declarar cualquier ámbito que nos guste *)
+Module[{count}, count=0; (* Declare el alcance de este recuento de variables *)
+ (IncCount[] := ++count); (* Estas funciones están dentro de ese ámbito *)
+ (DecCount[] := --count)]
+count (* count - Variable global count no esta definida *)
+IncCount[] (* 1, usando count variable dentro del alcance *)
+IncCount[] (* 2, incCount lo actualiza *)
+DecCount[] (* 1, decCount tambien lo hace *)
+count (* count - Aún ninguna variable global con ese nombre*)
+
+(* listas *)
+miLista = {1, 2, 3, 4} (* {1, 2, 3, 4} *)
+miLista[[1]] (* 1 - Los índices de la lista de notas comienzan en 1, no 0 *)
+Map[Double, miLista] (* {2, 4, 6, 8} - Lista de estilo funcional mapa función *)
+Double /@ miLista (* {2, 4, 6, 8} - Sintaxis abreviada para arriba *)
+Scan[Print, miLista] (* 1 2 3 4 - Lista de bucle sobre estilo imperativo *)
+Fold[Plus, 0, miLista] (* 10 (0+1+2+3+4) *)
+FoldList[Plus, 0, miLista] (* {0, 1, 3, 6, 10} - Guardar los resultados intermedios *)
+Append[miLista, 5] (* {1, 2, 3, 4, 5} - Note que miLista no está actualizada *)
+Prepend[miLista, 5] (* {5, 1, 2, 3, 4} - añada "miLista = " Si quieres que lo sea *)
+Join[miLista, {3, 4}] (* {1, 2, 3, 4, 3, 4} *)
+miLista[[2]] = 5 (* {1, 5, 3, 4} - Esto actualiza miLista *)
+
+(* Asociaciones, aka Diccionarios /Hashes *)
+miHash = <|"Green" -> 2, "Red" -> 1|> (* crea una asociación *)
+miHash[["Green"]] (* 2, uselo *)
+miHash[["Green"]] := 5 (* 5, actualizalo *)
+miHash[["Puce"]] := 3.5 (* 3.5, extiendalo *)
+KeyDropFrom[miHash, "Verde"] (* Limpia la llave Verde *)
+Claves[miHash] (* {Rojo} *)
+Valores[miHash] (* {1} *)
+
+(* Y no puedes hacer ninguna demo de Wolfram sin mostrar esto *)
+Manipular[y^2, {y, 0, 20}] (* Devuelve una interfaz de usuario reactiva que muestra y ^ 2
+ Y permite ajustar y entre 0-20 con un deslizador.
+ Sólo funciona en interfaces gráficas *)
+```
+
+##Listo para mas?
+
+* [Centro de Documentación](http://reference.wolfram.com/language/)
diff --git a/html.html.markdown b/html.html.markdown
index 904fa5c2..b64cec33 100644
--- a/html.html.markdown
+++ b/html.html.markdown
@@ -8,7 +8,7 @@ translators:
---
HTML stands for HyperText Markup Language.
-It is a language which use to write pages for the world wide web.
+It is a language which allows us to write pages for the world wide web.
It is a markup language, it enables us to write to write webpages using code to indicate how text and data should be displayed.
In fact, html files are simple text files.
What is this markup? It is a method of organising the page's data by surrounding it with opening tags and closing tags.
diff --git a/kdb+.html.markdown b/kdb+.html.markdown
index ae132451..76f07f7b 100644
--- a/kdb+.html.markdown
+++ b/kdb+.html.markdown
@@ -6,9 +6,8 @@ contributors:
filename: learnkdb.q
---
-The q langauge and its database component kdb+ were developed by Arthur
-Whitney and released by Kx systems in 2003. q is a descendant of
-[APL](https://en.wikipedia.org/wiki/APL_(programming_language)) and as such is
+The q langauge and its database component kdb+ were developed by Arthur Whitney
+and released by Kx systems in 2003. q is a descendant of APL and as such is
very terse and a little strange looking for anyone from a "C heritage" language
background. Its expressiveness and vector oriented nature make it well suited
to performing complex calculations on large amounts of data (while also
@@ -69,7 +68,7 @@ at jonny.press@aquaq.co.uk
/ And exponentiation...
2 xexp 4 / => 16
-/ ...and rounding...
+/ ...and truncating...
floor 3.14159 / => 3
/ ...getting the absolute value...
@@ -312,7 +311,7 @@ d:`a`b`c!1 2 3
/ the keyword key returns the first list
key d / => `a`b`c
/ and value the second
-value / => 1 2 3
+value d / => 1 2 3
/ Indexing is indentical to lists
/ with the first list as a key instead of the position
@@ -698,7 +697,7 @@ first each (1 2 3;4 5 6;7 8 9)
/ their behaviour differs based on the number of arguments the function they
/ are modifying receives. Here I'll summarise some of the most useful cases
/ a single argument function modified by scan given 2 args behaves like "do"
-{x * 2}\[5;1] / => 1 2 4 8 16 3 (i.e. multiply by 2, 5 times)
+{x * 2}\[5;1] / => 1 2 4 8 16 32 (i.e. multiply by 2, 5 times)
{x * 2}/[5;1] / => 32 (using over only the final result is shown)
/ If the first argument is a function, we have the equivalent of "while"
diff --git a/python3.html.markdown b/python3.html.markdown
index 9ce7790b..839d66fd 100644
--- a/python3.html.markdown
+++ b/python3.html.markdown
@@ -37,8 +37,6 @@ Note: This article applies to Python 3 specifically. Check out [here](http://lea
1 + 1 # => 2
8 - 1 # => 7
10 * 2 # => 20
-
-# Except division which defaults to rounding down
35 / 5 # => 7.0
# Result of integer division truncated down both for positive and negative.
@@ -47,13 +45,9 @@ Note: This article applies to Python 3 specifically. Check out [here](http://lea
-5 // 3 # => -2
-5.0 // 3.0 # => -2.0
-# When one of the inputs is a float, result is a float
+# The result of division is always a float
10.0 / 3 # => 3.3333333333333335
-# to force this behavior on integers, use
-from __future__ import division
-10 / 3 # => 3.3333333333333335
-
# Modulo operation
7 % 3 # => 1
diff --git a/sk-sk/elixir.html.markdown b/sk-sk/elixir.html.markdown
index 7b0c7bde..2401f92e 100644
--- a/sk-sk/elixir.html.markdown
+++ b/sk-sk/elixir.html.markdown
@@ -215,7 +215,7 @@ cond do
end
# Je bežné nastaviť poslednú podmienku rovnajúcu sa `true` , ktorá bude vždy
-zodpovedať.
+# zodpovedať.
cond do
1 + 1 == 3 ->
"Nebudem nikdy videný"
@@ -310,12 +310,12 @@ defmodule Geometria do
end
Geometria.oblast({:obdlznik, 2, 3}) #=> 6
-Geometry.oblast({:kruh, 3}) #=> 28.25999999999999801048
+Geometria.oblast({:kruh, 3}) #=> 28.25999999999999801048
# Geometria.oblast({:kruh, "nie_je_cislo"})
#=> ** (FunctionClauseError) no function clause matching in Geometria.oblast/1
# Vďaka nemeniteľnosti (immutability) je rekurzia významnou časťou elixiru
-defmodule Recurzia do
+defmodule Rekurzia do
def sumuj_zoznam([hlavicka | schvost], acc) do
sumuj_zoznam(chvost, acc + hlavicka)
end
@@ -325,7 +325,7 @@ defmodule Recurzia do
end
end
-Recurzia.sumuj_zoznam([1,2,3], 0) #=> 6
+Rekurzia.sumuj_zoznam([1,2,3], 0) #=> 6
# Elixir moduly podporujú atribúty, existujú vstavané atribúty a takisto
# môžte pridávať vlastné.
@@ -422,7 +422,7 @@ end
# Kompiluj modul a vytvor proces, ktorý vyhodnotí `slucka_oblasti` v shelli
-pid = spawn(fn -> Geometry.area_loop() end) #=> #PID<0.40.0>
+pid = spawn(fn -> Geometria.slucka_oblasti() end) #=> #PID<0.40.0>
# Alternatívne
pid = spawn(Geometria, :slucka_oblasti, [])
@@ -458,13 +458,13 @@ Agent.update(moj_agent, fn farby -> ["modra" | farby] end)
## Referencie
-* [Začíname](http://elixir-lang.org/getting-started/introduction.html) from the
+* [Začíname](http://elixir-lang.org/getting-started/introduction.html) z
[Elixir stránky](http://elixir-lang.org)
* [Elixir dokumentácia](http://elixir-lang.org/docs/master/)
-* ["Elixir programovanie"](https://pragprog.com/book/elixir/programming-elixir)
- by Dave Thomas
+* [Elixir programovanie](https://pragprog.com/book/elixir/programming-elixir)
+ od Dave Thomasa
* [Elixir ťahák](http://media.pragprog.com/titles/elixir/ElixirCheat.pdf)
-* ["Nauč sa kúsok Erlangu pre veľké dobro!"](http://learnyousomeerlang.com/) by
-Fred Hebert
-* ["Erlang programovanie: Softvér pre konkurentný svet"](https://pragprog
-.com/book/jaerlang2/programming-erlang) by Joe Armstrong
+* [Nauč sa kúsok Erlangu pre veľké dobro!](http://learnyousomeerlang.com/) od
+Freda Heberta
+* [Erlang programovanie: Softvér pre konkurentný svet](https://pragprog
+.com/book/jaerlang2/programming-erlang) od Joe Armstronga
diff --git a/tests/encoding.rb b/tests/encoding.rb
new file mode 100644
index 00000000..a0b3b184
--- /dev/null
+++ b/tests/encoding.rb
@@ -0,0 +1,32 @@
+#!/usr/bin/env ruby
+require 'charlock_holmes'
+$file_count = 0;
+markdown_files = Dir["./**/*.html.markdown"]
+markdown_files.each do |file|
+ begin
+ contents = File.read(file)
+ detection = CharlockHolmes::EncodingDetector.detect(contents)
+ case detection[:encoding]
+ when 'UTF-8'
+ $file_count = $file_count + 1
+ when 'ISO-8859-1'
+ $file_count = $file_count + 1
+ when /ISO-8859/
+ puts "Notice: #{file} was detected as #{detection[:encoding]} encoding. Everything is probably fine."
+ $file_count = $file_count + 1
+ else
+ puts "WARNING #{file} was detected as #{detection[:encoding]} encoding. Please save the file in UTF-8!"
+ end
+ rescue Exception => msg
+ puts msg
+ end
+end
+files_failed = markdown_files.length - $file_count
+if files_failed != 0
+ puts "FAILURE!!! #{files_failed} files were unable to be validated as UTF-8!"
+ puts "Please resave the file as UTF-8."
+ exit 1
+else
+ puts "Success. All #{$file_count} files passed UTF-8 validity checks."
+ exit 0
+end
diff --git a/tests/yaml.rb b/tests/yaml.rb
new file mode 100644
index 00000000..0ed918e0
--- /dev/null
+++ b/tests/yaml.rb
@@ -0,0 +1,21 @@
+#!/usr/bin/env ruby
+require 'yaml';
+$file_count = 0;
+markdown_files = Dir["./**/*.html.markdown"]
+markdown_files.each do |file|
+ begin
+ YAML.load_file(file)
+ $file_count = $file_count + 1
+ rescue Exception => msg
+ puts msg
+ end
+end
+files_failed = markdown_files.length - $file_count
+if files_failed != 0
+ puts "FAILURE!!! #{files_failed} files were unable to be parsed!"
+ puts "Please check the YAML headers for the documents that failed!"
+ exit 1
+else
+ puts "All #{$file_count} files were verified valid YAML"
+ exit 0
+end