RSS
Pages: 1 ... 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 ... 210
[>] [Перевод] C#: коллекции только для чтения и LSP
habra.14
habrabot(difrex,1) — All
2015-04-26 05:30:02


Часто разработчики утверждают, что read-only коллекции в .NET нарушают [принцип подстановки Барбары Лисков][1]. Так ли это? Нет, это не так, потому что IList интерфейс содержит флаг IsReadOnly. Исключением является класс Array, он действительно нарушает LSP принцип начиная с версии .NET 2.0. Но давайте разберемся во всем по порядку. [Читать дальше →][2]

[1]: https://ru.wikipedia.org/wiki/Принцип_подстановки_Барбары_Лисков
[2]: http://habrahabr.ru/post/256605/#habracut

[>] Релиз Debian Jessie 8.0
habra.14
habrabot(difrex,1) — All
2015-04-26 09:30:03


Выпущен релиз Debian под кодовым названием Jessie.![][1]

> Debian 8.0 Jessie has been released!: There's a new sheriff in town. And her name is Jessie. We're happy to a...
>
> — The Debian Project (@debian)
>
> [26 апреля 2015][2]

Новый релиз содержит намного больше программ, чем его предшественник Wheezy — добавлено больше 12 000 пакетов, а всего в этом выпуске больше 43 500 пакетов. К тому же большая часть пакетов — больше 24 500 — была обновлена (это примерно 66% от пакетной базы Wheezy). Еще 5441 пакет был удалён по разным причинам. Официальный дистрибутив Debian теперь занимает от 9 до 10 DVD или от 61 до 69 CD (в зависимости от архитектуры) с собранными пакетами, и 8 DVD или 46 CD дисков занимают пакеты с исходным кодом. Также доступна мультиархитектурная версия дистрибутива на DVD, включающая архитектуры amd64, i386 и исходный код. Кроме этого Debian выпущен в виде образов Blu-ray, по два образа для архитектур [amd64][3] и [i386][4] на каждый и два для [исходного кода][5]. Из-за размеров, очень большие пакеты не попали в сборки для CD; эти пакеты есть на DVD и BD. [Подробности][6]

[1]: //habrastorage.org/files/a42/3e3/132/a423e3132e724579acf37c604af8b2c9.png
[2]: https://twitter.com/debian/status/592141404496769027
[3]: http://cdimage.debian.org/debian-cd/8.0.0/amd64/jigdo-bd/
[4]: http://cdimage.debian.org/debian-cd/8.0.0/i386/jigdo-bd/
[5]: http://cdimage.debian.org/debian-cd/8.0.0/source/jigdo-bd/
[6]: http://habrahabr.ru/post/256617/#habracut

[>] Алгоритм Quickhull для нахождения выпуклой оболочки
habra.14
habrabot(difrex,1) — All
2015-04-26 16:30:02


Как гласит определение, _выпуклая оболочка_ некоторого множества ![][1] — это наименьшее выпуклое множество ![][2], содержащее в себе это множество ![][3]. Выпуклой оболочкой конечного множества попарно различных точек является многогранник. Для реализации одномерного случая алгоритма Quickhull годится функция [_std::minmax\_element_][4]. В сети можно найти множество реализаций алгоритма Quickhull для плоского случая. Однако, для случая произвольной размерности сходу находится лишь одна тяжёловесная реализация с сайта [qhull.org][5]. [Читать дальше →][6]

[1]: //habrastorage.org/files/eeb/2cf/9be/eeb2cf9be1334810ace291fafe932336.png
[2]: //habrastorage.org/files/287/2d8/d4e/2872d8d4ee9b4bab8c26925725f47cf4.png
[3]: //habrastorage.org/files/eeb/2cf/9be/eeb2cf9be1334810ace291fafe932336.png
[4]: http://en.cppreference.com/w/cpp/algorithm/minmax_element
[5]: http://qhull.org/
[6]: http://habrahabr.ru/post/245221/#habracut

[>] Exposable-паттерн. Независимые инжекции путём экспанирования
habra.14
habrabot(difrex,1) — All
2015-04-26 22:30:02


_Disposable_ паттерн (интерфейс _IDisposable_) предполагает возможность высвобождения некоторых ресурсов, занимаемых объектом, путём вызова метода _Dispose_, ещё до того момента, когда все ссылки на экземпляр будут утрачены и сборщик мусора утилизирует его (хотя для надёжности вызов _Dispose _часто дублируется в финализаторе). Но существует также обратный _Exposable_ паттерн, когда ссылка на объект становится доступной до момента его полной инициализации. То есть экземпляр уже присутствует в памяти, частично проинициализирован и другие объекты ссылаются на него, но чтобы окончательно подготовить его к работе, нужно выполнить вызов метода _Expose_. Опять же данный вызов допустимо выполнять в конструкторе, что диаметрально вызову _Dispose_ в финализаторе. Само по себе наличие такой обратной симметрии выглядит красиво и естественно, но где это может пригодиться на практике постараемся раскрыть в этой статье. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/b24/129/b82/b24129b82a9e42fba40fddb01381c2dc.png
[2]: http://habrahabr.ru/post/256629/#habracut

[>] Вливаемся в tox-сообщество или установка ноды за 5 минут
habra.15
habrabot(difrex,1) — All
2015-12-24 08:30:02


Приветствую тебя, о жадный читатель, буквоед и борец за справедливость в интернетах! В нашей оружейной пополнение, называется оно tox. Сейчас я покажу тебе, %username%, его сборку-разборку. ![debian_tox_dht][1] Есть такая замечательная система, которая называется TOX. [Вот][2] их официальный сайт, а [вот][3] профиль на github. О tox уже писали множество раз, но я перечислю основные плюшки: DHT — нет зависимости от центрального сервера, достаточно хотя бы одной ноды, шифрование на клиенте — Вася пишет Маше,



Паша ничего не прочитает. [Читать дальше →][4]

[1]: http://blog-static-nonsafe.saraeff.net/uploads/2015/12/debian_tox_dht_762b835ba15829c7.png
[2]: https://tox.chat
[3]: https://github.com/irungentoo/toxcore
[4]: http://habrahabr.ru/post/273901/#habracut

[>] Контейнер в linux, linux в egg, egg в python
habra.14
habrabot(difrex,1) — All
2015-04-26 22:30:02


![tux in egg in python][1] Hello, \{\{username\}\} Я DevOps и очень люблю Linux. Понятное дело, что с такой связкой я просто не мог не полюбить LinuX Containers (тем более, что BSD и Solaris давно радуют аналогичными возможностями своих пользователей). Естественно, бизнес тоже увидел привлекательную возможность и программы для управления контейнерами стали расти и множиться: [docker ][2], [rocket][3], [vagga][4], [lxc][5], [systemd-nspawn][6], etc… Docker стал стандартом де-факто в первую очередь благодаря системе создания и доставки контента. Но главный демон докера запускается от root, и, на мой взгляд, это минус этого проекта ([Пруф][7]). Rocket и vagga пошли другим путем, и путь этот носит название unprivileged containers. Вам больше не нужны root привилегии, чтобы запустить процесс в новых namespaces, и это открывает интересные перспективы для построения тестовых площадок и безопасного окружения. Но во всех этих проектах есть один фатальный недостаток: они все написаны с использованием c, go и rust, а я люблю python и не могу поучаствовать в их разработке. Согласитесь, довольно обидно пропускать все веселье. Так что под катом вас ждет библиотека для запуска процессов в новых [linux user namespaces][8]: [Читать дальше →][9]

[1]: http://habrastorage.org/getpro/habr/post_images/1e9/487/009/1e948700995555f0c7512350c77ab485.jpg
[2]: https://github.com/docker/docker
[3]: https://github.com/coreos/rkt
[4]: https://github.com/tailhook/vagga
[5]: https://linuxcontainers.org
[6]: https://wiki.archlinux.org/index.php/Systemd-nspawn
[7]: https://fosterelli.co/privilege-escalation-via-docker.html
[8]: http://man7.org/linux/man-pages/man7/user_namespaces.7.html
[9]: http://habrahabr.ru/post/256647/#habracut

[>] Генетический алгоритм для решения оптимизационной задачи размещение вершин графа на линейке
habra.14
habrabot(difrex,1) — All
2015-04-26 23:30:02


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

