RSS
Pages: 1 ... 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 ... 133
[>] Веб-уязвимости XSLT: Server Side Injection
habra.16
habrabot(difrex,1) — All
2017-10-06 15:00:04


![image][1]


XSL (Extensible Stylesheet Language) — это язык для преобразования документов XML. XSLT означает XSL Transformations. XSL Transformations — это сами XML-документы. Результатом преобразования может быть другой XML-документ или что-то еще, например, документ HTML, файл CSV или текстовый файл. В этой статье я расскажу о нескольких векторах атаки на XSLT.

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

[1]: https://habrastorage.org/getpro/habr/post_images/f36/2d6/dfd/f362d6dfd0658f81a5b1dd56c3cb6286.jpg
[2]: https://habrahabr.ru/post/339480/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Топливо для ИИ: подборка открытых датасетов для машинного обучения
habra.16
habrabot(difrex,1) — All
2017-10-06 16:30:05


![][1]
_Связанные проекты сообщества Open Data (проект Linked Open Data Cloud). Многие датасеты на этой диаграмме могут включать в себя данные, защищенные авторским правом, и они не упоминаются в данной статье_



Если вы прямо сейчас не делаете свой ИИ, то другие будут делать его вместо вас для себя. Ничто более не мешает вам создать систему на основе машинного обучения. Есть открытая библиотека глубинного обучения [TensorFlow][2], большое количество алгоритмов для обучения в библиотеке [Torch][3], фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных [Spark][4] и множество других инструментов, облегчающих работу.



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



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

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

[1]: https://habrastorage.org/webt/59/d7/6f/59d76f4388ca2364142683.png
[2]: https://www.tensorflow.org/
[3]: http://torch.ch/
[4]: http://spark.apache.org/
[5]: https://habrahabr.ru/post/339496/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Airflow — инструмент, чтобы удобно и быстро разрабатывать и поддерживать batch-процессы обработки данных
habra.16
habrabot(difrex,1) — All
2017-10-06 17:30:07


![image][1]



Привет, Хабр! В этой статье я хочу рассказать об одном замечательном инструменте для разработки batch-процессов обработки данных, например, в инфраструктуре корпоративного DWH или вашего DataLake. Речь пойдет об Apache Airflow (далее Airflow). Он несправедливо обделен вниманием на Хабре, и в основной части я попытаюсь убедить вас в том, что как минимум на Airflow стоит смотреть при выборе планировщика для ваших ETL/ELT-процессов.



Ранее я писал серию статей на тему DWH, когда работал в Тинькофф Банке. Теперь я стал частью команды Mail.Ru Group и занимаюсь развитием платформы для анализа данных на игровом направлении. Собственно, по мере появления новостей и интересных решений мы с командой будем рассказывать тут о нашей платформе для аналитики данных.

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

[1]: https://habrastorage.org/getpro/habr/post_images/2f7/ef3/ac4/2f7ef3ac4894959ce6bf8e3e7cbbe373.jpg
[2]: https://habrahabr.ru/post/339392/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Торговый робот для веб-дизайнеров
habra.16
habrabot(difrex,1) — All
2017-10-06 20:00:05


Написание торговых роботов, как правило, достаточно трудоемкая задача — помимо понимания принципов торговли (равно как и представления о том, как та или иная стратегия выглядит), необходимо знать и уметь работать с протоколами, используемыми для торговли. Вкратце — существуют две основные группы протоколов, которые предоставляются биржей или брокерами: [FIX][1], в котором без бутылки не разобраться, и проприетарный бинарный протокол, который редко бывает лучше. Это приводит к одной из двух проблем: либо код выглядит так, что любой джуниор схватится за голову, либо хороший, красивый код, который умеет делать примерно ничего (а то, что умеет, делает с разными неожиданными проблемами).



![][2]



Для того чтобы решить обозначенные выше проблемы и привлечь как можно больше участников, брокеры иногда представляют обычное HTTP API с сериализацией в json/xml/что-то более экзотическое. В частности, подобный метод общения с биржей является едва ли не единственным для ряда модных стартапов, например, биткоин-бирж. Мы решили не отставать от них и недавно [представили][3] дополнение к нашему API (подробнее про его старые возможности можно почитать на Хабре [здесь][4] и [здесь][5]), которое позволяет пользователю также и торговать.



Под катом не совсем пятничная статья-туториал про то, как можно было бы торговать через наше HTTP API.

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

[1]: https://ru.wikipedia.org/wiki/Financial_Information_eXchange
[2]: https://habrastorage.org/webt/59/d6/36/59d636b46ca80006471887.jpeg
[3]: https://exante.eu/ru/press/events/1142/
[4]: https://habrahabr.ru/company/exante/blog/318272/
[5]: https://habrahabr.ru/company/exante/blog/326906/
[6]: https://habrahabr.ru/post/339446/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Классический 2д квест или как прошли наши два года разработки. Часть финальная
habra.16
habrabot(difrex,1) — All
2017-10-07 09:00:05


Заключительная часть истории создания игры «Swordbreaker The Game», в этой части — про раскрутку после релиза, и результаты к которым мы пришли.

![image][1]

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

[1]: https://habrastorage.org/web/a31/0e1/197/a310e1197916427b81831779937e0a34.jpg
[2]: https://habrahabr.ru/post/339534/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Снизить косты? Easy
habra.16
habrabot(difrex,1) — All
2017-10-07 17:30:04


Добрый день, я занимаюсь разработкой сервиса по прогнозированию спроса на базе Microsoft Azure, Spark Apache в IT компании. В цикле статей я расскажу про реальные бизнес кейсы из российских реалий, с которыми сталкивается IT компания. В основном статьи будут про бизнес: есть клиент, есть его задачи, нужно найти способ как их решать и доказать менеджменту адекватность расчётов, далее уже внедрение.

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


### Первый бизнес-кейс


Компания хочет понять сколько у неё потерь (очень круто, когда компания сразу знает, что хочет), и как можно их уменьшить.

Цель поставлена. Теперь немного о компании: Федеральная сеть 400 розничных магазинов. Пилотную версию проекта договорились проводить с одной категорией товара – 20 sku, средний срок годности продукта 15 дней.
[Читать дальше →][1]

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

[>] Вышел PostgreSQL 10
habra.16
habrabot(difrex,1) — All
2017-10-07 21:00:05


![][1]



На самом деле прошло уже два дня, но статью на Хабр никто до сих пор не написал, так что придется мне устранять это упущение, что и делаю с удовольствием.



Итак, что же нового в этой версии PostgreSQL?



