Швидкий індекс кодового заморожування або уповільнення


101

Можливо, це я просто відчуваю таку дратівливу "особливість":

Після оновлення з Xcode 6.0.1 до Xcode 6.1, все змінилося. Xcode 6.1 назавжди індексує проект або компілює вихідні файли. Проект не є величезним. Він просто містить купу файлів Swift та AWS SDK 2.0 Cocoapods у робочій області. Я не думаю, що це повинно заважати цілому індексувати та збирати плавно. Я спробував з деякими зразками aws-sdk-ios, просто побачив, як Xcode 6.1 працює на них, і він виявився таким же вічно чекаючим.

Які рішення я спробував поки що:

  1. Видалення "Отримані дані" в Організаторі та повторно відкрити та робочу область. (не вдається виправити)
  2. "Показати вміст пакета" у файлі .xcodeproj та видалити .xcworkspace як у ( Xcode 4 - повільна продуктивність )

На жаль, жоден з них не працював.

PS Можливо, я повинен спробувати відновити проект? Налаштування мого комп’ютера: MacBook Pro (Retina, 13-дюймовий, середина 2014 року), пам'ять 8 ГБ 1600 МГц DDR3, з Yosemite. (Я думаю, що цього достатньо для запуску цього невеликого проекту.)


Подібні висловлювання? Так: Xcode beta 3 Швидке індексування назавжди
zisoft

2
Я не дуже допоможу, але те, що я роблю, це ... я просто дозволю xcode 6.x взяти час. Якщо я боюсь з цим, він накрутить мене протягом великого часу, тому я просто чекаю, поки почнеться xcode 6. Я нехай це працює, це дурне індексування. Потім я запускаю тренажер iOS окремо і чекаю, поки з’явиться дурний трамплін. Нарешті, коли я запускаю проект, я помічаю той факт, що багато разів індексація каже "Призупинено", і я молюсь, щоб <# godObject #> випити каву і спробувати перейти в режим дзен. Але * зітхання *, це грубо: / і мені дуже сподобався xcode 5.1.1: |
staticVoidMan

Ця відповідь працював для мене: stackoverflow.com/a/33395844/242933
ma11hew28

Відповіді:


72

Я спробував багато запропонованих вище пропозицій, зокрема розділити файли, встановити Xcode 6.2 beta та порушити строкові заяви конкатенації. Нарешті, це зробило для мене розбиття масиву словесних декларацій, які я використовував для тестових даних, на кілька .appendоператорів.

// This causes indexing/building to hang...
var test = [ [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ] ]

// This works fine.
var test = [ [ "a": false, "b": "c" ] ]
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])

Крім того, для чого це варто, шостий запис у цьому масиві - це те, що викликає проблему для мене; п'ять працює просто чудово.


Те саме рішення працювало для мене зі словником. Ініціалізація його безпосередньо спричинила вічно працює індексацію. Ініціалізація його init()поетапно працює бездоганно. Варто зазначити, що мені довелося також видалити .xcworkspaceфайл.
jboi

Виправлено це для мене без участі словників. Просто масив кортежів, який був чудовим із 8 елементами в декларації. Довелося повернути додатки з 11 елементами. Не потрудився знайти точну точку зламу, але будує на 10 разів швидше. Версія Xcode 6.1.1 (6A2008a) на Mavericks.
Джош

Я також потрапив на проблему рівно з 6 елементами. 5 було добре.
Джастін Лау

Це проблема XCode чи проблема компілятора?
Слюкс

4
Я пережив це в Xcode 7.3 з літералом масиву з 229 елементів. Замість того, щоб розбивати його, я додав декларацію типу замість того, щоб дозволити Swift робити висновок про тип. Після того, як я це зробив, це спрацювало.
Брігем

34

Єдине робоче рішення для мене - видалити всі отримані дані (не тільки для поточного проекту, просто очистити всю папку), а потім перезапустити Xcode.

  1. Відкрийте файл / налаштування в Xcode

  2. Клацніть Місцеположення в крайній правій частині спливаючого вікна

  3. Клацніть піктограму зі стрілкою поруч із пунктом "/Users/Mac/Library/Developer/Xcode/DerivedData"....it" перенесе вас у папку Xcode, яка містить папку DerivedData (яка містить усі отримані дані з попередніх проектів .)

  4. ВИДАЛИТИ папку DerivedData


