RSS
Pages: 1 ... 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 ... 210
[>] Встраиваемый компактный веб-сервер Mongoose
habra.16
habrabot(difrex,1) — All
2017-02-08 16:00:05


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

Что в таком случае обычно делают? Правильно, идут протоптанной дорожкой — Apache/nginx + PHP. А дальше начинается ад, потому что:
1. Все это нужно устанавливать и настраивать.
2. Все это жрет приличное количество ресурсов.
3. Из PHP как-то надо получать данные от разрабатываемой системы. Повезет если для этого достаточно просто залезть в СУБД.

Поэтому у меня, как думаю и многих других разработчиков, есть непреодолимое желание впихнуть все эти функции непосредственно в разрабатываемую систему. Это даст неоспоримые преимущества:
1. Меньше внешних зависимостей, а значит проще установка и настройка.
2. Теоретически меньшее потребление ресурсов.
3. Можно отдавать данные прямо из вашего продукта, без посредников.
Но при этом мы не желаем заморачиваться всякими тонкостями обработки HTTP-соединений, парсинга и т.п.

Такие решения есть. И в этой статье я хотел бы поверхностно познакомить вас с одним из них – встраиваемый сервер Mongoose (не путать с MongoDB).

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

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

[>] Файлы для Windows с DRM-защитой можно использовать для деанонимизации пользователя Tor
habra.16
habrabot(difrex,1) — All
2017-02-08 16:00:05


![image][1]



Специалисты из HackerHouse [провели][2] исследование атаки с использованием социальной инженерии через файлы, оснащенные защитой Digital Rights Management (DRM). Суть атаки заключается в получении информации о пользователе через подмену DRM-подписи и использования подставного URL, который будет автоматически открываться при запуске файла через Windows Media Player.

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

[1]: https://habrastorage.org/getpro/habr/post_images/10d/37b/a7e/10d37ba7e8f618ce11698866092e61db.jpg
[2]: https://www.myhackerhouse.com/windows_drm_vs_torbrowser/
[3]: https://habrahabr.ru/post/321424/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Тестирование смарт контрактов Ethereum на примере DAO
habra.16
habrabot(difrex,1) — All
2017-02-08 16:30:04


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

[1]: http://solidity.readthedocs.io/en/develop/solidity-in-depth.html
[2]: https://habrahabr.ru/post/321362/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Читаем Google-таблицы из web-приложения
habra.16
habrabot(difrex,1) — All
2017-02-08 17:00:04


Google имеет несколько версий API для доступа к своим электронным таблицам. Разберемся с тем, как прочитать данные из spreadsheet таблицы в web-приложении на java используя API версии 4.
[Читать дальше →][1]

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

[>] [recovery mode] Openstack. Детективная история или куда пропадает связь? Часть первая
habra.16
habrabot(difrex,1) — All
2017-02-08 17:00:04


Эта история про OpenStack + KVM. Всё началось, когда работало всё хорошо. «Старая» платформа всех удовлетворяла. Её поднимали без нас, и она слегка устарела. Это была Juno. При этом она работала.

В принципе она была тестовой, пока в один прекрасный день не стала боевой. Мы знать не знали проблем, с которыми столкнулись потом. Начальство, радостно потирая руки, решило обновить парк систем. В том числе и тестовую платформу OpenStack.
[Читать дальше →][1]

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

[>] Релиз YouTrack 2017.1 и Hub 2017.1
habra.16
habrabot(difrex,1) — All
2017-02-08 17:00:04


Привет, Хабр! Совсем недавно мы выпустили новую версию системы управления проектами — [YouTrack 2017.1][1] и коннектор инструментов JetBrains для совместной работы — [Hub 2017.1][2].

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

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

[1]: https://www.jetbrains.com/youtrack/whatsnew/
[2]: https://www.jetbrains.com/hub/whatsnew/
[3]: https://habrastorage.org/files/595/432/b1d/595432b1df2e43d19560535bd5704c14.png
[4]: https://habrahabr.ru/post/321436/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Предложи проект для проверки анализатором PVS-Studio: теперь и на GitHub
habra.16
habrabot(difrex,1) — All
2017-02-08 17:00:04


![Picture 5][1]