# Введине

Задача размещения вершин графа на линейке является NP-полной[1]. Это означает то, что на данный момент не существует универсального алгоритма, который мог бы находить решение за полиномиальное время. Данная задача имеет теоретическую ценность теории алгоритмов. Ее ценность заключается в том, что если будет найдет «полиномиально быстрый» алгоритм решение данной задачи, то и любая другая задача из класса NP может быть решена также «быстро», а это в свою очередь докажет равенство классов ![][1] и ![][2]. До недавнего времени не существовало эффективного метода поиска решений NP-полных задач. С появлением эволюционного моделирование стало возможно находить квазиоптимальные решение за «приемлемое время». [Читать дальше →][3]

[1]: //habrastorage.org/files/51e/241/808/51e24180885540a98db70abe00526304.png
[2]: //habrastorage.org/files/bb8/31e/39a/bb831e39a86f47649bba49a604143ca1.png
[3]: http://habrahabr.ru/post/256645/#habracut

[>] Exposable паттерн. Независимые инжекции путём экспанирования
habra.14
habrabot(difrex,1) — All
2015-04-27 00:00:01


_Disposable_ паттерн (интерфейс _IDisposable_) предполагает возможность высвобождения некоторых ресурсов, занимаемых объектом, путём вызова метода _Dispose_, ещё до того момента, когда все ссылки на экземпляр будут утрачены и сборщик мусора утилизирует его (хотя для надёжности вызов _Dispose _часто дублируется в финализаторе). Но существует также обратный _Exposable_ паттерн, когда ссылка на объект становится доступной до момента его полной инициализации. То есть экземпляр уже присутствует в памяти, частично проинициализирован и другие объекты ссылаются на него, но, чтобы окончательно подготовить его к работе, нужно выполнить вызов метода _Expose_. Опять же данный вызов допустимо выполнять в конструкторе, что диаметрально вызову _Dispose_ в финализаторе. Само по себе наличие такой обратной симметрии выглядит красиво и естественно, но где это может пригодиться на практике постараемся раскрыть в этой статье. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/b24/129/b82/b24129b82a9e42fba40fddb01381c2dc.png
[2]: http://habrahabr.ru/post/256629/#habracut

[>] Немного про Яндекс Protect
habra.15
habrabot(difrex,1) — All
2015-12-24 14:30:03


«Даже если вы нажмете на какую-то ссылку и введете логин и пароль то ничего такого не случится» — реклама браузера Яндекс. Как это работает и так ли это? Посмотрев эту рекламу мне конечно стало интересно, как Яндекс смог «победить» такую сложно решаемую проблему как кража паролей. Хочу отметить, что рассматривал я только одну из функций Яндекс Protect, а именно "[Защита от кражи паролей][1]". [Читать дальше →][2]

[1]: https://yandex.ru/blog/company/98148
[2]: http://habrahabr.ru/post/272045/#habracut

[>] [Из песочницы] Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 26. «What’s in Your Wallet?»
habra.15
habrabot(difrex,1) — All
2015-12-24 15:30:07


![][1]Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «[одного своего знакомого][2]». В книге показывается путь от подростка-гика (но при этом качка), до матерого киберпахана, а так же некоторые методы работы спецслужб по поимке хакеров и кардеров. Квест по переводу книги начался летом в ИТшном лагере для старшеклассников — «[Шкворень: школьники переводят книгу про хакеров][3]», затем к переводу подключились и Хабраюзеры и даже немного редакция.

#### Глава 26. Что в Вашем бумажнике?

_(за перевод спасибо [al\_undefined][4] )_ _Продажа 100% проверенных свежих дампов (США), скидки: $11 MasterCard $8 Visa Classic $13 Visa Gold/Premium $19 Visa Platinum $24 Visa Signature $24 Visa Business $19 Visa Corporate $24 Visa Purchasing $19 American Express = снижение цены (было 24) $24 Discover = снижение цены (было 29) Минимальный заказ — 10 штук. Продажа по типам карт. Не по BIN’ам (прим. пер. — идентификатор банка-эмитента). _ Агрессивный захват, провернутый Максом был совершен с целью объединить силы комьюнити, а не с целью персонального обогащения. Тем не менее, его бизнес по продаже краденных данных с магнитных полос пластиковых карт после объединения форумов процветал как никогда — он получал порядка тысячи долларов в день, продавая дампы кардерам по всему миру, в дополнении к пяти — десяти тысячам, что он получал от партнерства с Крисом. На публике, во время встреч ФТК (Федеральная Торговая Комиссия) или где бы то ни было, индустрия кредитных карт изо всех сил старалась скрыть последствия учащающихся фактов кражи данных с магнитных полос по всему миру. Visa, лидер в сфере кредиток, поддержал финансируемый промышленностью отчет компании Javelin Strategy and Research (прим. пер. — агентство, занимающееся оценкой рисков и возможностей в областях: мобильные устройства, платежи, многоканальные финансовые услуги, мошенничество и безопасность), которое обвиняло в сложившейся ситуации потребителей (клиентов), а не компании — источники слива данных кредиток и краж персональных данных: 63% произошедших случаев обусловлены потерей или кражей кошелька с последующей кражей данных доверенными партнерами, кражей электронной почты и исследованием содержимых мусорных контейнеров (Dumpster diving). [Читать дальше →][5]

[1]: https://habrastorage.org/files/353/64b/a0e/35364ba0e409475fbd05cd11e8132734.jpg
[2]: https://en.wikipedia.org/wiki/Max_Butler
[3]: http://habrahabr.ru/post/261491/
[4]: http://habrahabr.ru/users/al_undefined/
[5]: http://habrahabr.ru/post/273943/#habracut

[>] Let’s Encrypt в Plesk-панели
habra.15
habrabot(difrex,1) — All
2015-12-24 17:00:06


[![][1]][2]3 декабря вышел публичный релиз беты Let's Encrypt. Это радостное событие уже освещалось на [Хабре][3]. Кратко напомню, эта штука дает возможность установить бесплатный доверенный сертификат на сайт. Помимо бесплатных сертификатов, [Let's Encrypt][4] еще инструмент для выписывания, обновления, отзыва сертификатов, что, по задумке авторов, облегчит жизнь системным администраторам. В этой статье я расскажу об особенностях Let’s Encrypt, о которых не стоит забывать, и о том, как воспользоваться им, если ваш сервер работает под управлением панели Plesk. [Читать дальше →][5]

[1]: https://habrastorage.org/files/fff/913/39f/fff91339fad14999bb206b5befed2b9f.png
[2]: http://habrahabr.ru/post/273827/
[3]: http://habrahabr.ru/post/272253/
[4]: https://letsencrypt.org/
[5]: http://habrahabr.ru/post/273827/#habracut

[>] Финтех и Blockchain: подводим итоги уходящего года и делаем прогноз на следующий
habra.15
habrabot(difrex,1) — All
2015-12-24 20:00:03


_![image][1]До конца года осталось всего несколько дней, а это значит, что пришло время подвести итоги уходящего года и сделать прогнозы на будущий. По уже сложившейся традиции мы в [Web-payment.ru][2], сайте о платежах, blockchain и e-commerce, расскажем о самых интересных событиях, тенденциях и достижениях 2015 года в области финансовых инноваций и блокчейн-технологии. К слову, если вам понадобится подключить оплату на сайте — [обращайтесь][3], мы поможем выбрать подходящее решение и провести интеграцию. Также мы оказываем комплексные услуги по разработке, продвижению и контент-сопровождению._

### Итоги года. Fintech

Для финтех-индустрии подобные годовые отчеты особенно актуальны, ведь те события, которые происходят в течение года, определяют вектор развития отрасли в будущем. За прошедший 2015 год рынок венчурных инвестиций в финтех побил рекорды прошлых лет. Крупнейшие игроки финансовой отрасли решились на крупные сделки. Молодые стартапы анонсировали интересные проекты. Но обо всем по порядку. [Читать дальше →][4]

[1]: https://habrastorage.org/files/089/b0c/89b/089b0c89b711401aaac534a91b74b4ad.JPG
[2]: http://web-payment.ru/
[3]: http://web-payment.ru/priem-platezhej/
[4]: http://habrahabr.ru/post/273937/#habracut

