Архив рубрики: Публикации

Почему новичкам следует изучать Python

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

На мой взгляд, самое главное, что вам нужно сделать в программировании — это выбрать правильный инструмент для работы. Вторая по важности вещь — выбрать инструмент, с которым вам наиболее удобно. Если бы я сказал, что вам подойдёт C++, потому что это самый быстрый язык, это не будет хорошим советом, если вы никогда не имели дело с управлением памятью или не писали свои структуры данных. Возможно, вы бы продирались сквозь него и получили плохой опыт.

Python, с другой стороны, решает многие проблемы за вас. Он работает заметно медленнее, чем C++, зато на нём гораздо проще писать. И как новичка вас вряд ли заботит его скорость, вы просто хотите сделать что-нибудь крутое и изучить основные понятия.

Итак, первое решение, которое вам нужно принять — какой язык вы хотите выучить. Почему из сотен языков новичку следует изучать Python? Тому есть несколько причин…

Простой синтаксис

Часть философии языка (как показано в PEP 20, “Дзен Python”), содержит следующее:

  • Красивое лучше, чем уродливое.
  • Простое лучше, чем сложное.
  • Читаемость имеет значение.

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

Давайте сравним синтаксис языков Python и C++ на простом примере ‘Hello, World’:

C++:

#include stdout

int main() {  
    std::cout << "Hello, world!n";
}

Python:

print('Hello, world!')  

Разница довольно значительна, хотя мы всего лишь распечатали строку в консоли. Теперь для большей наглядности сравним его с PHP:

Python:

x=1  
while x <=5:  
    print 'x is less than 5:' + str(x)
    x += 1

PHP:

<?php  
$x=1;
while($x<=5) {  
    echo "x is less than 5: $x";
    x++;
}
?>

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

Python:

def foo(x):  
    if x == 0:
        bar()
        baz()
    else:
        qux(x)
        foo(x - 1)

C:

void foo(int x)  
{
    if (x == 0) {
        bar();
        baz();
    } else {
        qux(x);
        foo(x - 1);
    }
}

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

С ключевыми словами is, not и with, хорошо написанный скрипт на Python можно читать почти как английский текст. Это особенно верно для условий в цикле if , которые бывает сложно прочесть, когда они разрастаются:

a = None
b = None

if a is not None and b is not None:
    print 'Foo!'
else:
    print 'Bar!'

Условное выражение выше гораздо яснее, чем обычное if ((a != null) && (b != null)).

Легко установить и начать работать

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

С Python, всё, что вам нужно — это загрузить и запустить установщик и выполнить python <your-script>.py. Не нужно никаких сложных структур каталогов.

Хотя это всё реже встречается в современных языках, компиляция кода может быть сложнее, чем вы думали (впрочем, это не обязательно плохо). Просто посмотрите на этот маленький makefile для C:

CC = gcc  
CFLAGS  = -g -Wall

TARGET = myprog

all: $(TARGET)

