Мировой компьютерный бестселлер - Краудер Ти Джей - Новые возможности JavaScript: как написать чистый код по всем правилам современного языка [2023, PDF, RUS]

Страницы:  1
Ответить
 

tsurijin

Стаж: 3 года 7 месяцев

Сообщений: 1728


tsurijin · 22-Окт-23 17:10 (7 месяцев назад, ред. 24-Окт-23 12:31)

Новые возможности JavaScript: как написать чистый код по всем правилам современного языка
Год издания: 2023
Автор: Краудер Ти Джей
Переводчик: Райтман М. А.
Издательство: Бомбора / Эксмо
ISBN: 978-5-04-159515-9
Серия: Мировой компьютерный бестселлер
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Количество страниц: 634
Описание: Перед вами сборник правил написания кода на современном
языке JavaScript. На наглядных примерах автор объясняет, как работают
последние версии JS, какие приемы в нем можно использовать, чтобы сделать
код коротким и чистым, а каких ошибок лучше избегать, чтобы не было багов.
Внимание! Торрент перезалит. Просьба перекачать раздачу.
Причина: Замена на PDF с закладками.
Примеры страниц
Оглавление
ОБ АВТОРЕ 20
О ТЕХНИЧЕСКОМ РЕДАКТОРЕ 21
О ТЕХНИЧЕСКОМ КОРРЕКТОРЕ 21
БЛАГОДАРНОСТИ 22
ВВЕДЕНИЕ 23
О чем эта книга? 23
Кому стоит читать эту книгу 25
Как пользоваться этой книгой 25
ГЛАВА 1. НОВЫЕ ВОЗМОЖНОСТИ В ES2015ES2020 И ДАЛЕЕ 27
Определения, что есть что и терминология 28
Что такое Ecma? ECMAScript? TC39? 28
Что такое ES6? ES7? ES2015? ES2020? 28
«Движки» JavaScript, браузеры и др. 29
Что за «новые возможности»? 30
Как создаются новые возможности? 32
Кто здесь главный 32
Процесс 33
Вовлечение в процесс 35
Следите за новыми возможностями 36
Использование текущих функций во вчерашних условиях
и разрабатываемых возможностей сегодня 37
Транспилирование примера с помощью Babel 38
Обзор главы 42
ГЛАВА 2. ОБЪЯВЛЕНИЯ БЛОЧНОЙ ОБЛАСТИ ВИДИМОСТИ
ДЛЯ LET И CONST 45
Введение в let и const 46
Истинная блочная область видимости 46
Повторные объявления — это ошибка 47
Поднятие и временная мертвая зона 48
Новый вид глобальных переменных 51
Const: Константы в JavaScript 53
Основы const 53
Объекты, на которые ссылается const, по-прежнему изменяемы 54
Блочная область видимости в циклах 55
Проблема «замыканий в циклах» 56
Привязки: Как работают переменные, константы и другие идентификаторы 57
Циклы while и do-while 62
Последствия для производительности 63
Константа в блоках цикла 64
Константа в циклах for-in 65
От старых привычек к новым 66
Используйте const или let вместо var 66
Сохраняйте узкую область видимости переменных 66
Используйте блочную область видимости вместо встроенных
анонимных функций 66
ГЛАВА 3. ФУНКЦИИ 69
Стрелочные функции и лексические this, super и т. д. 70
Синтаксис стрелочной функции 70
Стрелочные функции и лексические this 75
Стрелочные функции не могут быть конструкторами 75
Значения параметров по умолчанию 76
Значения по умолчанию — это выражения 78
Значения по умолчанию вычисляются в их собственной области видимости 79
Значения по умолчанию не увеличивают арность функции 81
Остаточные параметры 81
Висящие запятые в списках параметров и вызовах функций 83
Свой ство имени функции 85
Объявления функций внутри блоков 86
Объявления функций внутри блоков: Стандартная семантика 88
Объявления функций внутри блоков: Устаревшая веб-семантика 90
От старых привычек к новым 92
Используйте стрелочные функции вместо различных обходных путей
для этого значения 92
Используйте стрелочные функции для обратных вызовов, если
не используете аргументы или this 93
Рассмотрите применение стрелочных функций и в других местах 93
Не используйте стрелочные функции, когда вызывающей стороне необходимо
контролировать значение this 94
Используйте значения параметров по умолчанию, а не код, предоставляющий
значения по умолчанию 95
Используйте остаточный параметр вместо ключевого слова arguments 95
Рассмотрите возможность использования висящих запятых, если это оправдано 95
ГЛАВА 4. КЛАССЫ 97
Что такое класс? 98
Представление нового синтаксиса класса 98
Добавление конструктора 100
Добавление свой ств экземпляра 102
Добавление метода прототипа 102
Добавление статического метода 104
Добавление свой ства- акцессора 105
Вычисляемые имена методов 107
Сравнение с устаревшим синтаксисом 107
Создание подклассов 110
Ключевое слово super 113
Написание конструкторов подклассов 114
Наследование свой ств и методов прототипа суперкласса и доступ к ним 115
Наследование статических методов 119
Ключевое слово super в статических методах 120
Методы, возвращающие новые экземпляры 121
Создание подклассов для встроенных компонентов 126
Где доступен super 127
Отказ от Object.prototype 131
Синтаксис new.target 131
Объявления классов в сравнении с выражениями классов 135
Объявления классов 135
Выражения классов 136
Еще не все 137
От старых привычек к новым 137
Использование класса при создании функций конструктора 137
ГЛАВА 5. ОБЪЕКТЫ 139
Вычисляемые имена свой ств 139
Стенография свой ств 140
Получение и настройка прототипа объекта 141
Метод Object.setPrototypeOf 141
Свой ство __proto__ в браузерах 142
Буквальное указание имени свой ства __proto__ в браузерах 143
Синтаксис метода и применение super вне классов 143
Тип данных Symbol 146
Почему же символы? 147
Создание и использование символов 148
Символы не для конфиденциальности 149
Глобальные символы 150
Хорошо известные символы 154
Новые функции объектов 155
Метод Object.assign 155
Метод Object.is 156
Метод Object.values 157
Метод Object.entries 157
Метод Object.fromEntries 158
Функция Object.getOwnPropertySymbols 158
Метод Object.getOwnPropertyDescriptors 158
Метод Symbol.toPrimitive 159
Порядок свой ств 161
Синтаксис расширения свой ств 163
От старых привычек к новым 164
Использовать вычисляемый синтаксис при создании свой ств
с динамическими именами 164
Используйте сокращенный синтаксис при инициализации свой ства
из переменной с тем же именем 165
Используйте метод Object.assign вместо пользовательских функций
«extend» или явного копирования всех свой ств 165
Используйте синтаксис расширения при создании нового объекта
на основе свой ств существующего объекта 165
Используйте символ, чтобы избежать коллизии имен 165
Используйте методы Object.getPrototypeOf/setPrototypeOf
вместо свой ства __proto__ 166
Используйте синтаксис метода для методов 166
ГЛАВА 6. ВОЗМОЖНОСТИ ИТЕРАЦИИ: ИТЕРИРУЕМЫЕ ОБЪЕКТЫ,
ИТЕРАТОРЫ, ЦИКЛЫ FOROF, ИТЕРАТИВНЫЕ РАСШИРЕНИЯ,
ГЕНЕРАТОРЫ 167
Итерируемые объекты, итераторы, циклы for-of, итерируемое расширение 167
Итераторы и итерируемые объекты 168
Цикл for-of: Неявное использование итератора 168
Явное использование итератора 170
Остановка итерации на ранней стадии 171
Прототип итератора объекта 172
Сделать что-либо итерируемым объектом 175
Итерируемые итераторы 179
Синтаксис итеративного расширения 181
Итераторы, цикл for-of и DOM 182
Функции- генераторы 184
Базовая функция- генератор, просто производящая значения 185
Использование функций- генераторов для создания итераторов 186
Функции- генераторы в качестве методов 188
Использование генератора напрямую 189
Потребление значений генераторами 189
Использование оператора return в функции- генераторе 193
Приоритет оператора yield 194
Методы return и throw: Завершение работы генератора 195
Остановка генератора или итеративного объекта: yield* 197
От старых привычек к новым 202
Используйте конструкции с итеративными элементами 202
Используйте возможности итеративных коллекций DOM 203
Используйте интерфейсы итераторов и итеративных объектов 203
Используйте синтаксис итеративного расширения в большинстве мест,
где вы применяли Function.prototype.apply 203
Используйте генераторы 204
ГЛАВА 7. ДЕСТРУКТУРИЗАЦИЯ 205
Краткий обзор 205
Базовая деструктуризация объекта 206
Базовая (и итеративная) деструктуризация массива 209
Значения по умолчанию 211
Синтаксис Rest в шаблонах деструктуризации 213
Использование отличающихся имен 214
Вычисляемые имена свой ств 216
Вложенная деструктуризация 216
Деструктуризация параметров 217
Деструктуризация в циклах 220
От старых привычек к новым 221
Используйте деструктуризацию при получении только некоторых свой ств
от объекта 221
Используйте деструктуризацию для объектов options 222
ГЛАВА 8. ОБЪЕКТЫ PROMISE 223
Почему же промисы? 223
Основы промисов 224
Краткий обзор 224
Пример 226
Промисы и элементы thenable 228
Использование существующего промиса 229
Метод then 229
Связывание промисов в цепочки 230
Сравнение с обратными вызовами 234
Метод catch 235
Метод finally 237
Метод throw в обработчиках then, catch и finally 241
Метод then с двумя аргументами 243
Добавление обработчиков к уже выполненным промисам 245
Создание промисов 246
Конструктор Promise 247
Метод Promise.resolve 250
Метод Promise.reject 251
Другие служебные методы промисов 252
Метод Promise.all 252
Метод Promise.race 254
Метод Promise.allSettled 254
Метод Promise.any 255
Шаблоны промисов 255
Обрабатывать ошибки или возвращать промис 255
Серии промисов 256
Параллельные промисы 258
Антишаблоны промисов 259
Излишнее выражение new Promise(/*…*/) 259
Отсутствие обработки ошибок (или неправильная обработка) 259
Оставление ошибок незамеченными при преобразовании API
обратного вызова 260
Неявное преобразование отклонения в успешное выполнение 261
Попытка использовать результаты вне цепочки 262
Использование обработчиков бездействия 262
Неправильное разветвление цепочки 263
Подклассы промисов 264
От старых привычек к новым 265
Используйте промисы вместо успешных/неудачных обратных вызовов 265
ГЛАВА 9. АСИНХРОННЫЕ ФУНКЦИИ, ИТЕРАТОРЫ И ГЕНЕРАТОРЫ 267
Асинхронные функции 267
Создание промисов асинхронными функциями 270
Оператор await использует промисы 271
Стандартная логика становится асинхронной при использовании await 272
Отклонения — это исключения, исключения — это отклонения;
выполнение — это результаты, возвращаемые значения — это разрешения 273
Параллельные операции в асинхронных функциях 276
Нет необходимости возвращать await 277
Ловушка Pitfall: Использование асинхронной функции в неожиданном месте 278
Асинхронные итераторы, итерируемые и генераторы 279
Асинхронные итераторы 279
Асинхронные генераторы 283
Выражение for-await-of 285
От старых привычек к новым 286
Используйте асинхронные функции и await вместо явных промисов
и then/catch 286
ГЛАВА 10. ШАБЛОНЫ, ПОМЕЧЕННЫЕ ФУНКЦИИ
И НОВЫЕ ВОЗМОЖНОСТИ СТРОК 287
Шаблонные литералы 287
Базовая функциональность (Непомеченные шаблонные литералы) 288
Помеченные шаблонные функции (Помеченные шаблонные литералы) 290
Метод String.raw 295
Повторное использование шаблонных литералов 297
Шаблонные литералы и автоматическая вставка точки с запятой 297
Улучшенная поддержка Юникода 297
Юникод, а что такое строка JavaScript? 298
Экранирующая последовательность кодовой точки 300
Метод String.fromCodePoint 300
Метод String.prototype.codePointAt 300
Метод String.prototype.normalize 301
Итерация 303
Новые строковые методы 304
Метод String.prototype.repeat 304
Методы String.prototype.startsWith и String.prototype.endsWith 305
Метод String.prototype.includes 306
Методы String.prototype.padStart и String.prototype.padEnd 306
Методы String.prototype.trimStart и String.prototype.trimEnd 307
Обновления методов match, split, search и replace 307
От старых привычек к новым 309
Используйте шаблонные литералы вместо конкатенации строк (где это уместно) 309
Используйте помеченные функции и шаблонные литералы для DSL вместо
пользовательских механизмов заполнения 310
Используйте строковые итераторы 310
ГЛАВА 11. МАССИВЫ 311
Новые методы массивов 311
Метод Array.of 311
Метод Array.from 312
Метод Array.prototype.keys 315
Метод Array.prototype.values 316
Метод Array.prototype.entries 317
Метод Array.prototype.copyWithin 318
Метод Array.prototype.find 321
Метод Array.prototype.findIndex 322
Метод Array.prototype.fill 322
Общая ловушка Pitfall: Использование объекта в качестве
значения заполнения 323
Метод Array.prototype.includes 324
Метод Array.prototype.flat 324
Метод Array.prototype.flatMap 326
Итерация, расширение, деструктуризация 326
Стабильная сортировка массива 326
Типизированные массивы 327
Краткий обзор 327
Основное использование 330
Подробнее о преобразовании значений 331
Объект ArrayBuffer: Хранилище для типизированных массивов 333
Порядковый номер (Порядок байтов) 336
Вид DataView: Необработанный доступ к буферу 337
Совместное использование ArrayBuffer массивами 339
Совместное использование без перекрытия 339
Совместное использование с перекрытием 340
Подклассы типизированных массивов 341
Методы типизированного массива 341
Стандартные методы массива 341
Метод %TypedArray%.prototype.set 343
Метод %TypedArray%.prototype.subarray 343
От старых привычек к новым 344
Используйте find и findIndex для поиска в массивах вместо циклов
(где это уместно) 344
Используйте для заполнения массивов Array.fill, а не циклы 344
Используйте readAsArrayBuffer вместо readAsBinaryString 345
ГЛАВА 12. КАРТЫ И МНОЖЕСТВА 347
Коллекции Map или карты 347
Основные операции с картой 348
Равенство ключей 350
Создание карт из итерируемых 351
Итерация содержимого карты 352
Создание подклассов для карты 354
Производительность 355
Множества 355
Основные операции с множеством 356
Создание множеств из итерируемых 357
Итерация содержимого множества 357
Создание подклассов для множества 359
Производительность 359
Слабые карты (WeakMap) 360
Слабые карты не итерируемые 360
Варианты использования и примеры 360
Вариант использования: Закрытая информация 361
Вариант использования: Хранение информации для объектов,
находящихся вне вашего контроля 362
Значения, ссылающиеся на ключ 364
Слабые множества (WeakSet) 369
Вариант использования: Отслеживание 370
Вариант использования: Маркировка 371
От старых привычек к новым 372
Используйте карты вместо объектов для карт общего назначения 372
Используйте множества вместо объектов для множеств 372
Используйте слабые карты для хранения личных данных вместо
публичных свой ств 373
ГЛАВА 13. МОДУЛИ 375
Введение в модули 375
Основы модулей 376
Спецификатор модуля 378
Базовый именованный экспорт 379
Экспорт по умолчанию 381
Использование модулей в браузерах 383
Скрипты модуля не задерживают синтаксический анализ 384
Атрибут nomodule 384
Спецификаторы модулей в Интернете 385
Использование модулей в Node.js 386
Спецификаторы модулей в Node.js 388
Node.js добавляет дополнительные возможности модулей 389
Переименование экспорта 389
Повторный экспорт экспорта из другого модуля 390
Переименование импорта 391
Импорт объекта пространства имен модуля 392
Экспорт объекта пространства имен другого модуля 393
Импорт модуля только из-за побочных эффектов 394
Импорт и экспорт записей 394
Импорт записей 394
Экспорт записей 395
Импорт в режиме реального времени и доступности только для чтения 397
Экземпляры модуля зависят от базы realm 400
Как загружаются модули 400
Получение и синтаксический анализ 402
Создание экземпляра 405
Выполнение 406
Обзор временной мертвой зоны (TDZ) 406
Циклические зависимости и TDZ 407
Обзор синтаксиса импорта/экспорта 408
Разновидности экспорта 408
Разновидности импорта 410
Динамический импорт 411
Динамический импорт модуля 411
Пример динамического модуля 413
Динамический импорт в немодульных скриптах 416
Встряхивание дерева 418
Бандлинг (Объединение) 420
Метаданные импорта 420
Модули воркеров 421
Загрузка веб-воркера в качестве модуля 421
Загрузка воркера Node.js в качестве модуля 422
Воркер находится в собственной базе realm 422
От старых привычек к новым 423
Используйте модули вместо псевдо пространств имен 423
Используйте модули вместо обертывания кода в функции области видимости 424
Используйте модули, чтобы избежать создания мегалитических файлов кода 424
Конвертируйте CJS, AMD и другие модули в ESM 424
Не изобретайте велосипед, используйте хорошо обслуживаемый бандлер 424
ГЛАВА 14. РЕФЛЕКСИЯ  ОБЪЕКТЫ REFLECT И PROXY 425
Объект Reflect 425
Метод Reflect.apply 427
Метод Reflect.construct 427
Метод Reflect.ownKeys 429
Методы Reflect.get и Reflect.set 429
Другие функции Reflect 431
Объект Proxy 431
Пример: Регистрирующий прокси 435
Ловушки прокси 442
Общие возможности 442
Ловушка apply 443
Ловушка construct 443
Ловушка defineProperty 443
Ловушка deleteProperty 445
Ловушка get 446
Ловушка getOwnPropertyDescriptor 447
Ловушка getPrototypeOf 448
Ловушка has 449
Ловушка isExtensible 449
Ловушка ownKeys 449
Ловушка preventExtensions 450
Ловушка set 451
Ловушка setPrototypeOf 451
Пример: Скрытие свой ств 452
Отключаемые прокси 456
От старых привычек к новым 456
Используйте прокси, а не полагайтесь на потребляющий код, чтобы
не изменять объекты API 457
Используйте прокси для отделения кода реализации
от инструментального кода 457
ГЛАВА 15. ОБНОВЛЕНИЯ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ 459
Свой ство flags 459
Новые флаги 460
Липкий флаг (y) 460
Флаг Юникода (u) 461
Флаг «все точки» (s) 461
Именованные группы захвата 462
Основная функциональность 462
Обратные ссылки 466
Заменяющие токены 467
Утверждения ретроспективной проверки 467
Позитивная ретроспективная проверка 468
Негативная ретроспективная проверка 469
Жадность проявляется в принципе справа налево в ретроспективных проверках 469
Ссылки и нумерация групп захвата 470
Функциональные возможности Юникода 471
Экранирование кодовой точки 471
Экранирование свой ства Юникода 472
От старых привычек к новым 476
Используйте липкий флаг (y) вместо создания подстрок и использования
«^» при синтаксическом анализе 476
Используйте флаг «все точки» (s) вместо использования обходных путей для
сопоставления всех символов (включая разрывы строк). 477
Используйте именованные группы захвата вместо анонимных 477
Используйте ретроспективные проверки вместо различных обходных путей 478
Используйте экранирование кодовой точки вместо суррогатных пар
в регулярных выражениях 478
Используйте шаблоны Юникода вместо обходных путей 478
ГЛАВА 16. СОВМЕСТНО ИСПОЛЬЗУЕМАЯ ПАМЯТЬ 479
Введение 479
Здесь водятся драконы! 480
Поддержка браузера 481
Основы совместно используемой памяти 482
Критические секции, блокировки и условные переменные 483
Создание совместно используемой памяти 484
Совместно используется память, но не объекты 489
Условия гонки, вышедшие из строя хранилища, устаревшие значения,
значения с разрывами, тиринг и многое другое 490
Объект Atomics 492
Низкоуровневые возможности объекта Atomics 495
Использование Atomics для приостановки и возобновления потоков 497
Пример совместно используемой памяти 498
Здесь водятся драконы! (Снова) 519
От старых привычек к новым 525
Используйте совместно используемые блоки вместо многократного обмена
большими блоками данных 525
Используйте Atomics.wait и Atomics.notify вместо разделения заданий
воркеров для поддержки цикла событий (при необходимости) 525
ГЛАВА 17. РАЗЛИЧНЫЕ АСПЕКТЫ 527
Тип данных BigInt 527
Создание значения типа BigInt 529
Явное и неявное преобразование 530
Производительность 531
Массивы BigInt64Array и BigUint64Array 531
Служебные функции 531
Новые целочисленные литералы 532
Двоичные целочисленные литералы 532
Восьмеричные целочисленные литералы, попытка № 2 533
Новые математические методы 534
Общие математические функции 534
Поддержка низкоуровневых математических функций 535
Оператор возведения в степень (**) 535
Изменения в Date.prototype.toString 537
Изменения в Function.prototype.toString 538
Дополнения конструктора Number 538
«Безопасные» целые числа 538
Константы Number.MAX_SAFE_INTEGER и Number.MIN_SAFE_INTEGER 539
Метод Number.isSafeInteger 540
Метод Number.isInteger 540
Методы Number.isFinite и Number.isNaN 540
Методы Number.parseInt и Number.parseFloat 541
Свой ство Number.EPSILON 541
Символ Symbol.isConcatSpreadable 541
Различные хитрости синтаксиса 542
Оператор нулевого слияния 543
Опциональная цепочка 543
Необязательные привязки catch 546
Разрывы строк Юникода в JSON 546
Правильно сформированный JSON из метода JSON.stringify 546
Различные стандартные библиотеки/глобальные дополнения 547
Метод Symbol.hasInstance 547
Свой ство Symbol.unscopables 547
Объект globalThis 549
Свой ство description символа 549
Метод String.prototype.matchAll 550
Приложение Б: Возможности, доступные только для браузера 550
HTML-подобные комментарии 551
Хитрости регулярного выражения 552
Расширение управляющего символа экранирования (\cX) 552
Допуск недопустимых последовательностей 553
Метод RegExp.prototype.compile 553
Дополнительные встроенные свой ства 553
Дополнительные свой ства объекта 554
Дополнительные строковые методы 555
Различные фрагменты свободного или неясного синтаксиса 555
Когда же document.all есть… или нет? 557
Оптимизация хвостового вызова 558
От старых привычек к новым 561
Используйте двоичные литералы 561
Используйте новые математические функции вместо различных
математических обходных путей 562
Используйте оператор нулевого слияния для значений по умолчанию 562
Используйте опциональную цепочку вместо проверок && 562
Уберите привязку ошибки (e) из “catch (e)”, если она не используется 562
Используйте оператор возведения в степень (**) вместо метода Math.pow 563
ГЛАВА 18. ГРЯДУЩИЕ ФУНКЦИОНАЛЬНЫЕ
ВОЗМОЖНОСТИ КЛАССА 565
Публичные и приватные поля класса, методы и акцессоры 565
Определения публичного поля (свой ства) 566
Приватные поля 572
Приватные методы и акцессоры экземпляра 579
Приватные методы 579
Приватные акцессоры 584
Публичные статические поля, приватные статические поля и приватные
статические методы 585
Публичные статические поля 585
Приватные статические поля 586
Приватные статические методы 586
От старых привычек к новым 587
Используйте определения свой ств вместо создания свой ств в конструкторе
(где это уместно) 587
Используйте приватные поля вместо префиксов (где это уместно) 588
Используйте приватные методы вместо функций вне класса
для приватных операций 588
ГЛАВА 19. ВЗГЛЯД В БУДУЩЕЕ… 591
Оператор await верхнего уровня 592
Обзор и примеры использования 592
Пример 594
Обработка ошибок 599
Слабые ссылки и обратные вызовы очистки 600
Слабые ссылки 601
Обратные вызовы очистки 604
Индексы соответствия RegExp 609
Метод String.prototype.replaceall 611
Выражение Atomics.asyncWait 612
Различные хитрости синтаксиса 613
Числовые разделители 613
Поддержка Hashbang 614
Осуждаемые устаревшие возможности RegExp 614
Спасибо, что прочитали! 615
ПРИЛОЖЕНИЕ. ФАНТАСТИЧЕСКИЕ ВОЗМОЖНОСТИ
И ГДЕ ОНИ ОБИТАЮТ 617
Функциональные возможности в алфавитном порядке 617
Новые положения 623
Новый синтаксис, ключевые слова, операторы, циклы и тому подобное 624
Новые литеральные формы 626
Дополнения и изменения стандартной библиотеки 626
Прочее 629
АЛФАВИТНЫЙ УКАЗАТЕЛЬ 631
Download
Rutracker.org не распространяет и не хранит электронные версии произведений, а лишь предоставляет доступ к создаваемому пользователями каталогу ссылок на торрент-файлы, которые содержат только списки хеш-сумм
Как скачивать? (для скачивания .torrent файлов необходима регистрация)
[Профиль]  [ЛС] 