[>] [Перевод] Джеф Атвуд: «Ваш пароль слишком короткий!»
habra.14
habrabot(difrex,1) — All
2015-04-27 03:00:03


Я уже устал [писать про пароли][1]. Но как и налоги, электронная почта и красные глаза, они никуда не денутся. Что я могу сказать, исходя из опыта:

* неважно, что вы скажете пользователям, они будут выбирать простые пароли
* и они будут использовать один и тот же пароль везде. Если повезёт – два пароля

Что с этим можно сделать разработчику?

* прекратите требовать пароли и разрешите авторизацию через Google, Facebook, Twitter, Yahoo или любой другой сервис. Лучший пароль – тот, который [не нужно хранить][2].
* поощряйте браузеры к поддержке автоматических встроенных систем создания и управления паролями. В идеале – поддерживаемых и операционками, но тут уже требуется всеобщая привязка к облачным технологиям. В эту сторону [двигается Chrome][3].
* пинайте юзеров, когда они вводят:
* слишком короткие пароли: UY7dFd
* пароли с минимумом энтропии: aaaaaaaaa
* пароли из словаря: anteaters1

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

[1]: https://www.google.com/webhp?ie=UTF-8#q=site:codinghorror.com+passwords
[2]: http://blog.codinghorror.com/the-god-login/
[3]: https://www.chromium.org/developers/design-documents/password-generation
[4]: http://habrahabr.ru/post/256671/#habracut

[>] [Перевод] Компилируем С\С++ код в WebAssembly
habra.15
habrabot(difrex,1) — All
2015-12-25 00:00:02


[WebAssembly][1] — это новый бинарный формат, в который могут быть скомпилированы веб-приложения. Он проектируется и реализуется прямо в тот момент, когда вы читаете эти строки и двигают его вперёд разработчики всех основных браузеров. Всё меняется очень быстро! В этой статье мы покажем текущее состояние проекта с достаточно глубоким погружением в инструментарий по работе с WebAssembly. Для того, чтобы WebAssembly заработал, нам нужны две основных компоненты: инструменты для сборки кода в бинарник формата WebAssembly и браузеры, способные этот бинарник загрузить и выполнить. И то, и другое ещё не полностью создано и очень сильно зависит от завершения работы на [спецификацией][2] WebAssembly, но в общем-то это отдельные компоненты и их развитие идёт параллельно. Это разделение — хорошая вещь, оно позволит компиляторам создавать WebAssembly-приложения, способные работать в любом браузере, а браузерам — запускать WebAssembly-программы не зависимо от того, каким компилятором они были созданы. Другими словами — мы получаем открытую конкуренцию инструментов разработки и браузеров, что непрерывно будет двигать всё это вперёд, принося конечному пользователю отличный выбор. Кроме того, такое разделение позволяет командам разработчиков инструментария и браузеров работать параллельно и независимо. Новый проект на стороне инструментарий WebAssembly, о котором я хочу сегодня рассказать, называется [Binaryen][3]. Binaryen это библиотека для поддержки WebAssembly в компиляторах, написанная на С++. Если вы лично не работаете над компилятором WebAssembly, то вам, вероятно, не нужно напрямую знать что-либо о Binaryen. Если вы используете какой-нибудь компилятор WebAssembly, то он, возможно, под капотом использует Binaryen — мы рассмотрим примеры ниже. [Читать дальше →][4]

[1]: https://github.com/WebAssembly/design
[2]: https://github.com/WebAssembly/spec
[3]: https://github.com/WebAssembly/binaryen
[4]: http://habrahabr.ru/post/273957/#habracut

[>] Эрланг для веб-разработки (1) -> Знакомство;
habra.15
habrabot(difrex,1) — All
2015-12-25 00:30:03


![][1] Я начинаю публиковать серию статей о веб-разработке на Эрланге. Многие хотят попробовать Эрланг, но сталкиваются с проблемой, что вводные курсы в основном касаются Эрланга как функционального языка и далеки от реальных проектов ([Learn You Some Erlang for great good!][2] — хорошая и подробная книга). С другой стороны все обучающие материалы по веб-разработке подразумевают, что читатель уже хорошо знает Эрланг. Эта серия статей рассчитана для разработчиков, у которых есть опыт в веб-разработке (PHP, Ruby, Java), но не имеют опыта разработки на Эрланге. Задачей будет сделать блог. Код из статей . Особенности проекта:

* обновление комментариев в реальном времени;
* авторизация через фейсбук;
* данные храним в mnesia.

В основе проекта [феймворк n2o][3]. Выбор довольно субъективен, но из живых [Эрланг фреймворков][4], n2o мне показался наиболее «эрлангоподобным», в тоже время ChicagoBoss больше похож на MVC фреймворки в других языках. [Читать дальше →][5]

[1]: https://habrastorage.org/files/ab9/08a/eb3/ab908aeb3c9c4422ab0de8abe4b4a361.png
[2]: http://learnyousomeerlang.com/
[3]: https://github.com/synrc/n2o
[4]: https://github.com/ChicagoBoss/ChicagoBoss/wiki/comparison-of-erlang-web-frameworks
[5]: http://habrahabr.ru/post/273979/#habracut

[>] Как мы сделали Rich Text Editor с поддержкой совместного редактирования под Android
habra.15
habrabot(difrex,1) — All
2015-12-25 15:00:03


«Мобилизация» рабочих процессов в компаниях означает, что на телефон или планшет переносится все больше функций для совместной работы. Для [Wrike][1], как кроссплатформенного сервиса управления проектами, важно, чтобы функционал мобильного приложения был абсолютно полноценным, удобным и не ограничивал пользователей в работе. И когда встала задача создать Rich Text Editor с поддержкой совместного редактирования описания задач, мы, оценив возможности существующих WebView компонентов, решили пойти своим путем и реализовали собственный нативный инструмент. [Подробности][2]

[1]: https://www.wrike.com/ru
[2]: http://habrahabr.ru/post/273797/#habracut

[>] [Перевод] Заглянем за кулисы разработки: подборка исходных кодов классических игр
habra.14
habrabot(difrex,1) — All
2015-04-27 08:30:03


Обожаю заглядывать за кулисы. Мне интересно, как делаются вещи. Мне кажется, что большинству людей это тоже интересно. Исторически так сложилось, что видеоигры не делятся исходниками. Конечно, они ведь предназначены для игроков. Но для программистов там всегда есть, на что посмотреть. И некоторые игры всё-таки выпускали свои исходники. А я давно намеревался сделать такую подборку. К сожалению, почти все игры – для PC. Найти исходники для консолей или аркад почти нереально, и большинство программистов не в курсе различий подходов к программам на платформах, отличных от PC. Многие игры после выпуска исходников были улучшены и дополнены сообществом – я намеренно даю ссылки только на оригинальные исходники. Так что, если вас вдруг интересуют апгрейды – они могут существовать. Многие игры были рассмотрены на [сайте Fabien Sanglard][1]. Если вам интересны подробности их работы, то пожалуйте к нему. Можно заметить, что многие игры принадлежат id Software/Apogee. Совпадение? Не думаю. id славится открытостью и привычкой выпускать исходники. Старые коммерческие игры уже не имеют ценности и были бы потеряны – не лучше ли, чтобы кто-то учился чему-то полезному на их основе? Итак, приступим (в хронологическом порядке): [Читать дальше →][2]

[1]: http://fabiensanglard.net/
[2]: http://habrahabr.ru/post/256679/#habracut

[>] Интервью с Serge
habra.14
habrabot(difrex,1) — All
2015-04-27 10:00:02


![][1] Предлагаем Вашему вниманию интервью с **Сергеем Семеновым** aka **Serge** (на Хабре [ion2][2]), одним из самых продуктивных разработчиков в проекте KolibriOS. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/332/ac0/97c/332ac097cb7bfba245943a942c69f564.png
[2]: http://habrahabr.ru/users/ion2/
[3]: http://habrahabr.ru/post/256405/#habracut

[>] Двухэтапная аутентификация в браузере с помощью USB-токена U2F
habra.14
habrabot(difrex,1) — All
2015-04-27 10:30:03


