RSS
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 133
[>] Программа конференции DUMP-2016: посмотрите, кто выступает в этом году
habra.16
habrabot(difrex,1) — All
2016-03-11 10:30:03


Привет, Хабр! Приглашаем всех разработчиков, тестировщиков, мобильных разработчиков, дизайнеров и менеджеров разработки на супер it-событие весны — 8 апреля в Екатеринбурге пройдет шестая конференция [DUMP][1]. Доклады будут идти в 7 секциях: FrontTalks, Serverside, Mobile, Web-design, DevOps, Тестирование, Management. Мы доделываем итоговую сетку и обговариваем детали последних докладов, но 80% программы готово. Билет сейчас стоит 4500 рублей, но уже через неделю будет дороже. Welcome! [Читать дальше →][2]

[1]: http://dump-conf.ru/section/8/
[2]: https://habrahabr.ru/post/278973/#habracut

[>] RetroShare — инструмент для приватного общения и обмена данными
habra.16
habrabot(difrex,1) — All
2016-03-11 13:30:03


![][1]После года пребывания в статусе beta и release candidate, состоялся финальный релиз Retroshare версии 0.6.0 Программа развивается в течение вот уже 10 лет. Предыдущая версия 0.5.5 была выпущена осенью 2013 года и приобрела немалую популярность среди специалистов по криптографии, энтузиастов децентрализованных сетей и рядовых пользователей сети Интернет, для которых безопасность файлообмена и общения не пустой звук. Однако следует отметить, что на одном из наиболее популярных ресурсов рунета нет ни одного материала о криптоплатформе RetroShare, пару упоминаний о ней удалось обнаружить лишь в комментариях. Нижеследующий текст можно считать скромной попыткой исправить это упущение. Итак, **Retroshare** — криптографически защищенная децентрализованая платформа для анонимного общения и файлообмена. Система позволяет организовывать обособленные бессерверные Friend-to-Friend сети или одну глобальную сеть (что по факту и существует на сей день) с определённым кругом лиц — например, вашими друзьями, семьёй, коллегами или просто незнакомцами. Соединения устанавливаются напрямую только с теми участниками, которым вы дали разрешение. Это важная особенность, перемещающая подобные сети в рамки особого класса децентрализованных сетей, в которых несанкционированное подключение к вашему компьютеру запрещено без вашей на то доброй воли. Сети такого типа называются „Private p2p“, „Darknet“ или просто „Темная сеть“. [Читать дальше →][2]

[1]: https://habrastorage.org/files/cfc/3df/138/cfc3df1380d945ae9de7ff591923c889.jpg
[2]: https://habrahabr.ru/post/279031/#habracut

[>] Badoo перешли на PHP7 и сэкономили $1M
habra.16
habrabot(difrex,1) — All
2016-03-11 16:00:02


![Badoo перешли на PHP7 и сэкономили $1M][1] Мы сделали это! Несколько сотен наших application-серверов переведены на PHP7 и прекрасно себя чувствуют. Насколько нам известно, это второй переход на PHP7 проекта такого масштаба (после Etsy). В процессе мы нашли несколько очень неприятных багов в системе кеширования байт-кода PHP7, но они исправлены. А теперь — ура! — благая весть для всего PHP-сообщества: PHP7 действительно готов к продакшену, стабилен, потребляет значительно меньше памяти и дает очень хороший прирост производительности. Ниже мы подробно расскажем, как мы перешли на PHP7, с какими трудностями столкнулись, как с ними боролись и какие результаты получили. [Читать дальше →][2]

[1]: https://habrastorage.org/files/c7b/553/eb3/c7b553eb351846a3adaac2bf6883bbee.jpg
[2]: https://habrahabr.ru/post/279047/#habracut

[>] Анонс ThinkJava #3. Микросервисы
habra.16
habrabot(difrex,1) — All
2016-03-11 16:30:02


![][1] Друзья, приглашаем всех желающих посетить нашу третью встречу ThinkJava. На этот раз мы полностью посвящаем её теме микросервисов: что это такое, как начать их использовать, с какими проблемами можно столкнуться и как их решить, а также как обеспечить безопасность приложения с микросервисной архитектурой. Последние несколько лет микросервисы остаются одним из наиболее актуальных подходов к разработке крупных приложений. Осенью прошлого года эксперты компании NIX Solutions изучали все нюансы микросервисной архитектуры на крупнейшей международной отраслевой конференции Spring One 2GX. С тех пор наши разработчики успели опробовать многое из услышанного на практике, поэкспериментировать с микросервисами, наступить на некоторые грабли, научиться избегать ошибок или же без потерь устранять их последствия. А заодно освоили различные инструменты разработки микросервисных приложений. [Читать дальше →][2]

[1]: https://habrastorage.org/files/16f/943/be4/16f943be4c8d4d6eb8336d97a4e64379.png
[2]: https://habrahabr.ru/post/278907/#habracut

[>] Ansible и reverse-proxy сервера
habra.16
habrabot(difrex,1) — All
2016-03-11 16:30:02


![][1] Примерно полгода назад, пришлось разработать схему обратного проксирования сайтов, с многих нод (n>20) на несколько (n<=3) боевых серверов. Недавно столкнулся в аналогичным запросом от коллеги. Поэтому решил поделиться, и все собрать в статью. Уровень статьи — для начинающих. Как результат, был необходим простой инструмент для добавления новых нод и обновления перечня доменов. Профит от такого решения должен быть, при использовании кеширования на сервере, и DNS с геолокацией. [Подробности реализации под катом][2]

[1]: https://habrastorage.org/files/8b3/095/f82/8b3095f8262c4f46bef08adbd6a5d9bc.png
[2]: https://habrahabr.ru/post/269123/#habracut

[>] [Из песочницы] CI своими руками для Unity3D
habra.16
habrabot(difrex,1) — All
2016-03-12 14:30:03


Дисклеймер: я знаю, что лучше было бы поставить Jenkins, а подход к реализации некоторых вещей, далеко не лучший. Но суть в создании CI с API, с полностью своим решением и как можно быстрее. Буду рад советам и любой критике. ![image][1] В наличии у насть есть только GNU/Linux сервер и доступ через ssh. Цель — виртуальная машина с Windows и возможностью делать билды и использовать весь функционал Unity3D из командной строки. Мы установим и будем использовать:

* VNC сервер
* Xcfe оболочку
* Oracle VirtualBox

[Читать дальше →][2]

[1]: https://upload.wikimedia.org/wikipedia/commons/8/8a/Official_unity_logo.png
[2]: https://habrahabr.ru/post/279023/#habracut

[>] Вычисление значения многочлена. Все ли тривиально в этом вопросе?
habra.16
habrabot(difrex,1) — All
2016-03-12 17:00:02


Вычисление значения многочлена в точке является одной из простейших классических задач программирования. При проведении различного рода вычислений часто приходится определять значения многочленов при заданных значениях аргументов. Часто приближенное вычисление функций сводится к вычислению аппроксимирующих многочленов. Рядового читателя Хабрахабр нельзя назвать неискушенным в применении всяческих извращений. Каждый второй скажет, что многочлен надо вычислять по [правилу Горнера][1]. Но всегда есть маленькое «но», всегда ли схема Горнера является самой эффективной?



[Читать дальше →][2]

[1]: https://ru.wikipedia.org/wiki/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%93%D0%BE%D1%80%D0%BD%D0%B5%D1%80%D0%B0
[2]: https://habrahabr.ru/post/279097/#habracut

[>] А нужно ли знать программисту алгоритмы?
habra.16
habrabot(difrex,1) — All
2016-03-12 21:30:03


Не встречали еще разработчика, который вместо стандартной в скриптовом языке функции деления строки по регулярке — пишет C-подобный код с [конечным автоматом][1], который вводит неокрепшие умы в трепет? И так ужасно ли то, что ты не знаешь в тонкостях работу красно-черных деревьев или путаешь линейный дискриминантный анализ с вторым законом Ньютона? :-) [Читать дальше →][2]

