RSS
Pages: 1 ... 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 ... 133
[>] Архитектура Enterprise на Yii2. Абстракция, инверсия зависимости, инкапсуляция бизнес-логики и управление изменчивостью
habra.16
habrabot(difrex,1) — All
2017-03-13 10:30:03


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

Однако, с развитием Интернета и бизнеса в нем, на сайте нередко начинают происходить сложные бизнес-процессы, для которых никакие CMS не предназначаны.

Пример бизнес-процессов:

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

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

[>] Web PUSH Notifications быстро и просто
habra.16
habrabot(difrex,1) — All
2017-03-13 10:30:03


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



Информации по этой теме в интернете полно, но она фрагментирована, разбросана по разным ресурсам и перемешена с уведомлениями для мобильных устройств с примерами на Java, C++ и Python. Нас же, как веб-разработчиков, интересует JavaScript. В этой статье я постараюсь саккумулировать всю необходимую и полезную информацию.



![Web PUSH Notifications][1]



Я думаю, вы уже знаете что такое [push-уведомления][2], но я всё же напишу коротко о главном.



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


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

[1]: https://habrastorage.org/files/3d7/7de/9cb/3d77de9cbbdf47bca4132ae7e2ac7ac4.png
[2]: https://ru.wikipedia.org/wiki/Технология_push
[3]: https://habrahabr.ru/post/321924/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Лекции Технопарка. Курс «Алгоритмы и структуры данных» (осень 2016)
habra.16
habrabot(difrex,1) — All
2017-03-13 13:30:03


![image][1]



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


* «Введение. Исполнители. Абстракции интерфейсов. Рекурсия»;
* «Жадные алгоритмы»;
* «Сортировки»;
* «Поиск. Списки»;
* «Деревья»;
* «Хеш-таблицы».

Четыре лекции курса читает Степан Мацкевич, руководитель группы извлечения онтологической информации в компании ABBYY. Он был ведущим программистом при написании серверной части продукта ABBYY InfoExtractor на основе технологии ABBYY Compreno (анализ текстов и перевода).



Еще две лекции ведет Георгий Иванов, разработчик Поиска Mail.Ru, занимающийся задачами обработки поисковых запросов.

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

[1]: https://habrastorage.org/files/555/37b/1bd/55537b1bd7cd455bb31d1209249f29d2.jpg
[2]: https://habrahabr.ru/post/323696/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] CrateDB: снаружи как PostgreSQL, а внутри Elasticsearch
habra.16
habrabot(difrex,1) — All
2017-03-13 14:00:05


С моей прошлой публикации о распределенной базе данных CrateDB прошло около года. Проект на основе Elasticsearch и PrestoDB написан на Java. Он за это время активно развивался и обрастал новым функционалом в [github][1] репозитарии:

* поддержка outer join;
* case when… then… end в запросах;
* функции для работы с пространственными(Geospatial) данными;
* возможно отображение данных временных рядов (Time Series) в Grafana;
* ограниченная поддержка подзапросов;
* узлы кластера работающие в режиме только чтения;
* эмуляцией подмножества протокола PostgreSQL 9.5;
![][2]
Приятной неожиданностью было обнаружить в github проекта, что в команде CrateDB есть русскоговорящий разработчик [Руслан][3]. Достаточно быстро получил от него ответ на вопросы про внутреннее устройство и зависимости проекта.
[Читать дальше →][4]

[1]: https://github.com/crate/crate
[2]: https://habrastorage.org/files/f30/188/6d8/f301886d88234ba391698f56e1422a22.png
[3]: https://github.com/kovrus
[4]: https://habrahabr.ru/post/323742/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Когда появится следующий большой язык программирования с точки зрения Дарвина
habra.16
habrabot(difrex,1) — All
2017-03-13 15:00:04


_Good news everyone!
Futurama _

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

Эволюция работает не только в животном мире, но и в любой подходящей среде. Впервые эта идея получила широкое распространение с выходом книги Ричарда Докинза [«Эгоистичный ген»][1] в 1976 году. В ней был введен знакомый каждому термин [«мем»][2], как пример эволюции в социальной и культурной среде. Языки программирования тоже эволюционируют. А значит их развитие подчиняется принципам эволюции, на основании которых можно сделать предположение о будущем их развитии.

![image][3]

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

[1]: http://www.ozon.ru/context/detail/id/138424656/
[2]: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%BC
[3]: https://habrastorage.org/getpro/habr/post_images/c40/5ab/14e/c405ab14e3927774868916d3a50ed839.jpg
[4]: https://habrahabr.ru/post/323550/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Открытый курс машинного обучения. Тема 3. Классификация, деревья решений и метод ближайших соседей
habra.16
habrabot(difrex,1) — All
2017-03-13 15:30:04




Привет всем, кто проходит курс машинного обучения на Хабре!



В первых двух частях ([1][1], [2][2]) мы попрактиковались в первичном анализе данных с Pandas и в построении картинок, позволяющих делать выводы по данным. Сегодня наконец перейдем к машинному обучению. Поговорим о задачах машинного обучения и рассмотрим 2 простых подхода – деревья решений и метод ближайших соседей. Также обсудим, как с помощью кросс-валидации выбирать модель для конкретных данных.



Напомним, что к курсу еще можно подключиться, дедлайн по 2 домашнему заданию – 13 марта 23:59.


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

[1]: https://habrahabr.ru/company/ods/blog/322626/
[2]: https://habrahabr.ru/company/ods/blog/323210/
[3]: https://habrahabr.ru/post/322534/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [NeoQuest2017] «В поиске землян» и не только…
habra.16
habrabot(difrex,1) — All
2017-03-13 16:00:04


![][1]