![image][1] U2F — открытый протокол универсальной 2х факторной аутентификации, разработанный [FIDO Alliance][2]. В альянс входят компании Google, PayPal, Lenovo, MasterCard, Microsoft, NXP ,Visa и другие. Протокол поддерживается браузером Chrome с версии 38. Работает из коробки без драйверов в Windows/MacOS/Linux. На текущий момент поддерживается сервисами **Google, LastPass, Wordpress**. В статье описывается опыт использования токена Yubikey NEO с поддержкой NFC и OpenPGP card, недостатки двухфакторной аутентификации по SMS. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/d61/aa0/f19/d61aa0f19c311649659f925b448adf9f.jpg
[2]: https://fidoalliance.org/
[3]: http://habrahabr.ru/post/256579/#habracut

[>] Microsoft SQL Server Data Tools
habra.14
habrabot(difrex,1) — All
2015-04-27 12:30:02


В данной статье хотел бы рассказать про набор полезных дополнений к Visual Studio, которые могут в значительной мере облегчить разработку баз данных на основе MS SQL Server. Основными преимуществами использования SSDT я бы выделил следующее:

* возможность простого изменения (refactoring) схемы базы (можно переименовать колонку таблицы и все Views, Functions и Stored Procedures ссылающиеся на неё автоматически будут исправлены для отражения изменений)
* создание юнит тестов для базы данных
* хранение структуры базы данных в Source Control
* сравнение схемы/данных c возможностью генерации скрипта для приведения схемы/данных к требуемому состоянию

Безусловно на этом плюсы использования SSDT не заканчиваются, но остальное не так сильно впечатляет, как то, что упомянуто выше. Если вас интересует, как воспользоваться этими и другими преимуществами — прошу под кат. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/256653/#habracut

[>] Информационная безопасность в открытых проектах, доклад с РИФ+КИБ 2015
habra.14
habrabot(difrex,1) — All
2015-04-27 12:30:02


22—24 апреля 2015 г. в Подмосковье в 19 раз прошел РИФ+КИБ — главное весеннее мероприятие Рунета. В рамках секции «Актуальные вопросы кибербезопасности» на РИФ+КИБ 2015 эксперты обсудили тренды в области киберпреступности, а также итоги 2014 года и планы на 2015-й. Среди участников был и Алексей Брагин, который выступил со своим докладом «Информационная безопасность в открытых проектах». В 2014 году было обнаружено несколько масштабных критических уязвимостей в открытых проектах, затрагивающие миллионы компьютеров по всему миру. Например знаменитый Heartbleed, FREAK, POODLE и BEAST в библиотеке OpenSSL, обычный SQL Injection в популярной системе управления контентом Drupal. Возможно ли с этим бороться, есть ли плюсы в открытой модели разработки с точки зрения безопасности?




Улучшенный звук: [soundcloud.com/aleksey-bragin-1/2015a][1] [Читать дальше →][2]

[1]: https://soundcloud.com/aleksey-bragin-1/2015a
[2]: http://habrahabr.ru/post/256675/#habracut

[>] [Перевод] Как на самом деле будет выглядеть рынок JavaScript в 2016 году
habra.15
habrabot(difrex,1) — All
2015-12-25 16:00:03






Сегодня на сайте Mashable появилась любопытная статья «Чтобы стать гуру программирования в 2016 году, достаточно освоить Javascript и переехать в Юту» о рынке труда разработчиков программного обеспечения. Данный материал формирует весьма превратную картину действительности, а потому давайте разбираться вместе. Краткая предыстория. Я разработчик программного обеспечения и на протяжение нескольких последних лет мне доводилось неоднократно проводить собеседования с желающими пополнить ряды моих коллег. Кроме того, я обучал разработчиков JavaScript навыкам, благодаря которым они получали шикарную работу. У меня приличный опыт в сфере создания и консультирования многообещающих команд разработчиков всевозможных стартапов и 500 успешных компаний. Я также часто сотрудничаю с кадровыми агентствами, благодаря чему не понаслышке знаю, чего хотят самые высокотехнологичные компании в мире. Руководствуясь собственным опытом и тем, что рассказывают мои студенты, я могу с уверенностью заявить, что прекрасно понимаю структуру рынка труда JavaScript как снаружи, так и изнутри. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/274013/#habracut

[>] Нестандартный топ событий в сфере IT-безопасности 2015
habra.15
habrabot(difrex,1) — All
2015-12-25 17:00:02


![][1]Вот и пришло время повторить упражнение, которое я первый раз выполнил [ровно год назад][2]. Тогда я взял 10 самых популярных новостей с нашего сайта [Threatpost][3] и попытался выяснить — почему именно они, собственно, привлекли внимание общественности — и специалистов, и обычных пользователей. Такой метод имеет очевидные недостатки — на популярность статей много что влияет, и совершенно не обязательно, что самые популярные новости об инцидентах в кибермире являются одновременно и самыми важными. Но есть и достоинства: событий в сфере информационной безопасности происходит огромное количество, и каждый участник их обсуждения, в зависимости от специализации и личных интересов, выберет свои «самые-самые». А тут — если и не самый объективный, то хотя бы независимый инструмент оценки. В этом году подборка самых посещаемых новостей удачно делится на пять основных категорий: — Низкотехнологичные угрозы для пользователей — «Уязвимости в неожиданных местах»: безопасность «интернета вещей», домашних и промышленных сетевых устройств, — Проблемы шифрования данных — Громкие уязвимости в ключевых платформах и «хайтек» киберугроз — примеры самых продвинутых атак — Рутинные, но опасные уязвимости в распространенном софте Вот по ним и пройдемся. [Читать дальше →][4]

[1]: https://habrastorage.org/files/556/802/866/556802866b194499a11861b46fedde48.jpg
[2]: http://habrahabr.ru/company/kaspersky/blog/246745/
[3]: https://threatpost.ru
[4]: http://habrahabr.ru/post/273919/#habracut

[>] Как убить смартфон Sony Xperia C2305 с помощью роутера D-Link DIR-300
habra.15
habrabot(difrex,1) — All
2015-12-25 21:00:02


Однажды вечером пропал интернет и я решил раздать его с телефона на роутер. После подключения телефон начал постоянно зависать и перезагружаться. В результате не стало ни интернета, ни телефона. Если ваш телефон Sony внезапно начал перезагружаться без остановок, то вам может помочь данная статья. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/274037/#habracut

[>] [Из песочницы] Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 28. «Carder Court»
habra.15
habrabot(difrex,1) — All
2015-12-25 23:00:03


![][1]Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «[одного своего знакомого][2]». В книге показывается путь от подростка-гика (но при этом качка), до матерого киберпахана, а так же некоторые методы работы спецслужб по поимке хакеров и кардеров. Квест по переводу книги начался летом в ИТшном лагере для старшеклассников — «[Шкворень: школьники переводят книгу про хакеров][3]», затем к переводу подключились и Хабраюзеры и даже немного редакция.

#### Глава 28. Суд кардеров

_(за перевод спасибо drak0sha )_ Кейт Муларски был изможден. Сначала он переговорил с агентом в филиале Секретной службы на другом конце города. «Мне кажется тебе грозят некоторые неприятности». Один из бесчисленных информаторов слышал, что Iceman обнаружил неопровержимые доказательства, что Мастер Сплинтр был либо стукачом, шпионом корпоративной безопасности, либо федеральным агентом. Iceman временно объединился со своим бывшим врагом Silo и готовил подробную презентацию для руководства Carders Market и Dark Market-а. Iceman и Silo явно хотели засудить Мастера Сплинтра. Все началось с кода Silo. Известность Мастера Сплинтра как спамера и программиста сделала его специалистом в области обзоров вредоносного кода DarkMarket-а. Это было одним из преимуществ его тайной операции: Муларски сможет оценить последние версии секретного атакующего кода и передать их CERT, который, в свою очередь, отправит их всем антивирусным компаниям. Вредоносный код можно будет обнаружить еще до того, как он окажется на черном рынке. В этот раз Муларски поручил код в качестве тренировочного задания одному из студентов CMU проходящих стажировку в NCFTA. Согласно стандартной процедуре студент запустил программу в изолированном режиме на виртуальной машине — своего рода программная чаша Петри, которую после можно вычистить. Но он забыл о флешке в USB-порте. На нее были загружены пустая отчетная форма о вредоносной программе с логотипом NCFTA и основные цели исследования. Прежде чем студент осознал, что произошло, документ оказался в руках Silo. Шесть администраторов и модераторов DarkMarket получили копию кода Silo. Теперь канадцы знали, что один из них был федеральным агентом. [Читать дальше →][4]

