Архив автора: Ivan Nikiforov

Как удалить встроенные приложения в Windows 10

Вместе с установкой Windows 10 приходит довольно много разнообразных пользовательских приложений, часть из них постоянно висит в фоне и отнимает ресурсы системы. Возможно, вы захотите удалить часть из этих Windows Store apps, тем более если вы не пользуетесь ими (эй, кто-нибудь знает зачем на корпоративной версии Windows 10 предустановлены приложения Xbox?)

Стандартными средствами Windows (в «Установке и удалении программ») приложения типа Photos, Feedback, Camera нельзя найти, и следовательно удалить их оттуда. Но есть другой способ.

Необходимый disclaimer: всё, что вы делаете со своей системой — на ваш страх и риск. Делайте бэкапы перед экспериментами 🙂

Собственно, процесс удаления состоит из двух шагов:

  1. Запускаем PowerShell с правами администратора
  2. Выполняем команду вида «Get-AppxPackage *photo* | Remove-AppxPackage«, где между звёздочками укажите название Windows App, которое вы хотите удалить. После нажатия Enter приложение будет удалено из системы.

Простыми словами о Big O (Time Complexity)

Есть у программистов понятие «временная сложность» (time complexity or Big O) для сравнительной оценки эффективности алгоритма.

К примеру, для некоторой структуры может быть линейное время доступа (искомый элемент либо встретится сразу, либо он может быть в самом конце, и если структура очень большая (n — это число элементов), а элемент в самом конце, то поиск может быть долгим. Обычно рассматривают время доступа в среднем и худшем случае. Big O — обозначение верхней границы, т.е. худшего случая. Для нашего примера O(n).

Также есть константное время доступа (например, когда мы знаем индекс элемента в структуре и обращаемся к элементу по его индексу), тогда где бы элемент не находился, мы всегда можем получить к нему доступ за O(1).

Так вот, поездка на машине в снежную погоду — это скорее O(n) (неизвестно за сколько доберёшься из-за пробок), а на метро — O(1) (всегда примерно одинаковое время на дорогу).

Эффективность алгоритмов варьируется от O(1) до O(n!), их полный список можно найти на вики (ссылка в конце статьи).

В своё время мне помогли «войти в тему» следующие статьи, их я очень советую прочесть:

  • Знай сложности алгоритмов — Краткая шпаргалка по сложности алгоритмов. Теперь вам будет проще выбрать наиболее эффективный тип данных и алгоритм, подходящий под ваши задачи.
  • Введение в анализ сложности алгоритмов — Лёгкий для чтения и понимания материал. Идеально, чтобы начать разбираться во всех этих алгоритмах и «читать» их сложность. Обязательно прочтите все части.
  • Big O notation — Orders of common functions — не пугайтесь длинного списка, просто запомните что сложность от O(1) до O(n) норм, а всё что больше — уже не норм.

Python: передача значения переменной в контексте экземпляра класса

Пример ниже показывает как в Python реализована передача значений между методами используя контекст экземпляра класса (т.е., когда мы порождаем переменную в выражении «c = A()», обращаясь к ней, мы обращаемся к экземпляру класса).

Как известно, в Python функции могут существовать вне класса, в этом случае в параметрах такой функции может ничего не передаваться. Однако, когда мы определяем функцию внутри класса, первым параметром идёт «self«, т.е. ссылка на контекст экземпляра класса, и такую функцию мы уже будем называть методом. Эта ссылка неявно передаётся в метод интерпретатором каждый раз когда мы вызываем метод, таким образом нам не нужно указывать это значение самостоятельно.

class A:
    list1 = []

    def method_a(self):
        self.list1 = [1, 2, 3]

    def method_b(self):
        print(self.list1)

Теперь запускаем код в интерпретаторе

   # create instance of class A() and name the instance 'c'
c = A()
   # call method_a() for instance 'c', this will set value to list1 on the instance-wide
c.method_a()
   # call mathod_b() for instance 'c', this will get value of list1 from instance
c.method_b()
>>> [1, 2, 3]
   # we can also get the value of 'list1' by calling the attribute of instance 'c'
c.list1
>>> [1, 2, 3]

Это свойство Python, как объектно-ориентированный языка, позволяет передавать значения из одного тестового метода в другой тестовый метод.

Бесплатный доступ: все курсы DataCamp и LinkedIn

Компания Microsoft в очередной раз преподнесла подарок всем любителям онлайн-курсов. Если раньше можно было получить бесплатный 3-месячный доступ к полной базе курсов Pluralsight, то теперь из аккаунта Visual Studio Dev Essentials (если его у вас ещё нет, то заведите — это бесплатно) можно активировать ваучеры на бесплатную 2-месячную подписку на DataCamp и 3-месячную подписку на LinkedIn Premium.

Активировать их можно в любое удобное время, скорее всего эта «акция» будет довольно продолжительной, вы можете активировать подписки как одновременно, так и по очереди, по мере необходимости.

Чем интересны перечисленные MOOC площадки?

  • Data Camp (обработка и анализ данных, искусственный интеллект, Python, R)
  • LinkedIn Premium (для бизнеса, технических и творческих специалистов)

Бесплатная книга: Selenium WebDriver

Хороший источник информации на русском языке по работе с Selenium WebDriver, с примерами кода на Java. Книгу на GitBooks можно смотреть онлайн (зелёная кнопка Read), а также скачать в популярных форматах (PDF/ePub/Mobi).

https://www.gitbook.com/book/kreisfahrer/selenium-webdriver/details

Case Study: JUnit4, Selenium WebDriver and Allure

I just recently made an example project which shows the abilities of automated testing using JUnit4, Selenium WebDriver and Allure.

This relatively simple project with code written on Java requires only Maven to run, it works on Internet Explorer, however you may tweek it to work on any Webdriver compatible browser (both desktop and mobile). Allure itself could be tuned to use most using automated testing framework, so not only JUnit is supported. Worth to note, you may import project with your Java IDE and use it as base for your experiments.

The source code, including project configuration pom.xml, as well as setup and usage guide are available on my GitHub space:
https://github.com/niki4/automated-testing-yandex-market-example

OWASP Top 10 2017 RC2 Final has been published

A second release candidate for the list of Most Critical types of vulnerabilities/risks for Web Apps by version of OWASP, has been published recently on their GitHub space.

There was significant changes since the previous OWASP Top 10 2013 list: some threats are not so actual these days, but another ones arose (such as XML External Entity (XXE), Insecure Deserealization, and Insufficient Logging & Monitoring).

The RC2 has Final postfix in its name meaning the document is ready to review and investigation.

Читать далее

Kali Linux 2017.2 Release

A state-of-art Linux build for all those who interested in security testing has been upgraded. For more details, including what’s new and upgrade instructions please proceed the link https://www.kali.org/news/kali-linux-2017-2-release/

Microservice Testing. Introduction.

A good intro by Nathan Peck into Understanding an architecture and quality processes within the projects for microservice apps development.

https://medium.com/@nathankpeck/microservice-testing-introduction-347d2f74095e

Another good article is a «Testing Strategies in a Microservice Architecture»:
https://martinfowler.com/articles/microservice-testing/