Пару дней назад завершился очередной отборочный online-этап ежегодного соревнования по кибербезопасности — [NeoQuest2017][2]. Выражаю особую благодарность организаторам: с каждым годом история всё увлекательнее, а задания сложнее!
А эта статья будет посвящена разбору девятого задания: PARADISOS
[Продолжение внутри][3]

[1]: https://habrastorage.org/files/879/faf/487/879faf487269449a9ab6b5d672161703.png
[2]: http://neoquest.ru/about.php
[3]: https://habrahabr.ru/post/323778/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как проектируют программы: от UML до автоматного подхода
habra.16
habrabot(difrex,1) — All
2017-03-13 16:30:03


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

Мы уже [рассказывали][1], как автоматное программирование помогает решать вопросы создания документации и разработки логики всей программы (на примерах от примитивных до [сложных][2]). Сегодня поговорим о том, какие еще концепции и инструменты можно использовать для этой цели – и какое место автоматное программирование занимает среди них.

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

[1]: https://habrahabr.ru/company/spbifmo/blog/323122/
[2]: http://is.ifmo.ru/automata/_s7300.pdf
[3]: https://habrastorage.org/files/3e2/d80/c75/3e2d80c75fa24a7eab53d60ce500950b.jpg
[4]: https://habrahabr.ru/company/spbifmo/blog/323780/
[5]: https://habrahabr.ru/post/323780/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Изнанка работы платежных технологий на основе NFC и MST
habra.16
habrabot(difrex,1) — All
2017-03-13 18:30:03


![image][1]С учетом популярности и распространенности платежных технологий на основе NFC и имитации магнитного сигнала — MST, мы в команде платежного провайдера [Fondy][2], публикуем пост, в котором описан механизм работы этих решений: от точки А (взаимодействия с платежным терминалом) до точки Б (исполнения транзакции).

По результатам выдачи Яндекса, главным вопросом пользователей на тему NFC остается «Что такое NFC и как научиться им пользоваться?». Это сильно контрастирует с тем же Google, где вопрос уже другой. Что такое NFC, там уже знают — NFC там есть в каждом домохозяйстве. Вопрос — как применить то, что дано? Что можно делать, используя NFC? Что делать обычному непродвинутому пользователю с технологией ближнего поля?

Для начала вот список нескольких смарт-устройств, совместимых с NFC: [Nexus 6][3], [Sony Xperia Z3][4], [iPhone 6][5]/7,[ Samsung Galaxy Note 4][6], [LG G3][7], [HTC One M9][8]. Для любителей изучения и сравнения девайсов, вот [полный список][9].
[Читать дальше →][10]

[1]: https://habrastorage.org/files/08e/387/58b/08e38758ba15477ca91869f75e63e2e3.PNG
[2]: https://fondy.ru/
[3]: http://www.techradar.com/reviews/phones/google-nexus-6-1271190/review
[4]: http://www.techradar.com/reviews/phones/mobile-phones/sony-xperia-z3-1263309/review
[5]: http://www.techradar.com/reviews/phones/mobile-phones/iphone-6-1264565/review
[6]: http://www.techradar.com/reviews/phones/mobile-phones/samsung-galaxy-note-4-1263301/review
[7]: http://www.techradar.com/reviews/phones/mobile-phones/lg-g3-1250581/review
[8]: http://www.techradar.com/reviews/phones/mobile-phones/htc-one-m9-1285623/review
[9]: https://www.nfcworld.com/nfc-phones-list/#available
[10]: https://habrahabr.ru/post/322822/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Третья ежегодная конференция JavaScript-разработчиков в Одессе — JS Lab
habra.16
habrabot(difrex,1) — All
2017-03-13 19:30:04


![][1]

**25 марта в Одессе** пройдет третья ежегодная конференция JavaScript-разработчиков — **[JSLab][2]**.Наша команда [FlyElephant][3] помогает с организацией этой конференции и приглашает всех принять участие в ней.

Хочешь расширить свой кругозор и выйти за пределы своих ежедневных JavaScript задач? У тебя есть эта возможность. В этом году на JS Lab тебя ждет: 200 front-end и back-end JS-разработчиков из Украины и ближнего зарубежья; два потока состоящие из 12 докладов по 45 минут и 8 блиц-докладов по 10 минут; темы затрагивающие фронтенд, бекенд, виртуальную реальность, разработку игр, тестирование и все это на JavaScript.

Среди докладов, можно отметить следующие:
[Читать дальше →][4]

[1]: https://habrastorage.org/files/b72/d58/79c/b72d5879c6d54d1a8ae4849fa5ae7c84.png
[2]: http://jslab.in.ua/
[3]: https://flyelephant.net/
[4]: https://habrahabr.ru/post/323810/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] NeoQuest 2017: Выбираемся из додекаэдра, не запуская ничего в qemu
habra.16
habrabot(difrex,1) — All
2017-03-13 19:30:04


> ## «Затерянные в додекаэдре»
>
>
> На Земле – египетские пирамиды, а на этой планете – один (зато какой!) гигантский додекаэдр, левитирующий в воздухе на высоте порядка десяти метров. Должно быть, именно в нём и кроется вся загадка этой планеты. Сама фигура как бы приглашает исследовать ее – одна из граней отсутствует, обозначая вход, и оттуда до земли свивает веревочная лестница. Разумеется, мы туда полезли.
>
> «Вот так и пропадают неизвестно куда космические экспедиции…» – уныло говорили мы, уже третий час безуспешно пытаясь выбраться из дурацкого додекаэдра, дверь которого моментально заблокировалась, как только последний из нас забрался внутрь. Выломать дверь не удавалось, единственным выходом было блуждание по лабиринту объемной фигуры. Трудно сказать, сколько прошло времени, но наши поиски увенчались успехом: в одном из закоулков мы обнаружили вполне себе земной древний компьютер! Недовольно урча и подтормаживая, он все-таки загрузился. Всё, что удалось обнаружить – один [файлик][1]. Хорошо, что у меня с собой был ноутбук и флешка, я перекинул файл на ноут и стал внимательно его изучать.

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

