Как стать автором
Обновить
23
0
Александр @WarFair

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

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

Список книг по наступательной информационной безопасности

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

Grimoire ensorcele by naiiade

Любую достаточно развитую технологию можно сравнить с оружием: когда у врага есть ружье, а у тебя нет, поневоле хочется изменить баланс сил в свою пользу. В области IT-безопасности знания, передаваемые различными способами, и есть то самое оружие, использование которого ограничивается не столько нормами УК, сколько этическим выбором.

Невозможно стать профессионалом в области информационной безопасности, не понимая тонкостей проникновения и обнаружения уязвимостей. Все книги в сегодняшней подборке похожи на заряженную винтовку, которую хочется иметь в качестве защиты: они обязательны для изучения как начинающим исследователям безопасности, так и специалистам, желающим расширить границы знаний.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии13

Как я нашел лучший в мире язык программирования. Часть 2

Время на прочтение6 мин
Количество просмотров102K
Первая часть здесь. Продолжение:

Семь долбаных лет я ждал язык, который хоть как то ответит части моих желаний. За это время, и в фоновом режиме я препробывал всё. Всё — означает, всю херню общего назначения, и всю херню не совсем общего назначения. Нельзя прочувствовать язык только что-то прочитав про него и написав Hello World. Чтобы понять — надо хоть немного попрограммировать — написать какую нить вещь. И вот все это время, я в минуты отчаянья качал какой-нить “замечательный язык”, и пытался что-то написать. Какие-то вещи даже до сих пор крутятся в конторе (или крутились).
Читать дальше →
Всего голосов 155: ↑103 и ↓52+51
Комментарии119

Правительство готовит законопроект по «антипиратскому налогу» на Интернет

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

Никита Сергеевич продумывает все детали своей концепции

Первый вице-премьер Игорь Шувалов поручил сразу нескольким министерствам, включая Минкультуры, Минкомсвязи, Минэкономразвития, Минфину и Минюст, разработать законопроект по «антипиратскому налогу» на интернет. Этот законопроект, по плану, обяжет операторов связи платить фиксированный сбор в пользу правообладателей.

Интересно, что законопроект составляется на основе концепции, предложенной Российским союзом правообладателей (РСП), главой которого является известный многим из нас (и не только по кино) режиссер Никита Михалков. Концепцию Михалков презентовал лично Путину в прошлом месяце.

Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии78

Краткая история бессмертия

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

Физика не стоит на месте. В последнем эксперименте на Большом адронном коллайдере лептоны были подвергнуты интенсивной бомбардировке флуктуирующими протонами. В результате зафиксирован обрыв глюонной струны, сопровождаемый двойным излучением ранее неизвестного типа. Ученые затрудняются его идентифицировать.
Читать дальше →
Всего голосов 341: ↑216 и ↓125+91
Комментарии111

А давайте действительно заблокируем правительству доступ к сайтам?

Время на прочтение1 мин
Количество просмотров285K
Прочитал шутку-комментарий, где предлагалось закрыть электронному правительству доступ к сайту и возник вопрос «А почему бы и нет?».
Мизуразматики каждый день рыщут в поисках сайтов, которые бы да заблокировать, при этом сами пользуются тем же самым контентом.

image
Давайте же отлучим от наших интернетов!
Читать дальше →
Всего голосов 395: ↑345 и ↓50+295
Комментарии347

Методы расширения в С++

Время на прочтение4 мин
Количество просмотров30K
Несколько дней назад Бьёрн Страуструп опубликовал предложение N4174 комитету по стандартизации С++ названное "Call syntax: x.f(y) vs. f(x,y)". Вот вкратце его суть: объявить выражение x.f(y) (вызов для объекта х метода f с аргументом y) эквивалентным выражению f(x,y) (вызов функции f с аргументами x и y). Т.е.

x.f(y) означает:
  1. Попробовать вызвать x.f(y): если класс объекта х содержит метод f, который может принять аргумент y — используем этот метод.
  2. Если пункт №1 не удался — проверяем, существует ли функция f, которая может принять аргументы x и y. Если это так — используем её.
  3. Если не найдено ни того, ни другого — генерируем ошибку.

