Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Алфавитный указатель

A

ad hoc, процесс, 537, 682, 685 API, 36, 101, 326, 356, 366, 474 Ariane 5, 406

assert, оператор контроля, 47, 91, 152, 191, 582, 595, 616

autoconf, 173 automake, 173

awk, программа поиска по шаблону, 169

B

Bison, 170 bug, 184

C

C

неопределенность в точности разных типов данных, 44

размещение скобок, 54 camelCase, стиль написания имен, 81 CASE%инструменты, 337

COCOMO, конструктивная модель затрат Боэма, 520

core dump (дамп памяти), 232 COW (copy%on%write), 290

Crystal Clear, ускоренный процесс разработки, 547

CVS (Concurrent Versions System – система управления версиями), 456

D

ddd, графический интерфейс для gdb, 174

diff, утилита сравнения файлов, 169 Doxygen, средство документирования,

107

E

Eiffel, 46

Emacs, редактор, 168 errno, переменная, 138

exdented, стиль размещения скобок (расширенный), 58

F

find, утилита поиска файлов, 169

G

gdb, отладчик GNU, 174, 231 GNU, стандарт кодирования, 62

grep, программа поиска по шаблону, 169

I

Indian Hill, стандарт кодирования, 62

J

Javadoc, средство документирования, 106

JUnit, система тестирования для Java, 204

Just%In%Time (JIT%компиляция), 239

L

lint, программа статической проверки ошибок кодирования, 174

locate, утилита поиска файлов, 169

M

make, программа, 245 рекурсивное применение, 258

malloc, 218

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

694m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

man%in%the%middle attack (атака человек посередине), 298

Mark II, 213