[1]: https://2017.neoquest.ru/files/7/qemu-system-x86_64_final.qemu
[2]: https://habrahabr.ru/post/323820/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] LIFT: Learned Invariant Feature Transform
habra.16
habrabot(difrex,1) — All
2017-03-14 10:30:06


![image][1]



## Введение {#vvedenie}



В последние годы вездесущие нейронные сети находят все больше и больше применений в различных областях знаний, вытесняя классические алгоритмы, использовавшиеся многие годы. Не стала исключением и область компьютерного зрения, где год за годом все больше и больше задач решаются при помощи современных нейронных сетей. Настало время написать об еще одном павшем бойце в войне "Традиционное зрение vs. Глубокое Обучение". Долгие годы на задаче поиска локальных особенностей изображений (так называемых ключевых точек) безраздельно властвовал алгоритм SIFT(Scale-invariant Feature Transform), предложеный в далеком 1999 году, многие сложили головы в попытках превзойти его, но удалось это лишь Deep Learning'у. Итак, встречайте, новый алгоритм поиска локальных особенностей — LIFT (Learned Invariant Feature Transform).

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

[1]: https://habrastorage.org/files/58b/10a/9c6/58b10a9c6af04c83b11d3d76d4ebf4f4.png
[2]: https://habrahabr.ru/post/323688/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

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


Год назад я начал писать ботов для всеми любимого Телеграма. На Питоне, конечно. И вот недавно мой сын пошёл в школу, где, как оказалось, был электронный дневник под названием [МРКО][1]. Как вы могли догадаться, самая первая мысль — сделать бота (пока для личного пользования), который смог бы присылать в Телеграм оценки, домашнее задание и комментарии. Кому интересно — прошу под кат.


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

[1]: https://mrko.mos.ru/dnevnik/
[2]: https://habrahabr.ru/post/323856/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [NeoQuest2017] «МУЛЬТИПАСПОРТ!» и розовый скафандр
habra.16
habrabot(difrex,1) — All
2017-03-14 14:00:03


![][1]


Продолжаем серию райтапов заданий из прошедшего соревнования кибербезопасности [NeoQuest2017][2]
На этот раз мы рассмотрим пятое задание: ESPION
Задание содержало целых 3 (over200 очков) ключа! По этой причине данное задание стало маст-хэв для тех, кто возжелал оказаться «повыше»
[Продолжение внутри][3]

[1]: https://habrastorage.org/files/879/faf/487/879faf487269449a9ab6b5d672161703.png
[2]: http://neoquest.ru/about.php
[3]: https://habrahabr.ru/post/323830/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Репликация из MySQL в Tarantool
habra.16
habrabot(difrex,1) — All
2017-03-14 14:30:03


![image][1]



Привет, Хабр! Сегодня поделюсь с вами статьёй, написанной по мотивам моего доклада на Tarantool Meetup. Маленькая история, почему в компании Мамба стали использовать Tarantool. Почему мы занялись репликацией из MySQL в Tarantool? Первая причина в том, что в какой-то момент нужно было начинать переходить на MySQL 5.7, но в нём отсутствует handler socket, который активно используется на наших серверах в MySQL 5.6. Мы даже связались с командой Percona, и они подтвердили, что 5.6 — это последняя версия c handler socket.



Вторая причина — мы начали пробное использование Tarantool, и скорость работы нам понравилась: мы просто сравнили memcache и Tarantool как key/value-хранилище, получив прирост производительности — с 0,6 до 0,3 мс на одинаковом железе. В относительном выражении Tarantool в два раза быстрее, в абсолютном выражении это не так круто, но всё же. И третья причина — желание полностью сохранить текущую структуру: есть MySQL Server Master и его Slave’ы, ничего переписывать не хотелось, хотелось оставить максимально близко к той архитектуре, что есть сейчас. Как бы нам сделать так, чтобы вместо Slave’ов MySQL 5.6, на которых используется handler socket, применить что-то другое и полностью не переписывать всю огромную архитектуру?

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

[1]: https://habrastorage.org/files/20c/4a4/b89/20c4a4b896e54b79ac1959231a2af8c2.jpg
[2]: https://habrahabr.ru/post/323870/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Идеальный каталог, вариант реализации
habra.16
habrabot(difrex,1) — All
2017-03-14 14:30:03


В продолжении статьи "[Идеальный каталог, набросок архитектуры][1]", я покажу на примерах как можно использовать предложенную структуру БД для хранения произвольных данных и выполнения произвольных поисков по этим данным. Скрипты лежат в репозитории — [universal\_data\_catalog\_idea][2].

Приглашаю под кат, тех кому интересно посмотреть на эти скрипты с авторскими комментариями.
[Читать дальше →][3]

[1]: https://habrahabr.ru/post/322930/
[2]: https://github.com/SbWereWolf/universal_data_catalog_idea
[3]: https://habrahabr.ru/post/323498/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Своевременная оптимизация
habra.16
habrabot(difrex,1) — All
2017-03-14 14:30:03


Всем известно, что преждевременная оптимизация — это плохо и надо себя одёргивать когда, возникает желание пооптимизировать не вовремя. Однако на практике чаще бывает ситуация когда естественное (и, возможно, интуитивно правильное) желание пооптимизировать подавляется по принципу «если вообще не оптимизировать — это не будет преждевременно». Либо так:

![][1]

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

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