f(x,y) означает ровно то же самое:
  1. Попробовать вызвать x.f(y): если класс объекта х содержит метод f, который может принять аргумент y — используем этот метод.
  2. Если пункт №1 не удался — проверяем, существует ли функция f, которая может принять аргументы x и y. Если это так — используем её.
  3. Если не найдено ни того, ни другого — генерируем ошибку.

Таким образом мы получаем возможность писать методы расширения, о которых мечтали многие С++ программисты. Я считаю это предложение одним из самых важных в эволюции языка С++.
Читать дальше →
Всего голосов 72: ↑68 и ↓4+64
Комментарии77

Fail2ban [incremental]: Лучше, быстрее, надежнее

Время на прочтение9 мин
Количество просмотров157K
fail2ban image
Про fail2ban написано уже много, в том числе и на хабре. Эта статья немного о другом — как сделать защиту им еще надежнее и о еще пока неизвестных в широких кругах новых функциях fail2ban. Добавлю сразу — речь пойдет пока про development branch, хотя уже долго проверенный в бою.

Краткое вступление


В большинстве своем fail2ban устанавливается из дистрибутива (как правило это какая-нибудь стабильная старая версия) и настраивается по манам из интернета за несколько минут. Затем годами работает, без вмешательства админа. Нередко даже логи, за которыми вроде как следит fail2ban, не просматриваются.
Так вот, сподвигнуть на написание этого поста меня заставил случай, произошедший с одним сервером моего хорошего знакомого. Классика жанра — пришла абуза, за ней вторая и пошло поехало. Хорошо еще злоумышленник попался ленивый — логи не потер, да и повезло еще крупно, что logrotate был настроен, чтобы хранить логи месяцами.
Как дальше жить
Всего голосов 72: ↑71 и ↓1+70
Комментарии60

Пара полезных команд, которые могут пригодиться при DDoS и не только

Время на прочтение3 мин
Количество просмотров81K
В моем случае, в качестве frontend сервера, стоит nginx и формат access-лога имеет вид:

log_format main '$remote_addr — $remote_user [$time_local] "$host" "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" -> $upstream_response_time';

Что на выходе дает что-то вроде такой строки:

188.142.8.61 — - [14/Sep/2014:22:51:03 +0400] «www.mysite.ru» «GET / HTTP/1.1» 200 519 «6wwro6rq35muk.ru» «Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.191602; .NET CLR 3.5.191602; .NET CLR 3.0.191602» "-" -> 0.003

1. tail -f /var/log/nginx/nginx.access.log | cut -d ' ' -f 1 | logtop