Memory Access Validator, средство проверки доступа к памяти, 231 MFC (Microsoft Foundation Classes –

библиотека базовых классов Micro% soft, 170

MISRA, стандарт кодирования, 62 Mozilla, 62, 406

N

NDoc, средство документирования (С#), 107

Netscape, 406

O

open source, 407, 462

P

PDL (Program Design Language – язык проектирования программ), 336

PERT (Program Evaluation and Review Technique – система планирования и руководства разработками), 520

pimpl, 39, 101

PRINCE (Projects in Controlled Environ% ments – проекты в контролируемых средах), модель управления проекта% ми, 520, 542

printf, оператор печати, 304 ProperCase, стиль написания имен, 81

Q

QA (контроль качества), 187

R

RAD (Rapid Application Development), среда для быстрой разработки приложений, 337, 548

RAII (Resource Acquisition Is Initializa% tion), технология, 150, 331

RCS (Revision Control System – система управления ревизиями), 456

README%файлы, 126 RFC 2119, 483

RUP, унифицированный процесс компании Rational, 548

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Алфавитный указательClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

S

SCCS (Source Code Control System – сис% тема контроля за исходным кодом), 456

SCMS (система контроля за исходным кодом), 457

sed, потоковый редактор, 165, 169 SESE, принцип «один вход – один

выход», 99, 150

setuid, атрибут (UNIX), 309

SSADM (Structured Systems Analysis and Design Methodology – методология структурного системного анализа и проектирования), 541

sscanf, функция (С), 303

strace, трассировщик системных вызовов (Linux), 232

Subversion, система контроля версий, 456

switch, оператор (переключатель), 44

U

UML (Unified Modeling Language – уни% фицированный язык моделирования), 335

UNIX, 141, 156, 161

V

VCS (система управления версиями), 457

Vim, редактор (UNIX), 168

V%модель процесса разработки ПО, 542

W

WEB, инструмент грамотного програм% мирования, 104

Y

yacc, генератор синтаксических анализаторов, 166, 170

А

абстракция, 533 аварийные ситуации, причины, 134

агрессивное программирование, 49 алгоритмическая сложность, 282 альфа% и бета%тестирование, 197 архитектор, программный, 346

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Алфавитныйm

указатель

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

архитектура системы, 319 атака человек посередине, 298 аудит безопасности, 311

Б

баги, 212 байт%коды, 242

безопасность программного обеспечения, 296

безопасные структуры данных, 40 Белбин, роли в команде, 390 белый ящик,тестирование, 198 блок%схемы, 336 Боэм, Барри, 545

В

валидаторы кода, 174 веб%приложения, 569 венгерская нотация, 80 версии С, 43

внутренний стандарт кодирования, 53 возвращаемые значения, проверка, 41 волшебные числа, 100 встраивание кода, 285

встроенное программное обеспечение, 563

Вульф, Уильям, 267 входные условия, 46 выбор имен для объектов, 75

вывод предупреждений компилятором, 40

выработка стандарта кодирования, 65 выход за границы памяти, 218 выходные условия, 46

Г

грамотное (литературное) программиро% вание, 104

Д

дамп памяти, 232 Дейкстра, 468, 531

дефекты приложений, терминология, 300

Джефферсон, Томас, 145 допущения в программировании, 31 доступ к данным, запрет, 39

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

695Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

З

зависание программы, 219 заказные приложения, 558 закон Конуэя, 326 закон Мерфи, 31

защитное программирование, 30, 36, 310

защита программного обеспечения и архитектура, 308

защищенность констант, 45

И

идиома Чеширского кота, 39 идиоматичность, 331 имена

макросов, 84 переменных, 79 типов, 82 файлов, 84 функций, 80

имена длина, 77

идиоматичность, 77 описательность, 76 стиль, 78

техническая корректность, 76 именованные константы, 100 инварианты, 46 инициализация переменных, 42 инкапсуляция, 533

инструментарий документирования, 106

инструментарий программиста, 159 интерпретируемые языки, 238 интерфейс прикладного

программирования, 326 интерфейсы, 326

и расширяемость, 329 исключительные ситуации, 138

модели функционирования, 138 оптимизация и, 281

исходный код генерирование, 170 декораторы кода, 171 средства навигации, 169 средства обработки, 169 управление версиями, 170

исчерпание памяти, 219 итеративная и инкрементная

разработка, 545

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

696m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

К

каскадная модель, 539 Керниган и Ричи, 57 клиент/сервер архитектура, 355

ключевые термины для спецификаций, 483

Кнут, Дональд, 104 когнитивный диссонанс, 492 код правильный, 30 код, формат, 98 комментарии, 102, 113

блочные, 121 в конце строки, 122 выделение, 113

иисправление ошибок, 127

исамодокументирование, 116 как флажки, 124 качество, 116 назначение, 114 объем, 115 отступы, 122

системы управления версиями, 125 старение, 127 эстетичность, 121

компилируемые языки, 241 компилятор, 171 контроль за исходным кодом, 457

контроль качества (QA), 186 контроль ошибок, 34 Конуэя закон, 326 конфликт имен, 83 коробочные продукты, 558 косвенность, 270 краткость, 38, 57, 78 крэкеры, 301

критерии качества стиля представления кода, 56

кросс%компилятор, 172, 241 кросс%сайтовый скриптинг, 304

Л

литературное (грамотное) программиро% вание, 104

лицензии на программное обеспечение, 461

логическое программирование, 535

М

Майерс%Бриггс опросник, 390

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Алфавитный указательClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

математические ошибки, 219 методы оптимизации, 279 многопоточность и оптимизация, 281 модули/компоненты, 320 модульность, 325

Н

направление проектирования, 537 наследование, 533 нисходящее и восходящее

проектирование, 333

О

объектно%ориентированное программи% рование, 333, 532

объявление переменных, 43 ограничения, 45

снятие, 47 Олмана, стиль, 58

операторы контроля, 46 опросник Майерс%Бриггс, 390 оптимизация

copy%on%write, 290 альтернативы, 272

иалгоритмы, 283

иструктуры данных, 284

итестирование, 278 программ, 267

отдел контроля качества (QA), 186 отладка, 34

и тестирование, 185 отладчики, 231 ошибки

возврат значений функцией, 136 выбор механизма сообщения

об ошибке, 151 мера близости, 136

механизмы передачи информации в код, 135

обнаружение, 141 обработка, 135, 143 обсуждение ошибок, 207

переменные, содержащие состояние ошибки, 137

примеры обрабатывающего кода, 147 сборки, 215 сегментации, 218 семантические, 217 синтаксические, 215 система контроля, 205

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Алфавитныйm

указатель

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

терминология, 184 этапа исполнения, 224

П

переносимость, 330 переполнение буфера, 303 поблочное тестирование, 493 подъем привилегий, 297 полиморфизм, 533 правильный код, 30 приведение типов, 44 признаки деградации кода, 367 проверки Фэгана, 500 прогон, 196 программирование

агрессивное, 49 грамотное (литературное), 104 защитное, 30, 36, 310 игр, 560

масштаба предприятия, 571 парами, 409, 493 системное, 561 функциональное, 534 численное, 572

программная архитектура, 343 проектирование

как поиск компромисса, 324 направление проектирования, 537 нисходящее и восходящее, 333

проектная (или техническая) спецификация, 476

прописные буквы в именах, 81 пространства имен, 83 прототипы, 543 профайлер, 276 процессы разработки, 536 псевдокод, 336

Р

развертывание циклов, 285 размещение скобок, 57 разработка, основанная на

тестировании, 189 распределенные системы, 566 расширенный стиль скобок, 58 регрессивное тестирование, 195 редактор исходного кода, 168 редактор связей, 173 резервные копии, 458 религиозные войны, 68

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

697Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ресурсы, экономия, 42 рефакторинг, 370 рецензирование кода, 490

выбор кода, 492 интеграционное, 497

роли в команде, 390

С

самодокументируемый код, 93, 95 техника, 98

сборка программ, 237 администрирование, 262 конфигурация, 258 ночная, 256 финальная, 259

сборка мусора, 42, 218 свертывание констант, 286 связность (cohesion), 325 священные войны, 53 семантические ошибки, 217 сигналы, 141 синтаксические ошибки, 215 система контроля версий, 450

система контроля ошибок, 205 системное программирование, 561 системы сборки, характеристики, 249 скобки, стиль размещения, 57

GNU, 61

K&R, 57

кода ядра Linux, 61 расширенный (стиль Олмана), 58 Уайсмита (с отступами), 60

сложность, 270 алгоритмическая, 282

соглашение о нераскрытии коммерческой тайны, 460

сопроводительная документация, 94 социальная инженерия, 298 спецификация

архитектуры, 475 интерфейса пользователя, 475 ключевые термины, 483 тестирования, 477 требований, 471

спиральная модель, 545 способы компрометации компьютерных

систем, 297 стадии процесса разработки

программного продукта, 540 стандарт кодирования

внутренний, 53

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

698m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

выработка стандарта, 65 статический анализатор кода, 40, 233 стили

кодирования, 36, 54 фирменный, 63

программирования, 530 стратегии защиты программного

обеспечения, 306 структурное программирование, 531

структурное проектирование, 333 суффиксы имен файлов, 86 сцепление (coupling), 325

Т

тестирование, 34, 184 QA и, 187 автоматизация, 203 альфа и бета, 197 блочное, 195 и этапы, 199

комплексное, 195 компонент, 195 методом белого ящика, 198

методом черного ящика, 198 обнаружение ошибки, 204 отладка и, 185 пиковыми нагрузками, 196 под нагрузкой, 196

поддержка со стороны архитектуры, 202

регрессивное, 195 факторы, увеличивающие

сложность, 192 юзабилити, 198

технологии защитного программирова% ния, 36

типы неудачных команд, 413 трассировка системных вызовов, 232 трояны, 299

У

Уайсмита стиль размещения скобок (с отступами), 60

унифицированный язык моделирования (UML), 335

управление версиями, 457 управление конфигурацией, 456 управление ошибками, 153 ускоренная разработка приложений,

547

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Алфавитный указательClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

условия входные и выходные, 46 условия гонки, 305 утечка памяти, 218 уязвимость, 300

Ф

фирменный стиль кодирования, 63 формат кода, 98 форматная строка, использование

в атаках, 304 функциональная спецификация, 474

функциональное программирование, 534

Фэгана проверки, 500

Х

хакеры, 301 хороший код, 30

Ц

целочисленное переполнение, 305 цикломатическое число, 175

Ч

черный ящик, тестирование, 198 численное программирование, 572 число цикломатическое, 175

Ш

шаблоны проектирования, 334

Э

эксплойты, 297, 300–306, 310, 313, 639 экстремальное программирование, 478 этапы разработки и тестирование, 199

Ю

юзабилити тестирование, 198

Я

языки интерпретируемые, компилируемые

и компилируемые в байт%коды, 238 языки сценариев, 241

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

По договору между издательством «Символ Плюс» и Интернет магази ном «Books.Ru – Книги России» единственный легальный способ получе ния данного файла с книгой ISBN 978 5 93286 127 1, название «Ремесло программиста. Практика написания хорошего кода» – покупка в Интер нет магазине «Books.Ru – Книги России». Если Вы получили данный файл каким либо другим образом, Вы нарушили международное законо дательство и законодательство Российской Федерации об охране автор ского права. Вам необходимо удалить данный файл, а также сообщить из дательству «Символ Плюс» (piracy@symbol.ru), где именно Вы получили данный файл.