Проверка проектов с помощью статического анализатора и написание обзорных статей с найденными в них ошибками – задача не из лёгких. Почти всегда это работа не одного человека, а коллектива. Большую роль в этом процессе играет выбор проекта. От него напрямую зависит интерес читателей к той или иной статье. В этой заметке я хочу рассказать, как можно предложить интересный проект для анализа через GitHub.
[Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/5cf/ad1/812/5cfad18123abcb8f9b110600edc67133.png
[2]: https://habrahabr.ru/post/321438/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как включить JTAG-отладку через USB
habra.16
habrabot(difrex,1) — All
2017-02-08 17:30:05


[![image][1]][2]

В конце декабря 2016 года мы опубликовали на Хабре материал по выступлению экспертов Positive Technologies на Chaos Communication Congress (33C3) в Гамбурге. Максим Горячий и Марк Ермолов рассказали о том, что современные процессоры Intel позволяют использовать отладочный интерфейс JTAG через доступный на многих платформах порт USB 3.0 для получения полного контроля над системой.

Начиная с процессоров семейства Skylake, запущенных в производство в 2015 году, компания Intel внедрила технологию Direct Connect Interface (DCI), которая предоставляет доступ к JTAG через популярный порт USB 3.0. При этом на целевом компьютере не требуется каких-либо программных или аппаратных агентов − необходимо лишь, чтобы интерфейс DCI был активирован. Таким образом возможность использовать возможности JTAG на оборудовании, доступном в широкой продаже, появилась у рядовых разработчиков [Читать дальше →][3]

[1]: https://habrastorage.org/files/76c/090/236/76c090236c094d3a807a342798164041.png
[2]: https://habrahabr.ru/company/pt/blog/321440/
[3]: https://habrahabr.ru/post/321440/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Уязвимость BIND позволяет «уронить» любой сервер: как и почему это работает
habra.16
habrabot(difrex,1) — All
2017-02-08 18:00:04


![][1]

Почти месяц назад, 11 января 2017 года, разработчики наиболее популярного DNS сервера с открытым исходным кодом BIND выпустили исправления для четырех новых уязвимостей, которые позволяют удаленному атакующему аварийно завершить работу DNS сервера. В числе [уязвимостей][2] присутствует CVE-2016-9147, о которой далее пойдет речь. Атака не требует специальных условий кроме необходимости злоумышленнику видеть исходящий от уязвимого сервера трафик.

Мы задались целью создать правила (NAD) для обнаружения эксплуатации данных уязвимостей по сети — чтобы это сделать, нам пришлось глубже разобраться с кодом BIND и написать собственные эксплоиты. Наш разбор поможет понять, как все устроено внутри столь популярного DNS-сервера, а также узнать о просчетах, допущенных разработчиками проекта, и возможных решениях этих проблем. [Читать дальше →][3]

[1]: https://habrastorage.org/files/2d6/892/e9d/2d6892e9dead4810baf26637c691e794.jpg
[2]: https://www.isc.org/downloads/software-support-policy/security-advisory/
[3]: https://habrahabr.ru/post/321428/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Вышел GitLab 8.16: Поддержка Google Container Engine, встроенный Prometheus + тайм-трекинг в CE
habra.16
habrabot(difrex,1) — All
2017-02-08 18:00:04


_История с удалением базы конечно затмила все остальные новости про ГитЛаб. Так что если вы пропустили релизный пост про изменения и новые функции в GitLab 8.16, ниже — его перевод:_



Наша цель — [сделать участие в разработке доступным для каждого][1]. Для этого мы делаем [инструментарий GitLab][2] простым в использовании, настройке и обслуживании. В [предыдущей версии GitLab][3] мы реализовали простую настройку непрерывной интеграции (continuous integration, CI) и автоматическое развертывание (deploy) в Kubernetes. А в первом релизе нового года мы делаем следующий шаг к нашей цели.


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

[1]: https://about.gitlab.com/strategy/#mission
[2]: https://about.gitlab.com/direction/#scope
[3]: https://habrahabr.ru/company/softmart/blog/318926/
[4]: https://habrahabr.ru/post/321418/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Каково это — быть разработчиком в России, когда тебе сорок
habra.16
habrabot(difrex,1) — All
2017-02-08 18:30:04


[Привет всем, я — сорокалетний программист-самоучка, а это моя история.][1]

Пару недель назад я наткнулся на график распределения людей, интересующихся технологиями, ИТ и программированием. И он заставил меня задуматься о моей карьере.

![][2]

Через каких-то 20 лет мне стукнет 60. И вероятность того, что я еще смогу заниматься тем, для чего был создан, составляет очень крошечную величину. Эти размышления привели меня туда, откуда все начиналось.

Я дебютировал в роли разработчика программного обеспечения в 1990 году, через год после того, как мне на 14-тилетие родители подарили ПЭВМ «Микроша».
[Читать дальше →][3]

[1]: https://habrahabr.ru/post/282674/
[2]: https://habrastorage.org/files/c11/f9b/ba6/c11f9bba6eff467eb0761473541c1670.png
[3]: https://habrahabr.ru/post/321446/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Подключаем Facebook SDK для Xamarin.Forms
habra.16
habrabot(difrex,1) — All
2017-02-08 19:30:04


Социальные сети, и особенно Facebook, уже давно используются в мобильных приложениях. Сегодня мы рассмотрим, как подключить нативные Facebook SDK к проекту на базе Xamarin.Forms (iOS и Android) для удобной авторизации пользователей и получения о них базовой информации. Вы также легко сможете расширить описанные в статье методы для того, чтобы реализовать полноценное взаимодействие с этим замечательным сервисом. Тема простая и понятная, поэтому без теорий и прелюдий перейдем сразу к практике.

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

[1]: https://habrastorage.org/files/65c/d3d/c42/65cd3dc4255c46e2b669fc90b0c251d7.jpg
[2]: https://habrahabr.ru/post/321454/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Метод рекурсивной координатной бисекции для декомпозиции расчетных сеток
habra.16
habrabot(difrex,1) — All
2017-02-08 20:00:04


![][1]


## Введение


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

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

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

[1]: https://habrastorage.org/files/0a6/8e3/7b9/0a68e37b99d849bd92f7539d5818d3fe.png
[2]: https://habrahabr.ru/post/321456/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Изменения процедуры выдачи сертификата для подписи кода у Certum
habra.16
habrabot(difrex,1) — All
2017-02-08 21:00:05


![image][1]

Возможно, некоторые читали про услугу, предоставляемую польской компанией [Certum][2] для open source разработчиков: недорогой сертификат для подписи кода в [этой статье][3] (если нет, то прочтите).

К сожалению, некоторые вещи в мире со временем становятся хуже или дороже (или и то, и другое вместе). Бесплатная услуга Certum-а превратилась в платную (сертификат стал стоить €14.00, а с февраля этого года — €28.00), плюс с этого года **процедура генерации пары ключей изменилась**. Вот об этом я и хочу написать.
[Читать дальше →][4]

[1]: https://habrastorage.org/files/5d7/792/855/5d77928559e141a4bdd1800b6a7c6d28.png
[2]: https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml
[3]: https://habrahabr.ru/post/242267/
[4]: https://habrahabr.ru/post/321462/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Инверсии зависимостей управления впрыском
habra.16
habrabot(difrex,1) — All
2017-02-09 00:00:04


![image][1]


## Вступление


Наверняка первый вопрос, который возник у вас при взгляде на заголовок, был "_Шта?_". На самом деле я просто перевел фразу "_Инверсия управления, внедрение зависимости_" в Google Translate на китайский, а затем обратно. Зачем? Затем, что на мой взгляд, это хорошая иллюстрация того, что происходит на самом деле. Люди вокруг _путают_, _коверкают_ и _извращают_ эти понятия. По долгу службы я провожу много интервью, и 90% того, что я слышу, когда задаю вопрос про DI — честно говоря, откровенный бред. Я сделал поиск по Хабру и нашел несколько статей, которые пытаются раскрыть эту тему, но не могу сказать, что они мне сильно понравились (ладно, ладно, я проглядел только три первых страницы, каюсь). Здесь же на Хабре я встречал в комментариях такую расшифровку IoC, как _Injection of Container_. Кто-то всерьез предполагает, что есть некий механизм инъекции контейнеров, который сосуществует где-то рядом с DI, и, видимо, даже делает нечто похожее. Только с контейнерами. Мда. На самом деле понять внедрение зависимости очень просто, надо всего лишь…
[Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/e74/31d/b1c/e7431db1cacf5a63858ad60b91162f27.png
[2]: https://habrahabr.ru/post/321344/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как создавать, собирать, устанавливать и использовать пакеты с программами и библиотеками для UNIX-подобных систем
habra.16
habrabot(difrex,1) — All
2017-02-09 07:30:04


Речь пойдёт о программах и библиотеках для UNIX-подобных систем, распространяемых в виде исходного кода (в том числе в виде тарболлов), написанных обычно на C и C++ (хотя этот же порядок работы может применяться к софту на любом языке). Многие вещи в этой статье написаны применительно конкретно к GNU/Linux, хотя многое из статьи может быть обобщено и на другие UNIX-подобные ОС.

Под словом «пакет» я понимаю в этой статье пакет с исходными текстами, причём не пакет конкретного дистрибутива GNU/Linux, а просто пакет, исходящий от оригинальных авторов софта.

В этой статье я разберу следующие вопросы:

* Вот скачал программу или библиотеку. Как её собрать и установить? Как воспользоваться библиотекой?
* Что такое префикс (prefix) установки? В чём разница между сборкой и установкой? Куда обычно устанавливают программы?

Я разберу только совсем базовые вещи. Те, которые типичные участники сообщества свободного ПО, программирующие на C и C++ под UNIX-подобные системы, обычно уже знают. Как создавать тарболлы (на примере «голого» make) и как устанавливать чужие тарболлы. Advanced советы по созданию «хороших» пакетов я не дам. «Продвинутые» вещи читайте в документации систем сборки, в замечательной статье [«Upstream guide» от Debian][1] (в её конце есть ещё куча ссылок о создании «хороших» пакетов). Многое в этой статье можно было сделать по-другому, моя цель: дать хотя бы один способ, не пытаться объять необъятное.
[Читать дальше →][2]

[1]: https://wiki.debian.org/UpstreamGuide
[2]: https://habrahabr.ru/post/321468/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Процедурная генерация уровней для M.E.R.C. в Unity
habra.16
habrabot(difrex,1) — All
2017-02-09 12:30:05


![image][1]


## Часть первая


Процедурная генерация уровней — отличный способ добавить в игру больше контента и неожиданных сценариев. Для сюжетных миссий M.E.R.C. мы хотели создать большой набор сделанных вручную уровней, но осознавали, что нашей небольшой инди-команде не хватит времени или ресурсов на изготовление контента для такой большой игры. Кроме того, мы стремились добавить случайность и повысить реиграбельность игры. Процедурная генерация уровней позволила нам создать большой, бесконечно изменчивый мир, который мы не смогли бы получить, строя отдельные уровни вручную. Использование процедурной генерации позволяет добавить больше контента и улучшить игровой процесс.

Что такое [M.E.R.C.][2]? M.E.R.C. — это тактический симулятор отряда в реальном времени с видом сверху. Игрок одновременно управляет отрядом из четырёх наёмников в антиутопическом мире Неотопии, отдаёт приказы и активирует особые умения. Каждый наёмник отряда имеет собственные особые боевые, технические и хакерские навыки, которые необходимо использовать в миссиях. Визуально M.E.R.C. напоминает стиль «Бегущего по лезвию»: тёмные дождливые трущобы и крыши города со множеством извилистых улиц и неоновым освещением. Сюжет заключается в войне могущественных корпораций за контроль над Неотопией. Отряд нанимают для выполнения различных заданий корпораций, таких как похищение учёных конкурентов или убийство сотрудников-перебежчиков. Каждая полученная миссия влияет на отношения с разными корпорациями и в результате изменяет игровой мир. Учитывая всё это, давайте рассмотрим требования к процедурной генерации уровней.
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/2dd/a38/c62/2dda38c62a103ab1d8c9507a08fb17b8.png
[2]: http://store.steampowered.com/app/555010/
[3]: https://habrahabr.ru/post/321260/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Обеспечение безопасности пользовательских данных: кто за это отвечает?
habra.16
habrabot(difrex,1) — All
2017-02-09 13:30:04


Мы практически каждый день видим в новостях сообщения о том, что в результате утечек компрометируются огромные объемы пользовательских данных. Большинство из нас знакомы с теми рисками, которым подвергаются наши персональные данные, но, как пользователи, мы часто стараемся не обращать на это внимание или ожидаем, что ответственность за эти риски возьмет на себя компания-поставщик сервиса. Кто же отвечает за безопасность?


[Читать дальше: Кто ответит за безопасность?][1]

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

[>] Что нового в CUBA Platform 6.4
habra.16
habrabot(difrex,1) — All
2017-02-09 14:30:04


[![CUBA Generic UI templates][1]][2]



Недавно мы выпустили новый релиз CUBA Platform и CUBA Studio. Если в версии 6.3 мы сделали акцент на архитектурных и технических новшествах, то этот релиз прибавил к платформе много фич, с которыми процесс разработки стал быстрее и удобнее. Мы добавили новые визуальные компоненты универсального пользовательского интерфейса, централизованный механизм валидации данных, движок для генерации альтернативного фронт-энда на основе Google Polymer и другие важные улучшения. Подробности — под катом.



_Disclaimer: статья в первую очередь адресована разработчикам, уже знакомым с [платформой CUBA][3]._


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

[1]: https://habrastorage.org/files/558/2ee/48f/5582ee48f72f4f5985fc47428fbeee2a.png
[2]: https://habrahabr.ru/company/haulmont/blog/321400/
[3]: https://habrahabr.ru/company/haulmont/blog/310148/
[4]: https://habrahabr.ru/post/321400/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] В поисках анонимной почты
habra.16
habrabot(difrex,1) — All
2017-02-09 14:30:04


![][1]

[Источник картинки][2]


> Как мыть голову, не снимая фольгированную шапочку?
> _Неизвестный автор_

Не так давно у меня возникла необходимость в полностью анонимном адресе электронной почты, который, даже имея доступ к содержимому письма, нельзя было бы однозначно со мной связать. Мне было нужно отправить в больницу несколько вопросов по поводу лечения ребёнка, но очень не хотелось, чтобы эта информация осталась условно навечно ассоциированной c моим и его именами в логах провайдеров, поисковиков, почтовиков, товарища майора и кто знает каких ещё операторов Big Data, орудующих во Всемирной паутине. От адресата ожидалось получение файлов неизвестного размера с документами, необходимыми для госпитализации.



Мне казалось, что с регистрацией такой почты не будет трудностей, но, как выяснилось, я отстал от жизни. Известные почтовые сервисы, такие как gmail и outloook, теперь требуют номер телефона, поэтому пришлось немного потрудиться, чтобы найти устраивающий меня вариант. В данной статье я решил поделиться своим опытом решения этой проблемы.

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

[1]: https://habrastorage.org/files/5c8/133/50a/5c813350a54b455d846eed31fb9f417c.png
[2]: http://www.techgrapple.com/send-free-fake-anonymous-email/
[3]: https://habrahabr.ru/post/321480/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Что такое блокчейн и зачем он нужен
habra.16
habrabot(difrex,1) — All
2017-02-09 14:30:04


[![][1]][2]

В сознании среднестатистического пользователя само слово “блокчейн” (“цепочка блоков”) стало довольно тесно связано с термином “биткойн”, что двояко отразилось на восприятии.

С одной стороны, популярность биткойна вызывает интерес и к блокчейну, с другой стороны, в массовом сознании биткойн часто ассоциируется лишь с чем-то негативным, запрещенным и подвергаемым преследованию со стороны законодателей. Мол, зачем расплачиваться биткойнами, когда есть целый зоопарк электронных кошельков и банковских карт? Ясное дело – чтобы проворачивать какие-то темные делишки.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/840/a1d/2fe/840a1d2feaeb4baf86ca3f146a3a1599.jpg
[2]: https://habrahabr.ru/company/bitfury/blog/321474/
[3]: https://habrahabr.ru/post/321474/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Анализ эффективности метода факторизации на эллиптических кривых. Практика
habra.16
habrabot(difrex,1) — All
2017-02-09 18:00:04


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

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

[>] Машинный поиск аномалий в поведении интернет-магазинов и покупателей
habra.16
habrabot(difrex,1) — All
2017-02-09 19:00:03


![image alt text][1]



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



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

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

[1]: https://habrastorage.org/files/7d4/9e8/8b4/7d49e88b474c4a3a8661b24ef21a2837.jpg
[2]: https://habrahabr.ru/post/321490/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

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


Это — не статья, это — фейлбук. То, что вы прочтете под катом, — выжимка наших нелепых техно-промахов за все 5 лет работы над флагманским продуктом — iFunny. Возможно, наша фейловая история поможет вам избежать ошибок, а возможно, вызовет смех. Что тоже хорошо. Смешить людей — призвание FunCorp уже 13 лет.


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

[1]: https://habrastorage.org/files/783/d56/9a4/783d569a466d41fc8084c76d926e4539.jpg
[2]: https://habrahabr.ru/post/321508/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Mahou — волшебный переключатель раскладок
habra.16
habrabot(difrex,1) — All
2017-02-09 20:00:03


### Как я создал первую функцию



![][1] Все началось с того что я захотел программировать на C#(до создания этой программы у меня было почти что никаких знаний о C#), и была одна программа которая не работала так как я хотел (Punto Switcher) долго-долго я искал к ней альтернативы и ненадолго остановился на dotSwitcher нравилась она мне… Но через некоторое время я решил что ей не хватает функционала и решил посмотреть исходный код, кое-где кое-как я разобрался как все работает, но больше всего не понимал одну вещь — WinAPI, и начал z искать информацию по функциям используемых в dotSwitcher и понемногу я начинал запоминать и понимать смысл всего этого _волшебства_ (так мне тогда казалось).

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

[1]: http://i.piccy.info/i9/dc685734c2c850286bc6c3c39dafa066/1475346272/4400/1075423/Mahou.png
[2]: https://habrahabr.ru/post/321518/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] VulnHub: Выкидываем неугодных из IRC в Wallaby's Nightmare
habra.16
habrabot(difrex,1) — All
2017-02-10 03:00:03


Всем доброго времени суток, после небольшого перерыва, снова возвращаемся к разбору виртуалок с [VulnHub][1]. И на очереди [Wallaby's: Nightmare (v1.0.2)][2], как пишет автор, на создание этого _boot2root_ его вдохновили некоторые предыдущие _CTF_ с этого сайта, а вот какие именно, я думаю вы сами сможете догадаться.
[Читать дальше →][3]

[1]: https://www.vulnhub.com
[2]: https://www.vulnhub.com/entry/wallabys-nightmare-v102,176/
[3]: https://habrahabr.ru/post/321384/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Angular — настройка среды разработки и production сборки с AOT-компиляцией и tree-shaking (Gulp, Rollup, SystemJS)
habra.16
habrabot(difrex,1) — All
2017-02-10 13:30:04


Одна из особенностей Angular, присущая и первой и новой версии — высокий порог вхождения. Новый Angular, помимо всего прочего, трудно даже запустить. А и запустив, легко получить 1-2 Мб скриптов и порядка нескольких сотен запросов при загрузке hello world страницы. Можно, конечно, использовать всякие стартеры, seed'ы или Angular CLI, но для использования в серъезном проекте нужно самому во всем разбираться.



В этой статье я постараюсь описать, как настроить удобную среду разработки с использованием SystemJS, и production сборку Angular приложения на основе Rollup, с выходом около 100кб скриптов и нескольких запросов при открытии страницы. Использовать будем TypeScript и SCSS.



Попробовать все в деле можно в моем [angular-gulp-starter][1] проекте.


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

[1]: https://github.com/PFight/angular-gulp-starter
[2]: https://habrastorage.org/files/dc0/c30/6b9/dc0c306b93f9458db1ede6a226571123.jpeg
[3]: https://habrahabr.ru/post/321236/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 06: открытые пароли в SCADA, уязвимость в SMB, токен для Google Apps
habra.16
habrabot(difrex,1) — All
2017-02-10 13:30:04


Давно мы не говорили о безопасности промышленных IT-систем. Независимый исследователь из Германии Максим Рупп нашел ([новость][1], [исследование][2]) серьезные проблемы в SCADA-системе компании Honeywell. В контроллерах XL Web II, использующихся в том числе в производстве, энергетике и в системах водоснабжения, были обнаружены пять уязвимостей, включая хранение паролей в открытом виде. Более того, используя специальный запрос к контроллеру, атакующий может в любое время получить актуальный пароль — он хранится на клиентской стороне. Приведенный в исследовании код говорит сам за себя:

![][3]
Через параметры в URL в систему передается масса команд и настроек, принимаются они без проверок: правильным запросом можно, например, начать новую пользовательскую сессию, отключив таким образом легитимного управляющего устройством. Данная история хорошо описывает все традиционные особенности IT-безопасности в промышленности. Для апдейта нужно обратиться в местное подразделение вендора, сроки закрытия уязвимостей большие (информация была передана еще в августе прошлого года). Тем не менее, это неплохой пример взаимодействия вендоров SCADA-систем с безопасниками.
[Читать дальше →][4]

[1]: https://threatpost.com/honeywell-scada-controllers-exposed-passwords-in-clear-text/123562/
[2]: http://rupp.it/SA-Honeywell_XL_WEB_II_Controller.html
[3]: https://habrastorage.org/files/479/d90/1aa/479d901aa21c49ca87abdc78f3c70069.png
[4]: https://habrahabr.ru/post/321526/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Язык C# почти функционален
habra.16
habrabot(difrex,1) — All
2017-02-10 13:30:04


Здравствуйте, уважаемые читатели! Наши искания в области языка C# серьезно перекликаются с этой статьей, автор которой — специалист по функциональному программированию на C#. Статья — отрывок из готовящейся книги, поэтому в конце поста предлагаем за эту книгу проголосовать.

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

[1]: https://habrastorage.org/files/e1b/694/f55/e1b694f554424d9c8bbbde5be94ddd91.jpeg
[2]: https://habrahabr.ru/post/321546/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Cognitive Services & LUIS: Введение в распознавание естественного языка
habra.16
habrabot(difrex,1) — All
2017-02-10 13:30:04


В этой статье мы поговорим о понимании языка (о лингвистических вычислениях, таких как назначение меток, синтаксический анализ и так далее) и обратим особое внимание на два API: Linguistic Analysis API и интеллектуальную службу распознавания речи (LUIS). Если вы любите английский язык так же как русский и увлекаетесь обучением искусственного интеллекта, добро пожаловать под кат.

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

[1]: https://habrastorage.org/files/6e5/086/18f/6e508618f19549749cb042860aa4d7fa.jpg
[2]: https://habrahabr.ru/post/321494/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] PVS-Studio и GitHub-сообщество: начало дружбы
habra.16
habrabot(difrex,1) — All
2017-02-10 16:00:04


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


![Picture 1][1]



Итак, всё началось со статьи: [Как использовать PVS-Studio бесплатно][2].
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/23f/39d/db6/23f39ddb671a98ba55787cf06da9fb9a.png
[2]: http://www.viva64.com/ru/b/0457/
[3]: https://habrahabr.ru/post/321582/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Вас атакует искусственный интеллект
habra.16
habrabot(difrex,1) — All
2017-02-10 18:00:05


[![][1]][2]

В конце прошлого года “искусственный интеллект” многократно упоминали в итогах и прогнозах IT-индустрии. И в нашу компанию, которая занимается информационной безопасностью, всё чаще стали присылать из различных изданий вопросы про перспективы AI. Но эксперты по безопасности не любят комментировать эту тему: возможно, их отталкивает именно эффект “жёлтой прессы”. Легко заметить, как возникают такие вопросы: после очередной новости типа “Искусственный интеллект научился рисовать как Ван Гог” журналисты хватаются за горячую технологию и идут опрашивать по ней всех подряд – а чего может достичь AI в животноводстве? А в сфере образования? Где-то в этом списке автоматически оказывается и безопасность, без особого понимания её специфики.

Кроме того, журналистика, щедро подкормленная IT-индустрией, обожает рассказывать о достижениях этой индустрии в рекламно-восхищенных тонах. Именно поэтому СМИ прожужжали вам все уши о победе машинного интеллекта в игре Го (хотя от этого нет никакой пользы в реальной жизни), но не особенно жужжали о том, что в прошлом году погибло уже как минимум два человека, которые доверили свою жизнь автопилоту автомобиля Tesla.

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

[1]: https://habrastorage.org/files/7e5/468/409/7e54684099a34f92bf68760e15a2bf3d.jpg
[2]: https://habrahabr.ru/company/pt/blog/321586/
[3]: https://habrahabr.ru/post/321586/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Серия видеоуроков по Kotlin
habra.16
habrabot(difrex,1) — All
2017-02-10 18:00:05



Приветствую тебя — Человек жаждущий знаний!
Хочу поделится с тобой своим небольшими но думаю полезным для многих знаниями по Kotlin в виде небольшой серии видео.
[Читать дальше →][1]

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

[>] Процедурные макросы в Rust 1.15
habra.16
habrabot(difrex,1) — All
2017-02-10 20:00:04


![][1]Ребята, свершилось! После долгих шести недель ожидания наконец [вышла версия **Rust 1.15**][2] с блекджеком и процедурными макросами.



По моему нескромному мнению, это самый значительный релиз, после [эпического **1\.0**][3]. Среди множества вкусных вещей в этом релизе были стабилизированы [процедурные макросы][4], взрывающие мозг своим могуществом, удобством и безопасностью.



А что же это дает простым смертным? Практически [бесплатную [де]сериализацию][5], удобный [интерфейс к БД][6], интуитивный [веб фреймворк][7], [выводимые конструкторы][8] и много чего еще.



Да, если вы все еще не добрались до этого языка, то сейчас самое время попробовать, тем более, что теперь [установить компилятор и окружение][9] стало можно одной строкой:


curl https://sh.rustup.rs -sSf | sh

Впрочем, обо всем по порядку.

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

[1]: https://habrastorage.org/getpro/habr/post_images/0b3/e28/766/0b3e28766aef36e8e998a6e430922be1.png
[2]: https://blog.rust-lang.org/2017/02/02/Rust-1.15.html
[3]: https://blog.rust-lang.org/2015/05/15/Rust-1.0.html
[4]: https://doc.rust-lang.org/book/procedural-macros.html
[5]: https://serde.rs/
[6]: http://diesel.rs/
[7]: https://rocket.rs/
[8]: https://github.com/nrc/derive-new
[9]: https://www.rust-lang.org/en-US/install.html
[10]: https://habrahabr.ru/post/321564/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] PROTEQ — протокол обмена по мультигигабитным линиям для ПЛИС Xilinx
habra.16
habrabot(difrex,1) — All
2017-02-11 18:30:04


Современные ПЛИС содержат мультигигабитные линия связи и существует большое количество протоколов для обмена. Однако при ближайшем рассмотрении применять стандартные протоколы в ПЛИС не всегда удобно. Например для ПЛИС Xilinx доступны реализации PCI Express, RapidIO, Aurora; У каждого из них есть недостатки. PCI Express и RapidIO работают с кодировкой 8/10 что сразу ограничивает пропускную способность. Aurora может работать с кодировкой 64/66 но не обеспечивает восстановление данных после сбоя. С учётом недостатков стандартных протоколов и особенностей применения я решил реализовать свой протокол обмена.
[Читать дальше →][1]

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

[>] Ещё один Brainfuck интерпретатор
habra.16
habrabot(difrex,1) — All
2017-02-11 23:30:04


[Brainfuck][1] — язык программирования, созданный с одной целью: написать для него интерпретатор. Их было написано так много, что даже не буду давать на них ссылки. В этой статье на пальцах объясняется простой, но эффективный способ его оптимизации.



![quine][2]


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

[1]: https://ru.wikipedia.org/wiki/Brainfuck
[2]: https://hsto.org/files/f53/d76/310/f53d763107c0497884971ba9e033c149.png
[3]: https://habrahabr.ru/post/321630/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Читаем tar за 26 строк ANSI C кода
habra.16
habrabot(difrex,1) — All
2017-02-11 23:30:04


Архиваторы — это страшно! Огромные и ужасные алгоритмы, которые обычному человеку никогда в жизни не понять! Rar, zip, gzip, tar — современные стандарты де-факто, а значит крайне сложные и навороченные штуки, которые и пытаться понять не стоит. Ну, tar выглядит попроще, может там всё не так сложно? Смотрим [git][1] с исходниками. Видим десятки файлов, многие на десятки килобайт. Мда. Видимо, тупик.


__________________| |____________________________________________
,--. ,--. ,--. ,--.
|oo | _ \ `. | oo | | oo|
o o|~~ |(_) / ; | ~~ | | ~~|o o o o o o o o o o o
|/\/\| '._,' |/\/\| |/\/\|
__________________ ____________________________________________
| |dwb

На самом деле всё не так сложно. В [документации][2] было описано, что tar — просто способ записи нескольких файлов на ленту. Т.е. всё должно быть просто. По факту — набор вспомогательной информации для каждого файла и непосредственно его содержимое. Именно понимание этого факта и позволило сделать читатель tar-файлов в 26 строк.

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

[1]: http://git.savannah.gnu.org/cgit/tar.git/tree/src
[2]: https://www.opennet.ru/docs/RUS/tar/tar-8.html
[3]: https://habrahabr.ru/post/320834/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Automount afuse
habra.16
habrabot(difrex,1) — All
2017-02-12 00:00:04


Я хотел рассказать про своё открытие afuse — автомонтирование файловых систем по требованию, автоматически.

Разве не здорово просто сделать:
ls /mnt/remote/web.example.com/var/lib/www/

и сразу увидеть файлы web-сервера, никак не устанавливая с ним соединение специально?

Я этим пользуюсь уже давно, а главное:
* Это работает из любого источника: Не важно, делаете вы указанный вывод в консоли, сохранили ссылку в MC или переходите из favorites вашего любимого менеджера такого как nautilus или dolphin
* Вы можете переходить на любой хост, куда у вас есть доступ по ключам (настроить запрос пароля тоже можно, но это не интересно)
* Вы можете запросто указать под каким пользователем входить на сервер, традиционно используя @:
cd /mnt/remote/apache@web.example.com/var/lib/www/



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

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

[>] UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»
habra.16
habrabot(difrex,1) — All
2017-02-12 09:30:04


_Модераторы, при следующем внеснии мной правки я просто внесу правку в мастер-копию, размещённую на моём компьютере и пересу её сюда. Так что все ваши правки исчезнут. Если хотите сообщите мне об ошибке, используйте стандартный способ (личку). См. также: [github.com/limonte/dear-habr/issues/80][1] ._

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

Костыли в UNIX начали возникать ещё с момента появления UNIX, а это было ещё раньше появления не только Windows, но даже вроде бы Microsoft DOS (вроде бы, мне лень проверять, проверяйте сами). Если лень читать, хотя бы просмотрите все пункты, что-нибудь интересное найдёте. Это далеко не полный список, это просто те косяки, который я захотел упомянуть.

* В самом начале make был программой, которую один человек написал для себя и нескольких своих знакомых. Тогда он, недолго думая, сделал так, что командами воспринимаются строки, которые начинаются с Tab. Т. е. Tab воспринимался отлично от пробела, что крайне некрасиво и нетипично ни для UNIX, ни за его пределами. Он так сделал, потому что не думал, что make будет ещё кто-то использовать кроме этой небольшой группы. Потом появилась мысль, что make — хорошая вещь и неплохо бы включить его в стандартный комплект UNIX. И тогда _чтобы не сломать уже написанные мейкфайлы, т. е. написанные вот этими вот десятью людьми, он не стал ничего менять_. Ну вот так и живём… Из-за тех десятерых страдаем мы все.[Читать дальше →][2]

[1]: https://github.com/limonte/dear-habr/issues/80
[2]: https://habrahabr.ru/post/321652/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Свершилось! Процедурные макросы в Rust 1.15
habra.16
habrabot(difrex,1) — All
2017-02-12 18:00:04


![][1]Ребята, свершилось! После долгих шести недель ожидания наконец [вышла версия **Rust 1.15**][2] с блекджеком и процедурными макросами.



По моему нескромному мнению, это самый значительный релиз, после [эпического **1\.0**][3]. Среди множества вкусных вещей в этом релизе были стабилизированы [процедурные макросы][4], взрывающие мозг своим могуществом, удобством и безопасностью.



А что же это дает простым смертным? Практически [бесплатную [де]сериализацию][5], удобный [интерфейс к БД][6], интуитивный [веб фреймворк][7], [выводимые конструкторы][8] и много чего еще.



Да, если вы все еще не добрались до этого языка, то сейчас самое время попробовать, тем более, что теперь [установить компилятор и окружение][9] можно одной командой:


curl https://sh.rustup.rs -sSf | sh

Впрочем, обо всем по порядку.

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

[1]: https://habrastorage.org/getpro/habr/post_images/0b3/e28/766/0b3e28766aef36e8e998a6e430922be1.png
[2]: https://blog.rust-lang.org/2017/02/02/Rust-1.15.html
[3]: https://blog.rust-lang.org/2015/05/15/Rust-1.0.html
[4]: https://doc.rust-lang.org/book/procedural-macros.html
[5]: https://serde.rs/
[6]: http://diesel.rs/
[7]: https://rocket.rs/
[8]: https://github.com/nrc/derive-new
[9]: https://www.rust-lang.org/en-US/install.html
[10]: https://habrahabr.ru/post/321564/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Нейронные сети для начинающих. Часть 2
habra.16
habrabot(difrex,1) — All
2017-02-12 21:00:05


![][1]

Добро пожаловать во вторую часть руководства по нейронным сетям. Сразу хочу принести извинения всем кто ждал вторую часть намного раньше. По определенным причинам мне пришлось отложить ее написание. На самом деле я не ожидал, что у первой статьи будет такой спрос и что так много людей заинтересует данная тема. Взяв во внимание ваши комментарии, я постараюсь предоставить вам как можно больше информации и в то же время сохранить максимально понятный способ ее изложения. В данной статье, я буду рассказывать о способах обучения/тренировки нейросетей (в частности метод обратного распространения) и если вы, по каким-либо причинам, еще не прочитали [первую часть][2], настоятельно рекомендую начать с нее. В процессе написания этой статьи, я хотел также рассказать о других видах нейросетей и методах тренировки, однако, начав писать про них, я понял что это пойдет вразрез с моим методом изложения. Я понимаю, что вам не терпится получить как можно больше информации, однако эти темы очень обширны и требуют детального анализа, а моей основной задачей является не написать очередную статью с поверхностным объяснением, а донести до вас каждый аспект затронутой темы и сделать статью максимально легкой в освоении. Спешу расстроить любителей “покодить”, так как я все еще не буду прибегать к использованию языка программирования и буду объяснять все “на пальцах”. Достаточно вступления, давайте теперь продолжим изучение нейросетей.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/081/b6a/e2c/081b6ae2cde449f08975c968f202f883.png
[2]: https://habrahabr.ru/post/312450/
[3]: https://habrahabr.ru/post/313216/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Ещё один интерпретатор Brainfuck
habra.16
habrabot(difrex,1) — All
2017-02-12 23:30:04


[Brainfuck][1] — язык программирования, созданный с одной целью: написать для него интерпретатор. Их было написано так много, что даже не буду давать на них ссылки. В этой статье на пальцах объясняется простой, но эффективный способ его оптимизации.



![quine][2]


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

[1]: https://ru.wikipedia.org/wiki/Brainfuck
[2]: https://hsto.org/files/f53/d76/310/f53d763107c0497884971ba9e033c149.png
[3]: https://habrahabr.ru/post/321630/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как я разбирал docx с помощью XSLT
habra.16
habrabot(difrex,1) — All
2017-02-13 12:00:04


Задача обработки документов в формате docx, а также таблиц xlsx и презентаций pptx является весьма нетривиальной. В этой статье расскажу как научиться парсить, создавать и обрабатывать такие документы используя только XSLT и ZIP архиватор.

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

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

[>] Pygest #3. Релизы, статьи, интересные проекты из мира Python [30 января 2017 — 13 февраля 2017]
habra.16
habrabot(difrex,1) — All
2017-02-13 12:00:04


![image][1]

Всем привет!

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

А теперь к делу!
[Перейти к дайджесту][2]

[1]: https://habrastorage.org/files/aa2/815/f22/aa2815f2207940fab9ac72e85219fe3c.png
[2]: https://habrahabr.ru/post/321662/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Удаленная переустановка Linux по ssh без доступа к консоли
habra.16
habrabot(difrex,1) — All
2017-02-13 14:30:04


Понадобилось мне переустановить сервер, который как бы хостился у знакомых знакомых. Там был сильно устаревший Debian, а, самое главное, система стояла на обычных разделах без lvm и пространство было распределено очень не оптимально. Физический доступ получить к нему было практически нереально, местного админа попросить что-то сделать было можно, но занять это могло неделю. Виртуальный KVM у сервера был, но извне на него попасть было нельзя; у как бы хостера не было лишних IP-адресов, а внутрь его сети попасть было невозможно. Надо было переустановить сервер из-под работающей системы по ssh. Ага, давайте поменяем ротор у турбины не выключая, потом её перезапустим и будет она с новым ротором работать!
[Читать дальше →][1]

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

[>] Версионирование артефактов сборки в Gradle используя git имена тегов, бранчей и коммитов
habra.16
habrabot(difrex,1) — All
2017-02-13 15:30:04


С переездом из SVN на GIT и gitlab (плюс переезд из Jenkins на Gitlab-CI, но его использование также упомянём), встал вопрос версионирования получаемых артефактов сборки приложения.

В SVN был всем привычный номер ревизии, монотонно увеличивающийся с каждым коммитом. Его было удобно добавлять в номер версии, и это решало большинство проблем. Но git конечно предоставляет множество плюшек, и стоило убеждать руководство и всё команду перевести проект на него…
Зато пришлось отстроить заново процесс версионирования получаемых артефактов сборки.

В итоге остановились на очень хорошем Gradle плагине [github.com/nemerosa/versioning][1], о его использовании я и собираюсь рассказать.
[Читать дальше →][2]

[1]: https://github.com/nemerosa/versioning
[2]: https://habrahabr.ru/post/321668/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Служба Advanced Threat Protection в Защитнике Windows
habra.16
habrabot(difrex,1) — All
2017-02-13 18:00:05


В начале февраля мы [рассказывали][1] вам про обнаружение преступников с помощью службы ATP в Защитнике Windows. В комментариях появились различные вопросы, относительно работы службы, поэтому мы решили поделиться подробным описанием её функционала.

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

[1]: https://aka.ms/habr_321698_1
[2]: https://habrastorage.org/files/a89/cef/ad9/a89cefad9edb4284a985271ef5c2cebb.jpg
[3]: https://habrahabr.ru/post/321698/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Уравнение теплопроводности в tensorflow
habra.16
habrabot(difrex,1) — All
2017-02-13 23:30:03


Привет, Хабр! Некоторое время назад увлекся глубоким обучением и стал потихоньку изучать tensorflow. Пока копался в tensorflow вспомнил про свою курсовую по параллельному программированию, которую делал в том году на 4 курсе университета. Задание там формулировалось так:

Линейная начально-краевая задача для двумерного уравнения теплопроводности:

![\frac{\partial u}{\partial t} = \sum \limits_{\alpha=1}^{2} \frac{\partial}{\partial x_\alpha} \left (k_\alpha \frac{\partial u}{\partial x_\alpha} \right ) -u, \quad x_\alpha \in [0,1] \quad (\alpha=1,2), \ t>0;][1]
![k_\alpha =
\begin{cases}
50, (x_1, x_2) \in \Delta ABC\\
1, (x_1, x_2) \notin \Delta ABC
\end{cases}][2]
![(\alpha = 1,2), \ A(0.2,0.5), \ B(0.7,0.2), \ C(0.5,0.8);][3]
![u(x_1, x_2, 0) = 0,\ u(0,x_2,t) = 1 - e^{-\omega t},\ u(1, x_2, t) = 0,][4]
![u(x_1,0,t) = 1 - e^{-\omega t},\ u(0, x_2, t) = 0,\ \omega = 20.][5]
Хотя правильнее было бы назвать это уравнением диффузии.

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

Я не специалист в численных методах, пока не специалист в tensorflow, но опыт у меня уже появился. И я загорелся желанием попробовать вычислять урматы на фреймворке для глубокого обучения. Метод сопряженных градиентов реализовывать второй раз уже не интересно, зато интересно посмотреть как с вычислением справится tensorflow и какие сложности при этом возникнут. Этот пост про то, что из этого вышло.


## Численный алгоритм


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

[1]: //tex.s2cms.ru/svg/%0A%5Cfrac%7B%5Cpartial%20u%7D%7B%5Cpartial%20t%7D%20%3D%20%5Csum%20%5Climits_%7B%5Calpha%3D1%7D%5E%7B2%7D%20%5Cfrac%7B%5Cpartial%7D%7B%5Cpartial%20x_%5Calpha%7D%20%5Cleft%20(k_%5Calpha%20%5Cfrac%7B%5Cpartial%20u%7D%7B%5Cpartial%20x_%5Calpha%7D%20%5Cright%20)%20-u%2C%20%5Cquad%20x_%5Calpha%20%5Cin%20%5B0%2C1%5D%20%5Cquad%20(%5Calpha%3D1%2C2)%2C%20%5C%20t%3E0%3B%0A
[2]: //tex.s2cms.ru/svg/%0Ak_%5Calpha%20%3D%0A%5Cbegin%7Bcases%7D%0A%20%20%20%2050%2C%20(x_1%2C%20x_2)%20%5Cin%20%5CDelta%20ABC%5C%5C%0A%20%20%20%201%2C%20(x_1%2C%20x_2)%20%5Cnotin%20%5CDelta%20ABC%0A%5Cend%7Bcases%7D%0A
[3]: //tex.s2cms.ru/svg/%0A(%5Calpha%20%3D%201%2C2)%2C%20%5C%20A(0.2%2C0.5)%2C%20%5C%20B(0.7%2C0.2)%2C%20%5C%20C(0.5%2C0.8)%3B%0A
[4]: //tex.s2cms.ru/svg/%0Au(x_1%2C%20x_2%2C%200)%20%3D%200%2C%5C%20u(0%2Cx_2%2Ct)%20%3D%201%20-%20e%5E%7B-%5Comega%20t%7D%2C%5C%20%20u(1%2C%20x_2%2C%20t)%20%3D%200%2C%0A
[5]: //tex.s2cms.ru/svg/%0Au(x_1%2C0%2Ct)%20%3D%201%20-%20e%5E%7B-%5Comega%20t%7D%2C%5C%20u(0%2C%20x_2%2C%20t)%20%3D%200%2C%5C%20%20%5Comega%20%3D%2020.%0A
[6]: https://habrahabr.ru/post/321734/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как я сделал самый быстрый ресайз изображений. Часть 0
habra.16
habrabot(difrex,1) — All
2017-02-14 12:30:04


Здравствуйте, меня зовут Саша, я написал самый быстрый ресайз изображений для современных х86 процессоров. Я так утверждаю, поскольку все остальные библиотеки, которые я сумел найти и протестировать, оказались медленнее. Я занялся этой задачей, когда работал над оптимизацией ресайза картинок на лету в [Uploadcare][1]. Мы решили открыть код и в результате появился проект [Pillow-SIMD][2]. Любой желающий с легкостью может использовать его в приложении на языке Python.



Любой код выполняется на конкретном железе и хорошей оптимизации можно добиться, только понимая его архитектуру. Всего я планирую выпустить 4 или 5 статей, в которых расскажу как применять знание архитектуры железа для оптимизации реальной задачи. Своим примером я хочу побудить вас оптимизировать другие прикладные задачи. Первые две статьи выйдут в течение недели, остальные — по мере готовности.

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

[1]: https://uploadcare.com/
[2]: https://github.com/uploadcare/pillow-simd
[3]: https://habrahabr.ru/post/321744/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Разработка транзакционных микросервисов с помощью агрегатов, Event Sourcing и CQRS (Часть 1)
habra.16
habrabot(difrex,1) — All
2017-02-14 13:30:04


![][1]
_Предлагаем вашему вниманию перевод первой части полезной статьи о том, как разрабатывать транзакционные бизнес-приложения, используя микросервисную архитектуру._

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

Однако микросервисы являются не таким уж простым и универсальным решением. В частности, модели предметной области, транзакции и запросы удивительно устойчивы к разделению по функциональному признаку. В результате разработка транзакционных бизнес-приложений с использованием микросервисной архитектуры является довольно сложной задачей. В этой статье мы рассмотрим способ разработки микросервисов, при котором эти проблемы решаются с помощью паттерна проектирования на основе предметной области (Domain Driven Design), Event Sourcing и CQRS.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/888/eec/62e/888eec62e9204cbf8d1a1cfead60455b.jpg
[2]: http://microservices.io/patterns/microservices.html
[3]: https://habrahabr.ru/post/321686/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 ... 210