RSS
Pages: 1 ... 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ... 133
[>] Progrobot: бот справки по языкам программирования
habra.16
habrabot(difrex,1) — All
2016-09-17 10:30:04


Когда пишешь код, регулярно бывает нужно посмотреть справку по конкретной функции, модулю и т.д. Обычно я для этого захожу на cppreference.com или на docs.python.org, но это обычно не мгновенно — требует перехода по нескольким страницам минимум, а в питоновской документации еще и зачастую просто сложно найти нужную информацию на странице, не говоря уж о том, что гугл часто направляет на документацию по второй версии, а не по третьей, и приходится вручную переключать.

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

Так получился бот [@Progrobot][1]. Ему можно отправить название функции и получить ее краткое описание, можно послать название модуля (в питоне) или заголовочного файла (в c++) и получить список всех функций в этом модуле, и т.д. Пока есть справка по c++ (с cppreference) и python3 (с docs.python.org). Еще планировал сделать поиск по stackoverflow, но оказалось, что API-шный поиск работает плохо, да еще и есть жесткое ограничение на количество запросов — короче, пока отключил, потом, может быть, выкачаю offline-базу и допилю.
[Читать дальше →][2]

[1]: https://telegram.me/ProgroBot
[2]: https://habrahabr.ru/post/310162/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Установка своих SSL-сертификатов на файловое хранилище D-Link DNS-320L
habra.16
habrabot(difrex,1) — All
2016-09-17 10:30:04


Прикупил я в свое время (еще до кризисных цен) файловое хранилище D-Link 320L, аж за 2 990 рублей (смотря сегодняшние цены хочется просто плакать). И вот недавно захотел я настроить на нем WebDAV нормальный, да с доступом из вне.

Пробросил порт 443 через роутер на файловое хранилище, создал новую шару, поставил крижыки WebDAV. Пытаюсь подключится — с помощью плагинов FAR все ок, а вот через Widnows подключение как сетевой диск не проходит — на сертификаты ругается. Никак не хочет, а ставить сторонние приблуды — нет желания.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310202/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Тонкости построения сетевых моделей в Python
habra.16
habrabot(difrex,1) — All
2016-09-17 10:30:04


Что является основным инструментом, который использует руководитель при управлении проектом? Принято считать, что основным инструментом руководителя проекта является календарный план, в основе которого лежит сетевая модель работ по проекту. Однажды мне довелось реализовать сетевую модель работ на языке Python (код и описание [здесь][1]). Ниже приведены уроки, извлеченные по результатам проделанной работы.
[Читать дальше →][2]

[1]: https://github.com/AleksLobzov/predict
[2]: https://habrahabr.ru/post/310216/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Введение в futures-rs: асинхронщина на Rust [перевод]
habra.16
habrabot(difrex,1) — All
2016-09-17 15:30:03


![][1]

Этот документ поможет вам изучить контейнер для языка программирования Rust — `futures`, который обеспечивает реализацию futures и потоков с нулевой стоимостью. Futures доступны во многих других языках программирования, таких как `C++`, `Java`, и `Scala`, и контейнер `futures` черпает вдохновение из библиотек этих языков. Однако он отличается эргономичностью, а также придерживается философии абстракций с нулевой стоимостью, присущей Rust, а именно: для создания и композиции futures не требуется выделений памяти, а для `Task`, управляющего ими, нужна только одна аллокация. Futures должны стать основой асинхронного компонуемого высокопроизводительного ввода/вывода в Rust, и ранние замеры производительности показывают, что простой HTTP сервер, построенный на futures, действительно быстр.


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

[1]: https://habrastorage.org/files/867/e83/06f/867e8306fa7849dea356c6f5d92c5c6e.jpg
[2]: https://habrahabr.ru/post/310234/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Пользователям веб-браузера Tor рекомендуют обновить его как можно скорее
habra.16
habrabot(difrex,1) — All
2016-09-17 16:30:04


![][1]Пользователям веб-браузера Tor [рекомендуют][2] обновить его как можно скорее до актуальной версии 6.0.5. Новая версия веб-браузера включает в себя исправление серьезной уязвимости Firefox с внутренним идентификатором [ESR-45][3], которая позволяет атакующим, получившим в распоряжение действительный или фальшивый цифровой сертификат TLS для веб-сайта addons.mozilla.org, удаленно устанавливать вредоносное ПО через доставку вредоносного обновления для расширения NoScript.

_This release features important security updates to Firefox including the recently disclosed [extension update vulnerability][4]. All users should upgrade as soon as possible._

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

[1]: https://habrastorage.org/files/57b/3f1/74a/57b3f174a5604e0db1ee6955984d3ac4.png
[2]: https://blog.torproject.org/blog/tor-browser-605-released
[3]: https://bugzilla.mozilla.org/show_bug.cgi?id=1303127
[4]: http://seclists.org/dailydave/2016/q3/51
[5]: https://habrahabr.ru/post/310244/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Apple выпустила iOS 10.0.1
habra.16
habrabot(difrex,1) — All
2016-09-17 23:00:04


![][1]Не все пользователи iOS 10, которые обновили недавно свои устройства iDevice, заметили, что они обновились сразу до версии 10.0.1. Apple довольно тихо решила выпустить обновление для iOS 10 в тот же самый день, когда была выпущена версия 10.0.0. Существует несколько причин, по которым Apple вынуждена была выпустить обновление прошивки. Первая заключается в том, что некоторые пользователи iOS 10 [столкнулись][2] с ошибками при обновлении до новой ОС через OTA на своих устройствах. Другая причина менее заметная, но не менее важная. В iOS 10.0.1 Apple во второй раз закрыла ставшую известной уязвимость CVE-2016-4655, которая была «исправлена» в iOS 9.3.5 и использовалась злоумышленниками в сложной направленной атаке Trident для удаленного jailbreak. В частности, уязвимость используется для обхода Kernel ASLR в iOS и делает возможным эксплуатацию другой LPE уязвимости для получения прав root.

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

[1]: https://habrastorage.org/files/ac4/5f5/514/ac45f55148ea411f98c6386254d1ead5.png
[2]: https://habrahabr.ru/company/eset/blog/309948/
[3]: https://habrahabr.ru/post/310238/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Шейпер для Linux в пользовательском пространстве (NFQUEUE-based)
habra.16
habrabot(difrex,1) — All
2016-09-17 23:30:04


Времена узких интернет-каналов постепенно уходят в прошлое, но иногда еще бывает нужно шейпить сетевой трафик. В Linux для этого есть соответствующие механизмы ядра и утилиты для управления механизмами. Все это хозяйство довольно сложно устроено, обычно постижение шейпинга занимает не один день. Хотя, в простых случаях можно накопипастить заклинания tc из статей или найти скрипт, который эти заклинания генерирует.

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

