Архив автора: admin

Как настроить WireGuard VPN на Ubuntu 18.04

WireGuard — это современная технология виртуальной частной сети VPN с современной криптографией. По сравнению с другими аналогичными решениями, такими как IPsec и OpenVPN, WireGuard быстрее, проще в настройке и более производительным. Он кроссплатформенный и может работать практически везде, включая Linux, Windows, Android и macOS. Wireguard — это одноранговая VPN; он не использует модель клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент.

Читать

Как исправить ошибку 0x80070070 в Windows 10

При обновлении до новой версии Windows 10, такой как версия 2004 или любое другое обновление функции, вы можете получить код ошибки 0x80070070 — 0x50011, 0x50012 или 0x60000 с помощью Центра обновления Windows, инструмента создания мультимедиа или помощника по обновлению.

Любые сообщения об ошибках 0x80070070 являются известными проблемами обновления Windows 10. Однако это несущественные проблемы, если вы получаете одно из трех сообщений об ошибках (0x80070070 — 0x50011, 0x80070070 — 0x50012, 0x80070070 — 0x60000), то это означает, что на вашем компьютере недостаточно места для успешного завершения обновления.

В этом руководстве вы узнаете, как исправить ошибку 0x80070070, когда ваше устройство пытается выполнить обновление до новой версии Windows 10.

Как исправить ошибку 0x80070070 Windows 10

Когда вы получаете сообщение об ошибке 0x80070070 — 0x50011, 0x80070070 — 0x50012 или 0x80070070 — 0x60000, вам нужно только освободить место на главном хранилище или подключить внешний диск, например USB-флеш-накопитель, с достаточным пространством для Windows 10 можно использовать как временное хранилище.

Освобождение места с помощью настроек

Чтобы удалить ненужные и временные файлы, чтобы освободить место в Windows 10, выполните следующие действия:

  1. Откройте Настройки.
  2. Нажмите на Система.
  3. Нажмите на хранилище.
  4. В разделе «Хранилище» выберите параметр «Настроить хранилище» или запустите его сейчас.

  5. В разделе «Временные файлы» установите флажок «Удалить временные файлы, которые мои приложения не используют».

  6. Используйте Удалить файлы в моей корзине, если они были для выпадающего меню и выберите 1 день.
  7. Используйте «Удалить файлы» в моей папке «Загрузки», если они были там для более выпадающего меню, и тщательно выберите, как файлы должны быть, чтобы удалить их. (Если вы не хотите удалять файлы в папке «Загрузки», выберите «Никогда» .)
  8. В разделе «Локально доступный облачный контент» используйте раскрывающиеся меню, чтобы выбрать, когда контент OneDrive вы хотите сделать доступным только онлайн, чтобы освободить место.
  9. Нажмите кнопку Очистить сейчас.

После того, как вы выполните эти шаги, освободитя место для устранения ошибки 0x80070070. Если вам не удалось очистить достаточно файлов, попробуйте удалить временные файлы.

Удаление временных файлов

Чтобы удалить системные временные файлы с помощью приложения «Настройки», выполните следующие действия:

  1. Откройте Настройки.
  2. Нажмите на систему.
  3. Нажмите на хранилище.
  4. В разделе основного диска, нажмите на опцию Временные файлы .
  5. Выберите файлы, которые вы хотите удалить. (Следует отметить, что временные файлы включают в себя эти временные файлы из приложений, файлы в папке «Загрузки», файлы в корзине и предыдущие установочные файлы.)

  6. Нажмите Удалить файлы, чтобы завершить задачу.

Освобождение места с помощью инструмента очистки диска

Если вам все еще нужно освободить больше места, вы можете использовать инструмент очистки диска.

  1. Откройте проводник .
  2. Нажмите на этот компьютер .
  3. Щелкните правой кнопкой мыши диск с установкой Windows 10 и выберите параметр «Свойства».
  4. Нажмите кнопку Очистка диска .

  5. Нажмите кнопку Очистить системные файлы.
  6. Проверьте элементы, которые вы хотите удалить. Например, файлы журнала обновления Windows, Корзина, Временные файлы и Система создала отчеты об ошибках Windows, но не выбирают  Временные установочные файлы Windows, так как это файлы для обновления вашей системы.

  7. Нажмите кнопку ОК.
  8. Нажмите кнопку Удалить файлы.

После того, как вы выполните эти шаги и у вас будет достаточно места, попробуйте выполнить обновление до Windows 10 еще раз, и вы больше не увидите никаких сообщений об ошибках.



2020-04-21T08:24:27
Вопросы читателей

Тартар из тунца с огурцом

 

Классический рецепт тартара из сырой рыбы с добавлением картофеля, огурцов, болгарского перца, помидоров и авокадо. Отличный аппетайзер для праздничного стола. Читать

Лучший способ изучить Python (пошаговое руководство 2020 года). Часть 3

Уровень 2: совместное и параллельное программирование

Дни одноядерных процессоров давно прошли.

В настоящее время, независимо от того, покупаете ли вы готовый ноутбук или высококлассный сервер для своего бизнеса, ваш процессор определенно будет иметь несколько ядер.

