Как стать автором
Обновить
2
0

Пользователь

Отправить сообщение

Что именно происходит, когда пользователь набирает в адресной строке google.com? Часть 1

Время на прочтение7 мин
Количество просмотров131K
Перевод первой части материала с github, обстоятельно объясняющего работу интернета: что именно происходит, когда пользователь набирает в адресной строке google.com?

Кнопка «ввод» возвращается в исходное положение


Для начала отсчёта выберем момент, когда кнопка «ввод» утоплена. В этот момент замыкается контур, отвечающий за эту кнопку. Небольшой ток проходит по логическим контурам клавиатуры. Они сканируют состояние всех переключателей, гасят паразитные электрические импульсы, и преобразовывают нажатие в код клавиши 13. Контроллер кодирует код для передачи в компьютер. Теперь это почти всегда делается через USB или Bluetooth, а раньше в процессе участвовали PS/2 или ADB.
Читать дальше →
Всего голосов 83: ↑65 и ↓18+47
Комментарии44

«Умный дом» собственными руками v2

Время на прочтение5 мин
Количество просмотров89K
Добрый день, уважаемый %habrausername%!

Судя по предыдущим постам, многие из вас интересуются hand-made автоматизацей своего жилища. Я долго собирался с мыслями и идеями по итогам построения первого «умного дома» и теперь хочу поделиться своими наработками с вами.
Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии57

Systemd за пять минут

Время на прочтение4 мин
Количество просмотров641K
Наша компания занимается администрированием веб-серверов на базе CentOS. Довольно часто наши клиенты используют веб-приложения на базе python, ruby или java. Для автозапуска подобных приложений есть готовые шаблоны для написания стартап-скриптов. Но прогресс не стоит на месте, вышел уже второй релиз CentOS 7 и, следуя старой традиции «не ставить dot-zero релизы на продакшен», мы начинаем предлагать клиентам сервера на базе CentOS 7.1 (1503).

В CentOS7, так же как и в его родителе RHEL7, используется systemd — менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации и много всего прочего.

image

Огромный монстр с множеством возможностей, гибкими настройками и мегабайтами документации…

Но что делать, если стоит задача быстро-быстро, вот прямо вчера, сделать автозапуск некоего сервиса?
Давайте выжмем из документации минимально необходимый набор информации для создания простых старт-стоп скриптов.
Знакомство с systemd
Всего голосов 70: ↑66 и ↓4+62
Комментарии58

Основы компьютерных сетей. Тема №1. Основные сетевые термины и сетевые модели

Время на прочтение14 мин
Количество просмотров1.4M
Всем привет. На днях возникла идея написать статьи про основы компьютерных сетей, разобрать работу самых важных протоколов и как строятся сети простым языком. Заинтересовавшихся приглашаю под кат.


Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии61

Приемы написания скриптов в Bash

Время на прочтение7 мин
Количество просмотров173K
Администраторам Linux писать скрипты на Bash приходится регулярно. Ниже я привожу советы, как можно ускорить эту работу, а также повысить надежность скриптов.

Совет 1

Не пишите скриптов, которые выполняют действия ничего не спрашивая. Такие скрипты нужны довольно редко. А вот всевозможного «добра» для копирования, синхронизации, запуска чего-либо, хоть отбавляй. И если в любимом Midnight Commander Вы вдруг нажали не на тот скрипт, то с системой может произойти все что угодно. Это как правила дорожного движения — «написано кровью».

Совет 2

Отталкиваясь от предыдущего, в начало каждого скрипта неплохо помещать что-то вроде:
read -n 1 -p "Ты уверен, что хочешь запустить это (y/[a]): " AMSURE 
[ "$AMSURE" = "y" ] || exit
echo "" 1>&2
Команда echo, кстати, здесь нужна потому, что после нажатия кнопки <y> у вас не будет перевода строки, следовательно, следующий любой вывод пойдет в эту же строку.

Совет 3

Это ключевой совет из всех. Для того, чтобы не писать каждый раз одно и то же — пользуйтесь библиотеками функций. Прочитав много статей по Bash, я вынужден констатировать, что этой теме уделяется мало внимания. Возможно в силу очевидности. Однако я считаю необходимым напомнить об этом. Итак.
Заведите свою библиотеку функций, например myfunc.sh и положите ее, например в /usr/bin. При написании скриптов она не только поможет сократить ваш труд, но и позволит одним махом доработать множество скриптов, если Вы улучшите какую-либо функцию.
Например, в свете совета 2 можно написать такую функцию:
Читать дальше →
Всего голосов 121: ↑83 и ↓38+45
Комментарии46