[1]: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82
[2]: https://habrahabr.ru/post/279093/#habracut

[>] [Из песочницы] Наблюдение об интернационализованных доменных именах и букве K
habra.16
habrabot(difrex,1) — All
2016-03-12 22:30:02


Наверняка многие используют или слышали про про интернационализованные доменные имена (IDN) — доменные имена, состоящие из символов национального алфавита, например тест.рф. Так же многие знают что латиница и кириллица имеют визуальные схожие символы, например латинская “a” и кириллистическая “а” выглядят одинаково, однако имеют разные коды, т.e. !“a”.equals(“а”). В этой статье речь пойдет о доменных именах которые выглядят очень схоже благодаря одной букве К. В будущем этой схожестью могут воспользоваться злоумышленники, поэтому чтобы избежать этого я хочу рассказать об одном своем наблюдении из области интернационализованных доменных имен. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/279113/#habracut

[>] libuniset2 — библиотека для создания АСУ. Лучше один раз увидеть…Часть 5 (uniset2-testsuite)
habra.16
habrabot(difrex,1) — All
2016-03-13 11:00:02


В предыдущих частях ([часть 1][1], [часть 2][2], [часть 3][3], [часть 4][4]) было описано создание двух процессов имитатора и процесса управления и предварительная наладка. А теперь я хотел рассказать о написании функциональных тестов и предназначенного специально для этого средства под названием uniset2-testsuite. [Читать дальше →][5]

[1]: http://habrahabr.ru/post/278535/
[2]: http://habrahabr.ru/post/278537/
[3]: http://habrahabr.ru/post/278565/
[4]: http://habrahabr.ru/post/278589/
[5]: https://habrahabr.ru/post/278607/#habracut

[>] Часть 1. Установка и настройка авторитарного DNS сервера на основе решения PowerDNS
habra.16
habrabot(difrex,1) — All
2016-03-13 14:00:03


Добрый день! В этой статье я опишу настройку авторитарного DNS сервера, на основе решения PowerDNS. PowerDNS — высокопроизводительный, бесплатный DNS сервер с открытым исходным кодом. Для сравнения, mail.ru использует PowerDNS как держатель своих зон. PowerDNS — представляет собой высокопроизводительный DNS-сервер, написанный на C++ и лицензируемый под лицензией GPL. Разработка ведётся в рамках поддержки Unix-систем; Windows-системы более не поддерживаются. Сервер разработан в голландской компании PowerDNS.com Бертом Хубертом и поддерживается сообществом свободного программного обеспечения. PowerDNS использует гибкую архитектуру хранения/доступа к данным, которая может получать DNS информацию с любого источника данных. Это включает в себя файлы, файлы зон (англ.) BIND, реляционные базы данных или директории LDAP. PowerDNS по умолчанию настроен на обслуживание запросов из БД. После выхода версии 2.9.20 программное обеспечение распространяется в виде двух компонентов — (Authoritative) Server (авторитарный DNS) и Recursor (рекурсивный DNS). [Читать дальше →][1]

[1]: https://habrahabr.ru/post/278153/#habracut

[>] Адаптивные Split View Controller и Popover в iOS 9 (Swift). Часть 2
habra.16
habrabot(difrex,1) — All
2016-03-13 16:00:03


Это вторая часть [обучающей статьи][1], связанной с изучением адаптивного поведения **Split View Controller** и **Popover** в iOS 9 на iPad и на iPhone, которое стало возможным благодаря концепции **Size Classes**. Обучение состоит в создания на Swift практических приложений, работающих с сервером [Flickr.com][2], который является облачным сервисом для хранения фотографий. В[ первой части][3] перечислены пять интересных с точки зрения разработчика случаев применения адаптивного **Split View Controller** и **Popover**, которые отличаются сложностью **Master**. **Detail** везде один и тот же — единственный **Image View Controller**, вставленный в **Navigation Controller** и призванный показывать изображение фотографии: 1. Классический вариант: один элемент в **Master**, вставленный в **Navigation Controller**, (часто это **Table View Controller**) 2. Множество **Table View Controller** элементов, вставленных в **Navigation Controller** 3. **Tab Bar Controller** в качестве **Master** 4. Случай разных UI и разных пользовательских классов для приборов с разными **Size Classes **здесь не рассматривается, но идею можно посмотреть в[ “Адаптивный интерфейс с двумя storyboards для iOS 9”][4]. 5. Адаптивный **Popover** В [первой части ][5] осуществлялось построение базового экспериментального приложения на Swift, которое было распространено на случаи 1-2. В этой статье мы будем дальше усложнять наше экспериментальное приложение и распространим его на случаи 3 и 5. Код для всех вариантов можно найти на [Github][6]. [Читать дальше →][7]

[1]: https://habrahabr.ru/post/278573/
[2]: https://www.flickr.com
[3]: https://habrahabr.ru/post/278573/
[4]: http://bestkora.com/IosDeveloper/dopolnenie_/
[5]: https://habrahabr.ru/post/278573/
[6]: https://github.com/BestKora/AdaptiveSplitViewSwift
[7]: https://habrahabr.ru/post/278781/#habracut

[>] Часть 1. Установка и настройка авторитетного DNS сервера на основе решения PowerDNS // Базовая установка
habra.16
habrabot(difrex,1) — All
2016-03-13 18:00:02


Добрый день! В этой статье я опишу настройку авторитетного DNS сервера, на основе решения PowerDNS. PowerDNS — высокопроизводительный, бесплатный DNS сервер с открытым исходным кодом. PowerDNS — представляет собой высокопроизводительный DNS-сервер, написанный на C++ и лицензируемый под лицензией GPL. Разработка ведётся в рамках поддержки Unix-систем; Windows-системы более не поддерживаются. Сервер разработан в голландской компании PowerDNS.com Бертом Хубертом и поддерживается сообществом свободного программного обеспечения. PowerDNS использует гибкую архитектуру хранения/доступа к данным, которая может получать DNS информацию с любого источника данных. Это включает в себя файлы, файлы зон (англ.) BIND, реляционные базы данных или директории LDAP. PowerDNS по умолчанию настроен на обслуживание запросов из БД. После выхода версии 2.9.20 программное обеспечение распространяется в виде двух компонентов — (Authoritative) Server (авторитетный DNS) и Recursor (рекурсивный DNS). Официальный сайт: [www.powerdns.com][1] [Читать дальше →][2]

[1]: https://www.powerdns.com/
[2]: https://habrahabr.ru/post/278153/#habracut

[>] ВКонтакте запускает третий чемпионат VK Cup
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


**Всем привет!** Социальная сеть ВКонтакте возвращает свой блог на Хабр. Первое, о чём хотим рассказать, – чемпионат по спортивному программированию VK Cup 2016 и разбор нескольких интересных задач с прошлого года. [][1]