[1]: https://habrastorage.org/files/353/64b/a0e/35364ba0e409475fbd05cd11e8132734.jpg
[2]: https://en.wikipedia.org/wiki/Max_Butler
[3]: http://habrahabr.ru/post/261491/
[4]: http://habrahabr.ru/post/274053/#habracut

[>] IBM Swift Sandbox — веб-песочница со Swift для тех, кто хочет разобраться в языке программирования от Apple
habra.15
habrabot(difrex,1) — All
2015-12-26 08:00:02


![][1] Корпорация IBM уже довольно давно сотрудничает с Apple. Взаимодействие двух компаний касается многих сфер, и одна из них — программирование. Причем программирование на Swift. Дело в том, что корпорация Apple сделала исходный код языка программирования Swift открытым. А в Mobile Innovation Lab от IBM создали специальную песочницу для разработчиков, которые хотели бы познакомиться со Swift. Благодаря открытию кода, разработчики, которые создают приложения для iOS, OS X и watchOS, могут без проблем обходить существовавшие ранее ограничения, дополняя многие функции при необходимости. Apple для привлечения широкой аудитории опубликовала достаточно массивную библиотеку различной документации, которая позиционируется как пособие для начинающих программистов. Стоит отметить, что лицензируется Swift под лицензией Apache 2.0. Эта лицензия позволяет использовать программное обеспечение для собственных целей, и платить Apple не требуется. [Читать дальше →][2]

[1]: https://habrastorage.org/files/e6a/3a0/521/e6a3a0521d32400fb417aa6e209a698b.png
[2]: http://habrahabr.ru/post/274067/#habracut

[>] Функции IPP c поддержкой бордюров для обработки изображений в нескольких потоках
habra.14
habrabot(difrex,1) — All
2015-04-27 13:00:03


В результате длительного использования даже самых хороших программных продуктов постепенно выявляются те или иные их недостатки. Не стала исключением, и библиотека[ Intel Performance Primitives (IPP). ][1]К моменту выхода версии 8.0 выяснились некоторые проблемы, часть из которых относится к функциям обработки двумерных изображений. Для их решения в IPP 8.0 многие функции обработки изображений приведены к общему шаблону, позволяющему обрабатывать изображения по блокам ( _tiles_), и, следовательно, эффективно распараллеливать на уровне приложения код, содержащий вызовы IPP функций. Новый API соответствующих IPP функций поддерживает бордюры нескольких типов, не использует внутреннее выделение динамической памяти, позволяет делить изображения на фрагменты произвольного размера и обрабатывать эти фрагменты независимо; упрощает использование и повышает производительность ряда функций. В данной статье подробно рассмотрен новый API и приведены примеры использования. [Читать дальше →][2]

[1]: https://software.intel.com/en-us/intel-ipp
[2]: http://habrahabr.ru/post/255931/#habracut

[>] Разработчики Perl 6: язык готов к использованию
habra.15
habrabot(difrex,1) — All
2015-12-26 09:30:02


![image][1] 24 декабря в [официальном блоге][2], посвящённом новостям разработки Perl 6, появилась поздравительная запись. Разработчики поздравили всех с наступающим католическим Рождеством, и с тем, что так долго ожидаемое взросление языка, наконец, состоялось. Фактически, язык готов к использованию в рабочих проектах, и разработчики обещают больше ничего существенно не менять. С момента выхода первой версии Perl прошло 28 лет, с момента выхода самой популярной в данное время версии Perl 5 – более 20 лет. Как шутит Ларри Уолл, создатель языка и лидер его разработки, 6-я версия, возможно, когда-нибудь и заменит 5-ю – примерно лет через 40. Версия Perl 6 была анонсирована более 10 лет назад – на [Amazon ещё можно купить книгу ][3]про этот «вскоре выходящий» язык, изданную в 2004 году. Длительность разработки можно объяснить тем, что Perl 6 – фактически, новый язык, написанный по мотивам 5-й версии. И хотя некоторые утверждают, что [6-ка отличается от 5-ки не более, чем C++ от C][4], всё-таки идеология в Perl 6 эволюционировала достаточно сильно для того, чтобы назвать его более современным языком. [Читать дальше →][5]

[1]: https://habrastorage.org/getpro/habr/post_images/4d7/2e8/2ce/4d72e82ce50411905d8a223317863f73.png
[2]: https://perl6advent.wordpress.com/2015/12/24/an-unexpectedly-long-expected-party/
[3]: http://www.amazon.com/gp/product/059600737X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=059600737X&linkCode=as2&tag=destinyland-20&linkId=7GO7LHUIB57AJGKY
[4]: http://www.infoworld.com/article/2990353/application-development/perl-6-what-it-will-bring.html
[5]: http://habrahabr.ru/post/274069/#habracut

[>] Может ли софтверное уничтожение данных быть лучше мощного магнита?
habra.14
habrabot(difrex,1) — All
2015-04-27 13:30:02


![][1] Привет, %username%, я уверен, что да. И в наших с тобой силах сделать это реальностью. Этот пост навеян вот [этим][2] обсуждением, где порой доходило до ксеноморфов. У нас же всё будет проще и надежней (вдруг ксеноморфа забудут покормить?) [Читать дальше →][3]

[1]: http://habrastorage.org/files/363/7d3/044/3637d3044220451ea2fb240da182aa23.jpg
[2]: http://habrahabr.ru/post/254671/
[3]: http://habrahabr.ru/post/256613/#habracut

[>] Что случилось с google public dns в России?
habra.15
habrabot(difrex,1) — All
2015-12-26 23:00:03


Это не тостер, но проблема проявилась по всей России пару часов назад. Адрес 8.8.8.8 не работает, хотя пингуется. Может кто знает, что случилось? Адрес 8.8.4.4 тоже не отдаёт записи. P.S. Если кто увидит этот пост, хоть у себя на серверах поправит, если использовался сей DNS. **Проверять либо dig @8.8.8.8 google.com либо nslookup google.com 8.8.8.8** [][1]

[1]: http://habrahabr.ru/post/274095/#habracut

[>] [recovery mode] Кому и зачем все-таки нужен Go?
habra.15
habrabot(difrex,1) — All
2015-12-27 01:00:03


![image][1] Здарова! Короче, последнее время на хабре было много срачей вокруг Go: хороший-плохой, нужен-ненужен, много сравнивали с питоном, много сравнивали с растом, [divan0][2] даже додумался перевести [высер][3] «Go vs Haskell» ну и в таком ключе. У меня сложилось ощущение, что из-за хайпа и агрессивного маркетинга языка _некоторыми Иванами Данилюками_ очень мало кто понял, кому и зачем вообще Go может пригодиться, зачем его делали и стоит ли вообще его учить. Я тоже долгое время участвовал в этих срачах, принимая посменно сторону «фанов» языка и сторону оппозиции, но в конце-концов допер, в чем фокус. Сегодня немного потупил у дивана в посте и решил написать вот эту заметочку. Давайте, пацаны, проходим в пост. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/25f/2d4/080/25f2d408041039eb52cb08f364ee84ae.jpg
[2]: http://habrahabr.ru/users/divan0/
[3]: http://habrahabr.ru/post/270707/
[4]: http://habrahabr.ru/post/274099/#habracut

[>] [Из песочницы] Тестирование математических алгоритмов
habra.14
habrabot(difrex,1) — All
2015-04-27 13:30:02


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

[1]: http://habrastorage.org/files/6dd/da0/d67/6ddda0d6765a4757bc8ae485aec18372.png
[2]: http://habrahabr.ru/post/256713/#habracut

[>] [Перевод] Простые алгебраические типы данных
habra.15
habrabot(difrex,1) — All
2015-12-27 13:00:03