[1]: https://habrastorage.org/files/4dc/b77/7bd/4dcb777bd8634ea3a5be3018c4a5423d.jpg
[2]: https://habrahabr.ru/post/323884/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Требования к паролям — полная чушь
habra.16
habrabot(difrex,1) — All
2017-03-14 16:00:06


Знаете, что самое худшее в паролях ([а там есть из чего выбирать][1])? Требования к их сложности.

![][2]
«Если мы не решим проблему с паролями при моей жизни, я восстану из могилы призраком и буду вас всех преследовать».

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

Мир буквально погряз в ужасных правилах создания паролей:

→ [Тупые требования][3]
→ [Примеры плохой политики][4]
→ [Доска позора][5]

Но вам все это и объяснять не нужно. Те, кто пользуется рандомными генераторами паролей, как и положено нам, гикам в последней стадии, на своей шкуре испытывают невыносимые страдания под гнетом этого режима изо дня в день.
[Читать дальше →][6]

[1]: https://blog.codinghorror.com/the-dirty-truth-about-web-passwords/
[2]: https://habrastorage.org/files/60c/2b7/dde/60c2b7dde7884212b2ff428da0a60922.png
[3]: https://github.com/duffn/dumb-password-rules
[4]: http://badpasswordpolicies.tumblr.com/
[5]: http://password-shaming.tumblr.com/
[6]: https://habrahabr.ru/post/323864/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Asterisk и не только. Виртуальные файловые системы. Шаг назад или два вперед?
habra.16
habrabot(difrex,1) — All
2017-03-14 16:30:04


Описывая участие в проекте по модернизации VoIP оператора связи [Часть 1][1] и [Часть 2][2], одной из задач, которая выпала из поля зрения, было создание унифицированного инструмента для визуализации и мониторинга работы сервера Asterisk. По сути, после выхода из данного проекта, навязчивая идея привести отображение информации Asterisk к более удобному виду вылилась в проект создания прототипа унифицированной виртуальной файловой системы, объединяющей возможности всех разрозненных инструментов доступных в Asterisk.



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

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

[1]: https://habrahabr.ru/post/319352/
[2]: https://habrahabr.ru/post/319558/
[3]: https://habrahabr.ru/post/323740/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Объяснение эффекта последней строки
habra.16
habrabot(difrex,1) — All
2017-03-14 17:00:04


Микроклоны — это дублированные фрагменты кода очень малого размера — всего лишь несколько инструкций или строк. В этой статье мы рассмотрим «эффект последней строки» — явление, при котором последняя строка или инструкция в микроклоне с гораздо большей вероятностью содержит ошибку, чем предыдущие строки или инструкции. С этой целью мы изучили 219 открытых проектов и 263 предупреждения о дефектных микроклонах, а также опросили шестерых авторов реальных приложений, допускавших такие ошибки в своем коде. В нашей междисциплинарной работе также изучаются психологические механизмы, обуславливающие сравнительно тривиальные ошибки этого типа. Опираясь на результаты опросов и дальнейшего технического анализа, мы предполагаем, что в существовании эффекта последней строки ключевую роль играют так называемые «ошибки последовательности действий»: при копировании кода внимание разработчиков переключается на другие задачи из-за отвлекающих факторов и монотонной природы самой этой процедуры. Более того, все микроклоны, чье происхождение мы смогли установить, были обнаружены в непривычно больших коммитах. Знание о данном эффекте имеет два полезных следствия для программистов: 1) им будет легче распознавать ситуации, в которых особенно велика вероятность допустить ошибку в микроклонах; 2) они смогут использовать автоматический детектор микроклонов / PVS-Studio, что упростит обнаружение ошибок этого типа.
[Читать дальше →][1]

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

[>] На рынке корову мужик продавал
habra.16
habrabot(difrex,1) — All
2017-03-14 21:30:03


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

Итак, задача вполне себе житейская.

Некий Мужик занимается перепродажей коров: он скупает их за фиксированную небольшую цену **a** рублей у местного населения и пытается продать с наценкой посетителям рынка. Предположим для простоты, что покупатели по своей платежеспособности делятся на **n** классов, и, что любому, подошедшему к Мужику покупателю из **k **-го класса, он продает любую из имеющихся у него коров с наценкой **x**k-тое рублей. Будем считать, что появление покупателя каждого класса описывается пуассоновским процессом с неким, характерным для этого класса нагрузочным параметром **l**k-тое. Если в момент появления покупателя у Мужика нет коров, то первый не становится в очередь, а удаляется восвояси и обратно уже не возвращается. Задачи бы попросту не было, если бы не два правдоподобных условия:
[Читать дальше →][1]

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

[>] Все программисты попадают в #ТАЙ
habra.16
habrabot(difrex,1) — All
2017-03-14 22:00:03


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

![image][1]

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

[1]: https://habrastorage.org/files/223/da2/653/223da2653d974eca8856c2f3a460b53f.jpg
[2]: https://habrahabr.ru/post/323928/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] А ты хто такой? Эволюция протоколов аутентификации MySQL и MariaDB в лицах
habra.16
habrabot(difrex,1) — All
2017-03-14 22:00:03


В далекие времена, до фейсбука и гугла, когда 32 мегабайта RAM было дофига как много, security была тоже… немножко наивной. Вирусы выдвигали лоток CD-ROM-а и играли Янки Дудль. Статья «Smashing the stack for fun and profit» уже была задумана, но еще не написана. Все пользовались telnet и ftp, и только особо продвинутые параноики знали про ssh.

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

Michael Widenius (или просто Monty) явно был знаком с параноидальными безопасниками не понаслышке, чего стоит один такой момент (из исходников, `global.h`):

/* Paranoid settings. Define I_AM_PARANOID if you are paranoid */
#ifdef I_AM_PARANOID
#define DONT_ALLOW_USER_CHANGE 1
#define DONT_USE_MYSQL_PWD 1
#endif

Так что неудивительно, что пароли в MySQL открытым текстом не передавались никогда. Передавались случайные строки на основе хешей. А конкретно, первый протокол аутентификации (цитируется по mysql-3.20, 1996) работал так:
[Читать дальше →][1]

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

[>] Построение демилитаризованной зоны DMZ в системах АСУ ТП с помощью протоколов Modbus и МЭК-60870-5-104
habra.16
habrabot(difrex,1) — All
2017-03-15 09:00:03


Всем здравствуйте! Статься предназначена для специалистов в области АСУ ТП. Остальным она может оказаться непонятной из-за обилия специфических терминов.

Как правило в АСУ ТП реализация демилитаризованной зоны выглядит следующим образом:

![image][1]

В сети №1 есть OPC-сервер от которого должен получать данные OPC-клиент в сети №2. Есть сервер DMZ. Firewall 1 разрешает только соединения из сети 1, остальные соединения запрещает. Firewall 2 разрешает только соединения из сети 2, остальные соединения запрещает. Передача по стандарту OPC DA в таких условиях невозможна.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/cca/5f9/48b/cca5f948b95b44e0b948b33be655b499.png
[2]: https://habrahabr.ru/post/323916/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Скриншаринг на сайте по WebRTC из браузера Mozilla Firefox
habra.16
habrabot(difrex,1) — All
2017-03-15 09:00:03


![][1]


Недавно мы писали [статью][2] о том, как сделать расширение скриншаринга для браузера Google Chrome. В результате мы создали собственное расширение для скриншаринга, опубликовали его в Chrome Store и протестировали трансляцию экрана через Web Call Server в режиме один-ко-многим.

В этой статье мы проделаем тоже самое с браузером **Firefox**. Подход остается прежним и снова потребуется упаковка и публикация расширения, на этот раз в **Mozilla Add-ons**. В результате мы сможем делать скринкасты видеопотоков из FF без установки внешнего дополнительного ПО. [Читать дальше →][3]

[1]: https://habrastorage.org/files/b3c/3ce/98e/b3c3ce98ee7e43ea88e1dd740239b856.jpg
[2]: https://habrahabr.ru/post/323486/
[3]: https://habrahabr.ru/post/323892/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Bake – запускаем таски на bash
habra.16
habrabot(difrex,1) — All
2017-03-15 09:00:03


Думаю многим известна ситуация, когда собственный изобретенный велосипед нигде потом не используется. Поэтому я долго не решался опубликовать эту разработку, пока не обратил внимание, что таскаю его из проекта в проект. И так, одним из неотъемлемых элементов современной разработки являются так называемые таск раннеры – это Grunt/Gulp для nodejs, Rake для Ruby, Make для C/C++ и т.п. А для главного инструмента разработчика – консоли – ничего подобного нет. Точнее есть, но, как это обычно бывает, не совсем то. В результате изысканий, на свет появился инструмент Bake – таскраннер написанный на bash с поддержкой модульной структуры.



Основные особенности:


* Таски в виде функции.
* Поддержка аргументов
* Модули.[Читать дальше →][1]

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

[>] Сага о том, как Java-разработчики должны тестировать свои приложения. Часть 1
habra.16
habrabot(difrex,1) — All
2017-03-15 11:30:03


Если вы все еще считаете, что пользы от докладов на конференциях нет, предлагаем вам почитать статью, подготовленную по мотивам доклада Николая [xpinjection][1] Алименкова (EPAM) на JPoint 2016. В почти двухчасовом докладе Николай подробно рассказывает о различных аспектах тестирования (а заодно и разработки) приложений под Java – от подходов к тестированию бизнес-логики до TDD, BDD и UI-тестирования, демонстрируемых на практических примерах из реального проекта.

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

Видеозапись доклада:

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

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

[>] Как пробудить приложение в iOS: по расписанию и не очень
habra.16
habrabot(difrex,1) — All
2017-03-15 13:30:04


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

Представьте, что ваш мессенджер, так любимый пользователем, отправляется в фоновый режим и там «засыпает». Как ему принять звонок, будучи не подключенным к серверу? Ответ как раз и заключается в пуше – сообщение «будит» приложение, оно переходит в активный режим и уже может принять звонок.

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

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

[>] [Из песочницы] Два DHCP сервера на Centos7 с failover, dhcp-relay и динамическим обновлением зон
habra.16
habrabot(difrex,1) — All
2017-03-15 14:00:05


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

Суть задачи в том, что в большой организации нужен был отказоустойчивый DHCP-сервер, с dhcp-relay и возможностью быстро синхронизировать конфигурацию. Основной момент, что в большинстве найденных мной руководствах рассматривается либо вариант failover, либо dhcp-relay и нигде оба варианта не рассматривались вместе да ещё и с удобным методом синхронизации конфигурации. Вдруг кому моя статья немного поможет?
[Читать дальше →][1]

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

[>] Файловое хранилище в соцсети и другие проекты студентов Университета Иннополис
habra.16
habrabot(difrex,1) — All
2017-03-15 19:00:04


![image][1]

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

[1]: https://habrastorage.org/getpro/habr/post_images/46d/3e3/850/46d3e38506e40c19c5d02a7d6f5518c6.jpg
[2]: https://habrahabr.ru/post/324010/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Конфигурирование стиля кода в Visual Studio 2017
habra.16
habrabot(difrex,1) — All
2017-03-15 20:30:03


![][1]
_Предлагаю вашему вниманию перевод полезной [статьи ][2]о том, как настраивать и применять правила написания кода в вашей команде._

Visual Studio 2017 обеспечивает соблюдение стиля написания кода и поддержку EditorConfig. Новая версия включает в себя больше правил для code style и позволяет разработчикам настраивать стиль кода через EditorConfig.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/41b/dba/496/41bdba49618542d1a9a29c2fd2e0dd19.jpg
[2]: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/
[3]: https://habrahabr.ru/post/323966/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Фича, а не баг. Или как Rambler позволяют подменять отправителя письма
habra.16
habrabot(difrex,1) — All
2017-03-15 22:00:04


![image][1]

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

Мне попало в руки приложение Рамблер/почта для Android. Цель была автоматизировать отправку почты средствами API мобильного приложения. Был запущен эмулятор MEmu и Charles, однако SSL отказывался показать свои запросы. В ход пошел реверс. В файле smali\_classes2\\okhttp3\\OkHttpClient.smali были сделаны изменения, дабы убрать шифрование.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/baf/ab7/e33/bafab7e33dee4becb1ec66af41ca163c.jpg
[2]: https://habrahabr.ru/post/324046/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Облачный дайджест: 35 материалов по теме ИБ и развития технологий ЦОД
habra.16
habrabot(difrex,1) — All
2017-03-16 00:00:03


Сегодня мы решили вспомнить, какие интересные темы мы понимали в нашем блоге на Хабре и на нашем [сайте][1]. Мы не только рассказываем о собственном опыте и даем советы, но и следим за новинками в сфере облачных вычислений и дата-центров, а также рассказываем о безопасности.

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

[1]: https://1cloud.ru/blog
[2]: https://habrastorage.org/files/d21/b92/454/d21b92454bd7449688fcd08e574e56bc.jpg
[3]: https://habrahabr.ru/company/1cloud/blog/323980/
[4]: https://habrahabr.ru/post/323980/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Большое интервью: как поступить в Университет ИТМО
habra.16
habrabot(difrex,1) — All
2017-03-16 00:00:03


В [Университете ИТМО][1] продолжается подготовка к приему будущих бакалавров, магистров и аспирантов — проходят Дни открытых дверей, олимпиады для школьников и Конгресс молодых ученых.

_О том, как устроена Приемная кампания-2017, сегодня расскажет Анна Веклич, первый заместитель председателя Приемной комиссии, начальник Департамента по стратегическим коммуникациям Университета ИТМО. _

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

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

[1]: http://www.ifmo.ru/ru/
[2]: https://habrastorage.org/files/ec2/5df/c05/ec25dfc05484415c861cbc8d523c7303.jpg
[3]: https://habrahabr.ru/company/spbifmo/blog/323774/
[4]: https://habrahabr.ru/post/323774/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Уязвимость карты Подорожник: бесплатные поездки в наземном транспорте Санкт-Петербурга
habra.16
habrabot(difrex,1) — All
2017-03-16 03:30:06


![][1]

Почти год назад на Хабрахабре появилась статья "[Исследование защищенности карты Тройка][2]", в которой было подробно описано устройство проездных билетов и векторы атаки на систему оплаты общественного транспорта в Москве. Ещё тогда, вдохновившись прочитанным, мне захотелось попробовать применить описанные в статье приёмы к петербургскому аналогу Тройки — карте Подорожник, которая используется для оплаты поездок в общественном транспорте города.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/a3b/a8f/082/a3ba8f082d0a48ddbf19b30fa3ebe0d9.jpg
[2]: https://habrahabr.ru/post/301832/
[3]: https://habrahabr.ru/post/324040/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Хакер за вознаграждение уничтожал данные о штрафах за нарушение ПДД
habra.16
habrabot(difrex,1) — All
2017-03-16 04:30:04


[![][1]][2]

_Изображение: [John Grimm][3], Flickr_

Как [сообщают][4] СМИ, сотрудники полиции города Улан-Батор (Монголия) арестовали 25-летнего хакера. По версии следствия, он за вознаграждение уничтожал сведения о штрафах за нарушение ПДД на сервере городского центра управления дорожным движением.

До 90% дорожного движения столицы Монголии контролируется системами CCTV или камерами наблюдения. Нарушители получают штрафы по почте. [Читать дальше →][5]

[1]: https://habrastorage.org/files/227/3a6/1fd/2273a61fd1784bcdbc5cf4eca81c0cc4.jpg
[2]: https://habrahabr.ru/company/pt/blog/324022/
[3]: https://www.flickr.com/photos/awesomecool/
[4]: http://asiarussia.ru/news/15421/
[5]: https://habrahabr.ru/post/324022/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Считаем до трёх
habra.16
habrabot(difrex,1) — All
2017-03-16 04:30:04


# Троичные вычисления



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

Я выбрал сбалансированную троичную систему, в которой один трит может представлять одно из трёх значений -1, 0 или 1. Весьма подробно о ней можно почитать [тут][1].

На любые вопросы из разряда «зачем?!» я отвечаю заранее: «Because I can».

![][2]

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

[1]: http://homepage.divms.uiowa.edu/~jones/ternary/logic.shtml#xor
[2]: https://habrastorage.org/getpro/habr/post_images/712/d3c/f01/712d3cf01d8b437e26a030f5878da525.jpg
[3]: https://habrahabr.ru/post/324062/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Сага о том, как Java-разработчики должны тестировать свои приложения. Часть 2
habra.16
habrabot(difrex,1) — All
2017-03-16 12:00:05


----

[Сага о том, как Java-разработчики должны тестировать свои приложения. Часть 1][1]
----
Перед вами вторая часть Саги от Николая [xpinjection][2] Алименкова о том, как Java-разработчики должны тестировать свои приложения, речь в которой пойдет о TDD, BDD, тестировании FTP, UI, web-UI, JMS и баз данных.

Итак, шёл второй час…

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

[1]: https://habrahabr.ru/company/jugru/blog/323920/
[2]: https://habrahabr.ru/users/xpinjection/
[3]: https://habrastorage.org/files/421/7db/3fd/4217db3fda154067ad4cea25c719c635.jpg
[4]: https://habrahabr.ru/company/jugru/blog/323922/
[5]: https://habrahabr.ru/post/323922/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Лекция Чарльза Мура, создателя Forth: 144-ядерный процессор, зачем? Сложно ли запрограммировать 144 вычислительных ядра?
habra.16
habrabot(difrex,1) — All
2017-03-16 12:30:04


Создатель 144-ядерного процессора GA144 и языка программирования Forth, известный программист Чарльз Мур (Charles H. Moore), известный также под именем Чак Мур (Chuck Moore), в своей лекции рассказывает о перспективах применения 144-х ядерного асинхронного чипа, созданного его компанией, GreenArrays, а также его программировании. Ведь его чип потребляет всего лишь 7 пДж энергии, что делает его незаменимым в случаях, когда процессор может питаться лишь от автономного источника энергии без возможности подзарядки, начиная от разработок в сфере медицины и заканчивая робототехникой. Незадействованные ядра потребляют всего 100 нановатт, в то время, как активным, требуется всего 4 милливатта при обработке 666 MIPS: плотный код сводит к минимуму количество выполняемых инструкций, уменьшая количество выборки команд, переключения транзисторов и рабочего цикла.

Так как лекция еще не публиковалась ранее, мы опубликовали её для Вас на youtube:



Если кто-то будет в состоянии сделать субтитры — пишите, добавим, будем очень признательны, если кто-то найдет время для выполнения столь важной работы.

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

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

[>] [Перевод] Я — самозванец
habra.16
habrabot(difrex,1) — All
2017-03-16 12:30:04


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

_Переведено в [Alconost][3]
_
«Самозванец» — сильное слово, но именно так я чувствую себя на протяжении всей своей карьеры профессионального веб-разработчика. Мне кажется, что я, хоть и не прекращаю учиться каждый день, все равно отстаю. Мне кажется, что меня воспринимают как эксперта там, где я считаю себя затаившейся катастрофой. Я полный самозванец. Мошенник.
[Читать дальше →][4]

[1]: https://habrastorage.org/files/0e2/73c/993/0e273c99349c4efa83d61a1c78ebe5c0.jpg
[2]: https://habrahabr.ru/company/alconost/blog/324048/
[3]: https://alconost.com/?utm_source=habrahabr&utm_medium=article&utm_campaign=translation&utm_content=impostor-syndrome
[4]: https://habrahabr.ru/post/324048/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Часто используемые пароли: как не попасться самому и уберечь пользователей
habra.16
habrabot(difrex,1) — All
2017-03-16 12:30:04


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

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

Можно ли с этим бороться? — легко! Борются ли с этим? — не встречал. Значит, пора начать.

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

[1]: https://habrastorage.org/getpro/habr/post_images/1f1/a11/f18/1f1a11f1864b994e22dd9e6dbd6858e6.jpg
[2]: https://habrahabr.ru/post/323992/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Фильтрация изображения на FPGA
habra.16
habrabot(difrex,1) — All
2017-03-16 15:30:05


![][1]

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

[1]: https://habrastorage.org/files/10b/121/a73/10b121a734b2452f8509bfede85edf0b.jpg
[2]: https://habrahabr.ru/post/323258/
[3]: https://habrahabr.ru/post/324070/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] PVS-Studio: поиск дефектов безопасности
habra.16
habrabot(difrex,1) — All
2017-03-16 17:00:04


![][1]
Анализатор PVS-Studio всегда умел искать множество различных дефектов безопасности (потенциальных уязвимостей) в коде программ. Однако, исторически сложилось, что мы позиционировали PVS-Studio как инструмент для поиска ошибок. Сейчас наблюдается мода на поиск в коде именно уязвимостей, а не ошибок, хотя на самом деле это одно и тоже. Что же, значит пришло время провести ребрендинг нашего статического анализатора PVS-Studio. Начнём мы с Common Weakness Enumeration (CWE). В этой статье приводится таблица, сопоставляющая диагностические предупреждения PVS-Studio с классификатором. Таблица будет постепенно пополняться и изменяться, но уже сейчас с её помощью мы сможем писать статьи, посвященные обнаруженным дефектам безопасности в том или ином проекте. Думаем, это привлечёт к нашему инструменту больше внимания специалистов, занимающихся безопасностью программного обеспечения.
[Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/2cc/d5d/05a/2ccd5d05a1562ffa550b7bdbed0f04a5.png
[2]: https://habrahabr.ru/post/324114/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Библиотеки для глубокого обучения Theano/Lasagne
habra.16
habrabot(difrex,1) — All
2017-03-16 17:30:04


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



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



Я открою этот цикл статьёй о Theano — библиотеке, которая используется для разработки систем машинного обучения как сама по себе, так и в качестве вычислительного бекэнда для более высокоуровневых библиотек, например, [Lasagne][2], [Keras][3] или [Blocks][4].



Theano разрабатывается с 2007 года главным образом группой [MILA][5] из Университета Монреаля и названа в честь древнегреческой женщины-философа и математика Феано (предположительно изображена на картинке). Основными принципами являются: интеграция с numpy, прозрачное использование различных вычислительных устройств (главным образом GPU), динамическая генерация оптимизированного С-кода.

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

[1]: https://habrahabr.ru/search/?q=%5Bmlcourse_open%5D&target_type=posts
[2]: http://lasagne.readthedocs.io/en/latest/
[3]: https://keras.io/
[4]: http://blocks.readthedocs.io/en/latest/
[5]: https://mila.umontreal.ca/en/
[6]: https://habrahabr.ru/post/323272/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Что делать если вас заперли в rbash
habra.16
habrabot(difrex,1) — All
2017-03-16 18:30:04


Совсем недавно проходил очередной интересный CTF [Boston Key Party 2017][1]. Который мы к сожалению не выиграли, но это другая история. А сегодня я бы хотел описать решение одного задания из раздела _pwn_ это _«Solitary Confinement (pwn 99)»_.
[Читать дальше →][2]

[1]: https://ctftime.org/event/394
[2]: https://habrahabr.ru/post/324132/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] FSE кодирование
habra.16
habrabot(difrex,1) — All
2017-03-16 18:30:04


**Finite State Entropy** (FSE) – алгоритм [энтропийного кодирования][1], чем-то похожий и на [алгоритм Хаффмана][2], и на [арифметическое кодирование][3]. При этом он взял лучшее от них обоих: работает так же быстро, как хаффмановский, и со степенью сжатия как у арифметического кодирования.

FSE принадлежит семейству кодеков ANS ([Asymmetric Numeral Systems][4]),  изобретённых [Яреком Ду́дой][5]. На основе его исследований [Ян Коллет][6] разработал оптимизированный вариант алгоритма, впоследствии названный FSE.

В [заметках][7] Яна Коллета непросто разобраться, поэтому я изложу объяснение в несколько ином порядке, более удобном для понимания, на мой взгляд.

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

[1]: https://ru.wikipedia.org/wiki/%D0%AD%D0%BD%D1%82%D1%80%D0%BE%D0%BF%D0%B8%D0%B9%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
[2]: https://habrahabr.ru/post/144200/
[3]: https://habrahabr.ru/post/130531/
[4]: https://en.wikipedia.org/wiki/Asymmetric_Numeral_Systems
[5]: http://arxiv.org/abs/1311.2540
[6]: https://github.com/Cyan4973
[7]: http://fastcompression.blogspot.ru/2014/01/fse-decoding-how-it-works.html
[8]: https://habrastorage.org/getpro/habr/post_images/cf4/ca6/008/cf4ca6008e7097320a48f37be6a64335.png
[9]: https://habrahabr.ru/company/playrix/blog/324116/
[10]: https://habrahabr.ru/post/324116/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Тёмный путь
habra.16
habrabot(difrex,1) — All
2017-03-16 18:30:04


![image][1]



_Предлагаю вашему вниманию перевод [оригинальной статьи][2] Роберта С. Мартина._



За последние несколько месяцев я попробовал два новых языка. [Swift][3] и [Kotlin][4]. У этих двух языков есть ряд общих особенностей. Действительно, сходство настолько сильное, что мне стало интересно, не является ли это новой тенденцией в нашей [языкомешалке][5]. Если это действительно так, то _это тёмный путь_.



Оба языка включают в себя некоторые функциональные характеристики. Например, в них обоих есть лямбды. В целом, это хорошая штука. Чем больше мы узнаем о функциональном программировании, тем лучше. Эти языки далеки от по-настоящему функционального языка программирования; но каждый шаг в этом направлении — хороший шаг.



Проблема в том, что оба языка сделали ставку на сильную статическую типизацию. Кажется, оба намерены заткнуть _каждую дыру_ в своём родном языке. В случае со `Swift` – это странный гибрид `C` и `Smalltalk`, который называется _Objective-C_; поэтому, возможно, упор на типизацию понятен. Что касается Kotlin – его предком является уже довольно строго типизированная Java.



Я не хочу, чтобы вы думали, что я против статически типизированных языков. Я не против. Есть определенные преимущества как для динамических, так и для статических языков; и я с удовольствием пользуюсь обоими видами. Я предпочитаю динамическую типизацию, и поэтому я иногда использую `Clojure`. С другой стороны, я, вероятно, пишу больше `Java`, чем `Clojure`. Поэтому вы можете считать меня би-типичным. Я иду по обеим сторонам улицы — если так можно выразиться.



Дело не в том, что меня беспокоит, что `Swift` и `Kotlin` статически типизированы. Скорее меня беспокоит _глубина_ статической типизации.

[Погрузиться в пучину тьмы][6]

[1]: https://habrastorage.org/files/c03/c9f/f4e/c03c9ff4e3a44b23a2ed021881faa39b.jpg
[2]: http://blog.cleancoder.com/uncle-bob/2017/01/11/TheDarkPath.html
[3]: https://swift.org/
[4]: https://kotlinlang.org/
[5]: http://blog.cleancoder.com/uncle-bob/2016/07/27/TheChurn.html
[6]: https://habrahabr.ru/post/324122/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] DIY в телефонии: простые конструкторы на основе API
habra.16
habrabot(difrex,1) — All
2017-03-16 18:30:04


![image][1]


Не обязательно быть программистом, чтобы интегрировать друг с другом IT-сервисы. Открытый API + простой сервис-конструктор — и rocket science становится доступным условному гуманитарию. Покажу три наиболее интересных, на мой вкус, конструктора и расскажу, как их можно применить в телефонии.


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

[1]: https://habrastorage.org/files/85f/fc8/04a/85ffc804a64c4f7fbcd9653af6acdc7a.jpg
[2]: https://habrahabr.ru/post/324104/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Windows Forth +
habra.16
habrabot(difrex,1) — All
2017-03-16 18:30:04


### Конструирование оснастки для обработки оконных сообщений Windows


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

Во-первых, программировать под Windows оказывается очень легко, достаточно открыть любую инструкцию по WinAPI.

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

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

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

[>] Уголовный кодекс разработчика
habra.16
habrabot(difrex,1) — All
2017-03-16 19:30:03


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

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

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

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

Pages: 1 ... 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 ... 133