И иногда вашей программе нужно использовать преимущества этих нескольких ядер для параллельной работы.

Это может привести к увеличению пропускной способности, повышению производительности и повышению скорости отклика.

Но позвольте нам прояснить одну вещь.

Если высокая производительность и увеличенная пропускная способность абсолютно необходимы, Python не будет лучшим языком для поддержки параллельного программирования.

В этой ситуации мы лично предпочли бы вместо его golang (или старый добрый C ).

Но так как это статья о Python, давайте сосредоточимся на Python.

Перед тем, как погрузиться и написать свою первую параллельную программу, есть несколько концепций параллельной обработки, которые вы должны изучить в первую очередь.

Вот некоторые из этих концепций.

 

Взаимное исключение

Если у вас есть данные, которые совместно используются несколькими потоками или процессами, важно синхронизировать доступ к этим общим ресурсам.

Если вы этого не сделаете, может возникнуть состояние гонки, которое может привести к неожиданным, а иногда и катастрофическим последствиям. Мы расскажем больше об условиях гонки позже.

Взаимное исключение означает, что один поток блокирует дальнейший прогресс других параллельных потоков, которые требуют использования общего ресурса.

 

Замки

Замки являются одной из различных реализаций взаимного исключения.

Чтобы понять, что такое замки, вы можете подумать о них с концептуальной точки зрения.

Если поток хочет получить доступ к общему ресурсу, этот поток должен захватить блокировку, прежде чем ему будет предоставлен доступ к этому ресурсу.

И после того, как это сделано с ресурсом, он снимает эту блокировку.

Если блокировка недоступна, потому что она захвачена другим потоком, то поток должен ждать, пока блокировка будет снята первой.

Эта простая концепция гарантирует, что не более одного потока может иметь доступ к общему ресурсу одновременно.

 

Тупики

Взаимная блокировка — это когда ваша программа полностью останавливается, потому что некоторые потоки не могут развиваться дальше, потому что они не могут получить блокировку.

Например, представьте, что поток A ожидает в потоке B снятие блокировки. В то же время поток B ожидает в потоке A освобождение еще одной блокировки, которую в данный момент удерживает поток A.

В этой тяжелой ситуации ни поток A, ни поток B не могут развиваться дальше, поэтому ваша программа закрыта!

Вот что такое тупик.

И это случается чаще, чем вы думаете.

Что еще хуже, это также одна из самых сложных проблем для отладки.

 

Состязание

Как мы упоминали ранее, состояние гонки — это ситуация, которая возникает, когда доступ к общему ресурсу не защищен (например, блокировками).

Это может привести к катастрофическим неожиданным результатам.

Посмотрите на этот пример.

import threading

# x это общее значение

x = 0

COUNT = 1000000



def inc():

    global x

    for _ in range(COUNT):

        x += 1



def dec():

    global x

    for _ in range(COUNT):

        x -= 1



t1 = threading.Thread(target=inc)

t2 = threading.Thread(target=dec)

t1.start()

t2.start()

t1.join()

t2.join()



print(x)

 

Вот что делает код выше:

Существует общая глобальная переменная x, которая инициализируется в 0.

Две функции inc и dec работают параллельно. inc () увеличивает значение x 1 миллион раз, тогда как dec () уменьшает значение x 1 миллион раз.

Быстро пройдясь по коду, можно сделать вывод, что конечное значение x должно быть 0 … но так ли это?

Вот что мы получаем, когда запускаем приведенный выше код.

 $ python3 race.py

158120

 $ python3 race.py

137791

 $ python3 race.py

-150265

 $ python3 race.py

715644

 

Причина, по которой это происходит, заключается в том, что общий ресурс x не защищен (например, блокировками).

 

Параллельное программирование в Python

Только после того, как вы освоитесь с концепциями, рассмотренными выше, вы готовы научиться писать параллельные программы на Python.

Во-первых, вы должны узнать, как определение многопроцессорности в Python отличается от многопоточности. (Кстати, это совершенно не связано с потоками и процессами с точки зрения ОС ).

Чтобы понять это различие между многопроцессорностью и многопоточностью с точки зрения Python, вам необходимо изучить и понять глобальную блокировку интерпретатора (GIL).

Вам также необходимо узнать о потоках, очереди и многопроцессорных  модулях Python.

Все эти модули предоставляют вам примитивы, необходимые для написания параллельных программ.

 

Начало:

 

Продолжение

 

Продолжение следует…



2020-04-20T17:45:24
Python

Криптовалюта Ethereum: что это такое и и как ее купить



























5/5 — (1 голос)

Ethereum (эфириум, эфир) – это одновременно и криптовалюта, и функциональная децентрализованная среда, которая по-настоящему революционизировала всю IT-сферу.

Создатели эфира, среди которых выделяется Виталик Бутерин, при запуске этой платформы преследовали стандартные для авторов криптовалют цели – улучшение Bitcoin. Однако, эфир сложно назвать биткоином 2.0. Они в чем-то похожи, но между ними есть и ряд концептуальных отличий.