_Это шестая статья из цикла «Теория категорий для программистов». Предыдущие статьи уже публиковались на Хабре:_ [0\. Теория категорий для программистов: предисловие][1] [1\. Категория: суть композиции][2] [2\. Типы и функции][3] [3\. Категории, большие и малые][4] [4\. Категории Клейсли][5] [5\. Произведения и копроизведения][6] В предыдущей статье были рассмотрены базовые операции над типами: произведение и копроизведение. Теперь покажем, что комбинирование этих механизмов позволяет построить многие из повседневных структур данных. Такое построение имеет существенное прикладное значение. Например, если мы умеем проверять на равенство базовые типы данных, а также знаем, как свести равенство произведения и копроизведения к равенстве компонент, то операторы равенства для составных типов можно вывести автоматически. В Haskell для обширного подмножества составных типов автоматически выводятся операторы равенства и сравнения, конвертация в строку и обратно и многие другие операции. Рассмотрим подробнее место произведения и копроизведения типов в программировании.

## Произведение типов

Каноническая реализация произведения типов в языках программирования — это пара. В Haskell пара является примитивным конструктором типов, а в C++ это относительно сложный шаблон из стандартной библиотеки. Строго говоря, произведение типов не коммутативно: нельзя подставить пару типа `(Int, Bool)` вместо `(Bool, Int)`, хотя они и содержат одни и те же данные. Однако произведение коммутативно с точностью до изоморфизма, задаваемого функцией `swap`, которая обратна самой себе:

swap :: (a, b) -> (b, a)
swap (x, y) = (y, x)

Можно рассматривать такие пары как различные форматы хранения одной и той же информации, как big endian и little endian. [Читать дальше →][7]

[1]: http://habrahabr.ru/post/245797/
[2]: http://habrahabr.ru/post/246009/
[3]: http://habrahabr.ru/post/247765/
[4]: http://habrahabr.ru/post/248257/
[5]: http://habrahabr.ru/post/249113/
[6]: http://habrahabr.ru/post/271927/
[7]: http://habrahabr.ru/post/274103/#habracut

[>] Анализ изображений и видео. Классификация изображений и распознавание объектов
habra.14
habrabot(difrex,1) — All
2015-04-27 14:30:02


Сегодня мы публикуем седьмую лекцию из курса «Анализ изображений и видео», прочитанного [Натальей Васильевой][1] в петербургском Computer Science Center, который создан по совместной инициативе Школы анализа данных Яндекса, JetBrains и CS-клуба.




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

1. [Введение в курс «Анализ изображений и видео»][2];
2. [Основы пространственной и частотной обработки изображений][3];
3. [Морфологическая обработка изображений][4];
4. [Построение признаков и сравнение изображений: глобальные признаки][5];
5. [Построение признаков и сравнение изображений: локальные признаки][6];
6. [Поиск по подобию. Поиск нечетких дубликатов][7].

Под катом вы найдете план новой лекции и слайды. [Читать дальше →][8]

[1]: http://www.hpl.hp.com/people/nvassilieva/
[2]: http://habrahabr.ru/company/yandex/blog/251161/
[3]: http://habrahabr.ru/company/yandex/blog/254249/
[4]: http://habrahabr.ru/company/yandex/blog/254955/
[5]: http://habrahabr.ru/company/yandex/blog/255627/
[6]: http://habrahabr.ru/company/yandex/blog/255985/
[7]: http://habrahabr.ru/company/yandex/blog/256291/
[8]: http://habrahabr.ru/post/256459/#habracut

[>] Эрланг для веб-разработки (2) -> БД и деплой;
habra.15
habrabot(difrex,1) — All
2015-12-28 00:30:03


![][1] В [первой статье][2] мы познакомились с Эрлангом и фреймворком n2o. В этой части мы продолжим делать наш блог:

* добавим авторизацию через фейсбук, для этого будем из клиента вызывать функции на сервере;
* будем сохранять комментарии и посты в NoSQL базе;
* развернем наш блог на DigitalOcean и замерим производительность (_спойлер — 1300 запросов в секунду_).

Код из статей . [Читать дальше →][3]

[1]: https://habrastorage.org/files/ab9/08a/eb3/ab908aeb3c9c4422ab0de8abe4b4a361.png
[2]: http://habrahabr.ru/post/273979/
[3]: http://habrahabr.ru/post/274107/#habracut

[>] Ботнет из тысяч взломанных роутеров Aethra использовался для атаки на Wordpress-сайты
habra.15
habrabot(difrex,1) — All
2015-12-28 01:30:02


![][1] Итальянская компания VoidSec, работающая в сфере информационной безопасности, опубликовала материал о недавно обнаруженном ботнете из роутеров Aethra. Как оказалось, эти устройства подвержены взлому, а злоумышленники используют ботнеты из таких устройств для проведения брутфорс-атак на сайты Wordpress. Одна из таких атак была обнаружена специалистом компании, когда тот анализировал логи Wordpress-сайтов, подвергшихся атаке. Как оказалось, атака шла с довольно близкого диапазона IP-адресов. После детального анализа оказалось, что атака осуществлялась с IP, отнсящихся к 6 интернет-провайдерам: Fastweb, Albacom (BT-Italia), Clouditalia, Qcom, WIND, и BSI Assurance UK. 4 провайдера работают в Италии. Большинство этих компаний устанавливают клиентам роутеры Aethra. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/fde/ad1/470/fdead14702158f05624143bdab0fbbe2.jpg
[2]: http://habrahabr.ru/post/274117/#habracut

[>] Virtuozzo переходит на открытую модель разработки
habra.14
habrabot(difrex,1) — All
2015-04-27 15:30:03


Мы в бизнес-подразделении [Odin\*][1] компании Parallels занимаемся разработкой технологий виртуализации [с 1999 года][2]. За прошедшие 15 лет мы превратили концепт в платформу для гипервизорной и контейнерной виртуализации [Virtuozzo][3]. Всё это время параллельно с коммерческим продуктом развивался [открытый проект OpenVZ][4], в рамках которого разрабатывались компоненты для создания и управления контейнерами, а исходный код был доступен под лицензией GPL. И, несмотря на то, что проект сильно проигрывал коммерческому продукту по объёму функциональности и производительности, вокруг него сформировалось активное и открытое [сообщество пользователей][5]. Нас часто спрашивали почему процесс разработки закрыт и почему компания так недружелюбна к контрибьюторам. Принимая во внимание эти просьбы и интерес к нашим технологиями со стороны сообщества [мы открываем часть компонентов Virtuozzo][6], предоставляя доступ к исходному коду этих компонентов, и открываем процесс разработки. Это позволит всем, заинтересованным в наших технологиях, свободно использовать наши наработки и принять участие в разработке новой версии Virtuozzo. [Подробности][7]

[1]: http://odin.com/
[2]: https://openvz.org/History
[3]: http://www.odin.com/uk/products/virtuozzo/
[4]: https://openvz.org
[5]: https://openvz.org/Hosting_providers
[6]: http://lists.openvz.org/pipermail/announce/2015-April/000579.html
[7]: http://habrahabr.ru/post/256279/#habracut

[>] [Из песочницы] Создание своего типа ассета в Unreal Engine 4 и кастомизация панели свойств
habra.15
habrabot(difrex,1) — All
2015-12-28 13:00:03


![][1] Меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Сегодня я хотел бы рассказать как в Unreal Engine создать свой тип ассета и как добавить дополнительный элемент на панель свойств ассета. Итак начнем. [Читать дальше →][2]

[1]: https://habrastorage.org/files/932/2a8/5d2/9322a85d2f824646bfeb3682a3278488.jpg
[2]: http://habrahabr.ru/post/274159/#habracut

[>] GOTPass: новая беспарольная система аутентификации пользователя
habra.15
habrabot(difrex,1) — All
2015-12-28 14:00:03


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

[1]: https://habrastorage.org/getpro/habr/post_images/f4f/716/a1d/f4f716a1dd2f3c0d5320de027f708f7c.jpg
[2]: http://www.engadget.com/2015/12/26/gotpass-plymouth-university-password-proposal/
[3]: http://habrahabr.ru/post/274105/#habracut

[>] Как я искал (и нашел) разницу в двух побайтово идентичных файлах
habra.15
habrabot(difrex,1) — All
2015-12-28 15:30:03