Во-первых, изменилось само версионирование. До "десятки" мы наблюдали множество минорных версий 9.x, которые выходили примерно раз в год и при этом вносили серьезные, далеко не минорные изменения. Поэтому с версии 10 было принято решение сделать нумерацию 10, 11, 12 и т.д. Кстати, MySQL, похоже пошел по тому же пути, прыгнул с 5.7 на 8.0



Ладно, это всё мелочи, перейдем к существу вопроса

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

[1]: https://habrastorage.org/webt/59/d8/fb/59d8fb26efcf3125283990.png
[2]: https://habrahabr.ru/post/339568/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как отличать птиц от цветов. Или цветы от птиц
habra.16
habrabot(difrex,1) — All
2017-10-08 11:00:04


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


## Самая простая сеть


Самая простая сеть нашлась в статье "[Нейросеть в 11 строчек на Python][1]" (это перевод от [SLY\_G][2] статьи "[A Neural Network in 11 lines of Python (Part 1)][3]", вообще у автора есть еще продолжение "[A Neural Network in 13 lines of Python (Part 2 — Gradient Descent)][4]", но здесь достаточно первой статьи).

Краткое описание сетки — в этой сети есть ровно одна зависимость — [NumPy][5].

Множество входов рассматривается как матрица ![$X$][6], множество выходов — как вектор ![$y$][7]. В оригинальной статье сеть умножает входную матрицу, размерностью (4 x 3), на матрицу весов входов ![$syn0$][8] (3 x 4), к произведению применяет передаточную функцию, и получает матрицу слоя ![$l1$][9] (4 x 4).
[Читать дальше →][10]

[1]: https://habrahabr.ru/post/271563/
[2]: https://habrahabr.ru/users/sly_g/
[3]: http://iamtrask.github.io/2015/07/12/basic-python-network/
[4]: http://iamtrask.github.io/2015/07/27/python-network-part2/
[5]: http://www.numpy.org/
[6]: https://habrastorage.org/getpro/habr/formulas/6d6/a4f/78f/6d6a4f78fbacd6edecc018ce8ad3e364.svg
[7]: https://habrastorage.org/getpro/habr/formulas/9b3/4c4/da5/9b34c4da5c757d4982bbd1b6f2e8998a.svg
[8]: https://habrastorage.org/getpro/habr/formulas/ba4/e96/955/ba4e96955bc8eb1fb30e2154f62cbddc.svg
[9]: https://habrastorage.org/getpro/habr/formulas/2da/220/976/2da22097618c6d560b9866bcd50a864b.svg
[10]: https://habrahabr.ru/post/338548/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 40: Yahoo, не утекай, Google конопатит дыры, как Netgear баги ловит
habra.16
habrabot(difrex,1) — All
2017-10-08 11:30:04


«Три, три миллиарда учетных записей Yahoo! — все, что нажито непосильным трудом, все погибло», — сообщила (ну, не дословно, конечно) компания Verizon, которая после покупки ИТ-гиганта произвела ревизию в его сильно запущенном хозяйстве. Впрочем, дело о взломе Yahoo тянется еще с прошлого года и стартовало с каких-то [200 миллионов][1] пользовательских учеток, выставленных на продажу в дарквебе в августе 2016-го. Месяцем позже Боб Лорд, CISO компании, слегка скорректировал эту цифру, уведомив общественность о краже уже [500 миллионов][2] аккаунтов. А к декабрю, как следует собравшись, решительно заявил, что на самом деле речь идёт [о миллиарде][3]. Наконец, за аудит берется Verizon и сообщает, что «все уже украдено до нас» — все [3 миллиарда][4] аккаунтов, чуть ли не полмира пострадало, да что же это делается, граждане?!

Как теперь выясняется, паслись в закромах Yahoo минимум дважды: первый раз в августе 2013-го, второй — годом позже. Однако только в 2016 году Yahoo уведомила о самих фактах взлома. Кто причастен к этой утечке — одна группа или несколько — также пока не сообщается, но, как водится, неких «госхакеров» уже обвинили. Согласно отчету Yahoo, атакеры смогли взять под контроль процесс, генерящий аутентификационные кукисы, и в результате использовали его для доступа в систему без аутентификации.

Yahoo утверждает, что в украденных данных нет незашифрованных паролей и платежных данных. Хакерам достались лишь имена, адреса электронной почты, телефонные номера, даты рождения, хеши паролей и ответы на секретные вопросы. Лишь. Сущие пустяки.
[Читать дальше →][5]

[1]: https://threatpost.com/yahoo-investigates-200-million-alleged-accounts-for-sale-on-dark-web/119624/
[2]: https://threatpost.com/500-million-yahoo-accounts-stolen-by-state-sponsored-hackers/120818/
[3]: https://threatpost.com/yahoo-discloses-data-from-1-billion-accounts-stolen-in-2013/122520/
[4]: https://threatpost.com/2013-yahoo-breach-affected-all-3-billion-accounts/128259/
[5]: https://habrahabr.ru/post/339536/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Последнее обновление для HPE ProLiant «убивало» сетевые адаптеры
habra.16
habrabot(difrex,1) — All
2017-10-08 18:00:05


Недавно стало [известно][1], что обновление July ServicePack от HPE для серверов ProLiant выводило из строя сетевые адаптеры (в определенных случаях), превращая их в неремонтопригодную «железку». Расскажем об этом далее.

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

[1]: http://www.virtubytes.com/2017/10/05/hpe-advisory-network-adapter-replacement/
[2]: https://habrastorage.org/webt/59/d9/ea/59d9ea1d69da6227578093.jpeg
[3]: https://habrahabr.ru/company/it-grad/blog/339366/
[4]: https://habrahabr.ru/post/339366/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Последнее обновление для HPE ProLiant выводило из строя сетевые адаптеры
habra.16
habrabot(difrex,1) — All
2017-10-08 21:30:04


Недавно стало [известно][1], что обновление July ServicePack от HPE для серверов ProLiant выводило из строя сетевые адаптеры (в определенных случаях). Расскажем об этом далее.

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

[1]: http://www.virtubytes.com/2017/10/05/hpe-advisory-network-adapter-replacement/
[2]: https://habrastorage.org/webt/59/d9/ea/59d9ea1d69da6227578093.jpeg
[3]: https://habrahabr.ru/company/it-grad/blog/339366/
[4]: https://habrahabr.ru/post/339366/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Стратегии офлайнового хранения ключей PGP
habra.16
habrabot(difrex,1) — All
2017-10-08 23:30:05


_Статья для подписчиков LWN_

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

Это привело сообщество Debian к лучшему пониманию хороших практик работы с криптографическими подписями (которые обычно создаются в программе [GNU Privacy Guard][3], также известной как GnuPG или GPG). Например, слабые (менее 2048 бит) и [уязвимые][4] ключи PGPv3 в 2015 году [удалили][5] из связок ключей, а среди разработчиков Debian широко распространена практика взаимной подписи ключей при личной встрече. Но даже у разработчиков Debian, кажется, отсутствуют общепринятые правила хранения критического секретного материала, как видно по [дискуссии][6] в списке рассылки debian-project. Эта дискуссия сводится к единственному простому требованию: где взять «руководство по хранению электронных ключей для чайников»? Электронные аппаратные ключи или карты-ключи, как мы их здесь называем — это маленькие устройства, позволяющие хранить ключи в офлайне и представляющие собой один из вариантов защиты секретного материала, то есть ключа. В этой статье я постараюсь поделиться своим опытом в данной области и разъяснить проблему, как хранить эти драгоценные секретные ключи, которые в случае компрометации подвергают опасности миллионы компьютеров по всему миру.
[Читать дальше →][7]

[1]: https://habrastorage.org/webt/59/da/64/59da64eb76d1c303760414.png
[2]: http://openpgp.org/
[3]: http://gnupg.org/
[4]: https://lwn.net/Articles/588266/
[5]: https://lists.debian.org/20150101191039.GB5209@earth.li
[6]: https://lists.debian.org/debian-project/2017/08/msg00011.html
[7]: https://habrahabr.ru/post/339612/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Что делать, если Instagram не дал доступ к API? Дополнение
habra.16
habrabot(difrex,1) — All
2017-10-09 00:30:04


Здравствуйте ещё раз! Я прочёл [её][1] и мне показалось, что её можно продолжить.

![image][2]

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

1. Самые полезные функции (постинг и удаление постов) доступны только из мобильного приложения Instagram, эмуляция запросов сложна, так как надо вытащить из приложения ключ, который с каждой новой версией обновляется.
2. Web-версия обрезана, но радует, что в ней есть возможность лайкать, комментировать и удалять комментарии
3. Есть API, но процедура его получения удручающе долгая и спамерам и ботам такой путь точно не светит. Плюс было много моментов, когда соглашения в API менялись, что не всегда удобно.[Читать дальше →][3]

[1]: https://habrahabr.ru/post/302150/
[2]: https://habrastorage.org/getpro/habr/post_images/52e/758/d2d/52e758d2d25dbc08aac63948d34924cd.jpg
[3]: https://habrahabr.ru/post/339620/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Игрушечный фронтенд для LLVM, написанный на Rust: Руководство для начинающих
habra.16
habrabot(difrex,1) — All
2017-10-09 09:30:06


**Примечание переводчика**

_Приведённый в статье код скомпилирован с достаточно старыми версиями крейтов peg и peg\_syntax\_ext. Для текущих версий в исходники нужно внести минимальные изменения. Я вставил изменённые участки в спойлеры по тексту статьи. Для сборки кода установите компилятор nightly Rust.
Полный исходник с моими правками можно скачать здесь:
_


В настоящее время я работаю над компилятором, который написан на Rust, и порождает LLVM IR. LLVM API выглядит немного пугающе для новичков, и по нему не так много руководств (и все они на C++, поэтому не вполне очевидно, как сделать то же самое на Rust). Я бы хотел, чтобы кто-то протянул мне руку помощи, когда я начинал всё это, и эта статья является тем, что я хотел бы показать самому себе в то время.

![][1]

В Rust наилучшая возможность взаимодействия с LLVM — через крейт llvm-sys. Один добрый человек разместил документацию к нему [здесь][2]. Конечно, вам следует также изучить [руководство][3] по LLVM, так как оно поможет вам понять, как LLVM “думает”. Этот пост, в основном, является переводом на Rust подмножества из этого руководства.

Полный исходный код для этого руководства находится [здесь][4].
[Читать дальше →][5]

[1]: https://habrastorage.org/web/91b/abc/cfb/91babccfb6604110bad66cfc1d5819ed.jpg
[2]: http://rustdoc.taricorp.net/llvm-sys/llvm_sys/
[3]: https://habrahabr.ru/post/119850/
[4]: https://github.com/ucarion/llvm-rust-getting-started
[5]: https://habrahabr.ru/post/338420/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Железнодорожно-ориентированное программирование. Обработка ошибок в функциональном стиле
habra.16
habrabot(difrex,1) — All
2017-10-09 10:30:06


![][1]

> Как пользователь я хочу изменить ФИО и email в системе.
Для реализации этой простой пользовательской истории мы должны получить запрос, провести валидацию, обновить существующую запись в БД, отправить подтверждение на email пользователю и вернуть ответ браузеру. Код будет выглядеть примерно одинаково на C#:

string ExecuteUseCase()
{
var request = receiveRequest();
validateRequest(request);
canonicalizeEmail(request);
db.updateDbFromRequest(request);
smtpServer.sendEmail(request.Email);
return "Success";
}

и F#:

let executeUseCase =
receiveRequest
>> validateRequest
>> canonicalizeEmail
>> updateDbFromRequest
>> sendEmail
>> returnMessage


## Отклоняясь от счастливого пути


![][2]

Дополним историю:
> Как пользователь я хочу изменить ФИО и email в системе
> И увидеть сообщение об ошибке, если что-то пойдет не так.

## Что же может пойти не так?


![][3]

1. ФИО может оказаться пустым, а email – не корректным
2. пользователь с таким id может быть не найден в БД
3. во время отправки письма с подтверждением SMTP-сервер может не ответить
4. ...

### Добавим код обработки ошибок


string ExecuteUseCase()
{
var request = receiveRequest();
var isValidated = validateRequest(request);
if (!isValidated) {
return "Request is not valid"
}
canonicalizeEmail(request);
try {
var result = db.updateDbFromRequest(request);
if (!result) {
return "Customer record not found"
}
} catch {
return "DB error: Customer record not updated"
}

if (!smtpServer.sendEmail(request.Email)) {
log.Error "Customer email not sent"
}

return "OK";
}
Вдруг вместо 6 мы получили 18 строк кода с ветвлениями и большей вложенностью, что сильно ухудшило читаемость. Каким будет функциональный эквивалент этого кода? Он выглядит абсолютно также, но теперь в нем есть обработка ошибок. Можете мне не верить, но, когда мы доберемся до конца, вы убедитесь, что это действительно так.
[Читать дальше →][4]

[1]: https://habrastorage.org/webt/59/da/2b/59da2b7193313753752158.gif
[2]: https://habrastorage.org/webt/59/da/2d/59da2d8f005bf618301003.jpeg
[3]: https://habrastorage.org/webt/59/da/2f/59da2f754e3bf250799737.png
[4]: https://habrahabr.ru/post/339606/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Поиск файлов по тэгам в XMP / IPTC и операции с найденным
habra.16
habrabot(difrex,1) — All
2017-10-09 12:00:05


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

[![Поиск файлов по тэгам в XMP / IPTC и операции с найденным][1]][2]
[Читать дальше →][3]

[1]: https://habrastorage.org/webt/59/da/ff/59daff7e0817b936967452.jpeg
[2]: https://habrahabr.ru/post/339642/
[3]: https://habrahabr.ru/post/339642/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

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


В своей [предыдущей статье][1] я рассказал в целом про проблему безопасности банкоматов и немного про свой опыт разработки устройства обеспечения этой самой безопасности.

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

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

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

[>] Математическая модель жидкостного тахометра на Python
habra.16
habrabot(difrex,1) — All
2017-10-09 12:30:04


### Введение


В технике явление формирования поверхности вращающейся жидкости в форме близкой к поверхности параболоида вращения используется в основном в сепарирующих центрифугах для разделения суспензий на фракции [1].

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

Рассмотрение математической модели такого прибора имеет не только познавательный, но и практический интерес с учётом её реализации средствами свободно распространяемого языка общего назначения Python.


### Теория – просто и кратко


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

![][1]

Рассмотрим сечение поверхности вращения координатной плоскостью ZX и найдём касательную в точке P (x, z) этого сечения. На частицу Q находящуюся в точке P действует сила тяжести **mg** изображённая в виде вектора PL.

Давление жидкости изображено в виде вектора PN направленного нормально к поверхности жидкости. Силы PM и PM’ для установившегося движения равны. Частица жидкости движется по окружности радиуса x её ускорение PM направлено к центру вращения и равно **m\*w\*\*2 \*x**. [Читать дальше →][2]

[1]: https://habrastorage.org/webt/59/d8/da/59d8da0765828532456648.png
[2]: https://habrahabr.ru/post/339562/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Оптимизация TensorFlow на современных архитектурах Intel
habra.16
habrabot(difrex,1) — All
2017-10-09 12:30:04


TensorFlow — современная платформа глубокого обучения и машинного обучения, дающая возможность извлекать максимальную производительность из оборудования Intel. Эта статья познакомит сообщество разработчиков искусственного интеллекта (ИИ) с методиками оптимизации TensorFlow для платформ на базе процессоров Intel Xeon и Intel Xeon Phi. Эти методики были созданы в результате тесного сотрудничества между специалистами корпораций Intel и Google. Представители обеих корпораций объявили об этом сотрудничестве на первой конференции Intel AI Day в прошлом году.

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

[1]: https://habrastorage.org/webt/59/cc/9d/59cc9d1d3e1ab401929360.png
[2]: https://habrahabr.ru/post/338870/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Ежемесячная рубрика «Читаем статьи за вас». Сентябрь 2017
habra.16
habrabot(difrex,1) — All
2017-10-09 15:30:06


![][1]



Привет, Хабр! Мы продолжаем нашу традицию и снова выпускаем ежемесячный набор рецензий на научные статьи от членов сообщества Open Data Science из канала #article\_essense. Хотите получать их раньше всех — вступайте в сообщество [ODS][2]!



Статьи выбираются либо из личного интереса, либо из-за близости к проходящим сейчас соревнованиям. Напоминаем, что описания статей даются без изменений и именно в том виде, в котором авторы запостили их в канал #article\_essence. Если вы хотите предложить свою статью или у вас есть какие-то пожелания — просто напишите в комментариях и мы постараемся всё учесть в дальнейшем.

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

[1]: https://habrastorage.org/webt/59/da/96/59da966fb6eac946729227.jpeg
[2]: http://ods.ai
[3]: https://habrahabr.ru/post/339094/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Kali Linux: виды проверок информационных систем
habra.16
habrabot(difrex,1) — All
2017-10-09 15:30:06


→ Часть 1. [Kali Linux: политика безопасности, защита компьютеров и сетевых служб][1]
→ Часть 2. [Kali Linux: фильтрация трафика с помощью netfilter][2]
→ Часть 3. [Kali Linux: мониторинг и логирование][3]
→ Часть 4. [Kali Linux: упражнения по защите и мониторингу системы][4]
→ Часть 5. [Kali Linux: оценка защищённости систем][5]

Продолжаем публикацию перевода 11-й главы книги «[Kali Linux Revealed][6]». Сегодня хотим познакомить вас с разделом 11.2, который посвящён видам мероприятий, направленных на оценку защищённости информационных систем.

[![][7]][8]
[Читать дальше →][9]

[1]: https://habrahabr.ru/company/ruvds/blog/338338/
[2]: https://habrahabr.ru/company/ruvds/blog/338480/
[3]: https://habrahabr.ru/company/ruvds/blog/338668/
[4]: https://habrahabr.ru/company/ruvds/blog/338668/
[5]: https://habrahabr.ru/company/ruvds/blog/339312/
[6]: https://kali.training/introduction/kali-linux-revealed-book/
[7]: https://habrastorage.org/webt/59/da/cb/59dacb7bcc2b1335991343.jpeg
[8]: https://habrahabr.ru/company/ruvds/blog/339636/
[9]: https://habrahabr.ru/post/339636/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Принцип единственной ответственности: фундамент декомпозиции
habra.16
habrabot(difrex,1) — All
2017-10-09 17:00:07


![][1]
Сейчас об этом принципе слышал любой, кто занимается программированием. Чуть меньше тех, кто думает, что его знает. Гораздо меньше тех, кто действительно умеет его использовать. Я постараюсь объяснить суть, назначение и применение этого принципа как можно проще и короче.



## Определение {#opredelenie}



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



### Пример {#primer}



Lazy<T> — обертка для объекта, чье создание откладывается до первого обращения к нему.



### Антипример {#antiprimer}



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



### Еще антипример {#esche-antiprimer}



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



## Назначение {#naznachenie}



Упрощение создания, анализа и модификации программных систем.

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

[1]: https://habrastorage.org/webt/59/da/c9/59dac97d7efff285825291.jpeg
[2]: https://habrahabr.ru/post/338064/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Встречаем PostgreSQL 10. Перевод Release Notes
habra.16
habrabot(difrex,1) — All
2017-10-09 17:00:07


Вышел релиз PostgreSQL 10. Мы долго ждали появления новых фич. Мои коллеги ещё весной тестировали новую версию и отправляли баг-репорты: [раз][1], [два][2]. А я был очень рад обновлению и подготовил перевод Release Notes на русский язык. Давайте обсуждать.



![][3]

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

[1]: https://www.postgresql.org/message-id/20170616195617.1422.31261%40wrigleys.postgresql.org
[2]: https://www.postgresql.org/message-id/20170609160109.26502.14118%40wrigleys.postgresql.org
[3]: https://habrastorage.org/webt/59/db/40/59db40fc822d0789301881.jpeg
[4]: https://habrahabr.ru/post/339520/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Как сделать число 100 из любого другого шестизначного числа
habra.16
habrabot(difrex,1) — All
2017-10-09 17:00:07


Пару недель назад, в поисках ответа на задачу, абсолютно не связанную с описываемой здесь, я волею поисковых систем наткнулся на следующий пост: [Как сделать из 123456789 число 100 или 0][1].

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


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


Давным давно, когда у людей не было смартфонов, в поездках на общественном транспорте каждый развлекал себя как умеет. Одним из таких способов не заскучать была занимательная игра, которая помогала не только скоротать поездку на автобусе, но и немного «расшевелить мозги». Звучит она так. [Читать дальше →][2]

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

[>] Как получать оповещения от Jupyter notebook в Telegram?
habra.16
habrabot(difrex,1) — All
2017-10-09 19:00:07


Довольно просто. Нам понадобится свой телеграм-бот, один пакет и одна строчка кода
А результат будет таким:
![][1]

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

[1]: https://habrastorage.org/webt/59/db/7a/59db7acc87064607135491.png
[2]: https://habrahabr.ru/post/339682/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Онлайн-квест от MBLTdev: призы и ответы
habra.16
habrabot(difrex,1) — All
2017-10-09 20:30:05


Привет, Хабр! В среду мы запилили [квест][1], и судя по потоку комментариев и сообщений, квест вам понравился и заставил поломать голову. Мы рады! В этом посте подведём итоги: раскроем правильные ответы и вручим призы.


### Статистика


![][2]


### Призы


Сегодня призы отправились победителям, проверяйте почту.

* Годовые подписки на продукты [JetBrains][3] получили Инсаф, Михаил и Даниил.
* Билеты на конференцию мобильных разработчиков [MBLTdev 2017][4] — Алексей Лагута, Михаил и Артём.
* Футболки [MBLTdev 2017][5] — Устинов Валерий, Руслан Ахтямов и Павел Камаев.
* Скидка 20% на билеты на [MBLTdev 2017][6] — наш подарок всем кто прошёл квест до конца.
Теперь расскажем, как надо было решать задания. Под катом — ответы.
[Читать дальше →][7]

[1]: https://habrahabr.ru/company/e-Legion/blog/339334/
[2]: https://habrastorage.org/getpro/habr/post_images/3c9/673/c9e/3c9673c9e4073a5374503902f88840bb.png
[3]: https://jetbrains.ru/
[4]: https://mbltdev.ru/ru?utm_source=Quiz_results
[5]: https://mbltdev.ru/ru?utm_source=Quiz_results
[6]: https://mbltdev.ru/ru?utm_source=Quiz_results
[7]: https://habrahabr.ru/post/339668/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как мы банкоматы от подрыва спасали (продолжение)
habra.16
habrabot(difrex,1) — All
2017-10-10 08:00:05


В своей [предыдущей статье][1] я рассказал в целом про проблему безопасности банкоматов и немного про свой опыт разработки устройства обеспечения этой самой безопасности.

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

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

[>] Простая Scada на Python (продолжение)
habra.16
habrabot(difrex,1) — All
2017-10-10 12:00:05


### Формирование динамических объектов мнемосхемы


Развивая тему [предыдущей статьи][1], опишу некоторые функции для формирования объектов мнемосхемы простой SCADA программы выполненной на Python.

Объекты визуально отображают состояние аналоговых измеряемых величин из регистров
READ\_INPUT\_REGISTERS или READ\_HOLDING\_REGISTERS. Используется библиотека Tkinter.
Всего реализовано 3 объекта: горизонтальный слайдер, вертикальный слайдер и стрелочный индикатор. Отдельно описывается построение динамического тренда.
[Читать дальше →][2]

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

[>] WhatsApp, что внутри?
habra.16
habrabot(difrex,1) — All
2017-10-10 14:30:05


[![][1]][2]В продолжение направления публикаций исследований нашей компании о внутренних механизмах крупнейших в мире мессенджеров. Сегодня будем смотреть на WhatsApp в его актуальном состоянии. На самом деле внутренности не сильно изменились за последние три года, изменения там скорее косметические.

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

[1]: https://habrastorage.org/webt/59/db/8e/59db8e5f7bf14826135267.jpeg
[2]: https://habrastorage.org/webt/59/db/8d/59db8dde548b7208960622.jpeg
[3]: https://habrahabr.ru/post/339224/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Новые способы монетизации взломанных веб-ресурсов
habra.16
habrabot(difrex,1) — All
2017-10-10 15:30:06


![image][1]
 
Способов получить выгоду со взломанного сайта всегда было довольно много. Тем не менее, кибер-преступность не отстает от прогресса и использует передовые технологические методы для незаконного заработка.
[Читать дальше →][2]

[1]: https://www.extremetech.com/wp-content/uploads/2014/01/Bitcoin-USD-overlay-from-Famzoo.jpg
[2]: https://habrahabr.ru/post/339744/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Книга «Python для сложных задач: наука о данных и машинное обучение»
habra.16
habrabot(difrex,1) — All
2017-10-10 18:00:05


[![image][1]][2]Привет, Хаброжители! Данная книга — руководство по самым разным вычислительным и статистическим методам, без которых немыслима любая интенсивная обработка данных, научные исследования и передовые разработки. Читатели, уже имеющие опыт программирования и желающие эффективно использовать Python в сфере Data Science, найдут в этой книге ответы на всевозможные вопросы, например: как считать этот формат данных в скрипт? как преобразовать, очистить эти данные и манипулировать ими? как визуализировать данные такого типа? как при помощи этих данных разобраться в ситуации, получить ответы на вопросы, построить статистические модели или реализовать машинное обучение?

Ниже под катом обзор книги и отрывок «Гистограммы, разбиения по интервалам и плотность»
[Читать дальше →][3]

[1]: https://habrastorage.org/webt/59/dc/7d/59dc7db578d00991150128.jpeg
[2]: https://habrahabr.ru/company/piter/blog/339766/
[3]: https://habrahabr.ru/post/339766/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Красные стрелы доп-реальности
habra.16
habrabot(difrex,1) — All
2017-10-10 21:00:05


![][1]



Мои читатели уже знают, что ручной пеленгатор и дополненная реальность созданы друг для друга. Простой фон из видео позволяет существенно упростить работу оператора. Тем не менее, находятся люди, которые испытывают трудности при поиске источников радио-излучения амплитудным пеленгатором с простым видео-фоном. Упрощение процесса требует более тесного комплексирования пеленгатора с "тяжелой" доп-реальностью. Несмотря на появление таких технологий, как ARKit и ARCore, наиболее доступной остается Google Tango.



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

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

[1]: https://habrastorage.org/webt/59/db/27/59db2798c440a188943797.png
[2]: https://habrahabr.ru/post/339586/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Простая Scada на Python и Arduino
habra.16
habrabot(difrex,1) — All
2017-10-11 01:30:05


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

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

[>] Обзор дефектов кода музыкального софта. Часть 2. Audacity
habra.16
habrabot(difrex,1) — All
2017-10-11 11:30:04


![][1]


Цикл статей про обзор дефектов кода музыкально софта продолжается. Вторым претендентом для анализа выбран аудиоредактор Audacity. Это программа очень популярна и широко используется, как любителями, так и профессионалами в музыкальной индустрии. В этой статье описание фрагментов кода будет дополнительно сопровождаться популярными мемами. Скучно не будет!
[Мемасики под катом...][2]

[1]: https://habrastorage.org/getpro/habr/post_images/668/941/2de/6689412deb71ee17bf111b5abb233baa.png
[2]: https://habrahabr.ru/post/339816/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] AMA, или спроси бэкендера из Avito: анонс
habra.16
habrabot(difrex,1) — All
2017-10-11 13:30:05


Что такое AMA? Этот формат очень популярен на Reddit. Ты рассказываешь о себе и предлагаешь читателям задавать любые вопросы: Ask Me Anything! Особенно круто это удается у команд профессионалов — в итоге получается ряд коротких и полезных тематических бесед. Нам нравится Reddit, сам формат AMA и Хабрахабр, поэтому мы тоже вступаем в игру и приглашаем вас к диалогу здесь. Этот пост — анонс секции вопросов и ответов, которая будет работать в блоге Avito 13 октября, в пятницу, с 12 до 19 часов по мск. В этот день в AMA с вами будут на связи пять моих коллег, которые занимаются разработкой серверной части Avito. А под катом я напомню, о чем можно у них спросить.



![][1]

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

[1]: https://habrastorage.org/webt/59/dd/db/59dddbcd7844d060947142.jpeg
[2]: https://habrahabr.ru/post/339826/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Такты для разработчиков
habra.16
habrabot(difrex,1) — All
2017-10-11 13:30:05


![][1]



Если у вас есть опыт создания ПО и вы хотите познакомиться с проектированием цифровых логических схем (digital design), то одна из первых вещей, которые вам нужно понять, — это концепция тактов. Она раздражает многих программных инженеров, начинающих [HDL][2]-проектирование. Без использования тактов они могут превратить HDL в язык программирования с `$display`, `if` и циклами `for`, как в любом другом языке. Но при этом такты, которые новички игнорируют, — зачастую один из основополагающих элементов при проектировании любых цифровых логических схем.



Ярче всего эта проблема проявляется именно при рассмотрении первых схем, созданных начинающими HDL-разработчиками. Я недавно общался с некоторыми из них. Новички опубликовали свои вопросы на форумах, которые я читаю. Когда я проанализировал то, что они делают, от увиденного волосы встали дыбом.

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

[1]: https://habrastorage.org/webt/59/dd/df/59dddf8b1e03e594224568.jpeg
[2]: https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D1%83%D1%80%D1%8B
[3]: https://habrahabr.ru/post/339688/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] 20 приёмов работы в командной строке Linux, которые сэкономят уйму времени
habra.16
habrabot(difrex,1) — All
2017-10-11 14:00:05


Тема полезных приёмов работы в терминале Linux неисчерпаема. Казалось бы — всё устроено очень просто: приглашение оболочки, да введённые с клавиатуры команды. Однако, в этой простоте кроется бездна неочевидных, но полезных возможностей. Именно поэтому мы регулярно публикуем материалы, посвящённые особенностям работы в командной строке Linux. В частности, сегодня это будет перевод статьи, автор которой увлечён экономией времени через повышение продуктивности труда.

[![][1]][2]

Если вас интересует работа в командной строке Linux — вот некоторые из наших материалов на эту тему:

* [ **+114** ] [Самые полезные приёмы работы в командной строке Linux][3]
* [ **+70** ] [10 приёмов работы в терминале Linux, о которых мало кто знает][4]
* [**+65** ] [Удивительно полезный инструмент: lsof][5]
* [ **+32** ] [Linux: перенаправление][6]
* [ **+29** ] [PDF-версия статей про Bash-скрипты][7]
[Читать дальше →][8]

[1]: https://habrastorage.org/webt/59/dd/dc/59dddcaa09dd0253946776.jpeg
[2]: https://habrahabr.ru/company/ruvds/blog/339820/
[3]: https://habrahabr.ru/company/ruvds/blog/323330
[4]: https://habrahabr.ru/company/ruvds/blog/336060/
[5]: https://habrahabr.ru/company/ruvds/blog/337934/
[6]: https://habrahabr.ru/company/ruvds/blog/336320/
[7]: https://habrahabr.ru/company/ruvds/blog/336764/
[8]: https://habrahabr.ru/post/339820/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Внедрение IdM. Часть 1: что такое IdM и какая функциональность к нему относится
habra.16
habrabot(difrex,1) — All
2017-10-11 16:00:04


…Всё началось с отдела маркетинга. Эти милые люди подумали и решили, что нам (специалистам пресейла и сервисов) следует написать некоторое количество статей «на разные интересные темы». Темы они, как водится, придумали сами, исходя из видящихся им «потребностей рынка». (При этом, если взглянуть на них с нашего ракурса, темы были, мягко говоря, «не очень»…)

Нашей команде, отвечающей за развитие системы управления доступом и учётными записями пользователей Solar inRights, пришла в голову идея миссионерства (как бы громко это ни звучало): если уж писать обращение «к граду и миру», то пусть оно будет полезным инструментом для принятия взвешенных решений. Поэтому решено составить целостный цикл материалов, который поможет чётко осознать, какие действия и процедуры сопровождают внедрение IdM-решения.

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

[1]: https://habrastorage.org/webt/59/dc/96/59dc9682cd187793220508.jpeg
[2]: https://habrahabr.ru/post/339758/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Когда лучше не использовать глубинное обучение
habra.16
habrabot(difrex,1) — All
2017-10-11 17:00:05


Я понимаю, что странно начинать блог с негатива, но за последние несколько дней поднялась волна дискуссий, которая хорошо соотносится с некоторыми темами, над которыми я думал в последнее время. Всё началось с [поста Джеффа Лика в блоге Simply Stats][1] с предостережением об использовании глубинного обучения на малом размере выборки. Он утверждает, что при малом размере выборки (что часто наблюдается в биологии), линейные модели с небольшим количеством параметров работают эффективнее, чем нейросети даже с минимумом слоёв и скрытых блоков.

Далее он показывает, что очень простой линейный предиктор с десятью самыми информативными признаками работает эффективнее простой нейросети в задаче классификации нулей и единиц в наборе данных MNIST, при использовании всего около 80 образцов. Эта статья сподвигла Эндрю Бима написать [опровержение][2], в котором правильно обученная нейросеть сумела превзойти простую линейную модель, даже на очень малом количестве образцов.

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

[1]: https://simplystatistics.org/2017/05/31/deeplearning-vs-leekasso/
[2]: http://beamandrew.github.io/deeplearning/2017/06/04/deep_learning_works.html
[3]: https://habrahabr.ru/post/339840/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Расширение аналитических возможностей метода линейного программирования средствами Python
habra.16
habrabot(difrex,1) — All
2017-10-11 22:00:07


### Введение


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


### Постановка задачи


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


### Формирование целевой функции и начальных условий для минимизации стоимости диеты


Для поддержания нормальной жизнедеятельности человеку необходимо потреблять в день не менее 118 г белков, 56 г жиров, 500 г углеводов и 28 г минеральных солей. Эти питательные вещества содержатся в разных количествах и разных пищевых продуктах.

В таблице приведено количество питательных веществ в различных продуктах в г/кг и **условная цена** этих продуктов за 1 кг. Необходимо составить дневной рацион, содержащий минимальную суточную норму питательных веществ **при минимальной их стоимости**.

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

[1]: https://habrastorage.org/webt/59/d9/e1/59d9e1fb8761c883565763.jpeg
[2]: https://habrahabr.ru/post/339594/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Инструкция как скомпилировать динамический модуль ngx_pagespeed для Nginx на Debian
habra.16
habrabot(difrex,1) — All
2017-10-12 09:30:05


**Цель:** Предоставить инструкцию по сборке динамического модуля, дать понимание принципа сборки динамического модуля для [Nginx поставленного из репозитория Debian][1].

**Целевая аудитория:** Администраторы серверов, продвинутые администраторы сайтов, сео-оптимизаторы и просто те кто хочет добиться хорошей оценки от сервиса [Google PageSpeed][2].

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

План действий такой:

1. Арендуем vps на час.
2. Собираем на арендованной vps динамический модуль **на той же самой версии Nginx что была использована на боевом** (_это_ **ВАЖНО!!!**. **Поддержка динамических модулей у Nginx появилась с версии 1.9.11**).
3. Перекидываем модуль на новый сервер.
4. Конфигурируем Nginx.
5. Применяем настройки.
6. Замораживаем версию Nginx (_Если это не сделать, то при ближайшем обновлении Nginx, произойдёт падение сервера. Причина в том что скомпилированный модуль будет работать только с конкретной версией Nginx. Если захотите обновиться, скомпилируете модуль для новой версии и обновитесь_).

Или следим за тем что обновляем и своевременно добавляем новый собранный модуль.

Преимущество в том что боевой сервер не подвергается изменению и если Вам к примеру не понравится ngx\_pagespeed, то вы просто уберёте строчки конфигурирующие его и сам модуль. Ну и если Вы используете несколько серверов с Nginx Вы можете один раз скомпилировать модуль для них всех.
[Читать дальше →][3]

[1]: https://wiki.debian.org/ru/nginx/nginx+php-fpm
[2]: https://developers.google.com/speed/pagespeed/
[3]: https://habrahabr.ru/post/339896/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Обзор фреймворка Luigi для построения последовательностей выполнения задач
habra.16
habrabot(difrex,1) — All
2017-10-12 09:30:05


Доброго времени суток! У нас открылось совершенно новое направление обучения — [BigData][1], а это значит, что немного расширяется горизонт материалов, которыми мы будем делиться с вами. Сегодня рассмотрим Luigi, как часть того, что раскрывается на нашем курсе.

[Luigi][2] — фреймворк на языке Python для построения сложных последовательностей по выполнению зависимых задач. Довольно большая часть фреймворка направлена на преобразования данных из различных источников (MySql, Mongo, redis, hdfs) и с помощью различных инструментов (от запуска процесса до выполнения задач разных типов на кластере Hadoop). Разработан в компании Spotify и открыт в виде open source инструмента в 2012 году.

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

Для выполнения всех этих задач существуют и другие инструменты. Это [Oozie][3], [Pinball][4], [Airflow][5] (находится в статусе инкубации в Apache — проходит различные проверки, недавно вышел обзор на [хабре][6]). В данной статье рассмотрим только Luigi.

![][7]
[Читать дальше →][8]

[1]: https://otus.ru/lessons/BigData/?utm_source=habr&utm_medium=affilate&utm_campaign=bigdata&utm_term=profi11.10
[2]: https://github.com/spotify/luigi
[3]: http://oozie.apache.org/
[4]: https://github.com/pinterest/pinball
[5]: https://github.com/apache/incubator-airflow
[6]: https://habrahabr.ru/company/mailru/blog/339392/
[7]: https://habrastorage.org/webt/59/de/7e/59de7ef4aa4ad086175249.jpeg
[8]: https://habrahabr.ru/post/339904/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Настройка двухфакторной аутентификации в VMware Horizon View 7 c использованием смарт-карт JaCarta PKI
habra.16
habrabot(difrex,1) — All
2017-10-12 10:00:03


[][1]
Недавно мы [рассказывали][2], как настроить 2FA аутентификацию на основе PKI-инфраструктуры и x509 сертификатов в виртуальной среде Citrix, используя электронные ключи JaCarta PKI. Сегодня речь пойдет о ближайшем «друге» Citrix XenDesktop в области доставки виртуальных рабочих столов и приложений – VMware Horizon View.

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

[1]: https://habrastorage.org/webt/59/dc/d9/59dcd9e1bdba3610812233.png
[2]: https://habrahabr.ru/company/aladdinrd/blog/334322/
[3]: https://habrastorage.org/webt/59/dc/d9/59dcd9e1ae2ff417774006.jpeg
[4]: https://habrahabr.ru/post/339824/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] iOS Safari 11 теперь умеет WebRTC
habra.16
habrabot(difrex,1) — All
2017-10-12 10:00:03


![][1]


Пару недель назад состоялся релиз новых айфонов и iOS 11, который невозможно было не заметить. C релизом произошло еще одно, безусловно важное для разработчиков, событие: в браузере Safari появилась долгожданная поддержка WebRTC.