Позволяет получить общую картину: распределение уникальных IP, с которых идут запросы, кол-во запросов с одного IP и т.д.
Самое ценное — что все это работает в режиме реального времени и можно мониторить ситуацию, внося какие-либо изменения в конфигурацию (например просто забанить ТОП 20 самых активных IP через iptables или временно ограничить географию запросов в nginx через GeoIP http://nginx.org/ru/docs/http/ngx_http_geoip_module.html).
Читать дальше →
Всего голосов 105: ↑101 и ↓4+97
Комментарии21

Дата судного дня или Microsoft наносит ответный удар

Время на прочтение1 мин
Количество просмотров84K
Решил проверить просрочку сертификатов ssl при изменении системного времени, переведя системные часы на 100 лет вперёд. Результат удивил…
Читать дальше →
Всего голосов 277: ↑171 и ↓106+65
Комментарии51

Практика IPv6 — домашняя сеть

Время на прочтение17 мин
Количество просмотров265K
Abstract: Рассказ про некоторые возможности IPv6 на примере конфигурации сложной домашней IPv6-сети. Включает в себя описания мультикаста, подробности настройки и отладки router advertisement, stateless DHCP и т.д. Описано для linux-системы. Помимо самой конфигурации мы внимательно обсудим некоторые понятия IPv6 в теоретическом плане, а так же некоторые приёмы при работе с IPv6.

Зачем IPv6?


Вполне понятный вопрос: почему я ношусь с IPv6 сейчас, когда от него сейчас нет практически никакой пользы?

Сейчас с IPv6 можно возиться совершенно безопасно, без каких-либо негативных последствий. Можно мирно разбираться в граблях и особенностях, иметь его неработающим месяцами и nobody cares. Я не планирую в свои старшие годы становиться зашоренным коболистом-консерватором, который всю жизнь писал кобол и больше ничего, и все новинки для него «чушь и ерунда». А вот мой досточтимый воображаемый конкурент, когда IPv6 станет продакт-реальностью, будет либо мне не конкурентом, либо мучительно и в состоянии дистресса разбираться с DAD, RA, temporary dynamic addresses и прочими странными вещами, которым посвящено 30+ RFC. А что IPv6 станет основным протоколом ещё при моей жизни — это очевидно, так как альтернатив нет (даже если бы они были, их внедрение — это количество усилий бОльшее, чем завершение внедрения IPv6, то есть любая альтернатива всегда будет отставать). И что адреса таки заканчиваются видно, по тому, как процесс управления ими перешёл во вторую стадию — стадию вторичного рынка. Когда свободные резервы спекуляций и хомячаяния адресов закончится, начнётся этап суровой консолидации — то есть выкидывание всего неважного с адресов, перенос всех «на один адрес» и т.д. Примерно в это время IPv6 начнёт использоваться для реальной работы.

Впрочем, рассказ не про будущее IPv6, а про практику работы с ним. В Санкт-Петербурге есть такой провайдер — Tierа. И я их домашний пользователь. Это один из немногих провайдеров, или, может быть, единственный в городе, кто предоставляет IPv6 домашним пользователям. Пользователю выделяется один IPv6 адрес (для маршрутизатора или компьютера), плюс /64 сетка для всего остального (то есть в четыре миллиарда раз больше адресов, чем всего IPv4 адресов быть может — и всё это в одни руки). Я попробую не просто описать «как настроить IPv6», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.

Структура сети:

(Оригиналы картинок: github.com/amarao/dia_schemes)
  • 1, 2, 3 — устройства в локальной сети, работают по WiFi
  • 4 — WiFi-роутер, принужденный к работе в роле access point (bridge), то есть коммутатора между WiFi и LAN
  • 5 — eth3 сетевой интерфейс, который раздаёт интернет в локальной сети
  • 6 — мой домашний компьютер (основной) — desunote.ru, который раздачей интернета и занимается, то есть работает маршрутизатором
  • 7 — eth2, интерфейс подключения к сети Tiera

Читать дальше →
Всего голосов 127: ↑124 и ↓3+121
Комментарии126

Node.js + Chromium = node-webkit: ещё более перспективный вариант второго шага эволюции веборазработчика

Время на прочтение3 мин
Количество просмотров47K
Предисловие от переводчика.  В постскриптуме к моей вчерашней блогозаписи я указал, что AppJS — это не единственное такое средство, которое позволяет создавать приложения с GUI (графическим интерфейсом пользователя) при помощи вебоподобных методов разработки на языках HTML, CSS и JavaScript с использованием движка Node.js. Естественной иллюстрацией к этому постскриптуму является нижеследующий перевод гитхабовской страницы проекта node-webkit. И сразу скажу: я предвижу заранее, что непредвзятый взгляд ваш сочтёт node-webkit ещё более удобным и развитым средством, чем AppJS.



Введение


node-webkit — среда для запуска приложений, основанная на Chromium и Node.js. При помощи node-webkit можно создавать традиционные графические приложения посредством HTML и JavaScript. Также node-webkit позволяет вызывать модули Node.js прямо из DOM и тем обеспечивает новый способ создания таких приложений и употребления веботехнологий в них.

node-webkit создан и разрабатывается в Интеловском Центре технологий с открытым исходным кодом (Intel Open Source Technology Center).

Введение в node-webkit (слайды).

Достоинства


  • Приложения создаются при помощи современных HTML5, CSS3, JS и WebGL.
     
  • Полная поддержка API Node.js и созданных другими разработчиками модулей.
     
  • Вызов API Node.js без потерь в производительности.
     
  • Лёгкость упаковки и распространения приложений.

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

test.it — тестирование JavaScript или мой велосипед с вложенностью и подробным выводом

Время на прочтение8 мин
Количество просмотров20K
Внимание! В статье содержатся примеры работы до релизной (до v1.0.0) версии библиотеки.
Скоро выйдет ещё одна статья. Эта только в качестве ознакомления. Всю необходимую для использования библиотеки информацию можно получить в README и комментариях в коде.


Картинка для привлечения внимания:
test.it habrahabr
Я — начинающий веб-разработчик. И не так давно мне захотелось научиться работать так, как это делают настоящие программисты.
Под этим я понимал 3 основных элемента:
  1. Использование системы контроля версий.
  2. Грамотное комментирование кода.
  3. TDD или хотя бы простое юнит-тестирование кода.

Для первого пришлось освоить азы git, и создать свой первый репозиторий на github. Для второго выбрал JsDoc, из-за которого пришлось перебраться с notepad++ на sublime text (только там был соответствующий плагин).
А вот с третьим, неожиданно для меня, возникли серьёзные трудности.
с которыми я решил бороться велосипедом
Всего голосов 41: ↑37 и ↓4+33
Комментарии55

Почему веб-приложения на мобильных платформах работают медленно

Время на прочтение34 мин
Количество просмотров66K
От переводчика
Это перевод статьи Drew Crawford «Why mobile web apps are slow», опубликованной 09 июля 2013. Статья очень интересная, но большая — ошибки возможны — прошу простить и присылать замечания в личку.
Поскольку затронута острая тема, прошу заметить, что переводчик не обязательно разделяет мнение автора статьи!
При переводе текст слегка видоизменялся, поскольку прямой перевод не всегда понятно передает смысл. Для перевода термина «native code» был использован англицизм «нативный код», который понятнее и короче, чем «родной для платформы код». Термин «word processing» переводится как «верстка текста», хотя это немного сужает первоначальный смысл. Термин managed код («управляемый код») не был переведен, так как удачного перевод (на взгляд переводчика) не существует. Под «терминированием» приложения подразумевается его принудительное завершение операционной системой.
Повествование в статье ведется от первого лица: автора статьи.


Читать статью
Всего голосов 156: ↑150 и ↓6+144
Комментарии74

Знай сложности алгоритмов

Время на прочтение2 мин
Количество просмотров987K
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Всего голосов 312: ↑296 и ↓16+280
Комментарии99

Как начать писать тесты за 10 шагов по 10 минут

Время на прочтение7 мин
Количество просмотров78K
Дайте-ка угадаю: вы согласны с тем, что писать тесты — это хорошо. Это повышает надежность системы, ускоряет разработку, проект с хорошим тестовым покрытием поддерживать легко и приятно, а TDD — это вообще почти идеал процесса разработки. Но не у вас в проекте. То есть, оно клёво, но, к сожалению, сейчас столько работы — просто завал. Куча задач, одних только критических багов — два десятка, плюс надо срочно дописать этот модуль и еще написать письмо заказчику… Так что тесты, наверное, будем прикручивать уже в конце, если время останется. Или в следующем проекте. Нет, ну там точно полегче будет. Скорее всего.

Как, узнали ситуацию?

Так вот — чушь всё это. Сфера ИТ — бесконечна, как вселенная, куча работы будет всегда. Можно или начать писать тесты прямо сейчас, или не сделать этого никогда. Я тут набросал короткий план, как начать это делать за 10 шагов, по шагу в день, по 10 минут на шаг. И когда я говорю «10 минут» я имею в виду не «3 с половиной часа» и не «ну сколько-то времени, лучше побольше», а именно 600 секунд. Если у вас нету в день 600 секунд свободного времени — срочно меняйте проект, работу, профессию, страну проживания (нужное подчеркнуть), потому что это не жизнь, а каторга какая-то. Поехали.
Читать дальше →
Всего голосов 84: ↑72 и ↓12+60
Комментарии63

Паттерны ООП в метафорах

Время на прочтение17 мин
Количество просмотров558K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Всего голосов 214: ↑201 и ↓13+188
Комментарии86

Синхронизация файлов между компьютерами в кластере

Время на прочтение1 мин
Количество просмотров7K
Мне нужно синхронизировать директорию между несколькими компьютерами, причем это может быть два комьпютера, а может быть и больше.

Файлы могут записываться в эту директорию на любом из них и в течении некоторого времени эти файлы должны оказываться на других.

Ну, как пример — есть кластер из нескольких веб или application серверов и пользователь делает аплоад файлу. Если тот же пользователь через 5 минут зайдет на сайт с другого компьютера и лоад балансер ему даст другой сервер из кластера, он должен всё равно увидеть загруженный им файл.

Как это можно сделать?

Я смотрел на простой NFS — но там получается есть single point of failure — компьютер, на котором этот диск родной
Я смотрел на xtreemeFS — но просто не получается его настроить работать с replication

Какие еще есть решения?

Спасибо
Всего голосов 23: ↑5 и ↓18-13
Комментарии37

Почему стоит изучить Clojure?

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

Что такое хороший язык программирования? Какими качествами и характеристиками он должен обладать? Ответ дать сложно. Вот одно из возможных определений: хороший ЯП должен хорошо решать возложенные на него задачи. Ведь ЯП — лишь инструмент в руках программиста. А инструмент обязан помогать нам в работе. В конце концов, это же и есть причина его создания. Разные ЯП стараются решать разные проблемы (с переменным успехом). Цель, которая ставилась при проектировании Clojure — сделать написанные нами программы простыми. И, как следствие, ускорить их создание, тестирование. А главное, уменьшить время на их понимание, изменение и сопровождение.
Читать дальше →
Всего голосов 112: ↑108 и ↓4+104
Комментарии55

DNS сервер BIND (теория)

Время на прочтение21 мин
Количество просмотров489K
Основная цель DNS — это отображение доменных имен в IP адреса и наоборот — IP в DNS. В статье я рассмотрю работу DNS сервера BIND (Berkeley Internet Name Domain, ранее: Berkeley Internet Name Daemon), как сАмого (не побоюсь этого слова) распространенного. BIND входит в состав любого дистрибутива UNIX. Основу BIND составляет демон named, который для своей работы использует порт UDP/53 и для некоторых запросов TCP/53.

Основные понятия Domain Name System


Исторически, до появления доменной системы имен роль инструмента разрешения символьных имен в IP выполнял файл /etc/hosts, который и в настоящее время играет далеко не последнюю роль в данном деле. Но с ростом количества хостов в глобальной сети, отслеживать и обслуживать базу имен на всех хостах стало нереально затруднительно. В результате придумали DNS, представляющую собой иерархическую, распределенную систему доменных зон. Давайте рассмотрим структуру Системы Доменных Имён на иллюстрации:
Читать дальше →
Всего голосов 110: ↑102 и ↓8+94
Комментарии24

Основы Linux от основателя Gentoo. Часть 3 (1/4): Документация

Время на прочтение8 мин
Количество просмотров34K
Первый отрывок третьей части серии руководств для новичков. Практически всё, что нужно знать, чтобы найти справочную информацию по вашей системе. Короче, RTFM и не задавайте глупых вопросов.



Навигация по основам Linux от основателя Gentoo:

Часть I: 1, 2, 3, 4

Часть II: 1, 2, 3, 4, 5

Часть III
  1. Документация (вступление)
  2. Модель прав доступа
  3. Управление аккаунтами
  4. Настройка окружения (итоги и ссылки)


Читать дальше →
Всего голосов 71: ↑61 и ↓10+51
Комментарии11
1

Информация

В рейтинге
Не участвует
Откуда
Волжский (Волгоградская обл.), Волгоградская обл., Россия
Дата рождения
Зарегистрирован
Активность