ACL: списки контроля доступа в Cisco IOS

Время на прочтение9 мин
Количество просмотров571K
Сегодня я расскажу вам о том, как отфильтровать трафик в сети с помощью списков контроля доступа. Рассмотрим как они работают соответственно, что собой представляют, для чего предназначены. Позже я покажу как они настраиваются в Cisco IOS и выложу архив с лабораторными работами для закрепления ваших знаний.

Введение


ACL (Access Control List) — это набор текстовых выражений, которые что-то разрешают, либо что-то запрещают. Обычно ACL разрешает или запрещает IP-пакеты, но помимо всего прочего он может заглядывать внутрь IP-пакета, просматривать тип пакета, TCP и UDP порты. Также ACL существует для различных сетевых протоколов (IP, IPX, AppleTalk и так далее). В основном применение списков доступа рассматривают с точки зрения пакетной фильтрации, то есть пакетная фильтрация необходима в тех ситуациях, когда у вас стоит оборудование на границе Интернет и вашей частной сети и нужно отфильтровать ненужный трафик.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии35

TensorFlow: машинное обучение от Google, теперь – умнее и для всех

Время на прочтение2 мин
Количество просмотров61K
Всего-то пару лет назад мы не могли общаться с приложениями Google сквозь уличный шум, не переводили русские надписи в Google Translate и не искали фото того самого лабрадудля в Google Photos, только лишь о нём услышав. Дело в том, что наши приложения были тогда недостаточно умны. Что ж, очень быстро они стали значительно, значительно умнее. Сегодня, благодаря технологии машинного обучения, все эти замечательные штуки, равно как и многое другое и более серьёзное, мы можем делать играючи.

В общем, встречайте: мы создали принципиально новую систему машинного обучения по имени TensorFlow. TensorFlow быстрее, умнее и гибче в сравнении с нашей предыдущей технологией (DistBelief, с 2011, та самая, что распознавала кошку без учителя), благодаря чему стало значительно проще адаптировать её к использованию в новых продуктах и исследовательских проектах. TensorFlow – высокомасштабируемая система машинного обучения, способная работать как на простом смартфоне, так и на тысячах узлов в центрах обработки данных. Мы используем TensorFlow для всего спектра наших задач, от распознавания речи до автоответчика в Inbox и поиска в Google Photos. Такая гибкость позволяет нам конструировать и тренировать нейросетки до 5 раз быстрее в сравнении с нашей старой платформой, так что мы действительно можем использовать новую технологию значительно оперативнее.

image

Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии30

10 дистрибутивов Linux специального назначения

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

1. Parted Magic OS: дистрибутив для восстановления дисков и работы с разделами, который поддерживает более десяти файловых систем и включает различные утилиты для «переноса, копирования, создания, удаления, расширения и сжатия дисковых разделов. Клонирование дисков и осуществление полного бэкапа. Тестирование дисков на возможность сбоя в будущем. Поиск сбойных секторов. Тестирование производительности компьютера. Безопасная полная очистка диска без возможности восстановления. Доступ к незагружаемым HDD для восстановления важных данных».


Читать дальше →
Всего голосов 146: ↑121 и ↓25+96
Комментарии110

Удачная модель ветвления для Git

Время на прочтение10 мин
Количество просмотров987K
Перевод статьи Vincent Driessen: A successful Git branching model

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



В качестве инструмента управления версиями всего исходного кода она использует Git.

Читать дальше →
Всего голосов 180: ↑171 и ↓9+162
Комментарии105

Как облегчить работу в терминале для новичков? Ответ — CLI Companion!

Время на прочтение1 мин
Количество просмотров4.3K
image

CLI Companion — это своеобразная шпаргалка для новичков линукса, по работе в терминале, выполненная само собой в графическом интерфейсе.
Читать дальше →
Всего голосов 137: ↑126 и ↓11+115
Комментарии61

Организация автоматизированного тестирования GUI