$(TARGET): $(TARGET).c
    $(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c

clean:  
    $(RM) $(TARGET)

Замечу, что это простой makefile. Этому я бы предпочёл Python в любом случае.

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

Огромная стандартная библиотека

Одно из наиболее знаменитых преимуществ Python — стандартная библиотека, и это не просто так. Она содержит более 300 модулей (в версии 3.5), от простейшего HTTP сервера (http.server) до баз данных (sqlite3), и сжатых библиотек (gzip).

Бóльшая часть того, вам захочется делать на Python, уже сделано за вас в стандартной библиотеке. Так что вы можете создавать крутые вещи без больших усилий, например приложения для машинного обучения. Мне постоянно приходится напоминать себе, что надо поискать модули, чтобы избежать переписывания кода самому. Поэтому перед тем, как вы попробуете написать библиотеку разбора адресов url, сначала проверьте, существует ли она!

Главное достоинство того, что код был написан до вас — знание того, что он тщательно протестирован и не содержит ошибок. Зачастую он был давно доступен и использовался крупнейшими компаниями (о них мы поговорим позже), так что вы знаете, через что он прошёл.

Сообщество

Большое, активное сообщество означает две вещи:

  • Много самописных библиотек
  • Много людей, готовых вам помочь

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

Python постоянно занимает высокие места в различных рейтингах, таких как Redmonk (#4) и Tiobe (#4). И что более важно, язык очень востребован работодателями. На графике ниже можно видеть (представлен Indeed), что Python — второй по этому показателю язык, что даёт вам возможность применить свои навыки программирования в работе.

Почему новичкам следует изучать Python

Легко отлаживать

Один из самых сложных навыков для новичка — это отладка. Именно здесь вы по-настоящему узнаёте язык и то, как он работает изнутри. Иногда у вас будут простые ошибки типа синтаксических, в других случаях они будут проявляться в 1 из 100 запусков вашей программы. Тут вам придётся ближе познакомиться со своим отладчиком и основными ошибками в языке. К счастью для вас, Python располагает хорошей системой обработки и отчётов об ошибках, чего нет у многих других языков.

Например, если что-то пойдёт на так в C++ (разыменование неправильного указателя, обращение к элементу вне массива и так далее), вам повезёт, если упадёт программа. В таком случае вы знаете, что где-то в ней есть проблема, но едва ли знаете где (а отладчики не всегда просты и понятны новичкам). Если вам не повезло и программа не упала (или падает в случайное время), вы получите непонятные и не очень очевидные ошибки.

Что не умеет делать Python

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

Как я упоминал несколько раз, Python медленный. Точнее, очень медленный по сравнению с компилируемыми языками наподобие C, C++ или Go. Дело в том, что есть несколько особенностей, которые замедляют язык, вроде динамической типизации или сборщика мусора. Таким образом, не нужно использовать чистый Python для обработки больших массивов данных, вместо этого вам нужно добавить код на C++.

Из-за сборки мусора в Python’s его нельзя применять для систем реального времени. Причина в том, что она запускается в непредсказуемое время, так что вы не можете знать, займёт ли ваша функция 1 мс или 100 мс. Тут получается слишком много неизвестных. Вместо него для программ реального времени вам потребуется язык с ручным управлением памятью, такой как C или C++.

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

Вывод

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

Какой язык вы изучали первым и почему? Сообщите в комментариях!

Сообщение Почему новичкам следует изучать Python появились сначала на GitJournal.

Google Search Navigator — расширенная клавиатура для навигации в Google поиске

Мы можем легко найти изображение кота в Интернете без необходимости искать «как найти изображение кота в Интернете» с помощью Google. В погоне за повышением навыков поиска в Google (!), Сегодня мы наткнулись на расширение браузера под названием “Google Search Navigator”. Он предлагает некоторые сочетания клавиш для улучшения поиска Google. Google уже представил экспериментальное Сочетание клавиш для навигации результатов поиска. К сожалению, похоже, что Google удалил эту функцию как в 2017-07-31. К счастью, разработчик создал это расширение для улучшения навигации с помощью клавиатуры в поиске Google. Этот плагин является свободным и открытым исходным кодом. Таким образом, вы можете получить код свободно по ссылке в GitHub, указанной в конце данного руководства.

В этом руководстве мы рассмотрим, как использовать расширение “Google Search Navigator”, чтобы улучшить свой опыт поиска в Google с помощью некоторых клавиш клавиатуры.

 

Расширенная навигация клавиатуры в Google Поиске

При написании этого руководства плагин Google Search navigator доступен для веб-браузеров Google Chrome и Mozilla Firefox. Установите его из следующих ссылок в зависимости от используемого вами браузера.

  • Для Google Chrome / Chromium: Установите его из Интернет — магазина Chrome.
  • Для Mozilla Firefox: Установите из дополнений для Firefox.

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

Google Search Navigator - расширенная клавиатура для навигации в Google поиске

 

Теперь вы можете эффективно использовать поиск на Google с помощью привязок. Теперь позвольте нам показать вам несколько примеров, чтобы вы могли лучше понять его. Например, мы идем искать какую нибудь книгу.

Заметили ли вы стрелку в первом результате, отмеченным красным цветом прямоугольником? Да! Плагин Google Search Navigator автоматически размещает кнопку со стрелкой в результате поиска. Для того, чтобы перейти к следующему результату, просто нажмите клавишу стрелку ВНИЗ или J на клавиатуре. Для перехода к предыдущему результату, нажмите стрелку UP или k. Чтобы вернуться в окно поиска, нажмите клавишу / (косая черта вперед рядом с клавишей SHIFT) клавиши ESC и измените условие поиска, если хотите.

Чтобы открыть результат поиска в текущем окне, нажмите кнопку ENTER или Space. В некоторых случаях вы можете захотеть перейти к более одному результату поиска. Если это так, нажмите Ctrl + Enter или SUPER key+Enter (клавиша Windows) или Ctrl + Space, чтобы открыть выбранный результат на фоновой вкладки. И нажмите Ctrl+Shift+Enter или Super key+Shift+Enter или Ctrl+Shift+Space, чтобы открыть выбранный результат в новом окне/вкладке.

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

Аналогично, для отображения результатов видео нажмите v, для карт нажмите m, для новостей n.

Вот полный список поддерживаемых в настоящее время сочетания клавиш.

  • (стрелка вниз) или j: Выбрать следующий результат поиска ..
  • (стрелка вверх) или к: Выбрать предыдущий предыдущий результат.
  • / Или клавиша ESC: Фокус на поле ввода поиска.
  • ENTER или Space: Переход к выбранному результату.
  • Ctrl + Enter или SUPER key + Enter (клавиша Windows) или Ctrl + Space: Открыть выбранный результат на фоне вкладки.
  • Ctrl + Shift + Enter или SUPER key + Shift + Enter или Ctrl + Shift + Space: Открыть выбранный результат в новом окне / вкладке.
  • (стрелка влево) или h: Переход к предыдущей странице результатов поиска.
  • (Стрелка вправо) или l: Переход к следующей странице результатов поиска.
  • или s: Перейдите на вкладку Все (вкладку поиска по умолчанию).
  • a: Перейти на вкладку Изображения.
  • v: Перейти на вкладку Видео.
  • m: Перейти на вкладку Карты.
  • n: Перейти на вкладку Новости.

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

Вы можете изменить настройки в соответствии с вашими желаниями. Для этого щелкните правой кнопкой мыши на значке плагина Google Search Navigator на панели инструментов и выбрать параметры. Вы увидите следующее окно. Измените сочетание клавиш, как вы хотите, и нажмите кнопку Сохранить, чтобы применить изменения.

Google Search Navigator - расширенная клавиатура для навигации в Google поиске

 

Вывод

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

И это все. Надеюсь это вам поможет.



2018-04-20T09:41:29
Программное обеспечение

Ракетный ускоритель: как установить и настроить Wi-Fi адаптер D-Link DWA-125

Сегодня трудно найти портативное устройство, которое бы не было оснащено модулем беспроводной связи: планшеты, смартфоны, ноутбуки и даже «умные розетки» оснащены Wi-Fi. Тем не менее и для автономных Wi-Fi адаптеров с интерфейсом USB сохранилась своя ниша. Это стационарные компьютеры, где Wi-Fi присутствует только на очень дорогих версиях материнских плат, сетевые медиаплееры, а также Smart-TV, которые оснащены только проводной сетевой картой стандарта Ethernet. Для дооснащения таких устройств беспроводной связью отлично подойдёт адаптер D-LINK DWA-125: недорогой, компактный, с внутренними антеннами.

Читать

Рабочая лошадка интернета — как настроить роутер D-LINK DIR-300

Сетевое оборудование компании D-LINK хорошо известно как в России, так и за её пределами. В широкой линейке устройств особняком стоит беспроводной маршрутизатор начального уровня — D-LINK DIR-300. Благодаря невысокой цене, отличной надёжности и неплохим техническим характеристикам он стал первым по-настоящему доступным домашним роутером Wi-Fi. Модель оказалась настолько удачной, что выпускается до сих пор. В чём различия между роутерами разных годов выпуска, как их подключить и настроить для максимально эффективной работы — тема нашей статьи.

Читать

Как настроить карманный роутер TP-Link TL-WR702N

Карманные роутеры с Ethernet-входом тоже есть, хотя их и мало. Один из типичных представителей такого форм-фактора — мини-роутер TP-Link TL-WR702N.

Читать

DCShadow атака

 

DCShadow – это атака, которая пытается изменить существующие данные в Active Directory, используя законные API, которые используются контроллерами домена.

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

Первоначально он был введен Бенджамином Делпи и Винсент Ле Ту и является частью Рамок Митра.

Более подробную информацию об атаке, в том числе о презентации, можно найти на странице DCShadow.

Файл mimidrv.sys, который является частью Mimikatz, должен быть перенесен на рабочую станцию, которая будет играть роль DC.

Выполнение команды «! +» Будет регистрироваться и запускать службу с привилегиями уровня SYSTEM. «! Processtoken» получит маркер SYSTEM от службы до текущего сеанса Mimikatz, чтобы иметь соответствующие привилегии для реализации поддельного контроллера домена.

 !+

!processtoken 

Новый экземпляр Mimikatz должен быть запущен с правами администратора домена, которые будут использоваться для аутентификации с помощью законного контроллера домена и выталкивают изменения из RGE DA в законные.

Следующая команда проверит токен процесса.

 token::whoami 

Выполнение следующей команды из экземпляра Mimikatz, работающего с привилегиями SYSTEM, запустит минималистичную версию контроллера домена

 lsadump::dcshadow /object:test /attribute:url /value:pentestlab.blog 

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

 lsadump :: dcshadow / push 

Проверка свойств пользователя «test» будет проверять, что атрибут url изменился, чтобы включить новое значение, указывающее на успешную атаку DCShadow

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

Значение 512 является идентификатором безопасности (SID) для группы администраторов домена.

 lsadump :: dcshadow / object: test / attribute: primaryGroupID / значение: 512 

Пользователь «test» будет частью группы «Администратор домена». Это можно проверить, извлекая список администраторов домена.

Снимок экрана ниже иллюстрирует администраторов доменов до и после атаки DCShadow.

 net group "domain admins" /domain 

 

Вывод

Атака DCShadow предлагает различные возможности красной команде для достижения сохранения домена, манипулируя историей SID, паролем учетной записи krbtgt или добавляя пользователей к повышенным группам, таким как Domain и Enterprise Admins.

Несмотря на то, что для этой атаки требуются повышенные привилегии (DA), Никил Миттал обнаружил, что DCShadow можно проводить с точки зрения пользователя домена, у которого есть необходимые разрешения, чтобы избежать использования привилегий DA.

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

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

¯_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

 



2018-04-17T17:52:10
Закрытие уязвимостей