1
@TravisM. Ви дотримувались кроків? Якщо ви перейдете до вікна, органайзера, проектів, видалити отримані дані, це не працюватиме. Вам потрібно пройти налаштування.
ericgu

@ericgu Так, але це не спрацювало. Я вирішив свою проблему, проте це стосувалося того, що я ініціалізував словник із твердими даними за один кадр. Коли я перемістив код, щоб додати дані з твердим кодом по одному рядку, проблеми з заморожуванням / повільністю негайно зникли.
Травіс М.

Папка в ~ / Бібліотека / Розробник / Xcode / DerivedData / на моїй машині. Ви також можете знайти його у вікні> Проекти в Xcode.
Сурагч

Дякую. Це допомагає. Проблема "вічно індексувати" починається одразу після того, як я оновив свою версію cocoaPod та здійснив встановлення стручка.
WKL

11

Ви використовуєте CocoaPods? Раніше сьогодні я зіткнувся з тим же питанням. (Використання xCode 6.1.1)

Щоб усунути цю проблему, я видалив все в ~/Library/Developer/Xcode/DerivedData, в Podsпапці в моєму каталозі проекту, і <project>.xcworkspace.

Потім я відкрив термінал, перейшов до свого каталогу проектів і побіг pod installзнову.


1
Так. Зараз Xcode веде себе нормально. Але це все ще час від часу видає помилку краху sourcekit. Моє рішення - видалити отриману папку даних.
Леонард

Радий бачити, що це працювало і для когось іншого :). Схоже, xCode намагається індексувати бібліотеки CocoaPod і десь застряє.
Майкл Шиніс

1
Видаліть папку Pods та файл <project> .xcworkspace, а потім запустіть програму встановлення знову.
KML

9

Мав те саме питання і сьогодні. Xcode 6.3.2, середній розмір проекту Swift. В один момент він почав індексувати, і він ніколи не закінчить індексувати. Код, що спричинив це, був словником типу [String: [String]], тож рядок з ключовим рядком із рядковими масивами як значеннями. У мене було два з ключами від А до Я, і кожен з цих 26 записів містить рядковий масив з 5 до 10 рядків.

Очищення отриманих даних не допомогло. Тільки прокоментувавши ці дикти, змусили його знову піти.

Чесно кажучи, це смішно! Apple має виправити Xcode! Це вже жахливо повільно при складанні проектів Swift, але такі помилки є шоустоппером. Я не можу правильно виконувати свою роботу!


6

Для тих, хто все ще має цю проблему, мені подобається це вирішення, яке заважає вам вводити об'єкти один за одним:

// instead of this, which freezes indexing
let keys = [keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM]    

// and instead of this, which is ugly & lengthy
var keys = [KeyboardKey]()
keys.append(keyQ)
keys.append(keyW)
...
keys.append(keyM)

// use this:
var keys = [KeyboardKey]()
keys.appendContentsOf([keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM])

1
Нічого ... У мене було саме таке питання. Дякую! Я повідомив про це як помилку Apple. Те, що ви сказали, не працювало для мене. Мені довелося розбити мій довгий масив на менші масиви, кожен з яких має п'ять і менше елементів.
ma11hew28

5

Для мене я спробував усе вищесказане без успіху; але все, що я повинен був зробити, це видалити отриману папку даних, потім відкрити інший випадковий проект, дочекатися його індексації і тепер мій оригінальний (несправний) проект працює!

Зробіть світові розвитку прихильність яблуком і зробіть ваші швидкі компілятори відкритими джерелами, тому ми не всі зірвані вашою некомпетентністю.


3

Я використовую Xcode версії 7.3 (7D175)