Время на прочтение5 мин
Количество просмотров15K
При разработке мы стараемся покрывать наш код не только матом, но и unit тестами. Однако все покрыть тестами не всегда получается. К тому же, остается GUI, для которого написание тестов довольно трудоемкая работа. При всех этих проблемах неизменным остается требование, что каждый следующий камит в репозиторий не должен портить уже существующий функционал.

В этой статье я хочу рассказать какой инструментарий мы используем для тестирования наших desktop приложений, написанных на Qt.

Пол года назад в ходе исследования инструментов для тестирования GUI в поле моего зрения попал продукт Squish компании froglogic. Из плюсов данного решения можно отметить следующие:

  • тесная дружба Squish c классами Qt (в том числе и itemы в QGraphiscScene);
  • кроссплатформенность;
  • поддержка скриптовых языков (JavaScript, Python);
  • автоматизированная генерация текста теста;
  • удобная система запуска тестов из консоли.

Читать дальше
Всего голосов 36: ↑34 и ↓2+32
Комментарии21

SpiderTest: используй силу CI

Время на прочтение5 мин
Количество просмотров7.7K


Эта статья является продолжением SpiderTest: Автотесты своими руками. Однако, первая часть обзора на это приложение была больше ориентирована на десктопный интерфейс. В этой же хотелось бы поговорить об экзотике: связи тестов с CI-server’ом и GitHub.
Может возникнуть вопрос: «Зачем вообще все это нужно? Мы написали тест, прогнали его в нужных браузерах и нам достаточно» и в целом он довольно обоснованный! Действительно, для обычного тестирования, запуска автотестов из самого приложения SpiderTest в большинстве случаев бывает достаточно. Но что делать, если мы хотим запустить тесты в IE9-11, Opera, FireFox и Google Chrome разных версий? На одной машине это сделать невозможно, а создавать кучу виртуальных машин и запускать по очереди в каждой утомительно (и вообще это костыль).
А если мы хотим провести дымовое тестирование? Или хотим запускать тесты не только в разных браузерах, но и в разных операционных системах (Windows OS, Linux OS)?
Самый оптимальный ответ на поставленные выше вопросы – использовать сервер непрерывной интеграции. В этой статье я рассмотрю настройку SpiderTest и Jenkins. Справедливости ради стоит сказать, что запускать тесты можно и на bamboo, и на teamcity, но Jenkins прост и бесплатен, поэтому рассмотрим его.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Continuous Integration в 10 строках кода или зачем нужны BuildBot, Jenkins, TeamCity и подобные

Время на прочтение5 мин
Количество просмотров60K
Заметка рассчитана на тех, кто уже знает, что такое Continuous Integration, но еще не выбрал, какую именно систему внедрить у себя.

Почитать, что такое CI и зачем его использовать, можно в Википедии и здесь же на Хабре: статья 1, статья 2, тег CI.

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


Началось с того, что в одной IT-компании случился такой разговор между коллегами из соседних отделов:

K1: У вас continuous integration есть?
K2: Есть, запускаются тесты на каждый коммит в транке.
К1: На чем работают?
К2: Собственный скрипт. Сейчас переходим на Buildbot.
К1: Может я чего-то не понимаю, но что там сложного? Апнуться, запустить тесты, отправить результат, зачем какой-то Buildbot, проще же самим написать?

Подобные рассуждения — «да зачем какое-то сторонее continuous integration, что там сложного, сейчас сами скриптик наваяем» — мне встречались достаточно часто, так что хочу на примере показать, чего скорее всего будет не хватать в простом «наколеночном» варианте.

Итак, пишем «свой маленький скриптик». У меня получилось уложиться в 10 строк, включая shebang, задание в кронтабе и настройку отправки писем.
Читать дальше →
Всего голосов 34: ↑26 и ↓8+18
Комментарии11

Пишем своё первое приложение на Android

Время на прочтение10 мин
Количество просмотров1.8M

Предисловие


Цель данного поста — с одной стороны поделиться своим успешным опытом старта разработки приложений на платформе Android и с другой стороны поспособствовать развитию рынка софта для этой замечательной и бурно растущей платформы за счёт (без ложной скромности скажу) возможно Вас, прочитавших данный пост. В сети, конечно, можно найти материалы на тему разработки приложения «чуть сложнее, чем helloworld», но как правило они разрозненные и в них не описываются различные мелкие подводные камешки. В данном посте мы рассмотрим полный цикл разработки приложения, начиная с чистого компьютера до готового apk-файла. Под катом скрины.
Читать дальше →
Всего голосов 138: ↑123 и ↓15+108
Комментарии99

