8000 I hate jekyll · kenbot/scala.github.com@4bfc706 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4bfc706

Browse files
committed
I hate jekyll
1 parent c1f95d8 commit 4bfc706

File tree

6 files changed

+42
-48
lines changed

6 files changed

+42
-48
lines changed

es/overviews/core/actors.md

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ El comportamiento de un `Reactor` se define mediante la implementación de su m
2525

2626
El trait `Reactor` tiene un parámetro de tipo `Msg` el cual determina el tipo de mensajes que un actor es capaz de recibir.
2727

28-
La invocación del método `!` de un `Reactor` envía un mensaje al receptor. La operación de envío de un mensaje mediante el operador `!` es asíncrona por lo que el actor que envía el mensaje no se bloquea esperando a que el mensaje sea recibido sino que su ejecución continua de manera inmediata. Por ejemplo, `a ! msg` envia `msg` a `a`. Todos los actores disponen de un *buzón* encargado de regular los mensajes entrantes hasta que son procesados.
28+
La invocación del método `!` de un `Reactor` envía un mensaje al receptor. La operación de envío de un mensaje mediante el operador `!` es asíncrona por lo que el actor que envía el mensaje no se bloquea esperando a que el mensaje sea recibido sino que su ejecución continua de manera inmediata. Por ejemplo, `a ! msg` envia `msg` a `a`. Todos los actores disponen de un *buzón* encargado de regular los mensajes entrantes hasta que son procesados.
2929

3030
El trait `Reactor` trait también define el método `forward`. Este método es heredado de `OutputChannel` y tiene el mismo efecto que el método `!`. Aquellos traits que hereden de `Reactor`, en particular el trait `ReplyActor`, sobreescriben este método para habilitar lo que comunmente se conocen como *"implicit reply destinations"* (ver a continuación)
3131

@@ -63,7 +63,7 @@ El miembro `exceptionHandler` permite llevar a cabo la definición de un manejad
6363
Este manejador de excepciones (`exceptionHandler`) retorna una función parcial que se utiliza para gestionar excepciones que no hayan sido tratadas de ninguna otra manera. Siempre que una excepción se propague fuera del método `act` de un `Reactor` el manejador anterior será aplicado a dicha excepción, permitiendo al actor ejecutar código de limpieza antes de que se termine. Nótese que la visibilidad de `exceptionHandler` es `protected`.
6464

6565
El manejo de excepciones mediante el uso de `exceptionHandler` encaja a la perfección con las estructuras de control utilizadas para programas con el método `react`. Siempre que una excepción es manejada por la función parcial retornada por `excepctionHandler`, la ejecución continua con la "closure" actual:
66-
66+
6767
loop {
6868
react {
6969
case Msg(data) =>
@@ -78,14 +78,14 @@ Assumiendo que `Reactor` sobreescribe el atributo `exceptionHandler`, tras el la
7878

7979
El trait `ReplyReactor` extiende `Reactor[Any]` y sobrescribe y/o añade los siguientes métodos:
8080

81-
- El método `!` es sobrescrito para obtener una referencia al actor
82-
actual (el emisor). Junto al mensaje actual, la referencia a dicho
83-
emisor es enviada al buzón del actor receptor. Este último dispone de
81+
- El método `!` es sobrescrito para obtener una referencia al actor
82+
actual (el emisor). Junto al mensaje actual, la referencia a dicho
83+
emisor es enviada al buzón del actor receptor. Este último dispone de
8484
acceso al emisor del mensaje mediante el uso del método `sender` (véase más abajo).
8585

8686
- El método `forward` es sobrescrito para obtener una referencia al emisor
8787
del mensaje que actualmente está siendo procesado. Junto con el mensaje
88-
actual, esta referencia es enviada como el emisor del mensaje actual.
88+
actual, esta referencia es enviada como el emisor del mensaje actual.
8989
Como consuencia de este hecho, `forward` nos permite reenviar mensajes
9090
en nombre de actores diferentes al actual.
9191

@@ -112,15 +112,15 @@ El trait `ReplyReactor` extiende `Reactor[Any]` y sobrescribe y/o añade los sig
112112
`Future`. Esta última puede ser utilizada para recuperar la respuesta del receptor una
113113
vez se encuentre disponible; asimismo puede ser utilizada para comprobar si la respuesta
114114
está disponible sin la necesidad de bloquear el emisor. Existen dos versiones sobrecargadas.
115-
La versión que acepta dos parámetros recibe un argumento adicional de tipo
115+
La versión que acepta dos parámetros recibe un argumento adicional de tipo
116116
`PartialFuntion[Any, A]`. Esta función parcial es utilizada para realizar el post-procesado de
117117
la respuesta del receptor. Básicamente, `!!` retorna un "future" que aplicará la anterior
118118
función parcial a la repuesta (una vez recibida). El resultado del "future" es el resultado
119119
de este post-procesado.
120120

121121
- El método (añadido) `reactWithin` permite llevar a cabo la recepción de mensajes en un periodo
122122
determinado de tiempo. En comparación con el método `react`, recibe un parámetro adicional,
123-
`msec`, el cual representa el periodo de tiempo, expresado en milisegundos, hasta que el patrón `TIMEOUT`
123+
`msec`, el cual representa el periodo de tiempo, expresado en milisegundos, hasta que el patrón `TIMEOUT`
124124
es satisfecho (`TIMEOUT` es un "case object" presente en el paquete `scala.actors`). Ejemplo:
125125

126126
reactWithin(2000) {
@@ -155,14 +155,11 @@ El trait `Actor` extiende de `ReplyReactor` añadiendo y/o sobrescribiendo los s
155155

156156
- El método (añadido) `receive` se comporta del mismo modo que `react`, con la excepción
157157
de que puede retornar un resultado. Este hecho se ve reflejado en la definición del tipo,
158-
que es polimórfico en el tipo del resultado:
159-
160-
def receive[R](f: PartialFunction[Any, R]): R
161-
158+
que es polimórfico en el tipo del resultado: `def receive[R](f: PartialFunction[Any, R]): R`.
162159
Sin embargo, la utilización de `receive` hace que el uso del actor
163160
sea más pesado, puesto que el hilo subyacente es bloqueado mientras
164161
el actor está esperando por la respuesta. El hilo bloqueado no está
165-
disponible para ejecutar otros actores hasta que la invocación del
162+
disponible para ejecutar otros actores hasta que la invocación del
166163
método `receive` haya retornado.
167164

168165
- El método (añadido) `link` permite a un actor enlazarse y desenlazarse de otro
@@ -181,7 +178,7 @@ El trait `Actor` extiende de `ReplyReactor` añadiendo y/o sobrescribiendo los s
181178

182179
#### Terminación y estados de ejecución
183180

184-
Cuando la ejecución de un actor finaliza, el motivo de dicha terminación puede ser
181+
Cuando la ejecución de un actor finaliza, el motivo de dicha terminación puede ser
185182
establecida de manera explícita mediante la invocación de la siguiente variante
186183
del método `exit`:
187184

@@ -202,11 +199,11 @@ mensaje mediante la utilización del método `receiveWithin` se encuentra en el
202199

203200
El trait `Reactor` define una serie de estructuras de control que simplifican el mecanismo
204201
de programación con la función sin retorno `react`. Normalmente, una invocación al método
205-
`react` no retorna nunca. Si el actor necesita ejecutar código a continuación de la invocación
202+
`react` no retorna nunca. Si el actor necesita ejecutar código a continuación de la invocación
206203
anterior, tendrá que pasar, de manera explícita, dicho código al método `react` o utilizar
207204
algunas de las estructuras que encapsulan este comportamiento.
208205

209-
La estructura de control más basica es `andThen`. Permite registrar una `closure` que será
206+
La estructura de control más basica es `andThen`. Permite registrar una `closure` que será
210207
ejecutada una vez el actor haya terminado la ejecución de todo lo demas.
211208

212209
actor {
@@ -224,10 +221,10 @@ del mensaje `hello`. Aunque la invocación del método `react` no retorna,
224221
podemos utilizar `andThen` para registrar el código encargado de imprimir
225222
el saludo a continuación de la ejecución del actor.
226223

227-
Nótese que existe una *atribución de tipo* a continuación de la invocación
224+
Nótese que existe una *atribución de tipo* a continuación de la invocación
228225
de `react` (`:Unit`). Básicamente, nos permite tratar el resultado de
229226
`react` como si fuese de tipo `Unit`, lo cual es legal, puesto que el resultado
230-
de una expresión siempre se puede eliminar. Es necesario llevar a cabo esta operación
227+
de una expresión siempre se puede eliminar. Es necesario llevar a cabo esta operación
231228
dado que `andThen` no puede ser un miembro del tipo `Unit`, que es el tipo del resultado
232229
retornado por `react`. Tratando el tipo de resultado retornado por `react` como
233230
`Unit` permite llevar a cabo la aplicación de una conversión implícita la cual
@@ -245,7 +242,7 @@ la ejecución continua con la siguiente iteración del bucle actual.
245242
condición `c` tome el valor `true`. La invocación de `react` en el cuerpo
246243
del bucle ocasiona el mismo efecto que en el caso de `loop`.
247244

248-
- `continue`. Continua con la ejecución de la closure actual. La invocación
245+
- `continue`. Continua con la ejecución de la closure actual. La invocación
249246
de `continue` en el cuerpo de un `loop`o `loopWhile` ocasionará que el actor
250247
termine la iteración en curso y continue con la siguiente. Si la iteración en
251248
curso ha sido registrada utilizando `andThen`, la ejecución continua con la
@@ -254,7 +251,7 @@ segunda "closure" pasada como segundo argumento a `andThen`.
254251
Las estructuras de control pueden ser utilizadas en cualquier parte del cuerpo
255252
del método `act` y en los cuerpos de los métodos que, transitivamente, son
256253
llamados por `act`. Aquellos actores creados utilizando la sintáxis `actor { ... }`
257-
pueden importar las estructuras de control desde el objeto `Actor`.
254+
pueden importar las estructuras de control desde el objeto `Actor`.
258255

259256
#### Futures
260257

@@ -268,7 +265,7 @@ future *aplicando* dicha future. Por ejemplo, el envío de un mensaje mediante
268265
`val fut = a !! msg` permite al emisor esperar por el resultado del future
269266
del siguiente modo: `val res = fut()`.
270267< 10000 /code>

271-
Adicionalmente, utilizando el método `isSet`, un `Future` puede ser consultado
268+
Adicionalmente, utilizando el método `isSet`, un `Future` puede ser consultado
272269
de manera no bloqueante para comprobar si el resultado está disponible.
273270

274271
Un mensaje "send-with-future" no es el único modo de obtener una referencia a
@@ -286,7 +283,7 @@ recepción de mensajes como `receive`, etc. Además, es posible utilizar las ope
286283
basadas en eventos `react`y `reactWithin`. Esto permite a un actor esperar por el
287284
resultado de un future sin la necesidad de bloquear el hilo subyacente.
288285

289-
Las operaciones de recepción basadas en actores están disponibles a través del
286+
Las operaciones de recepción basadas en actores están disponibles a través del
290287
atributo `inputChannel` del future. Dado un future de tipo `Future[T]`, el tipo
291288
de `inputChannel` es `InputChannel[T]`. Por ejemplo:
292289

@@ -305,28 +302,28 @@ jerarquía de canales se divide en `OutputChannel` e `InputChannel`.
305302
Los `OutputChannel` pueden ser utilizados para enviar mensajes. Un
306303
`OutputChannel` `out` soporta las siguientes operaciones:
307304

308-
- `out ! msg`. Envía el mensaje `msg` a `out` de manera asíncrona. Cuando `msg`
309-
es enviado directamente a un actor se incluye un referencia al actor emisor
305+
- `out ! msg`. Envía el mensaje `msg` a `out` de manera asíncrona. Cuando `msg`
306+
es enviado directamente a un actor se incluye un referencia al actor emisor
310307
del mensaje.
311308

312-
- `out forward msg`. Reenvía el mensaje `msg` a `out` de manera asíncrona.
309+
- `out forward msg`. Reenvía el mensaje `msg` a `out` de manera asíncrona.
313310
El actor emisor se determina en el caso en el que `msg` es reenviado a
314311
un actor.
315312

316313
- `out.receiver`. Retorna el único actor que está recibiendo mensajes que están
317314
siendo enviados al canal `out`.
318315

319-
- `out.send(msg, from)`. Envía el mensaje `msg` a `out` de manera asíncrona,
316+
- `out.send(msg, from)`. Envía el mensaje `msg` a `out` de manera asíncrona,
320317
proporcionando a `from` como el emisor del mensaje.
321318

322319
Nótese que el trait `OutputChannel` tiene un parámetro de tipo que especifica el
323-
tipo de los mensajes que pueden ser enviados al canal (utilizando `!`, `forward`,
320+
tipo de los mensajes que pueden ser enviados al canal (utilizando `!`, `forward`,
324321
y `send`). Este parámetro de tipo es contra-variante:
325322

326323
trait OutputChannel[-Msg]
327324

328325
Los actores pueden recibir mensajes de un `InputChannel`. Del mismo modo que
329-
`OutputChannel`, el trait `InputChannel` presenta un parámetro de tipo que
326+
`OutputChannel`, el trait `InputChannel` presenta un parámetro de tipo que
330327
especifica el tipo de mensajes que pueden ser recibidos por el canal. En este caso,
331328
el parámetro de tipo es covariante:
332329

@@ -376,7 +373,7 @@ El siguiente ejemplo muestra la compartición mediante publicación en ámbitos:
376373
La ejecución de este ejemplo imprime la cadena "5" en la consola. Nótese que el
377374
actor `child` únicamente tiene acceso a `out`, que es un `OutputChannel[String]`.
378375
La referencia al canal, la cual puede ser utilizada para llevar a cabo la recepción
379-
de mensajes, se encuentra oculta. Sin embargo, se deben tomar precauciones y
376+
de mensajes, se encuentra oculta. Sin embargo, se deben tomar precauciones y
380377
asegurarse que el canal de salida es inicializado con un canal concreto antes de que
381378
`child` le envíe ningún mensaje. En el ejemplo que nos ocupa, esto es llevado a cabo
382379
mediante el mensaje "go". Cuando se está recibiendo de `channel` utilizando el método
@@ -403,14 +400,14 @@ El siguiente fragmento de código muestra un sencillo ejemplo de aplicación:
403400
}
404401

405402
La "case class" `ReplyTo` es un tipo de mensajes que utilizamos para distribuir
406-
una referencia a un `OutputChannel[String]`. Cuando el actor `child` recibe un
403+
una referencia a un `OutputChannel[String]`. Cuando el actor `child` recibe un
407404
mensaje de tipo `ReplyTo` éste envía una cadena a su canal de salida. El segundo
408405
actor recibe en el canal del mismo modo que anteriormente.
409406

410407
## Planificadores
411408

412409
Un `Reactor`(o una instancia de uno de sus subtipos) es ejecutado utilizando un
413-
*planificador*. El trait `Reactor` incluye el miembro `scheduler` el cual retorna el
410+
*planificador*. El trait `Reactor` incluye el miembro `scheduler` el cual retorna el
414411
planificador utilizado para ejecutar sus instancias:
415412

416413
def scheduler: IScheduler
@@ -424,8 +421,8 @@ en muchas ocasiones.
424421
Los planificadores por defecto utilizados para ejecutar instancias de `Reactor` y
425422
`Actor` detectan cuando los actores han finalizado su ejecución. En el momento que esto
426423
ocurre, el planificador se termina a si mismo (terminando con cualquier hilo que estuviera
427-
en uso por parte del planificador). Sin embargo, algunos planificadores como el
428-
`SingleThreadedScheduler` (definido en el paquete `scheduler`) necesita ser terminado de
424+
en uso por parte del planificador). Sin embargo, algunos planificadores como el
425+
`SingleThreadedScheduler` (definido en el paquete `scheduler`) necesita ser terminado de
429426
manera explícita mediante la invocación de su método `shutdown`).
430427

431428
La manera más sencilla de crear un planificador personalizado consisten en extender la clase
@@ -438,7 +435,7 @@ la ejecución del argumento por nombre `fun`.
438435

439436
## Actores remotos
440437

441-
Esta sección describe el API de los actores remotos. Su principal interfaz es el objecto
438+
Esta sección describe el API de los actores remotos. Su principal interfaz es el objecto
442439
[`RemoteActor`](http://www.scala-lang.org/api/2.9.1/scala/actors/remote/RemoteActor$.html) definido
443440
en el paquete `scala.actors.remote`. Este objeto facilita el conjunto de métodos necesarios para crear
444441
y establecer conexiones a instancias de actores remotos. En los fragmentos de código que se muestran a
@@ -452,7 +449,7 @@ de importaciones utilizadas es la siguiente:
452449

453450
### Iniciando actores remotos
454451

455-
Un actore remot es identificado de manera unívoca por un
452+
Un actore remot es identificado de manera unívoca por un
456453
[`Symbol`](http://www.scala-lang.org/api/2.9.1/scala/Symbol.html). Este símbolo es único para la instancia
457454
de la máquina virual en la que se está ejecutando un actor. Un actor remoto identificado con el nombre
458455
`myActor` puede ser creado del siguiente modo.
@@ -473,7 +470,7 @@ no sería suficiente.
473470

474471
### Connecting to remote actors
475472

476-
Establecer la conexión con un actor remoto es un proceso simple. Para obtener una referencia remota
473+
Establecer la conexión con un actor remoto es un proceso simple. Para obtener una referencia remota
477474
a un actor remoto que está ejecutándose en la máquina `myMachine` en el puerto 8000 con el nombre
478475
`'anActor`, tendremos que utilizar `select`del siguiente modo:
479476

ja/overviews/collections/seqs.md renamed to ja/overviews/collections/seqs.md.disabled

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Scala の他の構文の例にならって、`seq(idx) = elem` は `seq.update(i
6969
| **集合演算:** | |
7070
| `xs intersect ys` |列 `xs` と `ys` の積集合で、`xs` における要素の順序を保ったもの。|
7171
| `xs diff ys` |列 `xs` と `ys` の差集合で、`xs` における要素の順序を保ったもの。|
72-
| `xs union ys` |和集合; `xs ++ ys` に同じ|
72+
| `xs union ys` |和集合; `xs ++ ys` に同じ|
7373
| `xs.distinct` |`xs` の部分列で要素の重複を一切含まないもの。 |
7474

7575
[`Seq`](http://www.scala-lang.org/api/{{ site.scala-version }}/scala/collection/Seq.html) トレイトには [`LinearSeq`](http://www.scala-lang.org/api/{{ site.scala-version }}/scala/collection/IndexedSeq.html) と [`IndexedSeq`](http://www.scala-lang.org/api/{{ site.scala-version }}/scala/collection/IndexedSeq.html)

ja/overviews/collections/sets.md renamed to ja/overviews/collections/sets.md.disabled

Lines changed: 4 additions & 4 deletions
< 10000 td data-grid-cell-id="diff-c668beb0fb3b22a137d080ac761bd3373ca36c339d9300cd5677b5d9b7736e5b-19-19-0" data-selected="false" role="gridcell" style="background-color:var(--bgColor-default);text-align:center" tabindex="-1" valign="top" class="focusable-grid-cell diff-line-number position-relative diff-line-number-neutral left-side">19
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ language: ja
1717

1818

19
val fruit = Set("apple", "orange", "peach", "banana")
20-
fruit: scala.collection.immutable.Set[java.lang.String] =
20+
fruit: scala.collection.immutable.Set[java.lang.String] =
2121
Set(apple, orange, peach, banana)
2222
scala> fruit("peach")
2323
res0: Boolean = true
@@ -48,11 +48,11 @@ language: ja
4848
| `xs.empty` |`xs` と同じクラスの空集合。|
4949
| **集合演算:** | |
5050
| `xs & ys` |`xs` と `ys` の積集合。|
51-
| `xs intersect ys` |`xs & ys` に同じ|
51+
| `xs intersect ys` |`xs & ys` に同じ|
5252
| `xs | ys` |`xs` と `ys` の和集合。|
53-
| `xs union ys` |`xs | ys` に同じ|
53+
| `xs union ys` |`xs | ys` に同じ|
5454
| `xs &~ ys` |`xs` と `ys` の差集合。|
55-
| `xs diff ys` |`xs &~ ys` に同じ|
55+
| `xs diff ys` |`xs &~ ys` に同じ|
5656

5757
可変集合は、この表にまとめてあるとおり、加算、減算、更新演算などの新たなメソッドを追加する。
5858

news/_posts/2012-12-12-functional-programming-principles-in-scala-impressions-and-statistics.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ The collected numbers are markedly different. In no small part this is due to th
8585
We'd like to close with some fun, and partially surprising, information on the demographics of those who took the course and completed our survey. Here is a world map showing the number of participants per country&mdash; darker colors indicate a larger number of students per-country:
8686

8787
<div style="text-align: center;"><h6>Absolute Number of Participants Per Country</h6><div id="map-population" style="width: 700px; height: 350px;">&nbsp;</div></div>
88-
<p>&nbsp;</p><p>&nbsp;</p>
88+
&nbsp;<p>&nbsp;</p><p>&nbsp;</p>
8989

9090
Here's that graph again, relating that population of students who enrolled in the course with the population of the respective country:
9191

9292
<div style="text-align: center;"><h6>Number of Participants Per Country Relative to Countries' Population</h6><div id="map-density" style="width: 700px; height: 350px;">&nbsp;</div></div>
93-
<p>&nbsp;</p><p>&nbsp;</p>
93+
&nbsp;<p>&nbsp;</p><p>&nbsp;</p>
9494

9595
## Get the data and explore it with Scala!
9696

overviews/core/_posts/2010-11-30-actors.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,7 @@ The `Actor` trait extends `ReplyReactor` and adds or overrides the following mem
160160

161161
- The added `receive` method behaves like `react` except that it may
162162
return a result. This is reflected in its type, which is polymorphic
163-
in its result:
164-
165-
def receive[R](f: PartialFunction[Any, R]): R
166-
163+
in its result: `def receive[R](f: PartialFunction[Any, R]): R`.
167164
However, using `receive` makes the actor more heavyweight, since
168165
`receive` blocks the underlying thread while the actor is suspended
169166
waiting for a message. The blocked thread is unavailable to execute

0 commit comments

Comments
 (0)
0