Я думаю, що, можливо, я з'ясував основну проблему. Там де два випадки, коли я застряг у фазі індексації:

  • Я створив закриття, яке призначив змінній, і пропустив підпис типу. Я думаю, що у xcode виникли проблеми з кроком виводу цього типу. Якщо я правильно пам’ятаю, одним із аргументів був CGPoint, який має перевантажений конструктор. Моя гіпотеза полягає в тому, що там дуже багато можливостей того, що моє закриття може сприйняти як аргументи.

  • Я відновив заводський метод таким, що замість того, щоб повертати екземпляри одного типу, він міг повертати екземпляри багатьох типів із загальним базовим класом. Здається, що де б я не використовував заводський метод, мені довелося передати отриманий об'єкт певному типу (або як? Або шляхом присвоєння йому змінної, яка приймає певний тип). Знову крок виводу типу здається порушеним.

Схоже, те саме відбувається із словниковими деклараціями, згаданими попередніми особами. Я подав повідомлення про помилку з яблуком.


2

Цю проблему я зазнав після переходу на 6.1. Xcode зациклюється на складанні чи індексації, не створюючи конкретного повідомлення про помилку.

Ця проблема була врешті вирішена шляхом розбиття деяких довших виразів у файлах swift вниз на кілька коротших виразів. Частина моєї програми поєднує багато різних змінних рядків, щоб утворити довший рядок. Спроба об'єднати їх в один вираз та використовувати оператор присвоєння додавання обидва не вдалася. Мені вдалося змусити його зробити щось подібне до наступного (спрощеного):

var a = "Hello"
var b = " "
var c = "World"
var d = "!"
var partA = a + b
var partB = c + d
var result = partA + partB

Я отримав цю ідею від отримання такої помилки багато разів у попередній версії Xcode "Вираз був занадто складним, щоб його можна було вирішити в розумний час; розглянути можливість розбиття виразу на окремі підвислови."

Сподіваюся, це допомагає


Так, дякую, я насправді прийняв такі пропозиції. І я також скоротив довжину одного з моїх файлів з 1500 рядків до приблизно 1200. І звичайно, я створив новий проект і імпортував усі файли по одному. Потім, нарешті, він повертається. Не дуже впевнений, хто з них є остаточним рятівником.
Леонард

Розщеплення довгого виразу у Свіфта зробило для мене трюк.
MandisaW

2

Я боровся з тією ж проблемою. Я спробував два згадані рішення (видалення отриманих даних та видалення .xcworkspace) без успіху. Я також спробував повільно коментувати більшу частину коду побітно і видаляючи файли, поки майже нічого не залишилося і індексація все ще застрягла.

Я знайшов рішення, яке працювало для мене, я відкрив проект зі старішою версією Xcode версії 6.1 (6A1030), яка не мала проблем з індексуванням, потім повернулася до останньої версії Xcode версії 6.1 (6A1052d), яку я використовувала раніше, і індексація була виправлено і продовжував добре працювати.

Я можу зробити висновок, що це помилка з Xcode версії 6.1 (6A1052d), яка, сподіваюся, покращиться з майбутніми випусками.

Проблема повертається раз у раз, і те саме виправлення працює щоразу. Я думаю, іншим рішенням буде просто дотримуватися старішої версії Xcode версії 6.1 (6A1030), але вона не працюватиме з пристроями під управлінням iOS 8.1 і не матиме останніх виправлень помилок.


Я спробував більшість пропозицій щодо вирішення питання вічної індексації, і це єдине, що працювало на мене. У мене не було старшого Xcode 6, але у мене був Xcode 5. Він би не будувався, але він робив індекс і після цього Xcode 6.1 індексувався успішно.
СараР

Я забуваю зазначити, що це було лише тимчасове рішення, і мені довелося це зробити ще через кілька годин.
СараР

2

Я спробував це з Xcode 8.3.3. Ось мої результати:

Ви можете написати ідеально чудовий код Swift, який призведе до зависання індексації.

Після того, як індексація висить, вона висить. Якщо повернути код Swift на те, що не призвело б до того, щоб індексація не висіла, це не допоможе, воно все ще висить.

Закриття проекту та його відкриття не допомагають у цій ситуації.

Вихід із Xcode та його перезавантаження допомагає. Індексація більше не висить (тобто якщо ви змінили код назад на те, що не змушує його висіти).

Перезапуск комп'ютера також допомагає, хоча це не потрібно.

Підвішування спричинене прекрасним кодом Свіфта. Приклад, на який я був схожий

if let date = function1()
?? function2()
?? function3()
?? function4()
?? function5()
?? function6()
?? function7()
?? function8()
?? function9()
?? function10() {
    return date
}

Індексація буде висіти. Я прокоментував більшість "??" рядків, і це було добре (після виходу з коду та повторного запуску Xcode). Не коментований один рядок за іншим. З деякою кількістю рядків це було чудово, то, якщо коментувати наступний рядок, це зробить його звисаючим.

Єдине, що допомагає, мабуть, - це зміни вашого коду.


2

На моєму Xcode рішенням було закрити всі зайві вікна. Чомусь багато відкритих вікон роблять Xcode дуже повільним.


для мене це було також рішенням, що дивно, адже воно справно працювало довгий час з такою ж кількістю відкритих вікон
Крістіан

1

Нарешті, я "вирішив" це питання, хоча це просто вирішення.

Я створив ще один проект і додав файли по одному до нього. Потім я помітив "дуже довгий" файл viewcontroller.swift. Потім я розбив його коди на модулі і перетворив ці багаторазово використані коди на функції в іншому швидкому файлі. А також я взяв пропозицію в Інтернеті, що довгий вираз слід розбити на коротші. Потім, індексація працює і збирається.

Тож наразі я це "вирішив".

Але, я не думаю, що це правильно. Xcode IDE повинен бути більш ніж здатний обробляти мій "дуже довгий" швидкий файл, всього 1500 рядків. Я вважаю, що це, безумовно, помилка (існує вже давно), хоча Xcode 6.1 - це вже оновлення з Xcode 6.0.1.


1

Для мене я видалив додаток Xcode і знову завантажив його та встановив. Це вирішило питання, принаймні, зараз.


1

Індексація Xcode, як правило, для вашого коду для пропозицій та автоматичного завершення, серед іншого, наприклад, допомагаючи вам у дошках та навпаки. Але для того, щоб пришвидшити ваш xcode проект, ви можете вимкнути / ввімкнути його через термінал

Вимкнення за
замовчуванням індексування запису com.apple.dt.XCode IDEIndexDisable 1 Увімкнення параметрів індексації запису com.apple.dt.XCode IDEIndexDisable 0

Але кращий підхід використовувати швидкий mac з хорошою оперативною пам’яттю.


2
Відключення індексації сильно калічить Xcode, і цього робити не слід. Якщо хтось скаже про придбання нового Mac, ніколи не повинен бути відповіддю, дворічний ноутбук повинен мати можливість обробляти найновіший Xcode.
Knight0fDragon

macOS 10.13 Beta 7 представив щось, що дає збій як Xcode 9 Beta 6, так і Xcode 8, як тільки працює індексатор. Вимкнення його було єдиним способом продовжити використання Xcode навіть із каліченою версією.
Пеголон

0

Якщо ви не проти повернутися до версії 6.0.1, поки вони не зрозуміють, це для мене спрацювало. У мене виникли однакові проблеми і з 6.1, і з 6.1.1. Зараз мені добре. Я спробую 6.2, коли вийде.

Ви можете знайти попередні версії програмного забезпечення Apple на офіційному веб-сайті розробника тут: https://developer.apple.com/downloads/index.action

Якщо ви це зробите, спочатку видаліть свою поточну копію Xcode.


0

Я використовую Xcode 6.1.1 зі швидкими файлами на тому ж точному MacBook Pro.

Коли я продовжував додавати рядки в масив 3D-рядків, Xcode раптом став непридатним і тепер я нічого не можу зробити.

Спробуємо повернути до рівня 6.1, і, сподіваємось, проблема піде.


У мене те саме питання. Після додавання масиву словників xcode став непридатним ... Ви знайшли рішення?
Алмазіні,

Я повернувся до Xcode 6.1, який працював краще. Це не зациклювалося на індексації назавжди, але іноді я б набрав та отримав пляжний м'яч на 4 секунди. В цілому мені вдалося зашифрувати досить, щоб виконати речі. Я не змінив жодного свого коду. Хоча на Xcode 6.1 акумулятор macbook pro не здався надто вплинутим, але в моєму MacBook Air середині 2013 року під керуванням 6.1.1, тривалість роботи акумулятора абсолютно зникла. Він починає від ~ 12 годин до 2 годин, коли я запускаю Xcode.
gardner888

0

Я бачу це в Xcode 6.3.2. Я дуже сподівався, що через рік після випуску компілятор буде працювати, але на жаль.

Якщо жодне з перерахованих вище рішень не працює, спробуйте перевірити свій код на наявність синтаксичних помилок. У процесі рефакторингу я витяг закриття, але забув класифікувати параметри:

    let hangsInsteadOfError = { l, r in
        return l.nameFirst < r.nameFirst
        || l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }

    let fixingErrorAvoidsHang = { (l:User, r:User) -> Bool in
        return l.nameFirst < r.nameFirst
            || l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }

Якщо я навчився чомусь, працюючи в Swift, це працювати поступово, щоб уникнути зайвого зворотного відстеження, щоб знайти код, що порушує.


0
  1. Чи є ваш статус індексації "Індикаторне коло" або "Рядок прогресу"?
  2. Якщо це "Індикаторне коло", це означає, що він вже застряг на початку.
  3. Відкрийте і уточніть у інших своїх проектах, чи всі вони однакові, це означає, що це системна проблема.
  4. Просто перезавантажте комп’ютер і все буде добре.

0

Я використовую Xcode 8.2 і також закінчився цією проблемою. Він розпочався після того, як я визначив складну змінну кортежу - масив кортежу з підмножиною кортежу. Все стає дуже повільним, коли підмножина кортежу має властивість, яка програмно обчислюється.

Як зазначалося в деяких інших відповідях, індексація триває назавжди, і я вважаю, що вона намагається вивести тип змінної.

Спочатку я вирішив проблему, чітко визначивши змінну з включеними типами. Оновлюючи властивість, я спочатку обчислюю його, а потім присвоюю йому кортеж, а не обчислюючи при визначенні змінної.

Ось приклад коду.

var sectionTuples: [(section: String, rows: [(name: String, subtitle: String)])] = []
let subtitle1: String = "" // something calculated dynamically
let subtitle2: String = "" // something calculated dynamically
sectionTuples = [(
section: "Section 1", rows: [
(name: "name1", subtitle: subtitle1),
(name: "name2", subtitle: subtitle2)
])]

Суть полягає в тому, що не дозволяйте Xcode робити висновки про складні структури.


0

У мене виникло те саме питання. Мій Xcode - 8.2.1. Але в моєму випадку я хотів створити масив словника з 33 парами ключ-значення. Я робив так, що застряг в індексації:

var parameter = [String : AnyObject]()
var finalArray = [parameter]

for item in listArray
{
    parameter = ["A": item.a as AnyObject, "B": item.b as AnyObject, "C": item.c as AnyObject, ... , "Z": item.z as AnyObject]

    finalArray.append(parameter)
}

Наступні працювали для мене:

var parameter = [String: AnyObject]()
var finalArray = [parameter]

for item in listArray
{
    parameter["A"] = listArray.a as AnyObject
    parameter["B"] = listArray.b as AnyObject
    parameter["C"] = listArray.c as AnyObject
    parameter["D"] = listArray.d as AnyObject 
    .
    .
    .
    parameter["Z"] = listArray.z as AnyObject 
    finalArray.append(parameter)
}

0

У мене була ця проблема, і я її вирішив, видаляючи / змінюючи вирази оператором "+".

Я змінив це:

var mainArray = arrayOne + arrayTwo + arrayThree + arrayFour + arrayFive

До цього:

var mainArray = arrayOne
mainArray += arrayTwo
mainArray += arrayThree
mainArray += arrayFour
mainArray += arrayFive

Це вирішило проблему.

Моя машина отримала компенсацію MBP наприкінці 2013 року


Саме мій досвід. Він висить із ідеально чудовим кодом Swift, і єдиний спосіб виправити це - змінити код.
gnasher729

0

Ви можете оновити до Xcode 6.1.1

Офіційно випущено та вирішено для нас проблему індексації. В описі оновлення сказано, що вони застосували виправлення стабільності, тому дуже ймовірно, що він буде вести себе більш стабільно.