Несколько слов о Чемпионате. ВКонтакте проводит [третий VK Cup][2] — чемпионат по программированию среди русскоязычных молодых специалистов, студентов, школьников и просто любителей алгоритмов и структур данных. К участию в нём приглашаются команды из двух человек (можно участвовать и индивидуально), чей возраст от 14 до 23 лет. Отборочные этапы пройдут с марта по май, а в финал будут приглашены лучшие 20 команд. Финал пройдет в Санкт-Петербурге в июле, лучшие восемь команд будут награждены призами: **1 место** — 1048576 рублей **2 местo** — 524288 рублей **3 местo** — 262144 рубля **4-8 места** — 131072 рубля Соревнование будет проходить на площадке Codeforces, регистрация уже открыта — [спешите зарегистрировать команду](http://codeforces.com/vkcup2016/teams/new)! Начать своё участие необходимо [с квалификационных этапов](http://codeforces.com/contests/637,638), которые будут проходить 13-14 и 20-21 марта. Участвовать можно как в двух, так и в любом из них. Все подробности доступны по ссылке [на странице Чемпионата][3]. [Подробности][4]

[1]: https://habrahabr.ru/company/vkontakte/blog/279145/
[2]: http://codeforces.com/vkcup2016
[3]: http://codeforces.com/vkcup2016
[4]: https://habrahabr.ru/post/279145/#habracut

[>] Краткий курс компьютерной графики: задание карт нормалей в касательном пространстве
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


Дошли руки написать очередное дополнение к [моему краткому курсу компьютерной графики.][1] Итак, тема для очередного разговора — использование [карт нормалей][2]. В чём основное отличие использования карт нормалей от затенения Фонга? Основная разница в плотности задания информации. Для затенения Фонга мы использовали нормальные вектора, заданные к каждой вершине нашей полигональной сетки, интерполируя нормали внутри треугольников. Использование же карт нормалей позволяет задавать нормали для каждой точки нашей поверхности, а не лишь изредка, что просто драматическим образом влияет на детализацию изображений. В принципе, в [лекции про шейдеры][3] мы уже использовали карту нормалей, но только заданную в глобальной системе координат. Сейчас же разговор пойдёт про [касательное пространство][4]. Итак, вот две текстуры, левая задана в глобальном пространстве (RGB напрямую превращается в вектор XYZ), а правая — в касательном. ![][5] [Читать дальше →][6]

[1]: https://habrahabr.ru/post/249139/
[2]: https://en.wikipedia.org/wiki/Normal_mapping
[3]: https://github.com/ssloy/tinyrenderer/wiki/Lesson-6:-Shaders-for-the-software-renderer
[4]: https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas
[5]: https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/06b-tangent-space/nm_textures.jpg
[6]: https://habrahabr.ru/post/279143/#habracut

[>] [Перевод] С++ exception handling под капотом. Часть 2
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


Продолжаем перевод серии статей об обработки исключений в С++ [1 часть][1] [3 часть][2]

# C++ exceptions под капотом: милая персональность

Наша поездка в удивительном путешествии изучения работы исключений еще далека от конца, нам еще предстоит изучить что-то называемое "call frame information", помогающая библиотеке Unwind делать разворачивание стэка, а так же что компилятор пишет в чем-то, называемом LSDA, в которой определяется, какие ошибки метод может обрабатывать. А так же мы уже узнали, что большинство магии происходит в персональной функции, которую мы пока еще не видели в действии. Давай те резюмируем, что мы уже знаем о пробросе и отлове ошибок (или, точнее, что мы уже знаем о том, как брошенное будет перехвачено):

* компилятор транслирует throw объявление в пару ****cxa\_allocate\_exception/**xca\_throw**
* **\_\_cxa\_allocate\_exception** создает исключение в памяти
* **\_\_cxa\_throw** запускает работу разворачивания и передает исключение в низко-уровневую библиотеку разворачивания, вызывая _\_Unwind\_RaiseException_
* Разворачивание стэка использует CFI, чтобы узнать, какая сейчас функция в стеке
* Каждая функция имеет LSDA, добавляя что-то, называемое **.gcc\_except\_table**
* Разворачивание вызывает персональную функцию с текущим фреймом стэка и LSDA, которая должна продолжить разворачивать стэк, если текущая функция не имеет обработчиков исключения данного типа.

[Читать дальше →][3]

[1]: https://habrahabr.ru/post/279111/
[2]: https://habrahabr.ru/post/279149/
[3]: https://habrahabr.ru/post/279151/#habracut

[>] [Перевод] SFML и Xcode (Mac OS X)
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


![][1] _От переводчика: данная статья является четвертой в цикле переводов официального руководства по библиотеке SFML. Прошлую статью можно найти [тут.][2] Данный цикл статей ставит своей целью предоставить людям, не знающим язык оригинала, возможность ознакомится с этой библиотекой. SFML — это простая и кроссплатформенная мультимедиа библиотека. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Оригинал статьи можно найти [тут][3]. Начнем._ [Читать дальше →][4]

[1]: https://habrastorage.org/files/bc7/94a/b37/bc794ab377be444f8090426e56ae38bd.png
[2]: https://habrahabr.ru/post/279107/#first_unread "SFML и Linux"
[3]: http://www.sfml-dev.org/tutorials/2.3/ "Оригинальная документация по SFML"
[4]: https://habrahabr.ru/post/279147/#habracut

[>] [Перевод] С++ exception handling под капотом. Часть 3
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


Продолжаем перевод серии статей об обработки исключений в C++ [1 часть][1] [2 часть][2]

# C++ exceptions под капотом: поиск верного landing pad

Это уже 15-я глава в нашей длинной истории. Мы уже изучили достаточно много о том, как работают исключения, и даже имеем написанную работающую собственную персональную функцию с небольшим количеством рефлексии, определяющей где находится catch-блок (landing pad в терминах исключений). В прошлой главе мы написали персональную функцию, которая может обрабатывать исключения, но она всегда подставляет только первый landing pad (т.е. первый же catch-блок). Давай те улучшим нашу персональную функцию, добавив возможность выбирать правильный landing pad в функции с несколькими catch-блоками. [Читать дальше →][3]

[1]: https://habrahabr.ru/post/279111/
[2]: https://habrahabr.ru/post/279151/
[3]: https://habrahabr.ru/post/279149/#habracut

[>] [Перевод] С++ exception handling под капотом или как же работают исключения в C++
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


![][1]

### От переводчика

В мире победили языки высокого уровня и в мирах руби-питон-js разработчиков остается только разглагольствовать, что в плюсах не стоит использовать то или иное. Например, исключения, потому что они медленные и генерируют много лишнего кода. Стоило спросить "и какой же код он генерирует", как в ответ получил мямленье и мычание. А и правда — как же они работают? Ну что ж, компилируем в g++ с флагом -S, смотрим что получилось. Поверхностно разобраться не сложно, однако то, что остались недопонимания — не давали мне спать. К счастью, готовая статья нашлась. На хабре есть несколько статей, [подробных][2] и [не очень][3] (при этом все равно хороших), посвященных тому, как работают exceptions в C++. Однако нет ни одной по-настоящему глубокой, поэтому я решил восполнить этот пробел, благо есть подходящий материал. Кому интересно как работают исключения в C++ на примере gcc — запаситесь pocket-ом или evernot, свободным временем и добро пожаловать под кат. [Читать дальше →][4]

[1]: https://habrastorage.org/files/bae/cb7/772/baecb77727fa49619830c84649d3ab3e.jpg
[2]: https://habrahabr.ru/post/208006/
[3]: https://habrahabr.ru/post/119016/
[4]: https://habrahabr.ru/post/279111/#habracut

[>] [Перевод] Саморегулирование биткойна
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


Небольшой фрагмент лекции из [курса Принстонского университета][1], лектор — [Arvind Narayanan][2] Сейчас я хочу продемонстрировать вам еще одну тонкую мысль, довольно сложную, это очень четкая идея саморегулирования, которая захватила меня в первый раз, когда я с ней встретился. Я хочу поделиться ей с вами. Что я имею в виду под саморегулированием? Я говорю о сложном взаимодействии между тремя вещами в биткойне. Что это за три вещи? [Читать дальше →][3]

[1]: https://class.coursera.org/bitcointech-001
[2]: http://randomwalker.info
[3]: https://habrahabr.ru/post/279087/#habracut

[>] [Перевод] SFML и Linux
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


![][1] _От переводчика: данная статья является третьей в цикле переводов официального руководства по библиотеке SFML. Прошлую статью можно найти [тут.][2] Данный цикл статей ставит своей целью предоставить людям, не знающим язык оригинала, возможность ознакомится с этой библиотекой. SFML — это простая и кроссплатформенная мультимедиа библиотека. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Оригинал статьи можно найти [тут][3]. Начнем._ [Читать дальше →][4]

[1]: https://habrastorage.org/files/bc7/94a/b37/bc794ab377be444f8090426e56ae38bd.png
[2]: https://habrahabr.ru/post/279069/ "Прошлая статья: SFML и Code::Blocks (MinGW)"
[3]: http://www.sfml-dev.org/tutorials/2.3/ "Оригинальная документация по SFML"
[4]: https://habrahabr.ru/post/279107/#habracut

[>] Про важность ловли блох. Для чего существует Global OpenStack Bug Smash?
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


_Авторы: Игорь Марнат, Илья Стечкин_ **С 7 по 9 марта проходил Global OpenStack Bug Smash Mitaka. Mirantis принимал две площадки этого ивента: одна из них — в московском офисе компании. Россия впервые присоединилась к проведению BugSmash. И мы рады, что это произошло при нашем непосредственном участии. Почему для комьюнити так важно, чтобы крупные игроки рынка, такие, как Intel, Rackspace, Mirantis, IBM, HPE, Huawei, CESI или SUSE, поддерживали работы по проверке и повышению качества кода? Какое место занимает этот событие в процессе создания платформы OpenStack?** [Читать дальше →][1]

[1]: https://habrahabr.ru/post/279085/#habracut

[>] Security Week 10: вымогатель для OS X, обход пасскода iPhone, уязвимость в Facebook и польза bug bounty
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


![][1]В очередном выпуске нашего сериала: — Хитрый вымогатель KeRanger для Mac OS X поразил всех не столько своими вредоносными свойствами, сколько четкой организацией атаки и необычным методом распространения. Но все закончилось хорошо — жертв не так много, как могло быть. — В то время, как Apple и американские госорганы продолжают спорить о праве на взлом защиты айфона, выяснилось, что обойти пасскод можно и более тривиальными методами. Не первый раз, впрочем. — Серьезная уязвимость в Facebook хорошо объясняет сложность инфраструктуры современной компании — тривиальный и крайне опасный метод взлома любого аккаунта соцсети был невозможен на основном сайте, но оказался доступен на стороннем проекте. Предыдущие серии можно посмотреть [по тегу][2]. [Читать дальше →][3]

[1]: https://habrastorage.org/files/741/78d/fce/74178dfce76f497aa9c0e60c9e9e1497.jpg
[2]: http://habrahabr.ru/search/?target_type=posts&q=%5Bklsw%5D%20&order_by=date
[3]: https://habrahabr.ru/post/279073/#habracut

[>] libuniset2 — библиотека для создания АСУ. Лучше один раз увидеть…Часть 6 (Заключительная)
habra.16
habrabot(difrex,1) — All
2016-03-14 00:00:02


В предыдущих частях ([часть 1][1], [часть 2][2], [часть 3][3], [часть 4][4], [часть 5][5]) были рассмотрены принципы и механизмы libuniset2, на примере _сферической задачки по управлению_. Осталось показать, что не вошло в поле нашего зрения… Тех, кто ещё не устал, прошу… [Читать дальше →][6]

[1]: http://habrahabr.ru/post/278535/
[2]: http://habrahabr.ru/post/278537/
[3]: http://habrahabr.ru/post/278565/
[4]: http://habrahabr.ru/post/278589/
[5]: http://habrahabr.ru/post/278607/
[6]: https://habrahabr.ru/post/278697/#habracut

[>] Декораторы в typescript: оружие против сложности или бесполезная «свистелка»?
habra.16
habrabot(difrex,1) — All
2016-03-14 11:00:02


![][1]Вы, наверное, уже наслыщаны о такой странной вещи для js/ts разработчика, как [декораторы][2]. Вообще это паттерн проектирования, который можно использовать в любом языке. Но некоторые языки программирования, например python, притащили этот паттерн в свой синтаксис, чем вызвали противоречивую реакцию среди разработчиков. TypeScript уже зарекомендовал себя как сорока, тянущая удачный синтакисис из разных языков программирования. Но пойдут ли ему на пользу декораторы? [Читать дальше →][3]

[1]: https://habrastorage.org/files/454/6c4/f7e/4546c4f7eb2245c08cb6336b2ad9e6d0.jpg
[2]: https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#decorators
[3]: https://habrahabr.ru/post/277847/#habracut

[>] Реализация грида для работы с большими таблицами. Часть 1
habra.16
habrabot(difrex,1) — All
2016-03-14 12:30:02


Таблица (грид) с вертикальной полосой прокрутки — наиболее распространённый элемент пользовательского интерфейса для работы с данными реляционной БД. Однако известны сложности, с которыми приходится сталкиваться, когда таблица содержит так много записей, что тактика их полной вычитки и сохранения в оперативной памяти становится неразумной. Какие-то приложения на большие таблицы не рассчитаны и «зависают» при попытке открыть на просмотр/редактирование таблицу с миллионами записей. Иные отказываются от использования грида с вертикальной полосой прокрутки в пользу постраничного отображения или предлагают пользователю лишь иллюзию, что при помощи полосы прокрутки можно быстро перейти к нужной (хотя бы к самой последней) записи.



Мы расскажем об одном из возможных методов реализации табличного элемента управления, обладающего свойствами Log(N)-быстрого 1) первоначального отображения 2) прокрутки на всём диапазоне записей 3) перехода к записи с заданным уникальным ключом. Всё это — при двух ограничениях: 1) записи могут быть отсортированы только по индексированному набору полей и 2) collation-правила базы данных должны быть известны алгоритму. Изложенные в статье принципы были реализованы автором в проекте с его участием на языке Java. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/278773/#habracut

[>] Большой опрос по алгоритмам
habra.16
habrabot(difrex,1) — All
2016-03-14 14:30:03


Тема «нужны или не нужны алгоритмы современным разработчикам» на днях в очередной раз [всплывала][1] на Хабре и породила множество комментариев. В связи с этим предлагаю следующий опрос. Сможете ли вы реализовать, пусть и не production ready, этот алгоритм, не подсматривая в спецификацию: **UPD:** Касательно последнего опроса — было бы очень интересно в комментариях услышать реальные интересные примеры из жизни. [][2]

[1]: https://habrahabr.ru/post/279093/
[2]: https://habrahabr.ru/post/279209/#habracut

[>] Что читать о перспективных языках программирования
habra.16
habrabot(difrex,1) — All
2016-03-14 14:30:03


![image][1] Начнем с важной информации: совсем не обязательно перспективные языки являются новыми. Им не так много лет, как вашим любимым Python или Ruby, их нет ни в одной топовой десятке популярных рейтингов ([GitHut][2], [RedMonk][3], [TIOBE Index][4]), а знание этих языков не дает пока существенной прибавки к зарплате (за исключением, возможно, Swift). Но и назвать их революцией, набирающей обороты в среде избранных, тоже нельзя. Безусловно, у них есть своя ниша, определенная доля рынка (до 2%) и сложившееся комьюнити. Просто в будущем именно они могут посягнуть на лавры топ-5, если не случится событие типа «черный лебедь». За последние годы в рейтингах популярности языков мало что изменилось — одни опускаются, другие поднимаются, но никто не врывается в топ под лозунгом «лучший из лучших». Процесс захвата новых территорий для языка чаще всего занимает годы, и за это время успевает сформироваться необходимая база развития. Поэтому никаких эксклюзивов и написанных за вчерашний вечер уникальных языков в обзоре не будет — просто потому, что их время еще не настало. Но в ближайшие годы популярность незыблемых столпов, таких как Java (вся), JavaScript или PHP, будет снижаться, а их место постепенно займут «новички». [Читать дальше →][5]

[1]: https://habrastorage.org/getpro/habr/post_images/2d4/d34/99f/2d4d3499f285b0963d38c26c7dfe34e8.jpg
[2]: http://githut.info/
[3]: https://redmonk.com/sogrady/category/programming-languages/
[4]: http://www.tiobe.com/tiobe_index?page=index
[5]: https://habrahabr.ru/post/279193/#habracut

[>] [Из песочницы] Конечное поле GF(256) и немного магии
habra.16
habrabot(difrex,1) — All
2016-03-14 14:30:03




## Введение

Будучи студентом я посещаю занятия по криптографии. И разумеется этот курс не мог обойти вниманием стандарт [AES][1]. При реализации данного алгоритма встает вопрос о реализации полей GF(2^8), что будет освещено в данной статье. Будут рассмотрены: битовая магия для умножения элементов поля, шаблоны для генерации таблиц замен на этапе компиляции. Вторая часть предполагает, что читатель имеет доступ к компилятору с поддержкой C++14. Первая часть будет написана в стиле Си. [Читать дальше →][2]

[1]: https://ru.wikipedia.org/wiki/Advanced_Encryption_Standard
[2]: https://habrahabr.ru/post/279197/#habracut

[>] Об одной интересной ошибке в Lucene.Net
habra.16
habrabot(difrex,1) — All
2016-03-14 16:30:02


![][1] Некоторые программисты, когда слышат про статический анализ, говорят о том, что он им не нужен, так как весь их код покрыт юнит-тестами, и этого достаточно, чтобы выловить все ошибки. Мне попалась ошибка, найти которую с помощью юнит-тестов теоретически возможно, но если о ней не знать, то написать такой тест практически нереально. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/18a/ebb/4f3/18aebb4f30321046c2af02cbe07612cf.png
[2]: https://habrahabr.ru/post/279221/#habracut

[>] Обновленные онлайн-курсы Mail.Ru Group и интервью с их создателями
habra.16
habrabot(difrex,1) — All
2016-03-14 17:00:03


![][1] В декабре и феврале на портале [IT.Mail.Ru][2] в партнерстве со Stepic мы запустили онлайн-курсы на основе материалов, читаемых в проектах Техносфера, Технопарк и Технотрек. На сегодняшний день мы провели обучение по трем курсам:

* на курс «Алгоритмы и структуры данных» записались 3370 человек, 145 человек успешно прошли обучение, из них 105 — с отличием;
* на курс «Подготовительная программа по программированию на С/C++» записались 2400 человек, 140 человек завершили обучение, из них 106 — с отличием;
* на курс по анализу безопасности веб-проектов записались 4370 человек, 560 пользователей завершили обучение, из них 330 — с отличием.

Более того, мы доработали программу и снова открыли регистрацию на некоторые курсы! В этом посте хотим поделиться с вами интервью участников проектов. Мы расспросили идейного вдохновителя, директора департамента исследований и образования Mail.Ru Group Дмитрия Волошина, а также наших преподавателей. Читайте интервью с ними под катом. [Читать дальше →][3]

[1]: https://habrastorage.org/files/a51/192/bb4/a51192bb40284c3f83da43165e6e99ae.jpg
[2]: https://it.mail.ru/
[3]: https://habrahabr.ru/post/279041/#habracut

[>] [Из песочницы] Pandasql vs Pandas для решения задач анализа данных
habra.16
habrabot(difrex,1) — All
2016-03-14 17:00:03




# О чем речь?

В этой статье я бы хотела рассказать о применении python-библиотеки [Pandasql][1]. Многие люди, сталкивающиеся с задачами анализа данных, уже, скорее всего, знакомы с библиотекой [Pandas][2]. Pandas позволяет быстро и удобно работать с табличными данными: фильтровать, группировать, делать join над данными; строить сводные таблицы и даже рисовать графики (для простых визуализации достаточно функции [plot()][3], а если хочется чего-то позаковыристее, то поможет библиотека [matplotlib][4]). На Хабре не раз рассказывали о применении этой библиотеки для работы с данными: [раз][5], [два][6], [три][7]. Но по моему опыту далеко не все знают о библиотеке Pandasql, которая позволяет работать с Pandas DataFrames как с таблицами и обращаться к ним, используя язык SQL. В некоторых задачах проще выразить желаемое с помощью декларативного языка SQL, поэтому я считаю, что людям, работающим с данными, полезно знать о наличии такой функциональности. Если говорить о реальных задачах, то я использовала эту библиотеку для решения задачи join'a таблиц по нечетким условиям (необходимо было объединить записи о событиях из разных систем по примерно совпадающему времени, разрыв порядка 5 секунд). Рассмотрим использование этой библиотеки на конкретных примерах. [Читать дальше →][8]

[1]: https://pypi.python.org/pypi/pandasql
[2]: http://pandas.pydata.org/
[3]: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html
[4]: http://pandas.pydata.org/pandas-docs/version/0.13.1/visualization.html
[5]: https://habrahabr.ru/post/266289/
[6]: https://habrahabr.ru/post/196980/
[7]: https://habrahabr.ru/post/202090/
[8]: https://habrahabr.ru/post/279213/#habracut

[>] Custom floating point format on FPGA
habra.16
habrabot(difrex,1) — All
2016-03-15 01:30:02


Всем привет! В данной статье речь пойдет о числах в формате с плавающей точкой и в частности о реализации специализированного формата FP23 на программируемых логических интегральных схемах (ПЛИС). В рамках конкретного проекта у меня родилась мысль реализовать оптимальный для определенных нужд формат данных с плавающей точкой. В итоге эта мысль переросла в реальный проект, который впоследствии нашел применение в некоторых интересных задачах цифровой обработки сигналов. В статье рассмотрены основные сложности при реализации формата данных floating point на ПЛИС Xilinx, рассмотрены базовые математические операции в формате FP23. Также в конце статьи вы можете найти исходный код проекта, которой можно свободно использовать в своих задачах или на его основе реализовать похожие форматы данных. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/60f/91e/6b7/60f91e6b77404332b23fb29db343277c.png
[2]: https://habrahabr.ru/post/279269/#habracut

[>] CLRium #3. Анонс докладчиков
habra.16
habrabot(difrex,1) — All
2016-03-15 10:00:02


[![][1]][2] 15 апреля в **Санкт-Петербурге**, 22 апреля — в **Москве**, 29 апреля — в **Омске**, 13 мая — в **Екатеринбурге** и 20 мая — в **Новосибирске** пройдет серия семинаров [CLRium #3][3]. В прошлом году мы говорили об околохакерских штуках — разборе памяти .NET куч, приведение типов, между которыми приведение невозможно… Делили текущий поток на два… Говорили о ядре нового .NET Core и пытались понять, для чего нам нужен (и нужен ли?) Roslyn В этом же году мы поговорим о другом. О сугубо практически полезных вещах, о которых вы ранее наверняка не знали, но в которых таится огромная сила и мощь. О мутабельных языках программирования, производительности и кроссплатформенной разработке GUI Как и ранее, у нас будут:

* Максимально глубокие, отборные доклады по редко-раскрываемым вопросам
* Мы будем говорить только о том, о чем вы наверняка, до того не знали
* Максимально-полезные доклады, которые усилят Вас как специалиста
* Все доклады — от 1,5 часов. Что позволит докладчикам не экономить и рассказать все что они знают

Примечание к Nitra и Nemerle: эти два opensource проекта нынче разрабатываются в стенах компании JetBrains. Доклады:

* **Андрей Акиньшин** (JetBrains) Железные таймеры
* **Влад Чистяков** (JetBrains) Nemerle — самая мощная альтернатива C# на .NET
* **Влад Чистяков** (JetBrains) Nitra — средство разработки языков программирования и DSL
* **Станислав Сидристый** (Luxoft)JetBrains Rider IDE: Java IDE для кросс-платформенного .NET
* **Станислав Сидристый** (Luxoft) Автоматизация тестирования WPF/WinForms приложений через внедрение в процесс
* **Никита Цуканов** Кроссплатформенная разработка UI приложений (Perspex UI, Eto.Forms, Xamarin Forms)



# Когда и где?

Ссылки на регистрацию:

* У нас есть [отличный сайт][4], на котором можно почитать как про всех спикеров, так и про все доклады. Заходите, изучайте, берите билеты: [http://qaconf.ru/][5]

Что такое [CLRium?][6]? Видео записи семинара (собравшего в сумме 740 человек) с прошлого года — под катом. [Читать дальше →][7]

[1]: https://habrastorage.org/files/84c/027/813/84c0278138bf4ebeba456d77ec76132a.png
[2]: http://clrium.ru/
[3]: http://clrium.ru/
[4]: http://clrium.ru/
[5]: http://clrium.ru/
[6]: http://clrium.ru/
[7]: https://habrahabr.ru/post/279275/#habracut

[>] Разбор функции из стандартной библиотеки D
habra.16
habrabot(difrex,1) — All
2016-03-15 11:30:03


![][1] Привет Хабр, хочу пригласить всех на небольшую экскурсию по языку D. Зачем? Ну зачем люди вообще на экскурсии ходят — чтобы развлечься, увидеть что-то новое и вообще — это интересно. D трудно назвать новым или хотя бы молодым, однако в последние пару лет шло бурное развитие, в сообщество пришел [Андрей Александреску][2] и быстро стал ведущим разработчиком, с его способностью предвидеть тренды он внес огромный вклад в концепции самого языка и особенно в стандартную библиотеку. С самого своего возникновения D позиционировался как улучшенный C++ (по крайней мере в моем прочтении истории). Возможность отбросить некоторые устаревшие конструкции и внести вместо них то новое, что не могло быть реализовано в классическом C++, и одновременно бережное сохранение низкоуровневых возможностей, таких как встроенный ассемблер, указатели и использование библиотек С, делают D уникальным претендентом на звание «следующего в ряду C — C++ — ...». Ну это с моей точки зрения, сам я (наверное вежливо было бы добавить «к сожалению») абсолютно моноязычен, много лет пишу на C++ и любые попытки познакомиться с другими языками неизбежно заканчивались крепким здоровым сном. Однако я слышал от представителей других конфессий что D для них тоже интересен как язык, так что на экскурсию приглашаю всех. Что я буду показывать? По D уже написано [несколько очень хороших книг][3], поэтому я решил просто взять функцию _getopt()_ из стандартной библиотеки и посмотреть на ее код, неоценимо полезное упражнение позволяющее оживить прочитанное в книгах. Почему именно эту функцию? Ну, она же всем знакома и системно независима, я лично ее использую 3-4 раза в неделю и в деталях представляю как она могла бы быть написана на 3-х различных языках. Кроме того, автором кода значится Александреску, я много раз видел _учебные примеры_ его кода в книгах и никогда не видел кода написанного _в продакшн_, любопытно же. В конце я конечно же не удержался и написал свой велосипед (естественно улучшенный), в данном случае это совершенно уместно и не менее полезно чем разбор чужого кода. Увидим мы далеко не все из того что бы стоило посмотреть, да и сам я далеко не эксперт, поэтому читайте сами кому интересно, ссылки в конце. [Итак, поехали][4]

[1]: https://habrastorage.org/files/2ce/c1c/63c/2cec1c63c4d442efa4950c53e17a6fdd.png
[2]: http://erdani.com/
[3]: https://wiki.dlang.org/Books
[4]: https://habrahabr.ru/post/263515/#habracut

[>] ScribeJava — даже ваша бабушка сможет работать с OAuth
habra.16
habrabot(difrex,1) — All
2016-03-15 12:30:02


![image][1] Именно этой фразой нас приветствует библиотека для работы с OAuth — ScribeJava (). Если быть точнее, то фраза звучит так: “Who said OAuth/OAuth2 was difficult? Configuring ScribeJava is **so easy your grandma can do it!** check it out:”. И это действительно похоже на правду:

OAuth20Service service = new ServiceBuilder().apiKey(clientId).apiSecret(clientSecret)
.callback("http://your.site.com/callback").grantType("authorization_code").build(HHApi.instance());
String authorizationUrl = service.getAuthorizationUrl();
OAuth2AccessToken accessToken = service.getAccessToken(code);


Готово! Этих трех строчек достаточно, чтобы начать делать OAuth запросы. А сам OAuth запрос можно будет сделать так:

OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.hh.ru/me", service);
service.signRequest(accessToken, request);
String response = request.send().getBody();


Данные о пользователе у нас в руках (в переменной response). И ни капли понимания, как в деталях работает OAuth. Хотим асинхронные http-запросы? Нам хватит тех же трех строчек. Ниже рассмотрим это на примере. [Читать дальше →][2]

[1]: https://habrastorage.org/files/273/4b0/326/2734b032642d44d38ea5ac257bd2e693.jpg
[2]: https://habrahabr.ru/post/278957/#habracut

[>] Механизмы контейнеризации: namespaces
habra.16
habrabot(difrex,1) — All
2016-03-15 12:30:02


Последние несколько лет отмечены ростом популярности «контейнерных» решений для ОС Linux. О том, как и для каких целей можно использовать контейнеры, сегодня много говорят и пишут. А вот механизмам, лежащим в основе контейнеризации, уделяется гораздо меньше внимания. Все инструменты контейнеризации — будь то Docker, LXC или [systemd-nspawn][1],— основываются на двух подсистемах ядра Linux: namespaces и cgroups. Механизм namespaces (пространств имён) мы хотели бы подробно рассмотреть в этой статье. Начнём несколько издалека. Идеи, лежащие в основе механизма пространств имён, не новы. Ещё в 1979 году в UNIX был добавлен системный вызов chroot() — как раз с целью обеспечить изоляцию и предоставить разработчикам отдельную от основной системы площадку для тестирования. Нелишним будет вспомнить, как он работает. Затем мы рассмотрим особенности функционирования механизма пространств имён в современных Linux-системах. [Читать дальше →][2]

[1]: https://blog.selectel.ru/systemd-i-kontejnery-znakomstvo-s-systemd-nspawn/
[2]: https://habrahabr.ru/post/279281/#habracut

[>] Поиск неэффективностей: Что нужно знать о создании стратегий для торговли на бирже
habra.16
habrabot(difrex,1) — All
2016-03-15 15:30:02


[![][1]][2] Вопросам оптимизации тестирования торговых стратегий посвящено множество публикаций в блогах, статей и книг. При этом, почти никто не пишет о том, как построить такую систему с нуля. Автор блога Financial Hacker решил исправить эту ситуацию и создать цикл статей по теме разработки торговых стратегий — мы представляем вашему вниманию главные тезисы первого [материала][3]. [Читать дальше →][4]

[1]: https://habrastorage.org/files/f5a/d47/d55/f5ad47d551f246118911faf0a732e927.jpg
[2]: https://habrahabr.ru/company/itinvest/blog/279321/
[3]: http://www.financial-hacker.com/build-better-strategies/
[4]: https://habrahabr.ru/post/279321/#habracut

[>] [Из песочницы] Передвижение персонажа по карте с помощью библиотеки SFML или проходим в разные места
habra.16
habrabot(difrex,1) — All
2016-03-15 15:30:03


Даже не знаю, поможет ли кому данная статья или нет, но так как в момент написания своей мини-игры я не нашёл ответа на данный вопрос, решил написать решений. Месяцев 2 назад я начал писать мини-игру, просто для оттачивания имеющихся умений и приобретения новых. Игра была задумана 2D. Полистав немножко интернет, нашёл вполне нормальную библиотеку для начинающего (ну и не только) — SFML. Идея была придумана и библиотека выбрана. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/279297/#habracut

[>] Bounty-программа в Badoo
habra.16
habrabot(difrex,1) — All
2016-03-15 16:00:03


![image][1]Сегодня у многих IT-компаний есть собственные bounty-программы (или программы по поиску уязвимостей). Badoo — в их числе. В этой статье я расскажу о том, как мы, не имея отдела информационной безопасности, запустили и ведем свою bounty-программу. Я расскажу о проблемах, с которыми мы столкнулись, как их решали и каким образом пришли к тому, что у нас сейчас есть. И, конечно, упомяну о некоторых интересных багах, присланных участниками этой программы. Со времени старта нашей bounty-программы прошло три года. Нам до сих пор продолжают присылать сообщения участники со всего мира. Мы хотим усилить интерес к ней, в том числе со стороны иностранных исследователей. Поэтому мы, во-первых, открыли страничку с нашей программой на крупнейшем портале исследователей [hackerone.com][2], а во-вторых — увеличили суммы вознаграждений за найденные уязвимости! Теперь сумма вознаграждения, в зависимости от категории, начинается от **£100** и может достигать **£1000**, сумма супер-премии составляет **£2000** (а это более 200 000 рублей по текущему курсу!) и даже больше, если обнаруженная уязвимость представляет реальную угрозу для наших пользователей. [Читать дальше][3]

[1]: https://habrastorage.org/files/3e3/f7e/033/3e3f7e033f0c43aea5abdce3735049d0.png
[2]: https://hackerone.com/badoo
[3]: https://habrahabr.ru/post/279325/#habracut

[>] [Перевод] 7 сайтов, о которых должен знать каждый .NET-разработчик
habra.16
habrabot(difrex,1) — All
2016-03-15 16:00:03


На сегодняшний день миллионы разработчиков по всему миру используют технологии Microsoft.NET. Если вы один из них или хотите им стать, обязательно добавьте нижеперечисленные сайты в «Избранное», сохраните в закладки или просто запишите в блокнот (заодно вспомните, как это – писать ручкой на бумаге). ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/ed7/04e/a74/ed704ea743534e828748081eabd6a61c.jpg
[2]: https://habrahabr.ru/post/279311/#habracut

[>] Приглашаем на Moscow Python Meetup 18 марта
habra.16
habrabot(difrex,1) — All
2016-03-15 16:00:03


![][1] 18 марта, в пятницу, приглашаем на Moscow Python Meetup 33 в офис Mail.Ru Group. На встрече планируются следующие выступления спикеров: ![][2]**— «QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Rambler&Co** Существуют три наисложнейшие проблемы в программировании: именование, кэширование и выход за границу массива. Проверка пограничных случаев поведения кода наиболее важна, но эта зона также наименее тестируема. Придумать и предугадать все возможные ситуации человеку тяжело, и порой мы что-то упускаем из виду. Вот было бы здорово, если бы тесты сами находили такие случаи, при которых код падает… Мечты? О том, как превратить их в реальность, пойдет речь в докладе. [Читать дальше →][3]

[1]: https://habrastorage.org/files/b05/aab/456/b05aab4568f74ff8bfe2f93590ed376b.png
[2]: https://habrastorage.org/files/e4d/7ac/6a3/e4d7ac6a3b1844abb9dacc28ef522a12.jpg
[3]: https://habrahabr.ru/post/279323/#habracut

[>] Как заставить GNU Make исполнить файл многократно с разными аргументами
habra.16
habrabot(difrex,1) — All
2016-03-15 16:00:03


В современных публикациях, все чаще можно слышать о недостатках утилиты **Make**. Например, в статье [Qt Build System: спасательный круг для сборки][1] приводятся мнения двух экспертов, первым из которых выступает [Peter Miller][2] с критикой рекурсивных возможностей **Make**. Разумеется, обоснованная критика необходима, иначе мы не сможем двигаться дальше. Но все-таки, хочется заступиться за старую, добрую утилиту **Make**. Тем более, что данная утилита используется в миллионах проектов и, ее рано сбрасывать со щетов. Надо просто помнить, что, по сути, **Make** является простой программой, связывающей цели пользователя с действиями, которые необходимо осуществить для достижения этих самых целей. Нельзя требовать от программы того, что она не может делать в принципе, а именно исправлять ошибки пользователя. Она может лишь пожаловаться на то, что ее заставляют делать неприличные вещи. О рекурсивных Make-файлах, параллельной и многопоточной сборке, а также о скорости сборки, мы поговорим позднее, надеюсь у нас еще будет повод, а сейчас хотелось бы представить одну из возможностей, которую предоставляет утилита **GNU Make** Предположим, что нам необходимо собрать программу или отчуждаемый пакет для работы на трех устройствах с именами **ci20**, **bt01** и **dm64**. Первые два устройства **ci20** и **bt01** основаны на архитектуре **MIPS**, третье устройство **dm64** построенно на базе процессора **ARM**. Toolchain-ы, для простоты, назовем **mips** и **arm**, соответственно. Сценарий сборки исходной программы одинаков для всех трех устройств и написан на языке **GNU Make**. Если представить все комбинации вызовов команды **Make**, необходимые для сборки программы на наши устройства, получим:

$ TOOLCHAIN=mips HARDWARE=ci20 make
$ TOOLCHAIN=mips HARDWARE=bt01 make
$ TOOLCHAIN=arm HARDWARE=dm64 make


или, при передаче имен устройств и Toolchain-ов в качестве аргументов:

$ make TOOLCHAIN=mips HARDWARE=ci20
$ make TOOLCHAIN=mips HARDWARE=bt01
$ make TOOLCHAIN=arm HARDWARE=dm64


Таким образом, система сборки должна принимать пары **TOOLCHAIN – HARDWARE**, которые определяют какой именно Toolchain необходимо использовать для того или иного устройства. [Читать дальше →][3]

[1]: https://habrahabr.ru/post/144127/
[2]: http://aegis.sourceforge.net/auug97.pdf
[3]: https://habrahabr.ru/post/279271/#habracut

[>] [Перевод] Как мы писали код Netflix
habra.16
habrabot(difrex,1) — All
2016-03-15 16:30:03


![image][1] Как именно в Netflix реализован код до этапа работы в облаке? Части этой истории мы рассказывали и прежде, но сейчас настало время добавить в неё больше деталей. В данном посте мы опишем инструменты и методы, позволившие нам пройти путь от исходного кода до развёрнутого сервиса, который позволяет наслаждаться фильмами и сериалами более чем 75 миллионам подписчиков со всего мира. ![image][2] Схема выше – отсылка к предыдущему посту, [представляющему Spinnaker][3], нашу глобальную непрерывную платформу передачи данных. Но до попадания в Spinnaker строке кода нужно пройти несколько этапов:

* Код должен быть написан и локально испытан плагинами [Nebula][4];
* Изменения перемещаются в центральное хранилище git;
* Jenkins запускает Nebula, которая создаёт, тестирует и подготавливает приложения для облака;
* Билды «выпекаются» в Amazon Machine Image;
* Spinnaker способствует разблокировке и активизации измененного кода.

В остальной части этого поста мы опишем инструменты и методы, использованные на каждом из этих этапов и поговорим об испытаниях, которые повстречались на нашем пути. [Читать дальше →][5]

[1]: https://habrastorage.org/getpro/habr/post_images/f05/b82/b77/f05b82b7793fb10d7ece4e50b0efc715.jpg
[2]: https://habrastorage.org/getpro/habr/post_images/8c5/34a/10c/8c534a10c6b673a0b4e892fefd5e2135.png
[3]: http://techblog.netflix.com/2015/11/global-continuous-delivery-with.html
[4]: http://nebula-plugins.github.io/
[5]: https://habrahabr.ru/post/279295/#habracut

[>] Риски информационной безопасности веб-приложений
habra.16
habrabot(difrex,1) — All
2016-03-15 16:30:03


![][1] Использование информационных систем и технологий связано с определенной совокупностью рисков. Оценка рисков необходима для контроля эффективности деятельности в области безопасности, принятия целесообразных защитных мер и построения эффективных экономически обоснованных систем защиты. Основу риска образуют возможные уязвимости и угрозы для организации, поэтому выявление потенциальных или реально существующих рисков нарушения конфиденциальности и целостности информации, распространения вредоносного программного обеспечения и финансового мошенничества, классификация угроз информационной безопасности является одной из первичных задач по защите веб-приложения. [Читать дальше →][2]

[1]: https://habrastorage.org/files/c2d/db7/60e/c2ddb760e2c9442f9226e25363026dba.png
[2]: https://habrahabr.ru/post/279219/#habracut

[>] Juniper MX + IX + SynFlood
habra.16
habrabot(difrex,1) — All
2016-03-15 19:30:03


В данной статье я бы хотел рассказать об одном достаточно простом методе защиты от [Syn Flood][1] атак на маршрутизаторах Juniper серии MX. Данный метод может помочь при нескольких условиях, о которых рассказано ниже. Конечно, есть аппаратные и программные решения, технологии [Syn Cookies][2], Syn Proxy и другие. Но, иногда, большую часть трафика получается заблокировать на маршрутизаторе без применения дополнительных механизмов или дорогостоящих устройств. Так как мы использовали для настройки маршрутизатора некоторые статьи наших [коллег][3], решили поделиться и нашим опытом, он достаточно специфичны, но надеемся принесет пользу. Пример такой атаки приведен на графике ниже. ![][4] [Читать дальше →][5]

[1]: https://en.wikipedia.org/wiki/SYN_flood
[2]: https://en.wikipedia.org/wiki/SYN_cookies
[3]: https://habrahabr.ru/post/186566/
[4]: https://habrastorage.org/files/0b0/81f/23f/0b081f23f4f04a57abf764ee3d6858d5.png
[5]: https://habrahabr.ru/post/278613/#habracut

[>] Универсальный инструмент для установки бэкдоров: Что не так с системными обновлениями
habra.16
habrabot(difrex,1) — All
2016-03-15 20:30:02


[![][1]][2] В нашем блоге на Хабре мы не только рассказываем о развитии своего продукта — [биллинга для операторов связи «Гидра»][3], но и публикуем материалы о работе с инфраструктурой и использовании технологий. Немецкий журналист и хакер Ляйф Риге (Leif Ryge) написал для издания Ars Technica интересный [материал][4] о том, что современный подход к организации обновлений программного обеспечениях несет в себе серьезные риски информационной безопасности. Мы представляем вашему вниманию главные мысли этой заметки. [Читать дальше →][5]

[1]: https://habrastorage.org/files/9a7/6fd/d1b/9a76fdd1bfda459ba7ffbc570079707a.jpg
[2]: https://habrahabr.ru/company/latera/blog/279339/
[3]: http://www.hydra-billing.ru/
[4]: http://arstechnica.com/security/2016/02/most-software-already-has-a-golden-key-backdoor-its-called-auto-update/
[5]: https://habrahabr.ru/post/279339/#habracut

[>] Как прервать непрерывную интеграцию
habra.16
habrabot(difrex,1) — All
2016-03-16 12:00:03


Я — пентестер, и так получилось, что практически на всех проектах, хотя бы отдаленно связанных с анализом инфраструктуры разработчиков, мне встречаются установленные Jenkins и TeamCity (один раз я даже видел Bamboo). Немного гугла, и я выяснил, что это все — так называемые системы непрерывной интеграции. Конечно, в какой-то момент у меня в голове стали возникать вопросы вроде: «А что это вообще за системы такие?» и «Что с ними можно сделать?», естественно, с точки зрения пентестера. Ответив на поставленные вопросы, мы поймем, какую выгоду потенциальный злоумышленник может извлечь и какой вред нанести в рамках экосистемы разработчика, используя лишь имеюущуюся в ней систему непрерывной интеграции. ****

## Agile — это модно

![][1] Думаю, что большей части читателей Хабра наверняка знакомы такие ключевые слова, как Agile, Scrum или даже Sprint. Если вдруг нет, то кратко и очень приблизительно это все можно охарактеризовать так: постоянный выпуск новых законченных (т.е. обладающих каким-то конечным набором функций) релизов приложения. Подробнее можно почитать, например, в [Википедии][2]. Не будем останавливаться на этом подробно, т.к. потенциальному злоумышленнику, для проведения успешной атаки, эти знания особенно и не нужны. Однако стоит заметить, что с каждым днем все больше и больше разработчиков (да большинство!) обращается в Agile-веру, и, конечно, сталкивается с необходимостью как-то управлять всеми этими бесконечными промежуточными релизами. И именно для этой цели и используются системы непрерывной интеграции. Забегая немного вперед, нужно сказать, почему же эти системы могут заинтересовать злоумышленника (или, в нашем случае, конечно, пентестера) и почему стоит беспокоиться об их безопасности.

* Во-первых, в силу специфики своей работы, они взаимодействуют напрямую с исходными кодами (утечка которых, во многих случаях может означать значительные убытки для компании).
* Во-вторых — зачастую, для корректной сборки исходных кодов в конечный продукт, пользователи системы создают так называемые сборочные скрипты, которые могут быть реализованы как средствами самой системы непрерывной интеграции, так и с использованием сторонних инструментов (например, скрипты могут загружаться из репозиториев). В простейшем случае, эти скрипты представляют собой batch или bash файлы, т.е. по сути они ограничены только возможностями самой ОС, на которой исполняются. Таким образом, если злоумышленник смог модифицировать сборочный скрипт, он сможет выполнять команды ОС непосредственно на сборочном сервере.

Кроме того, как было сказано выше, системы непрерывной интеграции представляют собой удобный инструмент для управления разработкой, поэтому сейчас их можно встретить во внутренней сети практически каждой копании, так или иначе связанной с с этой сферой. И даже более, зачастую такие системы, для удобства использования, выставляют в открытый доступ в интернет. [Читать дальше →][3]

[1]: https://habrastorage.org/files/55b/cf2/5eb/55bcf25eb39c4dcc920f94513895a735.jpg
[2]: https://en.wikipedia.org/wiki/Agile_software_development
[3]: https://habrahabr.ru/post/278283/#habracut

[>] [PF] Печать PDF средствами .NET
habra.16
habrabot(difrex,1) — All
2016-03-16 12:00:03






Под катом хочу рассказать про вывод на печать PDF фалов под .NET. С уклоном на печать из разных лотков принтера. Это бывает полезно, когда нужно распечатать документы, состоящие из разных типов бумаги разложенных по лоткам принтера. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/279361/#habracut

[>] Обработка времени в SFML
habra.16
habrabot(difrex,1) — All
2016-03-16 13:00:03


![][1] _От переводчика: данная статья является пятой в цикле переводов официального руководства по библиотеке SFML. Прошлую статью можно найти [тут.][2] Данный цикл статей ставит своей целью предоставить людям, не знающим язык оригинала, возможность ознакомится с этой библиотекой. SFML — это простая и кроссплатформенная мультимедиа библиотека. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Оригинал статьи можно найти [тут][3]. Начнем._ [Читать дальше →][4]

[1]: https://habrastorage.org/files/bc7/94a/b37/bc794ab377be444f8090426e56ae38bd.png
[2]: https://habrahabr.ru/post/279279/#first_unread "Компиляция SFML с помощью CMake"
[3]: http://www.sfml-dev.org/tutorials/2.3/ "Оригинальная документация по SFML"
[4]: https://habrahabr.ru/post/279347/#habracut

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 133