Skip to content

Commit 08f3952

Browse files
committed
Changed tasks formatting
1 parent f74c273 commit 08f3952

File tree

1 file changed

+37
-40
lines changed

1 file changed

+37
-40
lines changed

interfaceWrapper/ru/README.md

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,70 +20,67 @@
2020
аргументов, а если функция имеет еще и callback, то нужно перехватывать и его,
2121
тоже логируя в файл момент, вызова callback. Это задание можно разбить на
2222
несколько шагов.
23-
2423
2. Удаляем из `application.js` вызов таймера и оставляем там только код:
25-
```JavaScript
26-
var fileName = './README.md';
27-
console.log('Application going to read ' + fileName);
28-
fs.readFile(fileName, function(err, src) {
29-
console.log('File ' + fileName + ' size ' + src.length);
30-
});
31-
```
24+
25+
```JavaScript
26+
var fileName = './README.md';
27+
console.log('Application going to read ' + fileName);
28+
fs.readFile(fileName, function(err, src) {
29+
console.log('File ' + fileName + ' size ' + src.length);
30+
});
31+
```
3232
Это пример работы с файлом. И мы будем изменять поведение этого кода.
3333
Убираем из `framework.js` обертку таймера и пробрасываем `fs` в приложение.
3434
Теперь запускаем `node framework` и убеждаемся, что файл считывается и
3535
выводится его длина.
36-
3736
3. Теперь пишем функцию `cloneInterface(interfaceName)` для копирования всех
3837
ключей из библиотеки `fs` в новый интерфейс и передаем в песочницу не исходный
3938
`fs`, а склонированный. Пример функции клонирования:
40-
```JavaScript
41-
function cloneInterface(anInterface) {
42-
var clone = {};
43-
for (var key in anInterface) {
44-
clone[key] = anInterface[key];
45-
}
46-
return clone;
47-
}
48-
```
4939

40+
```JavaScript
41+
function cloneInterface(anInterface) {
42+
var clone = {};
43+
for (var key in anInterface) {
44+
clone[key] = anInterface[key];
45+
}
46+
return clone;
47+
}
48+
```
5049
4. Пишем функцию `wrapFunction(fnName, fn)` которая оборачивает функцию `fn` и
5150
возвращает функцию-замыкание от `wrapper`. Замыкание, это ссылка на копию
5251
функции `wrapper`, которая замкнута на контекст `wrapFunction`. Таким образом
5352
мы применяем функциональное наследование и порождаем такой вариант `wrapper`,
5453
который видит параметры `fnName` и 'fn' от `wrapFunction`. Мы полностью
55-
передаем все аргументы в функцию fn.
56-
```JavaScript
57-
function wrapFunction(fnName, fn) {
58-
return function wrapper() {
59-
var args = [];
60-
Array.prototype.push.apply(args, arguments);
61-
console.log('Call: ' + fnName);
62-
console.dir(args);
63-
fn.apply(undefined, args);
64-
}
65-
}
66-
```
54+
передаем все аргументы в функцию fn:
6755

56+
```JavaScript
57+
function wrapFunction(fnName, fn) {
58+
return function wrapper() {
59+
var args = [];
60+
Array.prototype.push.apply(args, arguments);
61+
console.log('Call: ' + fnName);
62+
console.dir(args);
63+
fn.apply(undefined, args);
64+
}
65+
}
66+
```
6867
5. Определяем, есть ли среди аргументов `callback`, он всегда последний в
6968
массиве аргументов и его тип `function`. Если `callback` есть, то вместо него
7069
передаем свою функцию, которая логирует все аргументы и вызывает настояций
7170
`callback`.
72-
7371
6. Теперь можно из `application.js` использовать другие функции `fs` и
7472
убедиться, что все они обернуты.
75-
7673
7. Добавляем таймеры в `application.js` и на таймерах работаем с файлами, а из
7774
`framework.js` собираем статистику работы с файлами и выводим ее каждые 30
7875
секунд. Например, можно соирать несколько из этих параметров
79-
- количество обращений к функциям,
80-
- количество колбэков,
81-
- среднюю скорость завершения функций,
82-
- среднюю скорость возвращения колбеков,
83-
- общий объем прочитанных с диска данных,
84-
- общий объем записанных данных,
85-
- среднюю скорость чтения и записи,
86-
и т.д.
76+
- количество обращений к функциям,
77+
- количество колбэков,
78+
- среднюю скорость завершения функций,
79+
- среднюю скорость возвращения колбеков,
80+
- общий объем прочитанных с диска данных,
81+
- общий объем записанных данных,
82+
- среднюю скорость чтения и записи,
83+
и т.д.
8784

8885
Сохраните наработки этой лабораторной работы, они понадобятся для выполнения
8986
следующих работ, в частности, работы по передаче вызовов в другой процесс и

0 commit comments

Comments
 (0)