Есть у нас одно .NET-приложение, которое умеет загружать и использовать плагины. Плагины — дело хорошее. Можно функционал расширять, можно оперативненько обновлять их со своего сайта, можно даже юзерам дать SDK и позволить писать свои плагины. Мы всё это и делали. Наши плагины представляли собой обычные .NET-сборки, которые нужно было подкинуть в определённую папку, откуда основное приложения их загружало и использовало. Ну, вы, наверное представляете как — [Assembly.Load()][1], дальше ищем класс, реализующий необходимый интерфейс, создаём объект этого класса и т.д. Всё это работало давно, стабильно и ничто не предвещало беды. Но вдруг в какой-то момент появилась необходимость создать плагин, состоящий из нескольких файлов. В связи с этим было решено считать плагином не просто .NET-сборку (1 файл), а zip-архив, в котором может быть как одна сборка, так и несколько файлов. В связи с этим пришлось научить билд-сервер паковать плагины в архивы, а основное приложение — разархивировать их в нужное место. В общем-то задача на 10 строк кода. Ничто не предвещало беды. И вот скачиваю я с билд-сервера собранный архив с плагином, разархивирую его в нужную папку, запускаю приложение, и… не работает! Стоп, как не работает? Это ведь тот же плагин! Дальше — больше. Прошу проделать ту же самую процедуру моего коллегу, на его компьютера. Он пробует — и у него всё работает! Но как же так? Одна версия приложения, один и тот же файл с билд-сервера. Какая-то разница в окружении? Сажусь за компьютер коллеги, пробую ещё раз — не работает! Он в этом время пробует на моём — работает! То есть получается, что файл «помнит», кто его разархивировал! Зовём третьего коллегу понаблюдать этот цирк. Последовательно, на одном и том же компьютере, по очереди делаем одни и те же действия: скачиваем архив с плагином, разархивируем в нужную папку, запускаем приложение. Когда это делаю я — программа не видит плагин, когда это делает коллега — всё работает. На третьем круге этих интересных экспериментов вдруг замечаем разницу в действиях: я разархивировал плагин стандартными средствами Windows, а мой коллега — с помощью 7-Zip. И то и другое вызывалось нами из контекстного меню архива, так что разницу в клик по не тому пункту вначале никто не замечал. Ну ок. Получается, файл, извлечённый из zip-архива с помощью 7-zip, отличается от того же файла из того же архива, извлечённого с помощью стандартного архиватора Windows? Кстати, пока вы не открыли статью под катом, ответьте-ка сами для себя на вопрос, может ли такое быть, что содержимое файлов валидного zip-архива при разархивации 7-zip и через проводник Windows будет разным? [Читать дальше →][2]

[1]: https://msdn.microsoft.com/en-us/library/system.reflection.assembly.load(v=vs.110).aspx
[2]: http://habrahabr.ru/post/274183/#habracut

[>] Генераторы хаоса на ПЛИС
habra.15
habrabot(difrex,1) — All
2015-12-28 16:00:03


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

[1]: https://habrastorage.org/files/c69/4e7/94a/c694e794a619480b871cb5adc58f9e2e.jpg
[2]: http://habrahabr.ru/post/273915/#habracut

[>] [Перевод] Да какого, блин, хрена, D-Link⁈
habra.14
habrabot(difrex,1) — All
2015-04-27 21:30:02


Как уже писал в апдейте к посту про [баг в HNAP DIR-890L][1], его нашли в начале года, в DIR-645, и выпустили патч. Сейчас D-Link выпустил патч и для DIR-890L. Патчи для DIR-645 и DIR-890L одинаковые, поэтому я буду писать только про DIR-890L. Хоть в предыдущем посте я рассматривал только выполнение команд, патч указывает на несколько дыр в безопасности, которые появились из-за использования `strstr` для валидации HNAP-заголовка `SOAPAction`:

* Использование неутентифицированных пользовательских данных в вызове `system`
* Использование неутентифицированных пользовательских данных в вызове `sprintf`
* Неаутентифицированные пользователи могут выполнять привилегированные HNAP-запросы (такие, как смена пароля администратора)

Видите, D-Link признала все это в информации об уязвимости, и они ясно представляли все векторы атаки. Итак, убрали ли они переполнение стека `sprintf`? [![image][2]][3] _sprintf(cmd\_buf, “sh %s%s.sh > /dev/console”, “/var/run”, SOAPAction);_ Нет. [Читать дальше →][4]

[1]: http://habrahabr.ru/post/256451/
[2]: http://habrastorage.org/getpro/habr/post_images/7e6/f6f/ebd/7e6f6febdb84c4d64e7ff9d727b65476.png
[3]: http://habrastorage.org/getpro/habr/post_images/7b4/972/d2b/7b4972d2b6e5a545722388fd385c1aa3.png
[4]: http://habrahabr.ru/post/256777/#habracut

[>] Определяем веса шахматных фигур регрессионным анализом
habra.14
habrabot(difrex,1) — All
2015-04-27 22:00:03


![][1]Здравствуй, Хабр! В этой статье речь пойдёт о небольшом программистском этюде на тему машинного обучения. Замысел его возник у меня при прохождении известного здесь многим курса[ «Machine Learning»][2], читаемого Andrew Ng на Курсере. После знакомства с методами, о которых рассказывалось на лекциях, захотелось применить их к какой-нибудь реальной задаче. Долго искать тему не пришлось — в качестве предметной области просто напрашивалась оптимизация собственного шахматного движка.

### Вступление: о шахматных программах

![][3] Не будем детально углубляться в архитектуру шахматных программ — это могло бы стать темой отдельной публикации или даже их серии. Рассмотрим только самые базовые принципы. Основными компонентами практически любого небелкового шахматиста являются _поиск_ и _оценка позиции_. Поиск представляет собой перебор вариантов, то есть итеративное углубление по дереву игры. Оценочная функция отображает набор позиционных признаков на числовую шкалу и служит целевой функцией для поиска наилучшего хода. Она применяется к листьям дерева, и постепенно «возвращается» к исходной позиции (корню) с помощью [альфа-бета процедуры][4] или её вариаций. Строго говоря, _настоящая_ оценка может принимать только три значения: выигрыш, проигрыш или ничья — 1, 0 или ½. По теореме Цермело для любой заданной позиции она определяется однозначно. На практике же из-за комбинаторного взрыва ни один компьютер не в состоянии просчитать варианты до листьев полного дерева игры (исчерпывающий анализ в эндшпильных базах данных — это отдельный случай; 32-фигурных таблиц в обозримом будущем не появится… и в необозримом, скорее всего, тоже). Поэтому программы работают в так называемой _модели Шеннона_ — пользуются усечённым деревом игры и приближённой оценкой, основанной на различных эвристиках. Поиск и оценка не существуют независимо друг от друга, они должны быть хорошо сбалансированы. Современные переборные алгоритмы давно уже не являются «тупым» перебором вариантов, они включают в себя многочисленные специальные правила, связанные в том числе и с оценкой позиции. Первые такие усовершенствования поиска появились ещё на заре шахматного программирования, в 60-х годах XX в. Можно упомянуть, например, технику _форсированного варианта (ФВ)_ — продление отдельных ветвей поиска до тех пор, пока позиция не «успокоится» (закончатся шахи и взаимные взятия фигур). Продления существенно увеличивают тактическую зоркость компьютера, а также приводят к тому, что дерево поиска становится очень неоднородным — длина отдельных ветвей может в несколько раз превышать длину соседних, менее перпективных. Другие улучшения поиска, наоборот, представляют собой _отсечения_ или _сокращения поиска_ — и здесь критерием отбрасывания плохих вариантов может, в числе прочего, служить всё та же статическая оценка. Параметризация и улучшение поиска методами машинного обучения — отдельная интересная тема, но сейчас мы оставим её в стороне. Займёмся пока только оценочной функцией. [Читать дальше →][5]

[1]: http://habrastorage.org/getpro/habr/post_images/54a/41c/ddb/54a41cddb26a65d98a05c4fcde9bf9eb.jpg
[2]: https://www.coursera.org/learn/machine-learning
[3]: http://habrastorage.org/getpro/habr/post_images/fe2/f43/090/fe2f4309061f637bb0622e6e0781c982.jpg
[4]: https://chessprogramming.wikispaces.com/Alpha-Beta
[5]: http://habrahabr.ru/post/254753/#habracut