7
Цікаво. Для мене 6.1.1 представив нескінченну проблему індексації, з проектом, який був відкритим в 6.1. знак
Паскаль Бурк

Я бачу. У нашому випадку ми також спростили вирази та зменшили розміри класів, використовуючи розширення. Що дуже смішно, що нам довелося це робити, але це те, що ми повинні були зробити. І, здається, поки що робиш трюк. Також, коментуючи рядки, ми звузили, який фрагмент коду насправді є "надмірно складним" відповідно до того, що думає компілятор Swift і максимально зменшив складність. Сподіваюсь, вони незабаром це виправлять, оскільки це дуже дратує.
Ангел Найденов

0

Бета Xcode 6.2 вирішила проблему для мене. Не блискавично, але принаймні це не індексується назавжди. Бета-версія не встановлюється у верхній частині вашої звичайної установки Xcode, тому якщо бета-версія вам не подобається, ви можете просто її видалити.

Різні завантаження Xcode, включаючи бета-версію>


0

У мене були такі вирази, як:

let x = (value as? Int) ?? someDefault

також

guard let x = (dateFormatter().string(from: Date()) + msg + "\n").addingPercentEncoding(...) else { ... }

Тому справа в тому, щоб переписати файл, щоб він містив лише вирази рівня дитячого садка, і проблема з індексацією піде назовні.


0

Xcode 11.5 (11E608c) і все ті ж самі питання через 6 років після початкового запитання. Я хотів би, щоб я міг "позначити" яблуко в цьому питанні, щоб вони могли бачити цей безлад. Це великий проект (> 1000 файлів), і я був під годинником, тому коли я помітив індекс заморозки, я був із більш ніж 100 файлами, зміненими і не можу повернутися.

Я спробував усе:

  1. очистити Отримані дані та побудувати
  2. Перезавантажте xcode, перезавантажте mac
  3. видалити та додати джерело
  4. Шукали літературні словники тощо тощо

Проблема полягала у створенні масиву:

private var overlayColors: [UIColor] = [UIColor(hex: "#b71c1c"), UIColor(hex: "#4a148c"),
                                        UIColor(hex: "#880e4f"), UIColor(hex: "#1de9b6"),
                                        UIColor(hex: "#f50057"), UIColor(hex: "#311b92"),
                                        UIColor(hex: "#f44336"), UIColor(hex: "#651fff"),
                                        UIColor(hex: "#d500f9"), UIColor(hex: "#3d5afe"),
                                        UIColor(hex: "#bf360c"), UIColor(hex: "#0d47a1"),
                                        UIColor(hex: "#006064"), UIColor(hex: "#2979ff"),
                                        UIColor(hex: "#ff6f00"), UIColor(hex: "#1a237e"),
                                        UIColor(hex: "#795548"), UIColor(hex: "#004d40"),
                                        UIColor(hex: "#00e676"), UIColor(hex: "#01579b"),
                                        UIColor(hex: "#33691e"), UIColor(hex: "#827717"),
                                        UIColor(hex: "#76ff03"), UIColor(hex: "#ffc400"),
                                        UIColor(hex: "#e65100"), UIColor(hex: "#00b0ff"),
                                        UIColor(hex: "#ff3d00"), UIColor(hex: "#616161"),
                                        UIColor(hex: "#263238"), UIColor(hex: "#ff1744")]

Що допомогло мені виявити поганий швидкий файл, коли xcode заморозили індексацію, я зробив наступні кроки

  1. відкрити монітор активності -> "швидкий" процес -> показати інформацію про процес -> відкрити файли та порти. Це дасть вам список того, які файли запущені в цьому процесі, висвердлюючи список можливих поганих файлів
  2. Іншим зручним інструментом є цей скрипт, SOURCEKIT_LOGGING=3 /Applications/Xcode.app/Contents/MacOS/Xcode &> ~/Documents/xcode.logвін запустить Xcode з рівнями 3 рівня і почне входити в файл журналу.
  3. Шукайте у файлі журналу останні записи для своїх швидких файлів, наприклад: "my_project / Source / App /"

Це не повне рішення, але це корисно, щоб дізнатися, де шукати.

відкрити монітор активності -> "швидкий" процес -> показати інформацію про процес -> відкрити файли та порти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.