[1]: https://habrahabr.ru/post/310242/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Пять перспективных языков программирования со светлым будущим
habra.16
habrabot(difrex,1) — All
2016-09-18 10:00:04


![КДПВ][1]



Если разделять языки программирования по популярности, то они делятся на три эшелона. Первый эшелон включает мейнстрим-языки, такие как Java, JavaScript, Python, Ruby, PHP, C#, C++ и Objective-C. Несмотря на то, что некоторые из ведущих языков [возможно увядают][2], вам лучше знать один или несколько из них, если вы хотите иметь возможность легко найти работу.



Языки второго эшелона пытаются пробиться в мейнстрим, но ещё не добились этого. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний. Scala, Go, Swift, Clojure и Haskell — языки, которые я бы отнёс ко второму эшелону. Некоторые компании используют эти языки для отдельных сервисов, но широкое применение встречается редко (за исключением Swift, который начинает обгонять Objective-C в качестве основного языка для iOS). Go и Swift имеют хорошие шансы на переход из второго эшелона в первый в течение ближайших двух-трёх лет.



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



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


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

[1]: http://techbeacon.com/sites/default/files/styles/article_hero_image__2x/public/field/image/5_emerging_programming_languages_with_a_bright_future.jpg
[2]: http://techbeacon.com/5-programming-languages-are-fading-fast
[3]: https://habrahabr.ru/post/310252/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] REST-сервер и тонкий клиент с использованием vibe-d
habra.16
habrabot(difrex,1) — All
2016-09-18 14:00:04


Доброго времени суток, Хабр! Если Вам хотелось разделить своё приложение на сервер и клиент, если Вы хотите добавить API к своему vibe-сайту или если Вам просто нечего делать.
[Добро пожаловать под кат][1]

[1]: https://habrahabr.ru/post/310268/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Логика сознания. Часть 6. Кора мозга как пространство вычисления смыслов
habra.16
habrabot(difrex,1) — All
2016-09-19 09:00:03


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

Информация, чтобы быть использованной, должна получить интерпретацию. Например, красный сигнал светофора можно интерпретировать как запрет ехать, улыбку как сигнал хорошего расположения и тому подобное. Конкретная интерпретация называется смыслом информации. По крайней мере, такой трактовки придерживается [международная организация по стандартизации][2]: «knowledge concerning objects, such as facts, events, things, processes, or ideas, including concepts, that within a certain context has a particular meaning».
[Читать дальше →][3]

[1]: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F
[2]: https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v1:en
[3]: https://habrahabr.ru/post/310214/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Наследование реализаций: закопайте стюардессу
habra.16
habrabot(difrex,1) — All
2016-09-19 09:30:03


# Ключевое противоречие ООП



Как известно, классическое ООП покоится на трех китах


1. [Инкапсуляция][1]
2. [Наследование][2]
3. [Полиморфизм][3]

Классическая же реализация по умолчанию:


1. Инкапсуляция — публичные и приватные члены класса
2. Наследование — реализация функционала за счет расширения одного класса-предка, защищенные члены класса.
3. Полиморфизм — виртуальные методы класса-предка.

Но еще [в 1986 году была обозначена серьезнейшая проблема][4], кратко формулируемая так:



### Наследование ломает инкапсуляцию


[Как такое может быть?][5]

[1]: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
[2]: https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
[3]: https://habrahabr.ru/post/37576/
[4]: http://dl.acm.org/citation.cfm?id=28702
[5]: https://habrahabr.ru/post/310314/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Запускаем Linux на FPGA: Hello, World
habra.16
habrabot(difrex,1) — All
2016-09-19 12:30:04


![image][1]

Вдохновившись серией статей на сайте [проекта Марсоход][2], в которых автор пытается запустить на FPGA-плате Марсоход 2 открытую систему на кристалле [Amber SoC][3] и Linux, я решил попробовать повторить этот опыт на своей плате [Terasic DE2-115][4]. Но, вместо древней как говно мамонта устаревшей версии Linux 2.4.27, я буду запускать последнюю версию Linux на данный момент — 4.8.0-rc5.
[Читать дальше →][5]

[1]: https://habrastorage.org/files/7e2/093/1ef/7e20931ef54540bfb3a7d0a2d052c19b.jpg
[2]: http://marsohod.org/projects/marsohod2/amber-arm-soc
[3]: http://opencores.org/project,amber
[4]: http://de2-115.terasic.com/
[5]: https://habrahabr.ru/post/310056/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Обзор децентрализованных крипто-платформ. Часть1: Waves
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


Этим постом мы — Web-Payment.ru — хотели бы открыть цикл обзоров блокчейн-платформ, основная цель которого — рассказать о возможностях практического применения технологии блокчейн для построения не только отдельных сервисов, но и целых цифровых экосистем. В своих обзорах мы будем рассказывать о системах, которые незаслуженно обделены вниманием на Хабре, но широко известны и обсуждаются в криптовалютной тусовке. В первом материале цикла речь пойдет об open source блокчейн-платформе [Waves][1], которой к июню этого года в рамках краудфандинговой кампании удалось [привлечь][2] финансирование в размере 29 445 BTC, что по действовавшему на тот момент курсу составило более $15 млн. Я решил подробнее ознакомиться с функционалом этой децентрализованной платформы, специализирующейся на модели блокчейн-токенов, основными направлениями ее деятельности, а также стратегическими шагами руководства проекта.

В отличие от базирующегося в Канаде ядра команды Ethereum и немецкой команды Lisk, костяк команды Waves работает в Москве.
[Читать дальше →][3]

[1]: https://wavesplatform.com/
[2]: http://forklog.com/platforma-waves-sobrala-chut-menee-16-mln-v-hode-kraudsejla/
[3]: https://habrahabr.ru/post/310082/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Функции высших порядков и монады для PHP`шников
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


Среди PHP программ преобладает процедурный или в последних версиях частично объектно-ориентированный стиль программирования. Но можно писать и иначе, в связи с чем хочется рассказать о функциональном стиле, благо кое-какие инструменты для этого имеются и в PHP.



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


$jNumber = _do(function() {
$number = yield literal('-')->orElse( literal('+') )->orElse( just('') );
$number .= yield takeOf('[0-9]')->onlyIf( notEmpty() );
if ( yield literal('.')->orElse( just(false) ) ) {
$number .= '.'. yield takeOf('[0-9]');
}
return +$number;
});

_Кроме собственно функционального подхода можно обратить внимание на использование классов для создания DSL-подобного синтаксиса и на использование генераторов для упрощения синтаксиса комбинаторов._

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

[1]: https://habrahabr.ru/post/309962/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Главные характеристики качественного кода
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


![][1]



Как часто вы поражаетесь, читая чужой код, и думаете «господи, ну и каша...». Скорее всего, достаточно часто. И можете ли вы быть уверенным, что никто не думал также когда читал ваш код? Другими словами, насколько вы уверены в чистоте своего кода? Можно быть уверенным только если полностью понимаешь, что значит чистый код.



Сложно дать точное определение чистому коду, и, скорее всего, сколько программистов — столько определений. Однако, некоторые принципы достаточно универсальны. Я собрал девять самых релевантных и описал ниже.



## 1\.Плохой код делает слишком много, чистый код сфокусирован



Каждый класс, метод и любая другая сущность должна оставаться неискаженной. Она должна следовать [принципу единственной обязанности][2]. Вкратце, можно сказать так: если подумать о причинах изменения класса, то нельзя придумать больше одной хорошей причины.



Но я бы не ограничивал определение классами. В свой последней статье [Ральф Вестфал (Ralf Westphal)][3] представил более широкое определение принципа единственной обязанности:


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

[1]: https://habrastorage.org/files/f17/84e/490/f1784e490a254fc582021a28cbb33863.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%B5%D0%B4%D0%B8%D0%BD%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BE%D0%B1%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8
[3]: http://www.developerfusion.com/profile/ralfw/
[4]: https://habrahabr.ru/post/310336/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Как я начал писать сторонние проекты, чтобы набраться опыта
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


![][1]
_(Поскольку люди спрашивали: Sublime Text 3 с «Spacegray Light» («платиново-серый светлый») из [Materialize][2] и гарнитура [Ubuntu Mono Bold][3])_

Как и большинство других студентов, обучавшихся по программе компьютерных наук в Калифорнийском университете в Сан-Диего, я в течение нескольких лет шёл через различные курсы просто «накатом». Я никогда не был _ни хорошим, ни плохим по успеваемости_, и мой средний балл был «не очень». Я любил курсы программирования с их чрезвычайно сложными заданиями; математический анализ же был мне не по душе.

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

Если вы сейчас изучаете компьютерные науки или предполагаете делать это, то надеюсь, что вам будет полезен мой опыт. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/5a4/70e/eb0/5a470eeb0db77737c64071225ff54577.png
[2]: https://github.com/saadq/Materialize
[3]: http://font.ubuntu.com/#charset-mono-bold
[4]: https://habrahabr.ru/post/310264/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] О фундаментальных ошибках в дизайне языков программирования
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


Как-то раз мне на глаза попалась статья о том, что самой дорогой ошибкой в дизайне языков программирования было решение определять окончание строки в C по NULL-байту. Один из вариантов перевода этой статьи на Хабре: [habrahabr.ru/post/126566][1] (хотя я, по-моему, читал другой). Эта статья меня немного удивила. Во-первых, как-будто в те времена экономии каждого бита памяти можно было шикануть и выделить ещё 2-4 байта в каждой строке на хранение её размера. Во-вторых, никаких особо катастрофических последствий это решения для программиста не несёт. Ошибок, которые можно по этому поводу совершить я могу придумать целых две: неверно выделить память для строки (забыть место под NULL) и неверно записать строку (забыть NULL). О первой ошибке уже предупреждают компиляторы, избежать второй помогает использование библиотечных функций. Всей-то беды.

![][2]Значительно большей проблемой времён дизайна языка С (и затем С++) мне кажется другое — оператор for. При всей его кажущейся безвредности — это просто кладезь потенциальных ошибок и проблем.

Давайте вспомним классическое его применение:
for (int i = 0; i < vec.size(); i++)
\{...\}

Что же здесь может пойти не так?
[Читать дальше →][3]

[1]: https://habrahabr.ru/post/126566/
[2]: https://habrastorage.org/files/9c3/0be/a64/9c30bea64f4d463aa88c94b4057aac95.jpg
[3]: https://habrahabr.ru/post/310338/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Syncookied — OpenSource ddos protection system
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


Когда в нашей компании [LTD BeGet][1] встала задача прозрачной фильтрации атак на 4 уровне модели OSI, мы написали свое решение Syncookied. Данным решением мы бы хотели поделиться с Internet сообществом, так как на текущий момент аналогов ему мы не нашли (или мы о них не знаем). Есть платные решения на подобии Arbor, F5, SRX, но стоят они совершенно других денег и в них используются другие технологии защиты.

Почему для разработки мы выбрали язык **Rust** и фреймворк **NetMap**, с какими сложностями мы столкнулись в процессе — будет рассказано в этой статье.

» [GitHub][2]
» [GitHub модуль ядра][3]
» [Страница проекта][4]

![][5]
[Читать о Syncookied][6]

[1]: https://beget.com
[2]: https://github.com/LTD-Beget/syncookied
[3]: https://github.com/LTD-Beget/tcpsecrets
[4]: https://beget.com/ru/articles/syncookied
[5]: https://habrastorage.org/files/602/8d1/271/6028d1271f9f43e5aa3c0eaef92014be.png
[6]: https://habrahabr.ru/post/301892/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Badoo открывает исходные коды Live Streaming Daemon
habra.16
habrabot(difrex,1) — All
2016-09-19 15:00:04


Для того чтобы мы могли считать статистику, наш сайт в своей работе генерирует огромное количество _событий_. Например, при отправке сообщения другому пользователю, при заходе пользователя на сайт, при смене местоположения и т.д. События представляют из себя строку в формате JSON или GPB (Google Protocol Buffers) и содержат время отправки, идентификатор пользователя, тип события, а также поля, относящиеся непосредственно к самому событию (например, координаты пользователя).

Каждую секунду генерируются сотни тысяч событий, и нам нужны инструменты, чтобы их собирать и анализировать эффективно и с минимальной задержкой. Мы рассматривали несколько существующих решений для этой задачи и до недавнего времени использовали демон под названием Scribe от Facebook. Он в целом нас устраивал и позволял делать все, что нам нужно. Однако в какой-то момент Facebook забросил свою разработку, и при некоторых условиях Scribe начал у нас падать (например, при перегрузке upstream-серверов). Самостоятельно устранить причину падений демона у нас не получилось, поэтому мы начали искать альтернативу.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310352/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Hermitage — решение ваших проблем с хранением и обработкой изображений
habra.16
habrabot(difrex,1) — All
2016-09-19 19:30:03


Всем привет! Буду краток: в обмен на пять минут вашего времени отдел PHP-разработки компании Лайв Тайпинг расскажет вам о собственном микросервисе для хранения и обработки загружаемых изображений. Он называется [Hermitage][1]. Его задача — представлять изображение в разных версиях согласно заранее заданным параметрам. Hermitage будет полезен в ситуациях, когда необходим автономный и масштабируемый сервер для хранения изображений и манипуляций над ними.
![hermitage][2]
[Читать дальше →][3]

[1]: https://github.com/LiveTyping/hermitage-skeleton
[2]: https://habrastorage.org/files/0b0/9b4/28c/0b09b428ccec47db82399871d57f29c4.jpg
[3]: https://habrahabr.ru/post/310340/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Обратный отсчет: книга о Stuxnet, исследователях вредоносного кода и уязвимой критической инфраструктуре
habra.16
habrabot(difrex,1) — All
2016-09-19 20:00:05


![][1]Ну что, пришло время попробовать себя в жанре книжного обзора. Книга Countdown to Zero Day: Stuxnet and the Launch of the World's First Digital Weapon журналистки Ким Зеттер, наиболее известной благодаря своим статьям [в журнале Wired][2], вышла достаточно давно, в ноябре 2014 года, но с тех пор так и не была переведена на русский язык (на английском доступна, например, в Amazon в [электронном виде][3]). Впрочем, дело не в переводе: историю Stuxnet можно изучать и по открытым публикациям и исследованиям специалистов по безопасности, но в этом случае вы получите ассортимент технических фактов о вредоносном коде, из которых не так-то просто сложить паззл всей истории.

«Обратный отсчет» — это удачная попытка подняться выше строчек кода, свести воедино все, что известно о первой и по сей день наиболее масштабной специализированной атаке на индустриальные системы. При этом книга не подменяет факты драмой и максимально далека от беллетристики. Ценность ее еще и в том, что она показывает процесс исследования вредоносного кода чуть более подробно, чем обычно: примерно половина текста посвящена именно этому: от обнаружения кода и идентификации атаки, до анализа уязвимостей нулевого дня и, наконец, анализа модулей, модифицирующих работу промышленных контроллеров.

С момента обнаружения Stuxnet прошло шесть лет, семь — с момента начала атаки, больше десяти, предположительно, с начала разработки. Это не единственная кибератака, направленная на саботаж в индустриальных системах, но она по-прежнему не имеет себе равных по сложности. Отчасти это хорошие новости, но причиной является не повышенная защищенность промышленных систем, а скорее смена ориентиров у заказчиков. «Обратный отсчет» — это книга об атаке, названной в свое время «блокбастером» инфобезопасности, но это еще и книга о работе исследователей — тех, кто анализирует вредоносный код и проектирует защиту от него, вне зависимости от источника атаки и намерений.
[Читать дальше →][4]

[1]: https://habrastorage.org/files/1e5/b33/4c0/1e5b334c03244ca5860fa565fac2459c.jpg
[2]: https://www.wired.com/author/KimZetter
[3]: https://www.amazon.com/Countdown-Zero-Day-Stuxnet-Digital-ebook/dp/B00KEPLC08/ref=sr_1_1_twi_kin_2?ie=UTF8&qid=1474277353&sr=8-1&keywords=countdown+to+stuxnet
[4]: https://habrahabr.ru/post/310398/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Укрощаем Yota вместе с Zyxel
habra.16
habrabot(difrex,1) — All
2016-09-20 01:30:03


Думаю многие счастливые обладатели высокоскоростного интернета от Yota сталкивались с этими двумя проблемами:

1. Соединение с интернетом пропадает полностью
2. Соединение как бы есть, но его нет (очень-очень низкая скорость)

Ниже способы борьбы с ними. Сразу отмечу, что решения для тех, у кого роутер Zyxel и usb-модем Yota.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310428/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Итоги GSOC
habra.16
habrabot(difrex,1) — All
2016-09-20 09:30:04


![][1]

30 августа закончился Google Summer of Code, в котором мы принимали участие во второй раз. В целом результат достойный — большинство студентов подтвердили, что их выбрали не зря. Но были и ошибки, о которых расскажем в этой статье. Для подведения итогов GSOC были опрошены менторы — те самые люди, на плечах которых всё и держалось последние полгода. Подробности под катом.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/caa/d8e/99e/caad8e99ebe9416db55b9647f2329623.PNG
[2]: https://habrahabr.ru/post/309814/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Zone.js или как Dart спас Angular
habra.16
habrabot(difrex,1) — All
2016-09-20 12:00:04


![][1]

Я фронтенд-разработчик в компании Wrike, пишу на JavaScript и на Dart, который компилируется в JavaScript. Сегодня я хочу рассказать о библиотеке Zone.js, лежащей в основе Angular 2.
Изначально Zone.js была придумана разработчиками Google для языка программирования Dart и утилиты Dart2JS. С помощью этой библиотеки «гугловцы» решили проблему с дайджест-циклом, которая была характерна для первого Angular’а.
Чтобы понять, где эта библиотека используется и для чего нужна, прошу под кат.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/96f/27d/381/96f27d3813bd4e2a98f3c1a14a6e4fde.png
[2]: https://habrahabr.ru/post/310422/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Разбор задач финального раунда RCC 2016
habra.16
habrabot(difrex,1) — All
2016-09-20 13:00:03


![][1]

18-го сентября был проведен последний, финальный этап чемпионата по спортивному программированию [Russian Code Cup][2] 2016 года. Первое место в упорной борьбе занял [Геннадий Короткевич][3], второе и третье места — [Владислав Епифанов][4] и [Николай Калинин][5] соответственно.

Турнирную таблицу финала можно найти [здесь][6], призовой фонд в этом году впервые распределен на первые 25 мест рейтинга. Это не единственное нововведение — впервые в RCC имели возможность поучаствовать англоговорящие программисты, коих набралось более тысячи из 4.5 тысяч участников. Помимо традиционных для соревнования стран СНГ, в финальном раунде боролись представители Германии, Финляндии, Японии, Швейцарии, Китая и Южной Кореи. Кроме того, в этот раз был проведен зеркальный раунд на Codeforces — сразу после финала основного состязания, у всех желающих была возможность решить задачи финала в специально организованном соревновании для первого дивизиона, поучаствовало чуть больше 200 программистов.

Традиционно предлагаем вам разбор задач финала (тесты можно скачать [здесь][7]):

[A. Церемония закрытия][8]
[B. Кактусофобия][9]
[C. Домашнее задание][10]
[D. Слалом][11]
[E. Шифр][12]
[F. Покрытие массива][13]
[Читать дальше →][14]

[1]: https://habrastorage.org/files/3f0/f7e/e98/3f0f7ee982774515a5e9b4b8e77fa197.jpg
[2]: http://www.russiancodecup.ru/ru/
[3]: http://codeforces.com/profile/tourist
[4]: http://codeforces.com/profile/vepifanov
[5]: http://codeforces.com/profile/KAN
[6]: http://www.russiancodecup.ru/ru/championship/result/
[7]: http://www.russiancodecup.ru/media/uploads/tests/2016/russiancodecup-2016-final_FhwgOuJ.zip
[8]: #A
[9]: #b
[10]: #c
[11]: #d
[12]: #e
[13]: #f
[14]: https://habrahabr.ru/post/310376/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Платформа CUBA: Java RAD фреймворк с открытым кодом
habra.16
habrabot(difrex,1) — All
2016-09-20 13:00:03


![image][1] Незаметно пролетели почти три года с момента публикации первой статьи о платформе на Хабре. За это время многое изменилось: мы вышли на международный рынок, [перешли к open source лицензии][2], обновили стек технологий и внесли множество улучшений во фреймворк и средства разработки. Поэтому вместо длинного списка изменений мы решили опубликовать ещё одну обзорную статью о платформе CUBA, которая, я надеюсь, будет интересна разработчикам кровавого энтерпрайза корпоративных информационных систем — как ещё не знакомым с платформой, так и тем, кто уже что-то слышал о ней.

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

[1]: https://habrastorage.org/getpro/habr/post_images/77b/5c9/98a/77b5c998a12d9a75bf992c1662953051.jpg
[2]: https://www.cuba-platform.ru/blog/2016-05-05/510
[3]: https://habrahabr.ru/post/310148/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Почему иногда «падает» сеть мобильных операторов?
habra.16
habrabot(difrex,1) — All
2016-09-20 14:30:03


Доброго времени суток всем любителям телекома. Мы продолжаем рассказывать вам про самые интересные моменты работы сети МТС вместе с директором Департамента эксплуатации конвергентных сетей и сервисов МТС Андреем Серегиным.

Напомним, что в нашем [первом посте][1] Андрей Вячеславович рассказал, как работает наш Центр оперативного управления мобильной сетью в Краснодаре. [Во втором посте][2] – ответил на ваши вопросы по работе центра. Сегодня Андрей Вячеславович ответит на волнующий всех вопрос, почему иногда «падает» сеть мобильных операторов.

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

На языке технических специалистов такая ситуация называется «локальные перегрузки». В нашей жизни мы тоже часто сталкиваемся с «локальными перегрузками» — будь то на дороге в пятничной пробке на выезде из города или даже в торговом центре в очереди за новым iPhone в ночь старта продаж. На сети тоже могут возникать «узкие места» в какое-то время или в каком-нибудь месте.

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

[1]: https://habrahabr.ru/company/ru_mts/blog/308044/
[2]: https://habrahabr.ru/company/ru_mts/blog/309760/
[3]: https://habrastorage.org/getpro/habr/post_images/ec0/20e/46d/ec020e46d3c4135a17c47db8d6dc5aa9.png
[4]: https://habrahabr.ru/post/310480/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Сжатие мобильной графики в формат ETC1 и открытая утилита
habra.16
habrabot(difrex,1) — All
2016-09-20 15:30:03


При развитии free-to-play мобильной игры вместе с новыми фичами регулярно добавляется и новая графика. Часть ее включается в дистрибутив, часть скачивается в ходе игры. Для возможности запуска приложения на устройствах с небольшим размером оперативной памяти разработчики применяют [аппаратно сжатые текстуры][1].

[![][2]][3]

[Формат ETC1][4] обязателен к поддержке на всех Android-устройствах с OpenGL ES 2.0 и является хорошей отправной точкой оптимизации потребляемой оперативной памяти. По сравнению с форматами PNG, JPEG, WebP загрузка текстур ETC1 осуществляется без интенсивных расчетов обычным копированием памяти. Также улучшается производительность игры по причине меньших размеров данных текстур пересылаемых из медленной памяти в быструю.
[Читать дальше →][5]

[1]: https://habrahabr.ru/company/intel/blog/276089/
[2]: https://habrastorage.org/getpro/habr/post_images/d35/b77/b2c/d35b77b2c69087fc79f55bd429f4b059.jpg
[3]: https://habrahabr.ru/company/playrix/blog/310484/
[4]: http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt
[5]: https://habrahabr.ru/post/310484/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] GitLab CI: Развертывание и среды развертывания
habra.16
habrabot(difrex,1) — All
2016-09-20 16:30:03


В данной статье речь пойдет об истории успеха воображаемого новостного портала, счастливым владельцем которого являетесь вы. К счастью, вы уже храните код проекта на GitLab.com и знаете, что [для тестирования можно использовать GitLab CI][1].
Теперь вам интересно, можно ли пойти дальше и использовать CI еще и для развертывания проекта, и если да, то какие возможности при этом открываются.



Чтобы не привязываться к какой-либо конкретной технологии, предположим, что ваше приложение является простым набором HTML-файлов, никакого выполнения кода на сервере, никакой компиляции JS assets. Деплоить будем на [Amazon S3][2].



У автора нет цели дать рецепты для конкретной технологии в этой статье. Наоборот, примеры кода максимально примитивны, чтобы слишком на них не зацикливаться. Смысл в том чтобы вы посмотрели на фичи и принципы работы GitLab CI в действии, а потом применили их для вашей технологии.



![][3]


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

[1]: https://about.gitlab.com/2016/07/29/the-basics-of-gitlab-ci/#run-our-first-test-inside-ci
[2]: https://aws.amazon.com/s3/
[3]: https://about.gitlab.com/images/blogimages/ci-deployment-and-environments/intro.jpg
[4]: https://habrahabr.ru/post/310502/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Аналитическое вычисление производных на шаблонах C++
habra.16
habrabot(difrex,1) — All
2016-09-20 17:00:03


Тут на днях [писали][1] про аналитическое нахождение производных, что напомнило мне об одной моей маленькой библиотечке на C++, которая делает почти то же, но во время компиляции.

![][2]

В чём профит? Ответ прост: мне нужно было запрогать нахождение минимума достаточно сложной функции, считать производные этой функции по её параметрам ручкой на бумажке было лень, проверять потом, что я не опечатался при написании кода, и поддерживать этот самый код — лень вдвойне, поэтому было решено написать штуковину, которая это сделает за меня. Ну, чтобы в коде можно было написать что-то такое:
using Formula_t = decltype (k * (_1 - r0) / (_1 + r0) * (g0 / (alpha0 - logr0 / Num) - _1)); // сама формула
const auto residual = Formula_t::Eval (datapoint) - knownValue; // регрессионный остаток

// производные по параметрам:
const auto dg0 = VarDerivative_t::Eval (datapoint);
const auto dalpha0 = VarDerivative_t::Eval (datapoint);
const auto dk = VarDerivative_t::Eval (datapoint);

вместо крокодилов, которые получатся, если брать частные производные функции на картинке вначале (вернее, некоторого её упрощённого варианта, но он выглядит не так страшно).

Ещё неплохо быть достаточно уверенным, что компилятор это соптимизирует так, как если бы соответствующие производные и функции были написаны руками. А уверенным быть бы хотелось — находить минимум нужно было очень много раз (действительно много, где-то от сотни миллионов до миллиарда, в этом была суть некоего вычислительного эксперимента), поэтому вычисление производных было бы бутылочным горлышком, происходи оно во время выполнения через какую-нибудь рекурсию по древообразной структуре. Если же заставить компилятор вычислять производную, собственно, во время компиляции, то есть шанс, что он по получившемуся коду ещё пройдётся оптимизатором, и мы не потеряем по сравнению с ручным выписыванием всех производных. Шанс реализовался, кстати.

Под катом — небольшое описание, как оно там всё работает.

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

[1]: https://habrahabr.ru/post/309676/
[2]: https://habrastorage.org/files/7d7/d2b/f02/7d7d2bf029364d65ad444fd10d692fe0.png
[3]: https://habrahabr.ru/post/310016/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Уязвимости систем видеонаблюдения позволяют хакерам создавать масштабные ботнеты
habra.16
habrabot(difrex,1) — All
2016-09-20 21:00:04


[![][1]][2]

Согласно [заявлению][3] US-CERT, в прошивке цифровых устройств видеонаблюдения (DVR) AVer Information EH6108H+ обнаружены серьезные уязвимости, которые позволяют злоумышленникам без труда получать к ним удаленный доступ и даже формировать ботнеты. [Читать дальше →][4]

[1]: https://habrastorage.org/files/6d4/cdd/a43/6d4cdda431b243caa901b87d93a1d475.jpg
[2]: https://habrahabr.ru/company/pt/blog/310548/
[3]: http://news.softpedia.com/news/here-s-another-vulnerable-dvr-system-ready-to-become-a-ddos-botnet-508298.shtml#ixzz4KmOUEBSQ
[4]: https://habrahabr.ru/post/310548/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Что особенного в СУБД для данных в оперативной памяти
habra.16
habrabot(difrex,1) — All
2016-09-20 23:00:03


## Константин Осипов ( [kostja][1] )


![Константин Осипов][2]

Как родилась идея доклада? Я не очень люблю выступать и рассказывать про фичи, особенно про будущие фичи. Выясняется, что и люди не особо любят это слушать. Они любят слушать про то, как все устроено. Это доклад о том, как все устроено или должно быть, с моей точки зрения, устроено в современной СУБД.

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

![][3]

На макроуровне – это то, как должна быть устроена современная СУБД. Почему у нас сегодня есть возможность создавать новые базы данных, почему нельзя взять текущую и удовлетвориться ее производительностью, подтюнить или написать для нее патч? Просто взять и написать патч, который бы ее ускорил, если она медленная? Из какого пространства решений мы выбираем? [Читать дальше →][4]

[1]: https://habrahabr.ru/users/kostja/
[2]: https://habrastorage.org/files/7a6/0b9/061/7a60b9061c5f4be29063c7b8533cd1c0.jpg
[3]: https://habrastorage.org/getpro/habr/post_images/41c/94a/a08/41c94aa087b4c48ab13b36e6a5718a55.png
[4]: https://habrahabr.ru/post/310560/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Работа в IPFS с человеческим лицом
habra.16
habrabot(difrex,1) — All
2016-09-21 02:30:07


Немногие слышали про IPFS, ещё более немногие добрались до детального изучения. И совсем уж [единицы][1] погрузились в проект поглубже.



Если вкратце, IPFS это химера, созданная из технологий, лежащих в основе git и bittorrent, с одной особенностью — адресация объектов по содержимому ([CAS][2]).



Любой объект, файл или пользовательские данные хэшируются, и получившийся хэш становится адресом этого файла в системе IPFS. Далее, этот контент могут запросить другие узлы сети, и он расползётся по планете, и в идеале, никогда больше не исчезнет, будучи доступным по хэшу. Из этого свойства так же вытекает иммутабельность объектов в системе, ведь любое изменение содержимого создаёт новый адрес-хэш в сети.



Типичная ссылка на объект:

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

[1]: https://habrahabr.ru/post/268275/
[2]: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D0%BE-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D1%83%D0%B5%D0%BC%D0%BE%D0%B5_%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB%D0%B8%D1%89%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
[3]: https://habrahabr.ru/post/310554/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] ФСБ планирует дешифровать весь интернет-трафик россиян в режиме реального времени
habra.16
habrabot(difrex,1) — All
2016-09-21 09:30:03


![image][1] ФСБ, Минкомсвязь и Минпромторг обсуждают набор технических решений, которые позволят дешифровать весь интернет-трафик россиян в режиме реального времени. Об этом со ссылкой на собственные источники сообщает газета "[Коммерсантъ][2]".

В опубликованной статье сообщается, что обсуждаемая ФСБ технология является частью реализации нашумевшего «пакета Яровой».
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/f23/2bf/e9d/f232bfe9dc2432ddae0f8ad83ff1d739.jpg
[2]: http://kommersant.ru/doc/3094848
[3]: https://habrahabr.ru/post/310576/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] USB killer Type-C
habra.16
habrabot(difrex,1) — All
2016-09-21 11:00:04



Если мне не изменяет память первым устройством оснащённым разъёмом USB Type-C был планшет от компании Nokia, увы он стал надгробным камнем для этого Величайшего производителя мобильных телефонов. Тем не менее новый разъём начал активно применяться в новой технике и с каждым днём количество девайсов поддерживающих USB Type-C интерфейс становится всё больше и больше, с этим надо что-то делать. )) С вами Dark\_Purple и сегодня мы будем убивать Brand New Apple MacBook 12” (Early 2016), однако здравствуйте!
[Дальше][1]

[1]: https://habrahabr.ru/post/310442/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Шкатулка с эксплойтами Equation Group пополнилась новым экземпляром
habra.16
habrabot(difrex,1) — All
2016-09-21 12:00:04


![][1]Компания Cisco [выпустила][2] уведомление безопасности CISCO-SA-20160916-IKEV1, которое подтверждает присутствие еще одной 0day уязвимости в продуктах Cisco из [архива][3] Shadow Brokers. Уязвимость типа Information Disclosure получила идентификатор CVE-2016-6415 (_IKEv1 Information Disclosure Vulnerability in Multiple Cisco Products_) и присутствует в коде обработки сетевых пакетов протокола Internet Key Exchange version 1 (IKEv1) в продуктах Cisco IOS, IOS XE, а также IOS XR. С использованием уязвимости атакующий удаленно может получить доступ к содержимому памяти с конфиденциальной информацией. Как и в случае других аналогичных уязвимостей, эксплуатация CVE-2016-6415 возможна за счет отправки на уязвимое устройство специальным образом сформированного сетевого пакета IKEv1.

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

[1]: https://habrastorage.org/files/981/ab2/61b/981ab261beef48698d95d8290d72fda7.jpg
[2]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20160916-ikev1
[3]: https://habrahabr.ru/company/eset/blog/307948/
[4]: https://habrahabr.ru/post/310504/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Почему дополненная реальность добавляет риска сети
habra.16
habrabot(difrex,1) — All
2016-09-21 12:00:04


Приложения, которые используют дополненную реальность, такие как Pokemon Go, представляют собой серьезную опасность для организаций, но есть шаги, которые помогут устранить эти риски.

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

[1]: https://habrastorage.org/files/d8d/8f7/d8b/d8d8f7d8b7c143d8b8892551dc34a37e.jpg
[2]: https://habrahabr.ru/post/310520/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Нянчим проект на React-redux с пелёнок
habra.16
habrabot(difrex,1) — All
2016-09-21 13:00:04



В начале этого года мы в HeadHunter начали проект, нацеленный на автоматизацию различных HR-процессов у компаний-клиентов. Архитектурой этого проекта на фронте выбрали React-Redux стек.

За 9 месяцев он вырос из небольшого приложения для тестирования сотрудников в многомодульный проект, который сегодня называется [“Оценка талантов”][1]. По мере его роста мы сталкивались с вопросами:
* хранения стейта, его нормализации;
* построения масштабируемой архитектуры проекта, удобной иерархии — как в структуре, так и в бизнес-логике.
Это проявлялось в изменении подхода к построению компонентов, архитектуры редьюсеров.

Давайте поговорим о том, как мы развивали проект и какие решения принимали. Некоторые из них могут оказаться “холиварными”, а другие, напротив, “классикой” в построении большого проекта на redux. Надеюсь, что описанные ниже практики помогут вам при построении react-redux приложений, а живые примеры помогут разобраться, как работает тот или иной подход.
[Читать дальше →][2]

[1]: https://test.hh.ru
[2]: https://habrahabr.ru/post/310524/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Искусство написания простых и коротких функций
habra.16
habrabot(difrex,1) — All
2016-09-21 13:30:03


Софт постоянно усложняется. Стабильность и простота расширения приложения напрямую зависят от качества кода.



К сожалению, почти каждый разработчик, и я в том числе, в своей работе сталкивается с кодом плохого качества. И это — болото. У такого кода есть токсичные признаки:


* Функции слишком длинные, и на них слишком много задач
* Часто у функций есть побочные эффекты, которые сложно определить, а иногда даже сложно отлаживать
* Непонятные имена у функций и переменных
* Хрупкий код: небольшая модификация неожиданно ломает другие компоненты приложения
* Плохое покрытие кода тестами или вообще его отсутствие

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



Однажды мой коллега уволился, потому что пытался справиться с REST API на Ruby, который было трудно поддерживать. Он получил этот проект от предыдущей команды разработчиков.



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



![][1]



Такие ситуации случаются часто, и это печально. Но что делать?

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

[1]: https://habrastorage.org/files/71d/da6/7ae/71dda67ae918424b933c7fd217cd8a47.jpg
[2]: https://habrahabr.ru/post/310590/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Solar JSOC – опыт построения коммерческого SOC
habra.16
habrabot(difrex,1) — All
2016-09-21 15:00:04


Эта статья открывает цикл публикаций, посвященных функционированию центра по мониторингу и реагированию на инциденты информационной безопасности – Security Operations Center (SOC). В них мы будем рассказывать о том, что надо учитывать при создании SOC, о процессе подготовки инженеров мониторинга, регистрации инцидентов и практических кейсах, с которыми сталкивается Solar JSOC.

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


### Зачем нужен SOC


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

В качестве вводной информации стоит упомянуть статистику по данным исследований, проведенных ФРИИ, а также компаниями Group-IB и Microsoft:

* Потери экономики РФ от киберпреступности за 2015 год оцениваются в 123,5 млрд рублей.
* 60% российских компаний отметили рост числа киберинцидентов на 75%, а размера ущерба — в два раза.
Также хотелось бы упомянуть статистику по нашим клиентам, которая отражается в ежеквартальных отчетах JSOC Security Flash Report:

* Двукратный рост количества инцидентов информационной безопасности в первом квартале 2016 года по отношению к аналогичному периоду 2015 года.
* Значительный рост инцидентов, связанных с утечками конфиденциальной информации.
* Увеличение критичных инцидентов с 26% до 32% по отношению к общему скоупу.
* Рост числа различных кибергруппировок, работающих по известным схемам мошенничества.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310470/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Ещё один тип XSS-атаки на сайт
habra.16
habrabot(difrex,1) — All
2016-09-21 15:00:04


Привет, Хабр! Вчера вечером жена пожаловалась, что не может зайти на сайт детской одежды, потому что с него перебрасывает на совершенно посторонний ресурс. Проверяю сам — действительно, во время загрузки главной страницы (или любой другой, если успеть перейти по ссылке с загружающейся страницы) внезапно перебрасывает на другой домен.

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

[1]: https://habrahabr.ru/post/310482/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

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


Добрый день, коллеги. Хочу рассказать о полученном мной интересном опыте. Может быть кому-то пригодится.

В современном мире пароли используются повсеместно. На корпоративном компьютере, на личном телефоне и планшете, в почте и т.д. И казалось бы всем уже неоднократно объяснялось, что пароль должен быть стойким. Показывались рекомендации, что пароль не должен содержать личные данные, словарные слова, простые комбинации и т.д. Но тем не менее, еще множество людей продолжают использовать простые пароли. Что является не только нарушением требований безопасности, но представляет серьезную опасность как личным так и корпоративным данным.

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

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

[1]: https://habrahabr.ru/post/310604/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Проект Jigsaw в Java 9. Модулярное будущее, которого не избежать
habra.16
habrabot(difrex,1) — All
2016-09-21 18:00:03


![][1]

О проекте модуляризации Java мы слышим из года в год. Каждый раз ждём, следим за анонсами. Нам говорят, что Jigsaw практически готов, но каждый раз переносят срок выхода. Может быть, это не такой простой проект, как видится многим? Возможно, что изменения в нем повлияют на разработку в корне? Может быть, модулярная система — это только верхушка айсберга? Ответить на вопросы, связанные с проектом Jigsaw, мы попросили Ивана Крылова.

![][2] Иван занимается разработкой виртуальных машин Java и компиляторов более 10 лет, в настоящее время развивает компиляторную инфраструктуру в виртуальной машине Zing в Azul Systems. Регулярный докладчик на конференциях JUG.ru и других европейских Java-конференциях.


#### **Что такое Jigsaw, и как он повлияет на мир Java?**


** — Иван, добрый день. Расскажите, пожалуйста, какое влияние проект Jigsaw окажет на экосистему Java?**

— Добрый. Для объяснения моего взгляда на Java и модулярность стоит немного рассказать о моей деятельности. Коммерческим программированием я занимаюсь примерно двадцать лет. Последние одиннадцать из них — разработкой виртуальных машин. Работал в команде HotSpot Runtime в Sun. Потом компания была куплена Oracle. Далее было несколько изменений деятельности, и последние три с половиной года работаю в компании Azul Systems, где занимаюсь разработкой виртуальных машин.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/f60/e47/022/f60e47022c484721a3d59eacaa50e534.jpg
[2]: https://habrastorage.org/files/8f4/d49/3ec/8f4d493ecbcd40ad88bc10f6e46aa4f0.jpg
[3]: https://habrahabr.ru/post/310368/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Почему традиционная защита от кражи денежных средств в системах ДБО уязвима
habra.16
habrabot(difrex,1) — All
2016-09-21 20:00:03


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



Для защиты от кражи денежных средств в таких системах, как правило, требуется решить следующие основные задачи: проверить подлинность пользователя, а также подлинность и целостность электронного документа, выражающего намерение пользователя. На практике, таким документом является платёжное поручение, в числе реквизитов которого задаются сумма денежных средств и счёт получателя.



Эти задачи традиционно решаются с использованием средств строгой двухфакторной аутентификации и электронной подписи, выполненных в виде USB-токенов или смарт-карт (далее – токены).

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

[1]: https://habrahabr.ru/post/310624/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Запуск отдельных приложений через OpenVPN без контейнеров и виртуализации
habra.16
habrabot(difrex,1) — All
2016-09-21 21:00:04


Как-то одним прекрасным утром я рассказывал в телеграмме бывшему другу и коллеге о том, что такое network namespaces в Linux и с чем его едят. Коллега восхитился, так же, как я, в свое время, а мне пришла в голову, что надо не костылить скриптом, как я делал до этого, а автоматизировать запуск отдельного network namespace и OpenVPN в нем. Так как я использую Debian Sid и Ubuntu 16.04 LTS автоматизацию я себе сделал в виде юнитов systemd, но об этом в конце статьи. После того, как я рассказал старшему брату, человеку далекому от IT, о возможности запускать только одно приложение, например браузер, под VPN, а остальные, как и прежде, он сказал «Только ради этого стоит перейти на Linux на компе», а я решил написать статью-инструкцию, как это сделать.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310646/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] GitLab CI: Учимся деплоить
habra.16
habrabot(difrex,1) — All
2016-09-21 23:00:04


В данной статье речь пойдет об истории успеха воображаемого новостного портала, счастливым владельцем которого являетесь вы. К счастью, вы уже храните код проекта на GitLab.com и знаете, что [для тестирования можно использовать GitLab CI][1].
Теперь вам интересно, можно ли пойти дальше и использовать CI еще и для развертывания проекта, и если да, то какие возможности при этом открываются.



Чтобы не привязываться к какой-либо конкретной технологии, предположим, что ваше приложение является простым набором HTML-файлов, никакого выполнения кода на сервере, никакой компиляции JS assets. Деплоить будем на [Amazon S3][2].



У автора нет цели дать рецепты для конкретной технологии в этой статье. Наоборот, примеры кода максимально примитивны, чтобы слишком на них не зацикливаться. Смысл в том чтобы вы посмотрели на фичи и принципы работы GitLab CI в действии, а потом применили их для вашей технологии.



![][3]


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

[1]: https://about.gitlab.com/2016/07/29/the-basics-of-gitlab-ci/#run-our-first-test-inside-ci
[2]: https://aws.amazon.com/s3/
[3]: https://about.gitlab.com/images/blogimages/ci-deployment-and-environments/intro.jpg
[4]: https://habrahabr.ru/post/310502/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] О новых успехах противостояния (СР УВЧ!*)
habra.16
habrabot(difrex,1) — All
2016-09-22 09:00:03


Пару дней назад появилась [статья ][1]которую почти никто не освещал. На мой взгляд она замечательная, поэтому я про неё расскажу в меру своих способностей. Статья о том, чего пока не было: машину научили играть в шутер, используя только картинку с экрана. Вместо тысячи слов:

Не идеально, но по мне — очень классно. 3D шутер, который играется в реальном времени — это впервые.
[А теперь чуть-чуть теории][2]

[1]: https://arxiv.org/pdf/1609.05521v1.pdf
[2]: https://habrahabr.ru/post/310638/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Номенклатура JavaScript (в контексте Node.js и Web API)
habra.16
habrabot(difrex,1) — All
2016-09-22 12:00:04


### I. Предыстория



Я много лет использую UltraEdit как редактор на самые разные случаи жизни. Одна из основных причин — быстрая работа с гигабайтными файлами без загрузки их в память. Для программирования на JavaScript он тоже достаточно удобен, вот только с одним существенным недостатком: автодополнение в нём основывается на достаточно бедном, жёстко заданном списке ключевых слов и глобальных переменных, вдобавок отстающем от развития языка. Как-то я задался вопросом, можно ли пополнить этот список полным перечнем всех готовых свойств и методов, какие только можно ввести в контексте Node.js и Web API (браузера). Где бы такой список можно раздобыть? Мне приходили в голову такие варианты:


1. Готовый перечень, кем-то составляемый и обновляемый для всеобщего пользования, вроде библиотеки [globals][1], но полнее.
2. Парсинг документации (спецификация ECMAScript, сайты MDN и Node.js и т.п.), вручную или программно.
3. Получение списка метапрограммированием.
[Читать дальше →][2]

[1]: https://github.com/sindresorhus/globals/
[2]: https://habrahabr.ru/post/310662/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Masking Bitmaps на Android
habra.16
habrabot(difrex,1) — All
2016-09-22 12:00:04


![][1]


# Введение


При разработке под Android довольно часто возникает задача наложить маску на изображение. Чаще всего требуется закруглить углы у фотографий или сделать изображение полностью круглым. Но иногда применяются маски и более сложной формы.

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

Я предполагаю, что читатель имеет опыт в разработке под Android и знаком с классами Canvas, Drawable и Bitmap.

Код, используемый в статье, можно найти на [GitHub][2].
[Читать дальше →][3]

[1]: https://habrastorage.org/files/7a1/945/18c/7a194518c95e43a3a7a3953cb4209dd3
[2]: https://github.com/ArkadyGamza/MaskingBitmaps
[3]: https://habrahabr.ru/post/310618/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как мы написали фриланс-биржу для Telegram
habra.16
habrabot(difrex,1) — All
2016-09-22 12:30:04


![][1]

Добрый день, дорогие Хабравчане! Сегодня решил рассказать вам о нашем опыте создания бота для Telegram на Node.js практически без опыта серверной разработки и на добровольных началах. Сразу оговорюсь: у меня за спиной чуть больше четырех лет разработки под iOS, у остальных членов команды тоже был опыт разработки от одного до шести лет в смежных областях. Для большинства из нас это был первый случай использования Node.js в сравнительно большом проекте. Как мы это сделали, зачем мы это сделали, почему фриланс-биржа и как она отличается от классических моделей, какие у нас были проблемы и как мы с ними боролись – под катом!
[Читать дальше →][2]

[1]: https://habrastorage.org/files/a35/3bd/e2c/a353bde2c9db4b959aacf8e7922fa40b.png
[2]: https://habrahabr.ru/post/310434/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ... 133