[>] Новогодняя проверка .NET Core Libraries (CoreFX)
habra.15
habrabot(difrex,1) — All
2015-12-28 16:30:03


![][1]Около года назад Microsoft выложила в открытый доступ исходный код таких проектов, как CoreCLR и CoreFX. Последний проект до недавнего времени не был нам интересен, потому что написан на языке C#, а не C++. Но с выходом новой версии PVS-Studio 6.00, поддерживающей проекты и на языке программирования C#, я решил вернуться к CoreFX и написать статью.

## Введение

.NET Core это модульная реализация библиотек и среды выполнения, которая включает подмножество .NET Framework. .NET Core состоит из набора библиотек, называемых «CoreFX» и небольшой оптимизированной рабочей среды «CoreCLR». .NET Core распространяется с открытым исходным кодом, который доступен на GitHub:

* [.NET Core Libraries (CoreFX)][2]
* [.NET Core Common Language Runtime (CoreCLR)][3]

Это крупные продукты от Microsoft, содержащие качественный исходный код, но подозрительные участки кода всё равно можно найти. О проверке CoreCLR можно прочитать в статье "[PVS-Studio: 25 подозрительных фрагментов кода из CoreCLR][4]". Проект CoreFX, о котором подойдёт речь в статье, проверялся с помощью статического анализатора [PVS-Studio][5] 6.00, который теперь поддерживает и C#! [Читать дальше →][6]

[1]: https://habrastorage.org/getpro/habr/post_images/9ec/b4a/5fd/9ecb4a5fd8fd0853a178c7090e0d1225.png
[2]: https://github.com/dotnet/corefx
[3]: https://github.com/dotnet/coreCLR
[4]: http://habrahabr.ru/company/pvs-studio/blog/253280/
[5]: http://www.viva64.com/ru/pvs-studio/
[6]: http://habrahabr.ru/post/274191/#habracut

[>] Почему вас все равно взломают
habra.14
habrabot(difrex,1) — All
2015-04-28 03:30:09


Тему этой небольшой статьи навеяла небольшая дискуссия на хабре, свидетелем которой я стал. Один участник дискуссии был ярым сторонником ОС Linux и утверждал, что если всех простых пользователей перевести на Linux, то все будет просто зашибись – и не взломают и данные не украдут. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/256793/#habracut

[>] Не очень большие данные и определение тональности текста
habra.14
habrabot(difrex,1) — All
2015-04-28 10:00:02


Всякая идея имеет простое, понятное и неправильное решение. Одно из таких решений я и опишу в этой статье. Не пытайтесь повторить эти эксперименты дома. А если попытаетесь — то претензии по сгоревшим процессорам не принимаются. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/256787/#habracut

[>] Euphoria Module: короткометражная 3D-анимация, созданная с помощью открытого ПО
habra.14
habrabot(difrex,1) — All
2015-04-28 11:30:03







Euphoria Module — короткометражный анимационный фильм, сделанный с помощью Open Source-инструментов (за исключением некоторых сторонних ресурсов: музыка, несколько звуков, несколько текстур).

* **Blender**: моделирование, анимация, рендеринг, композитинг, монтаж видео и звука;
* **MakeHuman**: генерирование модели девушки, которая была позже «доведена» в Блендере;
* **Audacity**: создание и обработка нескольких звуковых эффектов;
* **GIMP**: всё, что связано с 2D (довольно мало в моём случае).

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

[1]: //habrastorage.org/files/af3/d16/71a/af3d1671a7344ffcaa46960766763e3b.jpg
[2]: http://habrahabr.ru/post/256683/#habracut

[>] Разбор задач 2-го квалификационного раунда Russian Code Cup 2015
habra.14
habrabot(difrex,1) — All
2015-04-28 13:00:02


![][1] В субботу 25 апреля [прошел][2] второй квалификационный раунд Russian Code Cup 2015. 3516 программистов решали задачи в течение двух часов, из них хотя бы одно правильное решение прислали **458** участников. Первым за 4 минуты и 9 секунд решил задачу A (Турникеты в метро) Машарабов Александр (map). Задачу B (Игра) за 8:48 решил Дубленных Денис (Stigius), задачу C (Палочки и шарниры) за 18:08 решил Нигматуллин Нияз (niyaz.nigmatullin). Задачу D (Числа Фибоначчи) за 1 час 5 минут и 21 секунду решил Лунев Антон (Anton\_Lunyov). А последнюю задачу E (Телепорты) за 1 час 44 минуты и 55 секунд решил Кунявский Павел (PavelKunyavskiy), который занял 1 место в рейтинге по итогам раунда. Последняя успешная попытка совершена Альбертом Саакяном за 4 секунды до конца соревнования. Все пять задач сдал только Павел Куявский. Всего участники отправили на проверку 4287 решений, на С++ их было 3145, на Java — 613. Отметим, что из 2166 решений, сданных на GNU C++, 1218 решений использует С++ 11 стандарта, а остальные все еще не применяют новые возможности языка. Правильных решений на этот раз всего 913, из них на С++ — 726, на Java — 141. [Читать дальше →][3]

[1]: //habrastorage.org/files/94d/c63/68c/94dc6368c1f9497cb81ecf6300ca46fc.jpg
[2]: http://www.russiancodecup.ru/championship/result/36/
[3]: http://habrahabr.ru/post/256719/#habracut

[>] OpenOCD, GDB и (сильно)удалённая отладка
habra.15
habrabot(difrex,1) — All
2015-12-28 18:00:03


Дано: есть устройство, с ARM926E-JS (Cypress FX3) на борту. Устройство находится на другом континенте. Устройство подключено (JTAG+USB+COM) к Linux компу. На комп есть SSH доступ (и больше ничего, только SSH порт). Проблема: Устройство нужно отлаживать и писать под него код. И делать это, желательно, удобно. Решение с использованием OpenOCD, GDB и Qt Creator, а так же описание пути к нему, под катом. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/274179/#habracut

[>] [Из песочницы] Прямой доступ к диску из python
habra.15
habrabot(difrex,1) — All
2015-12-28 18:00:03


![image][1] Расскажу я вам сегодня о том, как пытался я добраться из питона до интерфейса жесткого диска, и что из этого получилось. Появляется у меня периодически необходимость тестирования большого количества жестких дисков. Обычно для этого используется досовая Victoria загружающаяся по сети. Она тестирует диски по одному, что не очень удобно. К тому же последнее время пошли платы не имеющие режима IDE, что дополнительно усложняет задачу. По началу у меня возникла идея взять готовый софт под линукс с открытыми исходниками и добавить ему возможность параллельного тестирования нескольких дисков. После беглого поиска выяснилось удручающее состояние этой области в линуксе. Из софта, ведущего при тестировании статистику по времени доступа к секторам и типам ошибок нашел только whdd. Попытка разобраться с кодом whdd закончилась полным провалом. Для меня, ни разу не программиста, код показался очень запутанным. К тому же большую его часть занимает совсем не работа с железом. Поняв, что простого решения не предвидится я решил попробовать написать подобную программу самостоятельно. Понимая, что подобный проект на C я не осилю я начал изучать возможность прямой работы с дисками из python, которым я частенько пользуюсь для решения простых задач и люблю за простоту и понятность. Информации по этому вопросу в сети кот наплакал, но все же я выяснил, что существует модуль fcntl который в том числе позволяет отправлять устройству ioctl запросы. Теперь у меня появилась возможность отправлять команды диску. Но в линуксе все диски считаются scsi дисками, а для тестирования нужно передавать диску непосредственно ata команды. Оказалось существует механизм ATA Command Pass-Through, позволяющий обернуть ata команду в scsi запрос. Основную информацию о том, как это использовать удалось почерпнуть из исходных текстов проекта sg3\_utils. Осталось попробовать реализовать это все на питоне. [Читать дальше →][2]

[1]: https://habrastorage.org/files/e03/2cf/e61/e032cfe6188049f884cb1bca3f78c6b5.jpg
[2]: http://habrahabr.ru/post/274195/#habracut

Pages: 1 ... 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 ... 210