Drunkenmunky

Стаж: 14 лет 5 месяцев

Сообщений: 165


Drunkenmunky · 22-Окт-23 23:13 (спустя 6 часов)

Известно где, этот же файл, но с оглавлением. Пока "не проверено" хорошо перезалить
[Профиль]  [ЛС] 

tsurijin

Стаж: 3 года 7 месяцев

Сообщений: 1728


tsurijin · 24-Окт-23 00:39 (спустя 1 день 1 час)

Drunkenmunky писал(а):
85361518Известно где, этот же файл, но с оглавлением. Пока "не проверено" хорошо перезалить
Не понял.
[Профиль]  [ЛС] 

Drunkenmunky

Стаж: 14 лет 5 месяцев

Сообщений: 165


Drunkenmunky · 24-Окт-23 01:16 (спустя 36 мин.)

tsurijin писал(а):
85366233
Drunkenmunky писал(а):
85361518Известно где, этот же файл, но с оглавлением. Пока "не проверено" хорошо перезалить
Не понял.
Отправил ссылку в ЛС
[Профиль]  [ЛС] 

ChroNos-88

Стаж: 1 год 8 месяцев

Сообщений: 1


ChroNos-88 · 27-Окт-23 06:01 (спустя 3 дня)

Как перевод?
[Профиль]  [ЛС] 

avg999

Стаж: 14 лет 4 месяца

Сообщений: 3


avg999 · 31-Дек-23 16:34 (спустя 2 месяца 4 дня)

Наверняка пиратское издание (это как бы 2023 год), информация в книге актуальна на начало 2020 года, скрин с babel/cli 7.2.3 тоже смотрится прикольно... Учиться на жигулях водить Мерседес - то ещё занятие...
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error