Вообразите на минуту, миллионы айфонов и айпадов по всему миру стали уметь реалтаймовое аудио и видео в браузере. Пользователям iOS и Mac стали доступны полнофункциональные браузерные видеочаты, воспроизведение живых трансляций с низкой (менее секунды) реалтаймовой задержкой, звонки, конференции и многое другое. К этому долго шли и наконец это случилось.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/59/de/08/59de08c39ee15812786003.jpeg
[2]: https://habrahabr.ru/post/339396/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Киллер фича Vim
habra.16
habrabot(difrex,1) — All
2017-10-12 12:00:04


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



Гуглим, выясняется, что для превращения вима в нормальный редактор нужно нажать **i**. Только сохранить поредактированный текст нельзя, перед этим надо несколько раз нажать эскейп, а потом набрать **:w**. А, чтобы его закрыть, нужно нажать эскейп, а потом набрать **:q**. Тяжёлое наследие прошлого. Ну, зато вим есть везде.



Но в какой-нибудь из статей, рассказывающей, как провести 5 минут в виме и остаться в живых, обязательно будет написано, что вим — лучший текстовый редактор в мире. И ещё выяснится, что люди в нём программируют. То есть, натурально, пишут код. То есть, на дворе 21 век, в любой момент можно скачать Visual Studio, Intellij Idea или, прости господи, Eclipse, а они пишут код в виме. Добровольно.



![][1]

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

[1]: https://habrastorage.org/webt/59/df/0b/59df0b6b9d2a0862800546.jpeg
[2]: https://habrahabr.ru/post/339908/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] О конференции Strata AI: будущее искусственного интеллекта
habra.16
habrabot(difrex,1) — All
2017-10-12 12:00:04


Хабр, привет!

В этой статье я расскажу о конференции O’Reilly Strata Artificial Intelligence, которую мне довелось посетить этим летом в Нью-Йорке.

Strata AI – одна из главных конференций, посвященных искусственному интеллекту, проходит примерно раз в полгода. Конференцию не стоит путать с другим известным мероприятием Strata + Hadoop World – его также проводит O’Reilly, но то посвящено исключительно большим данным и по тематике они мало пересекаются.

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

[1]: https://habrastorage.org/getpro/habr/post_images/360/1cb/c98/3601cbc982ef06c91941b54125cd4a1f.jpg
[2]: https://habrahabr.ru/company/lanit/blog/339874/
[3]: https://habrahabr.ru/post/339874/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Что должен знать о поиске каждый разработчик
habra.16
habrabot(difrex,1) — All
2017-10-12 13:31:21


## Хотите внедрить или доработать функцию поиска? Вам сюда.


[![][1]][2]
Спросите разработчика: «[Как бы вы реализовали функцию поиска в своем продукте?][3]» или «[Как создать поисковую систему?][4]». Вероятно, в ответ вы услышите что-нибудь такое: «Ну, мы просто запустим кластер Elasticsearch: с поиском сегодня всё просто».

Но так ли это? Во многих современных продуктах [по-прежнему][5] [не лучшим][6] [образом][7] [реализован][8] [поиск][9]. Настоящий специалист по поисковым системам скажет вам, что лишь немногие разработчики глубоко понимают, как работает поиск, а ведь это знание часто необходимо для улучшения качества поиска.

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


### **Цель статьи**


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

Основываясь на опыте работы с универсальными решениями и узкоспециализированными проектами самого разного масштаба (в компаниях Google, Airbnb и нескольких стартапах), я расскажу о некоторых популярных подходах, алгоритмах, методах и инструментах.

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

**Переведено в [Alconost][11]**
[Читать дальше →][12]

[1]: https://habrastorage.org/webt/59/de/82/59de82f19d4d1119203996.jpeg
[2]: https://habrahabr.ru/company/alconost/blog/339894/
[3]: https://stackoverflow.com/questions/34314/how-do-i-implement-search-functionality-in-a-website
[4]: https://www.quora.com/How-to-build-a-search-engine-from-scratch
[5]: https://github.com/isaacs/github/issues/908
[6]: https://www.reddit.com/r/Windows10/comments/4jbxgo/can_we_talk_about_how_bad_windows_10_search_sucks/d365mce/
[7]: https://www.reddit.com/r/spotify/comments/2apwpd/the_search_function_sucks_let_me_explain/
[8]: https://medium.com/@RohitPaulK/github-issues-suck-723a5b80a1a3#.yp8ui3g9i
[9]: https://thenextweb.com/opinion/2016/01/11/netflix-search-sucks-flixed-fixes-it/
[10]: https://www.google.com/search?q=%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%BE%D0%B9+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B
[11]: https://alconost.com?utm_source=habrahabr&utm_medium=article&utm_campaign=translation&utm_content=about-search
[12]: https://habrahabr.ru/post/339894/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] О выборе структур данных для начинающих
habra.16
habrabot(difrex,1) — All
2017-10-12 13:31:22


![image][1]


## Часть 1. Линейные структуры



# Массив


Когда вам нужен один объект, вы создаёте один объект. Когда нужно несколько объектов, тогда есть несколько вариантов на выбор. Я видел, как многие новички в коде пишут что-то типа такого:

// Таблица рекордов
int score1 = 0;
int score2 = 0;
int score3 = 0;
int score4 = 0;
int score5 = 0;
Это даёт нам значение пяти рекордов. Этот способ неплохо работает, пока вам не потребуется пятьдесят или сто объектов. Вместо создания отдельных объектов можно использовать массив.

// Таблица рекордов
const int NUM_HIGH_SCORES = 5;
int highScore[NUM_HIGH_SCORES] = {0};
Будет создан буфер из 5 элементов, вот такой:

![][2]

Заметьте, что индекс массива начинается с нуля. Если в массиве пять элементов, то они будут иметь индексы от нуля до четырёх.
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/0ce/948/434/0ce9484348934e68fcb4368a05c979bc.jpg
[2]: https://habrastorage.org/getpro/habr/post_images/36c/d45/a35/36cd45a35c9e5b07b7720c77d8e641eb.png
[3]: https://habrahabr.ru/post/339656/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Результаты летней стажировки 2017 в Digital Security. Отдел исследований
habra.16
habrabot(difrex,1) — All
2017-10-12 13:31:21


![][1]



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

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

[1]: https://habrastorage.org/web/e51/58d/f98/e5158df98ee442869bfb793cce32bb99.png
[2]: https://habrahabr.ru/company/dsec/blog/338026/
[3]: https://habrahabr.ru/post/338740/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 ... 133