Каверзные сетевые вопросы

Время на прочтение14 мин
Количество просмотров226K
Давно была идея собрать воедино интересные вопросы, касающиеся сетей.

Объединяет их то, что все они довольно простые, но мы подчас о них не задумываемся (я во всяком случае о них не задумывался).
В общем я их собрал, подбил, нашёл ответы.
Итак, блиц опрос:

Начнём с самых низких уровней и с самых простых вопросов



В1. Почему для витой пары выбран такой странный порядок: синяя пара на 4-5, разрывая зелёную, которая на 3, 6?




Ответ
О1: Сделано это в угоду двухконтактному телефонному разъёму. Таким образом, например, в патч-панель можно вставить как телефонный кабель, так и витую пару.
Можно даже через один кабель вывести и сеть и телефонию, но я вам этого не говорил!

habrahabr.ru/post/158177.


В2. В стандарте Ethernet между кадрами всегда имеется промежуток, называемый IFG (Inter Frame Gap) длиною 12 байтов. Для чего он нужен, и почему он присутствует в современных стандартах?

Читать дальше →
Всего голосов 166: ↑153 и ↓13+140
Комментарии209

Теория радиоволн: антенны

Время на прочтение4 мин
Количество просмотров408K
image

Помимо свойств радиоволн, необходимо тщательно подбирать антенны, для достижения максимальных показателей при приеме/передаче сигнала.
Давайте ближе познакомимся с различными типами антенн и их предназначением.

Читать дальше →
Всего голосов 104: ↑99 и ↓5+94
Комментарии45

Wi-Fi сети: проникновение и защита. 1) Матчасть

Время на прочтение9 мин
Количество просмотров623K


Синоптики предсказывают, что к 2016 году наступит второй ледниковый период трафик в беспроводных сетях на 10% превзойдёт трафик в проводном Ethernet. При этом от года в год частных точек доступа становится примерно на 20% больше.

При таком тренде не может не радовать то, что 80% владельцев сетей не меняют пароли доступа по умолчанию. В их число входят и сети компаний.

Этим циклом статей я хочу собрать воедино описания существующих технологии защит, их проблемы и способы обхода, таким образом, что в конце читатель сам сможет сказать, как сделать свою сеть непробиваемой, и даже наглядно продемонстрировать проблемы на примере незадачливого соседа (do not try this at home, kids). Практическая сторона взлома будет освещена с помощью Kali Linux (бывший Backtrack 5) в следующих частях.

Статья по мере написания выросла с 5 страниц до 40, поэтому я решил разбить её на части. Этот цикл — не просто инструкция, как нужно и не нужно делать, а подробное объяснение причин для этого. Ну, а кто хочет инструкций — они такие:
Используйте WPA2-PSK-CCMP с паролем от 12 символов a-z (2000+ лет перебора на ATI-кластере). Измените имя сети по умолчанию на нечто уникальное (защита от rainbow-таблиц). Отключите WPS (достаточно перебрать 10000 комбинаций PIN). Не полагайтесь на MAC-фильтрацию и скрытие SSID.

Оглавление:
1) Матчасть
2) Kali. Скрытие SSID. MAC-фильтрация. WPS
3) WPA. OpenCL/CUDA. Статистика подбора
Как работают WEP, WPA и WPS
Всего голосов 185: ↑176 и ↓9+167
Комментарии76

XSS глазами злоумышленника

Время на прочтение4 мин
Количество просмотров265K
Что такое XSS и как от него защитится все уже давно знают, поэтому буду краток. XSS это возможность злоумышленника определенным образом (ссылку на возможные варианты смотрите в конце статьи) интегрировать в страницу сайта-жертвы скрипт, который будет выполнен при ее посещении.

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

http://www.site.com/page.php?var=<script>alert('xss');</script>


Как-то не очень страшно :) Чем же действительно может быть опасной данная уязвимость?
Читать дальше →
Всего голосов 93: ↑87 и ↓6+81
Комментарии41

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность