Google Wave: Одновременное совместное редактирование | Participants
|
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translation complete.
If you do not want to register an account, you can sign in with OpenID.
Google Wave | Google Wave | |
0:00:05,634 (3.5s)
Wang: Hi. My name's David.
I'm from the Google Wave team.
| ||
0:00:09,200 (2.0s)
I work on
the Live Concurrent Editing
| Я работаю над одновременным совместным редактированием, | |
0:00:11,234 (2.2s)
that you've probably seen
in the last demo.
| ||
0:00:13,434 (2.6s)
So how do we actually do it?
| ||
0:00:16,133 (1.5s)
So the way we do it
| ||
0:00:17,667 (3.1s)
is use a technology called
operational transformation.
| используя технологию, называемую операционное преобразование. | Comment was deleted |
0:00:20,801 (3.3s)
It's been a very active
academic research area
| ||
0:00:24,167 (2.5s)
for quite a while now,
about ten years.
| ||
0:00:26,734 (2.8s)
And we've actually taken
that algorithm
| ||
0:00:29,534 (4.1s)
and extended it to provide you
the live concurrent editing
| и расширили его, чтобы предоставить вам одновременное совместное редактирование, | |
0:00:33,667 (1.8s)
that you're so used to now.
| ||
0:00:35,467 (1.4s)
How does this all work?
| ||
0:00:36,934 (1.9s)
So let me show you
with an example.
| ||
0:00:38,901 (3.5s)
So imagine we had a client...
| ||
0:00:42,467 (3.7s)
and we had a server...
| ||
0:00:46,234 (3.3s)
and it all started
with the same state--
| ||
0:00:49,567 (2.3s)
A, B, C and D.
| ||
0:00:54,567 (3.4s)
Now, imagine the client
wanted to insert some character
| Теперь представьте, что клиент хочет вставить букву | |
0:00:57,968 (2.4s)
between C and D.
| ||
0:01:00,467 (4.9s)
So he now inserts, let's say, X
between the character C and D.
| И вот он вставляет, скажем, X между символами C и D. | |
0:01:05,434 (3.0s)
And the server actually wanted
to delete the character B.
| ||
0:01:08,534 (3.7s)
So now he ends up
with the state A, C, and D.
| ||
0:01:12,267 (2.2s)
Now, these happen concurrently.
| ||
0:01:14,534 (2.0s)
So how do they communicate
| ||
0:01:16,634 (3.2s)
that they've done these things
on both sides?
| Comment was deleted — "Как же они сообщают, что они сделали это с обеих сторон?" или "Как же они сообщают друг другу о своих действиях?" — vadbars | |
0:01:19,901 (2.3s)
So what they do
is they send the action,
| ||
0:01:22,300 (2.1s)
which we call operation
on the wire.
| ||
0:01:24,434 (8.0s)
So the client sends an insert X
at position 0, 1, 2, and 3.
| Так, клиент посылает вставку X в позиции 0,1,2 и 3. | Comment was deleted — (отсчитывает позиции вслух) — qmax |
0:01:32,467 (3.1s)
And the server
sends the operation
| ||
0:01:35,601 (5.5s)
delete character B
at position 0 and 1.
| ||
0:01:41,200 (4.1s)
So now when the other side
gets the message,
| ||
0:01:45,367 (3.0s)
they could choose to blindly
execute it if they wanted to.
| они могли бы слепо это выполнить, если бы захотели. | |
0:01:48,400 (1.4s)
But what would happen
| ||
0:01:49,834 (2.1s)
if you actually blindly execute
an operation?
| — просто выполнить — vadbars | |
0:01:51,934 (4.0s)
So if the server executed
the operation from a client,
| ||
0:01:55,934 (2.3s)
insert the X blindly,
| ||
0:01:58,234 (2.5s)
you'd end up with the state
A, C, D, and X.
| ||
0:02:00,801 (3.0s)
But that's clearly not what
the client wants to do.
| ||
0:02:03,801 (1.4s)
So what we have to do
| — "нужно сделать". Здесь не про результат, которого хотел клиент из предыдущей строки, а наши действия — vadbars | |
0:02:05,300 (3.2s)
is go through a process
called transformation.
| ||
0:02:08,501 (1.5s)
So what happens
is that the server
| ||
0:02:10,033 (2.1s)
takes the client operation
| ||
0:02:12,200 (3.3s)
and transforms against
its un-operation,
| — опечатка "own operation" — qmax | |
0:02:15,567 (2.2s)
and it results in
a new operation
| ||
0:02:17,801 (3.5s)
where he inserts calc X,
now position 2
| ||
0:02:21,400 (2.1s)
because he has to subtract
a position
| — "вычел"? Отнял звучит как-то насильственно. :) — vadbars | |
0:02:23,534 (1.9s)
for its undeleted character.
| ||
0:02:25,501 (2.1s)
And now the server
applies the operation,
| ||
0:02:27,667 (4.7s)
and you end up with the state
A, C, X, and D.
| ||
0:02:32,400 (1.7s)
The client, on the other hand,
| ||
0:02:34,133 (2.3s)
does the exact same
transformation.
| ||
0:02:36,467 (2.1s)
However, in this case,
it just happens
|
© Google.

— "наверное", "вероятно"? будет короче — vadbars