RSS
Pages: 1 ... 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
[>] Прототипное ООП для Lua
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


Привет, я придумал свой велосипед для реализации прототипного подхода ООП в Lua. Основные фишки

* Single inheritance
* Traits
* LuaJIT

Перейдем сразу к примерам.

-- подключаем модуль
local object = require("object")

-- определяем наш класс, который на самом деле объект
local HelloClass = object:extend(function(class)
-- конструктор (необязательно)
function class:init(name)
self.name = name
end

-- метод класса
function class:sayHello()
print("Hello " .. self.name)
end
end)

local hello = HelloClass:new("John")
hello:sayHello()


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

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

[>] Единорог в поисках внеземного разума: анализ кода SETI@home
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


![][1]_Существует две возможности: либо мы одиноки во Вселенной, либо нет. Обе одинаково ужасны. (с) Артур Чарльз Кларк_ Дискуссии о том, одиноки ли мы во Вселенной, будоражат умы людей уже не один десяток лет. Серьёзное отношение к этому вопросу имеет проект [SETI][2], занимающийся поиском внеземных цивилизаций и возможностью вступления с ними в контакт. Об анализе исходного кода одного из проектов этой программы — SETI@home — и пойдёт речь в данной статье. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/a46/deb/4e7/a46deb4e744297bad3a0886245818614.png
[2]: http://www.viva64.com/go.php?url=1615
[3]: http://habrahabr.ru/post/259151/#habracut

[>] «ВКонтакте» запускает программу BugBounty
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


Всем известная социальная сеть «ВКонтакте» объявила о запуске программы BugBounty. Среди сервисов, заявленных в условиях:

* \*.vk.com
* login.vk.com
* \*.vk.me
* \*.vk-cdn.net
* \*.vkmessenger.com
* \*.vkontakte.ru
* \*.vk.cc
* Официальные мобильные приложения VK

О каждой найденной уязвимости можно сообщить, используя платформу [HackerOne][1]. Минимальная награда за найденную брешь составляет 100$. При этом необходимо быть внимательным — эксплуатация обнаруженной уязвимости против пользователей социальной сети может привести к полному отказу от выплаты награды за нее. [][2]

[1]: http://hackerone.com/vkcom
[2]: http://habrahabr.ru/post/259137/#habracut

[>] Что было на PHDays V: признаки перехвата GSM-сигнала, лучшее время для взлома Wi-Fi, будущее шифрования
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


[![][1]][2] Технологическая сингулярность ожидается только через 15 лет, но фазовый переход Positive Hack Days происходит прямо сейчас. Пятый форум посетили рекордное число участников — более 3500 человек, что сравнимо с ведущими международными хакерскими конференциями, а количество докладов, секций и различных активностей перевалило за сотню. На площадке состоялась невероятная конкурсная программа со взломом ракет, электроподстанций, банкоматов, железной дороги, а главные хакерские соревнования года PHDays CTF выиграла команда More Smoked Leet Chicken, лучше всех преуспев в увлекательных биржевых спекуляциях, — поздравляем! Но обо всем этом мы подробно расскажем чуть позже. В данном материале коротко рассмотрим ряд сугубо практических техник и рекомендаций, которые мы отметили 26 и 27 мая в ЦМТ. [Читать дальше →][3]

[1]: https://habrastorage.org/files/779/9cb/f55/7799cbf5548d4fd6815fdc4b5d1c6f65.png
[2]: http://habrahabr.ru/company/pt/blog/259135/
[3]: http://habrahabr.ru/post/259135/#habracut

[>] Выписываем цифровой сертификат и проверяем подпись с помощью BouncyCastle
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


Флагманским продуктом нашей компании является Рутокен ЭЦП — устройство с российской криптографией «на борту». Для интеграции устройства с браузерами был выпущен [Рутокен Плагин][1]. Демонстрацию возможностей плагина можно посмотреть на [тестовых площадках][2]. Некоторые из них предполагают работу с цифровыми сертификатами, хранящимися на устройствах. Например, [Демо-банк][3] при регистрации пользователей выписывает пользовательский сертификат, а при логине в систему запрашивает его и проверяет. Для реализации данных задач на сервере используется библиотека BouncyCastle. ![][4] В данной статье будут рассмотрены примеры ее использования для выписки сертификатов по запросу PKCS#10, а также для проверки подписи CMS, выработанной по российским криптоалгоритмам. [Читать дальше →][5]

[1]: http://www.rutoken.ru/products/all/rutoken-plugin/
[2]: http://demo.rutoken.ru/
[3]: http://demobank.rutoken.ru/
[4]: https://habrastorage.org/files/641/614/686/6416146868a64957aa64067d96963fdb.jpg
[5]: http://habrahabr.ru/post/257407/#habracut

[>] Макросы в InterSystems Caché
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


![Monet tulips in holland][1]

## Введение

Хочу рассказать про использование макросов в InterSystems Caché. Макрос — это символьное имя, заменяемое при компиляции исходного кода на последовательность программных инструкций. Макрос может «разворачиваться» в различные последовательности инструкций при каждом вызове, в зависимости от сработавших разветвлений внутри макроса и переданных ему аргументов. Это может быть как статический код, так и результат выполнения COS. Рассмотрим, как их можно использовать в вашем приложении. [Читать дальше →][2]

[1]: https://habrastorage.org/files/b33/692/4d9/b336924d93b9462c85673595077e3511.jpg
[2]: http://habrahabr.ru/post/258081/#habracut

[>] Читаем переписку клиентов Ubank с саппортом
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


![][1] Я уже писал об [уязвимости в мобильном приложении Альфа-Банка][2], которая позволяла получать выписки по любому клиенту банка. В этот раз я решил проверить мобильное приложение сервиса по приёму платежей [Ubank][3]. Для анализа запросов, посылаемых на сервер, я опять использовал программу [Fiddler][4]. Как её настраивать, я повторно описывать не буду, кому интересно, могут прочитать об этом в [вышеуказанной статье][5]. Единственное, что я сделал по другому, это воспроизводил запросы не через плагин Postman в Google Chrome, а используя встроенный в Fiddler инструмент Composer. Исследуя запросы, отправляемые приложением на сервер, я обнаружил, что при загрузке истории переписки с саппортом не выполняется проверка на привязку идентификатора сообщения к сессии пользователя, а соответственно, перебирая id сообщений, мы можем получить переписку других пользователей с поддержкой. Итак, используя Fiddler, я записал запрос получения содержимого сообщения из переписки с саппортом: [Читать дальше →][6]

[1]: https://habrastorage.org/files/512/9ee/5c0/5129ee5c03d3415099084e93cfe47d61.png
[2]: http://habrahabr.ru/post/243105/
[3]: https://www.ubank.ru/
[4]: http://www.telerik.com/fiddler
[5]: http://habrahabr.ru/post/243105/
[6]: http://habrahabr.ru/post/252877/#habracut

[>] [Из песочницы] Сниффинг истории браузера с помощью favicon
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


Метод позволяет определить посещаемые пользователем сайты с помощью запроса иконок сайта со страницы. Идея этого метода пришла мне в голову при обсуждении с другом возможностей аналитики поведения пользователей на его сайте. Мы обсуждали, какие метрики нужно и какие не нужно собирать о его посетителях. Я подумал, что было бы неплохо узнать, какими еще сайтами пользуются его посетителями. В голову тут же пришел старый, но известный [способ][1] с CSS-стилями. Тот способ основывается на использовании метода DOM элемента [getComputedStyle][2]. Будучи вызванным у HTMLAnchorElement, он позволяет различать :visited и обычные состояния ссылок на популярные сайты. Баг давно закрыли и больше им воспользоваться нельзя. Мой метод основывается на том факте, что favicon.ico посещаемых пользователем сайтов, скорее всего, будут находиться у него в кэше и, соответственно, загрузятся быстрее, чем тех сайтов, на которых он ни разу не был. Браузеры очень агрессивно кэшируют favicon.ico, еще более увеличивает надежность такого способа. Ниже приведен полный исходный код proof-of-concept реализации этого способа. С его помощью можно продемонстрировать, что вы посещаете сайт habrahabr.ru, но ни разу не были на сайте hornet.com. [Читать дальше →][3]

[1]: http://jeremiahgrossman.blogspot.ru/2006/08/i-know-where-youve-been.html
[2]: https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle
[3]: http://habrahabr.ru/post/259073/#habracut

[>] SMS-чат на коленках
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


![image][1] Понадобился нам как-то смс-чат для небольшой группы пользователей. Основными требованиями были надежность и простота реализации. В наличии был средненький офисный компьютер с Windows ХР на борту, USB-модем Huawei E1550, сим-карта с положительным балансом и среднестатистический эникейщик. Хотелось нам следующего: инженеры из числа оперативного персонала, заступая на дежурство, подключаются к группе чата и могут обмениваться между собой короткими текстовыми сообщениями. Это полезно при решении проблем, касающихся нескольких отделов (релейщиков и энергетиков, например). Когда присутствие в группе не требуется – можно выйти и сообщения не получать. Теоретически все было просто. Берем GSM-модем, пишем программу, которая проверяет на нем входящие сообщения, выдергивает из них нужную информацию, производит обработку и передает по списку подключенных абонентов. [Читать дальше →][2]

[1]: https://habrastorage.org/files/9ee/20c/963/9ee20c96342543a7901fc6bbd544139e.jpg
[2]: http://habrahabr.ru/post/259057/#habracut

[>] [recovery mode] OWASP TOP-10: практический взгляд на безопасность веб-приложений: №1 — инъекции
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


Мы рады представить Вам очередную статью из нашей серии о безопасности Web-приложений для **не**программистов и начинающих разработчиков, плохо понимающих проблематику. В этой статье мы поговорим о важности фильтрации данных и таком распространенном и очень опасном типе уязвимостей, как инъекции. Все системы (сложные и не очень) хранят большое количество данных и различных объектов. Например объектов бизнес-логики, таких как учетные записи пользователей, счета в системе, транзакции, записи журналов операций, и т.д. Для того, чтобы к этим объектам можно было обращаться, каждый из них, в том или ином виде, имеет свой уникальный идентификатор. Кроме того, объекты могут содержать произвольные наборы полей. Все поля также имеют свои уникальные имена или идентификаторы. Все эти объекты, и не только эти, хранятся в таблицах, где каждая строка – 1 объект. Например, объект «Клиент» может иметь следующий набор полей: id, имя, фамилия, e-mail, мобильный телефон, и храниться в таблице вида: [Читать дальше →][1]

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

[>] [Из песочницы] Samba4 — использование Python Scripting Interface
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


Samba4 имеет встроенный интерфейс на Python. Многие утилиты (samba-tool, например) полностью реализованы на Python с применением этого интерфейса. Все, что делалось из LDAP-интерфейса, можно сделать на Samba 4 Python Scripting. Преимущества — файловый доступ, значит высокая скорость, некоторые фичи, которых нет в LDAP. Например, можно взять хэш паролей пользователей из одной базы и перекинуть в другую. Да и самих пользователей с их SID-ами, паролями и всем прочим перекинуть в другой домен (без заморочек с SID-history). [Читать дальше →][1]

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

[>] [Из песочницы] Двойная диспетчеризация
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


Не так давно столкнулся по службе с весьма любопытной задачей. Но нет ничего нового под луной — и задача вам давно знакома: двойная диспетчеризация в C# в терминах статической типизации. Подробнее объясню ниже, но тем, кто и так всё понял, скажу: да, я буду применять «посетителя», но довольно необычно. Ещё несколько оговорок, перед тем, как сформулировать задачу строже: я не буду останавливаться на том, почему мне не подходят dynamic, явная проверка типов через приведение и рефлексия. Тому две причины: 1) цель — избавиться от runtime исключений 2) хочу показать, что язык достаточно выразителен, даже если не прибегать к перечисленным средствам и оставаться в рамках строгой типизации. [Подробности][1]

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

[>] Fedora 22 — все тренды в одной сборке
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


![][1] 26 мая со станка [RedHat][2] сошла очередная [Fedora][3].

## Из нового, на что стоит обратить внимание



* Переход на новый пакетный менеджер _dnf_ (вместо _yum_). Он стал заметно «легче», использует меньше памяти и так же хорош как _apt_ для Ubuntu
* [Ядро Linux 4.0][4] c мегафичей Live Kernel Patching и набора компиляторов GCC 5.1.
* Виртуализация GNOME Boxes
* Серверная сборка «по умолчанию» использует файловую систему XFS
* Рабочий стол [GNOME 3.16][5]
* [наработки по снижению энергопотребления][6]
* Усовершенствован GNOME Terminal (возможность вывода уведомлений при завершении длительно работающих заданий, таких как компиляция, что позволит не отвлекаться, постоянно заглядывая в терминал для оценки статуса завершения работы)
* Спин Fedora KDE по умолчанию переведён на окружение[ KDE Plasma 5][7]. Спин Fedora Xfce обновлён до [Xfce 4.12][8]
* Обновлён [Cockpit][9], web-интерфейс для настройки и мониторинга одного или нескольких серверов
* Есть образ Fedora Atomic Host и Fedora Cloud для использования с инструментарием [Vagrant][10], который может использоваться для быстрого развёртывания виртуальных окружений в системах виртуализации на базе KVM и VirtualBox.
* Обновлены образы, которые можно использовать в качестве основы для запуска приложений в контейнерах Dockеr.
* Инструмент непрерывной интеграции Tunir

[Подробнее о релизе Fedora 22 на русском][11] [Читать дальше →][12]

[1]: https://getfedora.org/static/images/fedora_infinity_140x140.png
[2]: http://www.redhat.com/en/global/russia
[3]: https://getfedora.org/ru/
[4]: http://www.opennet.ru/opennews/art.shtml?num=42029
[5]: http://www.opennet.ru/opennews/art.shtml?num=41909
[6]: http://www.opennet.ru/opennews/art.shtml?num=41488
[7]: http://www.opennet.ru/opennews/art.shtml?num=41547
[8]: http://www.opennet.ru/opennews/art.shtml?num=41752
[9]: http://cockpit-project.org/
[10]: http://fedoramagazine.org/running-vagrant-fedora-22/
[11]: http://opennet.ru/opennews/art.shtml?num=42302
[12]: http://habrahabr.ru/post/259023/#habracut

[>] [Из песочницы] Как я уменьшил Docker образ на 98.8% при помощи fanotify
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


_Предлагаю читателям «Хабрахабра» перевод публикации [«How I shrunk a Docker image by 98.8% – featuring fanotify»][1]._ Несколько недель назад я делал внутренний доклад о Docker. Во время презентации один из админов спросил простой на первый взгляд вопрос: «Есть ли что-то вроде „программы похудения для Docker образов“»? Для решения этой проблемы вы можете найти несколько вполне адекватных подходов в интернете, вроде удаления директорий кэша, временных файлов, уменьшение разных избыточных пакетов, если не всего образа. Но если подумать, действительно ли нам необходима полностью рабочая Linux система? Какие файлы нам действительно необходимы в отдельно взятом образе? Для Go binary я нашел радикальный и довольно эффективный подход. Он был собран статически, почти без внешних зависимостей. Конечный образ — 6.12 МB. [Читать дальше →][2]

[1]: https://blog.jtlebi.fr/2015/04/25/how-i-shrunk-a-docker-image-by-98-8-featuring-fanotify/
[2]: http://habrahabr.ru/post/259021/#habracut

[>] Способ заставить Iptables писать в свой лог и не дублировать в системный
habra.14
habrabot(difrex,1) — All
2015-06-01 13:30:02


В заметке рассказано о настройке журналирования iptables в отдельный файл. Большинство руководств предлагают два подхода, но, к сожалению, у меня на Debian они так и не заработали. Точнее, логи писались в `/var/log/iptables.log`, но продолжали дублироваться в `/var/log/messages` и `/var/log/syslog`, что очень раздражало и задача была незавершенной. Найдя способ не дублировать сообщения в системные, решил опубликовать полученные результаты. [Читать дальше →][1]

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

[>] Инициатива об использовании открытых форматов при публикации общедоступных данных
habra.14
habrabot(difrex,1) — All
2015-06-01 15:00:02


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

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

[>] LINQ для PHP: скорость имеет значение
habra.14
habrabot(difrex,1) — All
2015-06-01 16:30:03


![][1]Если вы не знаете, что такое LINQ, и зачем он сдался на PHP, смотрите [предыдущую статью по YaLinqo][2]. С остальными продолжаем. Сразу предупреждаю: если вы считаете, что итераторы — это ненужная штука, которую зачем-то притащили в PHP, что производительность из-за всех этих новомодных штучек с анонимными функциями зверски проседает, что нужно вымерять каждую микросекунду, что ничего лучше старого-доброго for не придумано — то проходите мимо. Библиотека и статья не для вас. С остальными продолжаем. LINQ — это замечательно, но насколько проседает производительность от его использования? Если сравнивать с голыми циклами, то скорость меньше раз в 3-5. Если сравнивать с функциями для массивов, которым передаются анонимные функции, то раза в 2-4. Так как предполагается, что с помощью библиотеки обрабатываются небольшие массивы данных, а сложная обработка данных находится за пределами скрипта (в базе данных, в стороннем веб-сервисе), то на деле в масштабах всего скрипта потери небольшие. Главное — читаемость. Так как со времени создания моей библиотеки [YaLinqo][3] на свет появилось ещё два конкурента, которые действительно являются LINQ (то есть поддерживают ленивые вычисления и прочие базовые возможности), то возникают позывы библиотеки сравнить. Самое простое и логичное — сравнить функциональность и производительность. По крайней мере это не будет избиением младенцев, как в [прошлом сравнении][4]. (А также появление конкурентов наконец-то мотивировало меня выложить [документацию YaLinqo онлайн][5].) _Дисклеймер:_ это тесты «на коленке». Они не дают оценить все потери в производительности. В частности, я совершенно не рассматриваю потребление памяти. Отчасти потому что я не знаю, как это нормально сделать. Если что, [pull requests are welcome][6], что называется. [Даёшь скорости!][7]

[1]: http://habrastorage.org/getpro/habr/post_images/a88/804/a0d/a88804a0d87bfaf21b6817ade48e772b.png
[2]: http://habrahabr.ru/post/229763/
[3]: https://github.com/Athari/YaLinqo
[4]: http://habrahabr.ru/post/147612/
[5]: http://athari.github.io/YaLinqo
[6]: https://github.com/Athari/YaLinqoPerf
[7]: http://habrahabr.ru/post/259155/#habracut

[>] 10 способов защиты данных в Office 365
habra.14
habrabot(difrex,1) — All
2015-06-01 16:30:03


На днях случилось проводить вебинар на тему построения экосистем предприятия. Когда затронули тему облаков, больше всего вопросов посыпалось о том, что Microsoft нового сделал в области обеспечения безопасности данных в облаках. Именно эти вопросы лишают сна и становится головной болью ИТ-менеджеров компаний, пользующихся публичными облачными сервисами. Ответы на этот вопрос на конференции Microsoft Ignite, состоявшейся с 4 по 8 мая 2015 года в Чикаго, озвучил Брайан Рейд из NBConsult. Вот что он рассказал о методах обеспечения информационной безопасности для организаций, использующих Office 365. [Читать дальше →][1]

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

[>] Конкурс WAF Bypass на Positive Hack Days V
habra.14
habrabot(difrex,1) — All
2015-06-01 17:30:02


![][1] Как и в [прошлом году][2], на международном форуме по практической безопасности Positive Hack Days проходил конкурс WAF Bypass. Задача участников – обойти защиту [PT Application Firewall][3], веб-файрвола компании Positive Technologies. Специально для конкурса был создан сайт “Choo Choo Roads” с типовыми уязвимостями: Cross-Site Scripting, SQL Injection, XML External Entities Injection, Open Redirect и другими. Результатом обхода проверки для каждой уязвимости были md5-флаги, за которые присуждались очки. Флаги располагались в файловой системе, базе данных, в cookie-параметрах, которые присваивались специальному боту, написанному с использованием Selenium. [Читать дальше →][4]

[1]: https://habrastorage.org/files/c28/e03/2ea/c28e032ea084411192d061142d202345.jpg
[2]: http://habrahabr.ru/company/pt/blog/229479/
[3]: http://www.ptsecurity.com/products/af/
[4]: http://habrahabr.ru/post/259129/#habracut

[>] [Перевод] Наибольшие малые многогранники: новые решения в комбинаторной геометрии
habra.14
habrabot(difrex,1) — All
2015-06-01 18:00:02






_Перевод поста Ed Pegg Jr."[Biggest Little Polyhedron—New Solutions in Combinatorial Geometry][1]". Скачать файл, содержащий текст статьи, интерактивные модели многогранников и код, приведенный в статье, можно [здесь][2]. Выражаю огромную благодарность [Кириллу Гузенко][3] за помощь в переводе._

----

Во многих областях математики ответом будет единица **1**. Возведение числа в квадрат, которое больше или меньше единицы, даст большее или меньшее число соответственно. Иногда для того, чтобы определить, является ли что-то «большим», необходимо выяснить, больше ли единицы наибольший размер этого объекта. К примеру, гигансткий [гексагон Сатурна][4] с длиной стороны в 13,800 км можно было-бы отнести к большим. «Малый многоугольник» — это тот, у которого максимальное расстояние между вершинами равно **единице**. В 1975 году Рон Грэм открыл [наибольший малый шестиугольник][5], который, как показано ниже, имеет большую площадь, чем у правильного шестиугольника. Красные диагонали имеют единичную длину. Все остальные (непроведённые) диагонали имеют меньшую длину. [Читать дальше →][6]

[1]: http://blog.wolfram.com/2015/05/20/biggest-little-polyhedronnew-solutions-in-combinatorial-geometry/
[2]: http://blog.wolfram.com/data/uploads/2015/05/Biggest-Little-Polyhedron-New-Solutions-in-Combinatorial-Geometry.cdf
[3]: http://vk.com/ld742
[4]: http://en.wikipedia.org/wiki/Saturn%27s_hexagon
[5]: http://mathworld.wolfram.com/BiggestLittlePolygon.html
[6]: http://habrahabr.ru/post/259259/#habracut

[>] Проблемы, вызванные определением кортежей как функторов
habra.14
habrabot(difrex,1) — All
2015-06-01 20:00:02


Очень удивительно (я бы даже сказал — внезапно!), но кортеж-пара в GHC является функтором. Это сложно понять, ведь функтор должен иметь только один параметр, а у пары их два. Можно восхищаться тем, как разработчики стандартной библиотеки GHC умудрились предоставить такую абстракцию, но мне кажется, полученное решение все же следует признать неудачным. Начнем с того, что оно интуитивно непонятно. Скажем, попробуйте вычислить вручную, не используя инструментов GHC, выражение ``(1+) `fmap` (2, 3)``. А после этого проверьте полученный результат, например, в `ghci`. У многих ли результат ручного вычисления совпал с тем, который выдала система? И если у вас результаты все же совпали, мне очень хотелось бы услышать хорошее объяснение того, как именно вам это удалось. [Читать дальше →][1]

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

[>] [Из песочницы] Программирование микроконтроллеров 1986ВЕ1Т в Qt Creator
habra.14
habrabot(difrex,1) — All
2015-06-01 20:00:02


Хочу показать, как можно писать код и собирать hex-файлы для отечественных микроконтроллеров компании «Миландр» в удобной среде Qt Creator. Обычно для этих средств используются другие среды разработки, но с появлением системы QBS все несколько поменялось. [Читать дальше →][1]

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

[>] [Перевод] В поисках идеального фреймворка для JavaScript
habra.14
habrabot(difrex,1) — All
2015-06-01 21:00:02


В наше время для разработки фронтенда существует много фреймворков и библиотек. Есть хорошие, есть не очень. Часто нам нравится только какая-то концепция, модуль или синтакс. Универсальных инструментов не существует. В статье я описываю фреймворк будущего – такой, которого ещё нет. Я собрал достоинства и недостатки известных фреймворков и мечтаю об идеальном решении.

#### Абстракция опасна

Всем нравится простота. Сложность убивает. Она усложняет работу и приводит к крутой кривой обучения. Программистом нужно понимать, что как работает – иначе они чувствуют себя неуверенно. При работе со сложной системой есть большое расстояние между «я её использую» и «я знаю, как это работает». К примеру, следующий код прячет сложность:

var page = Framework.createPage({
'type': 'home',
'visible': true
});


Допустим, это реальный фреймворк. createPage где-то создаёт новый класс Вида, загружающий html-шаблон home. Основываясь на параметре visible мы добавляем созданный DOM-элемент к дереву. С точки зрения разработчика мы не знаем, как это всё работает в деталях, потому, что это – абстракция. У некоторых фреймворков есть не один, а много уровней абстракции. Иногда нам нужно знать детали его работы. Абстракция – инструмент мощный, поскольку она делает обёртки для функциональностей, инкапсулирует решения по поводу дизайна. Но её надо использовать с умом, потому что она приводит к процессам, которые трудно отслеживать. Если мы поменяем пример на следующий: [Читать дальше →][1]

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

[>] Шпаргалка по mongodb: e-commerce, миграция, часто приминимые операции и немного о транзакциях
habra.14
habrabot(difrex,1) — All
2015-06-01 23:00:02


![][1] Этот пост — небольшая шпаргалка по `mongodb` и немного длинных запросов с парой рецептов. Иногда бывает удобно когда какие-то мелочи собраны в одном месте, надеюсь, каждый кто интересуется `mongodb` найдет для себя что-то полезное. Не хотелось бы, чтобы пост воспринимался в ключе холиваров на тему `SQL vs. NOSQL` И так понятно что везде есть свои плюсы и минусы, в данном случае это просто где-то немного справки, где-то немного примеров из того, с чем приходилось сталкиваться. Примеры на `mongo shell` или на `python`.

1. [Миграция в на новые версии в mongodb][2]
* [ До версии 2.6 ][3]
* [ С 2.6 до 3.0 версии ][4]
* [ Новое в PyMongo ][5]
2. [ Запросы сравнения и логические][6]
3. [ Полнотекстовый поиск, regexp, индексы и пр.][7]
4. [ Атомарные операторы (модифицирующие данные )][8]
5. [ Немного о транзакциях в Mongodb][9]
* [ Уникальный индекс ][10]
* [ Двухфазный коммит ][11]
6. [ Агрегационный фреймворк и JOIN-ы][12]
7. [ Примеры ][13]
* [ Деревья, комментарии][14]
* [ Теги, блоги ][15]
* [ Е-commerce, фильтры ][16]
8. [ Небольшая песочница на Python][17]

[Читать дальше ][18]

[1]: //habrastorage.org/files/e36/58a/ca6/e3658aca69ab496895f5bc53c7357632.jpeg
[2]: #1
[3]: #11
[4]: #12
[5]: #13
[6]: #2
[7]: #3
[8]: #4
[9]: #5
[10]: #51
[11]: #52
[12]: #6
[13]: #7
[14]: #71
[15]: #72
[16]: #73
[17]: #8
[18]: http://habrahabr.ru/post/259219/#habracut

[>] [Из песочницы] Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск
habra.14
habrabot(difrex,1) — All
2015-06-01 23:00:02


Помните те времена, когда BIOS был 16-битным с адресным пространством в 1 Мб, а вся информация о загрузчиках писалась в MBR? На смену уже давно пришли более гибкие технологии: UEFI (замена BIOS), и GPT (замена MBR). Предыстория: Понадобилось мне недавно на свой домашний десктоп поставить 2 системы, чтобы разграничить окружение. Kubuntu для разработки на Ruby on Rails (ибо работаю удаленно), и Windows для всяких игрушек в свободное время. Хочу заметить, что несколько лет назад это было достаточно просто: один раздел для винды и один раздел для линукса, загрузчик записывался в MBR. Однако, технологии не стоят на месте, и оказалось, что настройка dual boot'а теперь несколько изменилась. [Читать дальше →][1]

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

[>] [Из песочницы] От обхода в ширину к алгоритму Дейкстры
habra.14
habrabot(difrex,1) — All
2015-06-01 23:00:02




#### Вместо введения

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

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

[>] Шпаргалка по mongodb: e-commerce, миграция, часто применяемые операции и немного о транзакциях
habra.14
habrabot(difrex,1) — All
2015-06-01 23:30:02


![][1] Этот пост — небольшая шпаргалка по `mongodb` и немного длинных запросов с парой рецептов. Иногда бывает удобно когда какие-то мелочи собраны в одном месте, надеюсь, каждый кто интересуется `mongodb` найдет для себя что-то полезное. Не хотелось бы, чтобы пост воспринимался в ключе холиваров на тему `SQL vs. NOSQL` И так понятно что везде есть свои плюсы и минусы, в данном случае это просто где-то немного справки, где-то немного примеров из того, с чем приходилось сталкиваться. Примеры на `mongo shell` или на `python`.

1. [Миграция в на новые версии в mongodb][2]
* [ До версии 2.6 ][3]
* [ С 2.6 до 3.0 версии ][4]
* [ Новое в PyMongo ][5]
2. [ Запросы сравнения и логические][6]
3. [ Полнотекстовый поиск, regexp, индексы и пр.][7]
4. [ Атомарные операторы (модифицирующие данные )][8]
5. [ Немного о транзакциях в Mongodb][9]
* [ Уникальный индекс ][10]
* [ Двухфазный коммит ][11]
6. [ Агрегационный фреймворк и JOIN-ы][12]
7. [ Примеры ][13]
* [ Деревья, комментарии][14]
* [ Теги, блоги ][15]
* [ Е-commerce, фильтры ][16]
8. [ Небольшая песочница на Python][17]

[Читать дальше ][18]

[1]: //habrastorage.org/files/e36/58a/ca6/e3658aca69ab496895f5bc53c7357632.jpeg
[2]: #1
[3]: #11
[4]: #12
[5]: #13
[6]: #2
[7]: #3
[8]: #4
[9]: #5
[10]: #51
[11]: #52
[12]: #6
[13]: #7
[14]: #71
[15]: #72
[16]: #73
[17]: #8
[18]: http://habrahabr.ru/post/259219/#habracut

[>] Дайджест KolibriOS #8: дары весны
habra.14
habrabot(difrex,1) — All
2015-06-02 05:00:02


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

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

[>] Ржавая очевидность
habra.14
habrabot(difrex,1) — All
2015-06-02 10:30:03


Каждый ищет в изыках программирования что-то своё: кому-то важна функциональная сторона, кому-то богатство библиотек, а другой сразу обратит внимание на длину ключевых слов. В данной статье я хотел бы рассказать, что особенно важно для меня в Rust — его очевидность. Не в том, что его легко изучить с нуля, а в том, как легко исследовать поведение кода, глядя на его фрагменты. Я перечислю особенности языка, позволяющие точно определить, что делает та или иная функция, вырванная из контекста. Особенно отмечу, что не пытаюсь полностью описать язык, а только одну его сторону. Это мой личный взгляд на философию Rust, не обязательно совпадающий с официальной позицией разработчиков! Кроме того, Rust не будет очевиден пришельцу из других языков: кривая обучение довольно резкая, и не раз компилятор заставит Вас мысленно сказать «wtf» на пути к просветлению. [Читать дальше →][1]

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

[>] [Перевод] Мой топ-100 книг по Программированию, Компьютерам и Науке: часть 1
habra.14
habrabot(difrex,1) — All
2015-06-02 11:00:09


Недавно сайт [Fog Creek взял у меня интервью][1], и один из вопросов был связан с моими любимыми книгами по программированию, кодированию и разработке программ. Мне этот вопрос запомнился потому, что я давно себя считаю заядлым книжным ботаником. Книжный ботаник я потому, что безумно люблю книги о науке, компьютерах и программировании. Каждые несколько месяцев я уделяю день или два исследованию недавно изданной литературы и покупке наиболее понравившихся экземпляров. Я мог бы вечно разговаривать о своих любимых книгах. Ведь у меня их так много. Меня настолько заинтересовал вопрос о книгах, что я решил начать новую серию статей на своём сайте [catonmat][2] о моих топ-100 книгах о программировании, программном обеспечении, науке, физике, математике и компьютерах. В каждой статье я буду размещать по пять книг, ведь разбивать огромное задачи на маленькие подзадачи — это самый простой способ их решать (GTD — get things done). Взгляните на мою книжную полку, чтобы убедиться, что я настоящий ботаник: ![image][3] [Читать дальше →][4]

[1]: http://blog.fogcreek.com/dev-life-interview-with-peteris-krumins/
[2]: http://www.catonmat.net/
[3]: https://habrastorage.org/getpro/habr/post_images/46e/3d7/3c7/46e3d73c72345caa19eeb27e795aef51.jpg
[4]: http://habrahabr.ru/post/259317/#habracut

[>] [Перевод] Восемь различных типов программистов
habra.14
habrabot(difrex,1) — All
2015-06-02 11:00:09


![][1] Уверены, в этой статье вы точно узнаете своих сотрудников, а возможно, и себя. Шведский предприниматель и разработчик Дэвид Эльбе описал восемь типов программистов, с которыми ему приходилось иметь дело за последние 10 лет работы в проектах по веб-разработке. Какие типы лучше всего объединить в команду и какой код от них ждать — читайте в переводе от [Alconost Translations][2].

###

![][3] Быстро вникает в ваши проблемы и решает их. Не очень заботится о качестве кода. Ему не придет в голову исправлять отступы в чужом коде. Если необходимо, «воспользуется скотчем». Время от времени может писать действительно хороший код. Счастлив, когда другие люди делают рефакторинг его кода, после чего тот работает по-прежнему хорошо. Если такой сотрудник уволится, будет трудно исправлять проблемы во всем приложении. Всегда выдает результаты быстрее, чем от него ожидают. Заказчики и менеджеры без ума от него. Плохо срабатывается с _Перфекционистом_. [Читать дальше →][4]

[1]: https://habrastorage.org/files/d09/0ab/7d6/d090ab7d64314f20aca36b54d96146e8.jpg
[2]: http://alconost.com/?utm_source=habrahabr&utm_medium=article&utm_campaign=translation&utm_content=8_programmer_types
[3]: https://habrastorage.org/files/a2f/c6d/6af/a2fc6d6af4b84becbc8639b3480f367c.jpg
[4]: http://habrahabr.ru/post/259277/#habracut

[>] Внезапный диван леопардовой расцветки
habra.14
habrabot(difrex,1) — All
2015-06-02 12:30:02


Если вы интересуетесь искусственным интеллектом и прочим распознаванием, то наверняка уже видели эту картинку: ![][1] _А если не видели, то это результаты Хинтона и Крижевского по классификации ImageNet-2010 глубокой сверточной сетью_ Давайте взглянем на ее правый угол, где алгоритм опознал леопарда с достаточной уверенностью, разместив с большим отрывом на втором и третьем месте ягуара и гепарда. Это вообще довольно любопытный результат, если задуматься. Потому что… скажем, _вы_ знаете, как отличить одного большого пятнистого котика от другого большого пятнистого котика? Я, например, нет. Наверняка есть какие-то зоологические, достаточно тонкие различия, типа общей стройности/массивности и пропорций тела, но мы же все-таки говорим о компьютерном алгоритме, которые до сих пор допускают какие-то [вот такие][2] достаточно глупые с человеческой точки зрения ошибки. Как он это делает, черт возьми? Может, тут что-то связанное с контекстом и фоном (леопарда вероятнее обнаружить на дереве или в кустах, а гепарда в саванне)? В общем, когда я впервые задумался над конкретно этим результатом, мне показалось, что это очень круто и мощно, разумные машины где-то за углом и поджидают нас, да здравствует deep learning и все такое. Так вот, на самом деле все совершенно не так. [под катом пятна][3]

[1]: https://habrastorage.org/files/262/417/fc6/262417fc6b5d4ec3b56f8be2d6108c9b.png
[2]: http://weknowmemes.com/wp-content/uploads/2013/03/facial-recognition-fail.jpg
[3]: http://habrahabr.ru/post/259191/#habracut

[>] Поиск периодических элементов защиты Паспорта РФ с помощью преобразования Фурье
habra.14
habrabot(difrex,1) — All
2015-06-02 13:00:07


Многие документы содержат защитные элементы, такие, как голограммы, водяные знаки, гильош и т.д. В процессе сканирования таких документов возникает проблема — защитные элементы мешают системам распознавания (OCR). При разработке [][1] мы провели исследование, направленное на поиск и устранение подобных защитных элементов с изображений документов. Рассмотрим пример паспорта гражданина РФ, на котором легко увидеть периодический голографический узор.



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

[1]: http://habrahabr.ru/company/smartengines/blog/252703/
[2]: http://habrahabr.ru/post/259251/#habracut

[>] [Перевод] Защищенный компьютер внутри Micro SD карты
habra.14
habrabot(difrex,1) — All
2015-06-02 13:30:02


![image][1] Так как миллионы хакеров, спамеров и мошенников охотятся за вашей персональной онлайн информацией, то вы не можете ожидать, что ваши пароли будут оставаться в безопасности, несмотря на их сложность. Большинство из нас волнуется о потери своего пароля, так как мы постоянно регистрируемся все в большем количестве онлайн сервисов. В месте с тем копания Google также озабочена вашей безопасностью в интернете и хочет помочь вам защитить вашу самую ценную информацию самым разумным способом. Google создал то, что является самым маленьким компьютером – Project Vault. Это цепляющее название было представлено во второй день ежегодной конференции разработчиков Google I/O. Project Vault – это полностью безопасный компьютер, разработанный Google ATAP (Advanced Technology and Projects), упакованный в карту MicroSD, которая может быть вставлена в любую систему, будь то ПК или мобильный телефон. [Читать дальше →][2]

[1]: https://habrastorage.org/files/4f2/ab7/c90/4f2ab7c90a544d4b90c5f7ab60e04ffd.jpg
[2]: http://habrahabr.ru/post/259331/#habracut

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


![][1] В воскресенье 31 мая прошел последний 3-й квалификационный раунд RCC 2015. Первым за 1 минуту и 49 секунд решил задачу A (Покупка велосипеда) Григорий Резников (grikukan), он же раньше всех справился с задачами B (Цифровые корни) и C (Две улитки) — 7:26 и 18:39 соответственно. Адам Бардашевич (subscriber) раньше всех решил задачу D (Игровые автоматы) за 14 минут и 20 секунд.  Олег Меркурьев (Merkurev) стал первым при решении последней задачи E (Интернетопровод) — 1 час и 1 минута. По итогам 3-го раунда первую строчку в турнирной таблице занял Евстропов Глеб (GlebsHP) из Москвы. Немного фактов: в раунде сразились 3762 программиста, из них хотя бы одно правильное решение прислали 664. Всего за раунд было прислано 3536 решений. 202 лучших участника было квалифицировано (200-е место поделили 3 участника). 3 участника были дисквалифицированы жюри. 604 участника, прошедшие квалификацию в трех раундах, сразятся 14 июня за звание финалиста. Все участники отборочного раунда получат онлайн-сертификаты, а 200 лучших из них получат футболки RCC 2015. [Читать дальше →][2]

[1]: https://habrastorage.org/files/d5a/d52/b8c/d5ad52b8ce384e328a34d5687b2c147a.jpg
[2]: http://habrahabr.ru/post/259235/#habracut

[>] Методология аудита безопасности веб-приложения
habra.14
habrabot(difrex,1) — All
2015-06-02 17:00:02


![][1] Сегодня мы поговорим о методологии проведения тестирования на проникновение веб-приложений. Одним из методов аудита веб-сайта является тестирование на проникновение BlackBox (BlackBox — «черный ящик»), при котором специалист располагает только общедоступной информацией о цели исследования. В данном методе используется модель внешнего злоумышленника, мотивированного на взлом некого веб-сайта для извлечения коммерческой выгоды или из хулиганских побуждений. Об исследуемой системе обычно заранее ничего, кроме названия компании и адреса веб-сайта, неизвестно. В контексте данной статьи будет рассмотрено как поведение злоумышленника, так и пентестера, легитимность действий которого подтверждена заказчиком аудита. Подтверждение аудита может происходить разными способами — как информационным письмом с указанием объекта аудита (и исключений), так и с помощью специальных маркеров непосредственно на атакуемом сайте. [Читать дальше →][2]

[1]: https://habrastorage.org/files/7bf/a67/614/7bfa676147d9411882fd58503703cf30.jpg
[2]: http://habrahabr.ru/post/259309/#habracut

[>] App Store style кастомизируемая кнопка загрузки
habra.14
habrabot(difrex,1) — All
2015-06-02 17:30:02


[github.com/PavelKatunin/DownloadButton][1]



Недавно появилась потребность сделать кнопку загрузки для видео, сам этап загрузки был очень похож на стандартную кнопку загрузки приложений в Appstore, но только линия, отображающая уже загруженные данные, должна была быть снаружи. Я подумал, что такой контрол может быть удобен для отображения загрузки разных вещей и что он может пригодиться где-то еще — и вынес его в отдельный фреймворк и оформил в виде cocoapods. Опубликован под Apache 2.0. **Очень приветствуется использование, редактирование кода, заведение issue на github, предложения по новым фичам и отправка пул реквестов.** [Читать дальше →][2]

[1]: https://github.com/PavelKatunin/DownloadButton
[2]: http://habrahabr.ru/post/259329/#habracut

[>] [Из песочницы] «ВКонтакте» не платит пользователям за найденные уязвимости
habra.14
habrabot(difrex,1) — All
2015-06-02 17:30:02


_[Исходный пост][1] был переведен администрацией в черновики за «нарушение правил сайта» (запрещено размещать чужие публикации под своим именем и выпрашивать инвайты в публикациях в обход Песочницы Хабра). В результате «Автор» публикации теперь сидит в read-only, а мне было предложено опубликовать её через песочницу под своим именем. Что я и делаю._ В конце мая ВКонтакте торжественно объявила о [запуске][2] открытой программы вознаграждений за уязвимости. Это, как и некоторые другие события, побудило меня на написание этой статьи. История началась еще в сентября 2014, когда во время написания мною сервиса, основанного на API социальной сети, я обнаружил уязвимость, которая позволяла узнавать как администратора сообщества, сделавшего пост, так и человека предложившего эту запись. ![image][3] [Читать дальше →][4]

[1]: http://habrahabr.ru/post/259179/
[2]: http://habrahabr.ru/post/259137/
[3]: https://habrastorage.org/files/6e0/7a5/f1b/6e07a5f1bd2a47eb9c4584855d5b792b.jpg
[4]: http://habrahabr.ru/post/259363/#habracut

[>] Интеграция OTRS v4 с Active Directory. Настройка сквозной (Single Sign On) аутентификации
habra.14
habrabot(difrex,1) — All
2015-06-02 18:00:02


Данное руководство предназначено для случая, когда уже есть настроенный сервер с установленной OTRS. Подробное руководство об установке OTRS v4 в Windows-среде можно прочитать в [здесь ][1]. ![image][2] [Читать дальше →][3]

[1]: http://habrahabr.ru/post/258129/
[2]: https://habrastorage.org/files/e58/dc4/269/e58dc426947d413db19dd4168f1b3eb4.png
[3]: http://habrahabr.ru/post/259339/#habracut

[>] [Из песочницы] Программирование микроконтроллеров 1986ВЕ91Т в Qt Creator
habra.14
habrabot(difrex,1) — All
2015-06-02 18:00:02


Хочу показать, как можно писать код и собирать hex-файлы для отечественных микроконтроллеров компании «Миландр» в удобной среде Qt Creator. Обычно для этих средств используются другие среды разработки, но с появлением системы QBS все несколько поменялось. [Читать дальше →][1]

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

[>] Приглашаем на OWASP Russia Meetup 6 июня
habra.14
habrabot(difrex,1) — All
2015-06-02 19:00:03


![][1] 6 июня, в субботу, состоится [OWASP Russia Meetup][2]. Мы приглашаем специалистов по информационной безопасности в московский офис Mail.Ru Group. Продолжая традицию весенней активности PHD, AppSec, CONFidence, HITB и других, участники обсудят новые векторы атак, будущее веб-безопасности, а также послушают приглашенного гостя из Лондона — [Pawel Krawczyk][3], компания Kainos. Он расскажет о своих исследованиях CSP. А завершит встречу круглый стол на тему корпоративных облачных решений. Полная программа: 13:30 — регистрация 14:00 — «Безопасность веб-приложений: будущие стандарты и технологии» (Тарас Иващенко, Яндекс) 14:45 — «Recent research of Content Security Policy» (Pawel Krawczyk, Kainos) 15:30 — кофе-брейк 16:00 — «Новые техники обнаружения и эксплуатации XPath/XQuery injection» (Борис Савков, МГУ) 16:45 — круглый стол 17:30 — окончание Начало в 14:00. Ждем вас! Не забудьте зарегистрироваться и взять с собой паспорт или водительские права. Адрес: Ленинградский проспект 39, строение 79, офис Mail.Ru Group. [][4]

[1]: https://habrastorage.org/files/d28/def/168/d28def168e5940aa9cdfee497ef0dc5a.jpg
[2]: http://www.meetup.com/OWASP-Russia/events/222836917/
[3]: https://www.linkedin.com/in/pawelkrawczyk
[4]: http://habrahabr.ru/post/259371/#habracut

[>] [Перевод] 100 лет спустя: заполненные пропуски в записях Рамануджана
habra.14
habrabot(difrex,1) — All
2015-06-02 19:30:02






_Перевод поста Олега Маричева и Майкла Тротта "[After 100 Years, Ramanujan Gap Filled][1]". Скачать файл, содержащий текст статьи, интерактивные модели и весь код, приведенный в статье, можно [здесь][2]. Выражаю огромную благодарность [Кириллу Гузенко][3] за помощь в переводе._

----

Сто лет назад [Сриниваса Рамануджан][4] и [Г. Х. Харди][5] начали знаменитую переписку о настолько поразительных вещах в математике, что Харди описал это как нечто едва возможное, чтобы в это поверить. Первого мая 1913-го года Рамануджан получил постоянную должность в Университете Кембриджа. Через пять лет и один день он стал научным сотрудником королевского общества, а его группа стала самой престижной на тот момент научной группой в мире. В 1919-ом году Рамануджан смертельно заболел во время длительного путешествия на пароходе Нагоя в Индию, которое проходило с 27-го февраля по 13-ое марта. Всё, что у него было — блокнот и ручка (да, никакой [_Mathematica_][6] в то время), и перед смертью он хотел оставить на бумаге свои уравнения. Он утверждал, что у него есть решения для целого ряда функций, однако ему хватало времени записать лишь несколько, прежде чем перейти к другим областям математики. Он записал следующее неполное уравнение и 14 других (см. ниже), из которых только три на данный момент решены. Он умирал несколько месяцев, вероятно, от печёночного амёбиаза. Его последний блокнот был отправлен [Университетом Мадраса][7] к Г. Х. Харди, который затем передал его математику [Г. Н. Уотсону][8]. В 1965-ом году, когда Уотсон умер, директор колледжа нашёл блокнот в его офисе, отбирая документы на уничтожение. [Джордж Эндрюс][9] заново открыл этот блокнот в 1976 году и, наконец, в 1987 году он был опубликован. [Брюс Берндт][10] и Эндрюс писали об **_[утерянном Блокноте Рамануджана][11]_** в серии книг ([Часть 1][12], [Часть 1][13], и [Часть 1][14]). Как сказал Берндт: «Открытие этого „утерянного блокнота“ вызвало бум в математическом мире такой же, какой могло бы вызвать открытие десятой симфонии Бетховена в мире музыкальном». [Читать дальше →][15]

[1]: http://blog.wolfram.com/2013/05/01/after-100-years-ramanujan-gap-filled/
[2]: http://blog.wolfram.com/data/uploads/2013/05/RamanujanElegantEquation1.cdf
[3]: http://vk.com/ld742
[4]: http://www.wolframalpha.com/input/?i=Srinivasa+Ramanujan
[5]: http://www.wolframalpha.com/input/?i=G.+H.+Hardy+
[6]: http://www.wolfram.com/mathematica
[7]: http://www.wolframalpha.com/input/?i=University+of+Madras
[8]: http://www.wolframalpha.com/input/?i=G.+N.+Watson
[9]: http://www.wolframalpha.com/input/?i=George+Andrews+
[10]: http://www.wolframalpha.com/input/?i=Bruce+Berndt+
[11]: http://en.wikipedia.org/wiki/Ramanujan%27s_lost_notebook
[12]: http://www.amazon.com/Ramanujans-Lost-Notebook-Part-Pt/dp/038725529X
[13]: http://www.amazon.com/Ramanujans-Lost-Notebook-Part-II/dp/1441926666
[14]: http://www.amazon.com/Ramanujans-Lost-Notebook-Part-III/dp/1461438098
[15]: http://habrahabr.ru/post/259381/#habracut

[>] Моделирование дипольной антенны в openEMS
habra.14
habrabot(difrex,1) — All
2015-06-02 21:00:02


![][1] В [ предыдущей части ][2] было рассказано как промоделировать распространение ЭМВ при помощи симулятора [openEMS][3]. Теперь рассмотрим как рассчитать что-либо полезное. Промоделируем дипольную полуволновую антенну на частоту 500 МГц. Будет рассмотрено моделирование в частотной области и моделирование диаграммы направленности (ДН) антенны. Схема данной антенны показана на рисунке. ![][4] Дипольная антенна состоит из двух лучей, каждый из которых имеет длину равную 1/4 волны для резонансной частоты. Запитывается антенна из центра. Антенна имеет сопротивление на чатоте резонанса, равное приблизительно 75 Ом и дигарамму направленности в форме тора. Подробнее о теории работы дипольной антенны можно прочитать, например, в учебнике Айзенберга или Белоцерковского. Эти результаты мы и должны получить после моделирования. Под катом приведён скрипт с моделью дипольной антенны с построчным разбором. Предполагается, что читатель знаком с основами Matlab/Octave, электротехники и теории антенн (знает что такое комплексное сопротивление, S-параметры и КСВ). [Читать дальше →][5]

[1]: https://habrastorage.org/files/c1f/b17/405/c1fb17405cda4305a5dfbfede018f1aa.png
[2]: http://habrahabr.ru/post/258489/
[3]: http://openems.de
[4]: https://habrastorage.org/files/403/79c/6a4/40379c6a41d145e8b7b126d69effe6e7.png
[5]: http://habrahabr.ru/post/259383/#habracut

[>] DoS эксплойт десктопного Skype для Windows и Mac OS
habra.14
habrabot(difrex,1) — All
2015-06-02 23:30:02


В последних версиях Skype для Windows и Mac OS X и присутствует ошибка, позволяющая безвозвратно обрушить программу. Для этого достаточно отправить в чате строку:



После чего Skype вылетает и больше не запускается. Работает как в групповых чатах, так и в приватных. Уязвимые версии: для Windows: **7\.5.0.101** для Mac OS X: **7\.8 (390)** Более старые версии Skype, например Windows **7\.3.0.101** и Mac OS **7\.7 (335)** не подвержены проблеме. В качестве временного решения можно откатиться на более позднюю версию. Рабочая версия для Windows [SkypeSetup\_7.3.0.101.msi][1] **UPD:** В свежем апдейте для Mac OS X **7\.8 (391)** проблему воспроизвести не удалось. [][2]

[1]: http://web.archive.org/web/20131214022704/http://download.skype.com/msi/SkypeSetup_7.3.0.101.msi
[2]: http://habrahabr.ru/post/259393/#habracut

[>] Знакомство с возможностями свитч-процессора Realtek RTL 8332M
habra.14
habrabot(difrex,1) — All
2015-06-03 00:00:02


![][1] Мы продолжаем [серию публикаций][2] об электронных компонентах тайваньской компании Realtek, которые можно использовать для разработки мультимедийной и сетевой электроники. На днях в нашем распоряжении оказалась демо-плата многопортового коммутатора RTL\_8332M\_DDR3\_DEMO\_P2L\_V1.0 на базе свитч-процессора Realtek 8332M, а также фирменный комплект средств разработки. Под катом мы расскажем, что собой представляет эта плата, опишем процесс сборки и загрузки прошивки на основе Realtek SDK, а также протестируем пропускную способность полученного коммутатора с проверкой работоспособности QoS. [Читать дальше →][3]

[1]: //habrastorage.org/files/e9c/b68/de3/e9cb68de32a14ac3bb770567d26d39ea.jpg
[2]: http://habrahabr.ru/users/promwad/topics/
[3]: http://habrahabr.ru/post/254781/#habracut

[>] Релиз FastNetMon 1.1.2 открытого решения для мониторинга DoS/DDoS атак
habra.14
habrabot(difrex,1) — All
2015-06-03 00:30:02


За прошедшие почти 10 месяцев с релиза 1.0.0 была очень большая работа по улучшению программы. Из основных изменений стоит отметить следующие:

* Возможность выявлять самые популярные виды атак: syn\_flood, icmp\_flood, udp\_flood, ip\_fragmentation\_flood
* Добавление поддержки протокола Netflow, поддерживаются 5, 9 и 10 (IPFIX) версии
* Добавление поддержки протокола sFLOW v5, который поддерживается большинством современных сетевых коммутаторов
* Добавлена поддержка использования netmap (поддерживаются Linux и FreeBSD, для Linux предоставляется специальная версия драйвера ixgbe: [github.com/pavel-odintsov/ixgbe-linux-netmap][1]) для захвата пакетов. Данный режим обеспечивает наивысшую производительность захвата трафика наряду с PF\_RING ZC.
* Добавлена поддержка PF\_RING ZC (к сожалению, этот режим требует отдельной лицензии на библиотеку PF\_RING)





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

[1]: https://github.com/pavel-odintsov/ixgbe-linux-netmap
[2]: http://habrahabr.ru/post/259399/#habracut

[>] Wargaming: тыл — фронту! Узнай что у твоего танка под капотом :-) Python Видео с DevConf 2014
habra.14
habrabot(difrex,1) — All
2015-06-03 12:00:03


[![][1]][2] Барышников Максим, Solutions Architect в **Wargaming.ne**t [«Очень развитая веб-часть»][3] в реалиях Wargaming — это: — более 40 отдельных проектов, над которыми работают более 200 человек (только в минской студии); — 2 млн UDV только на сайте worldoftanks.ru в день релиза; — подробные досье 60 млн. игроков — это только часть тех данных, которые мы предоставляем игрокам вне игры; — Public API; — Мировая война на Глобальной Карте. [Читать дальше →][4]

[1]: https://habrastorage.org/files/17c/b55/510/17cb5551065a4397847369f4099b828e.jpg
[2]: http://devconf.ru/news/detail/36
[3]: http://devconf.ru/news/detail/36
[4]: http://habrahabr.ru/post/259413/#habracut

[>] Зачем мы открыли код Virtuozzo
habra.14
habrabot(difrex,1) — All
2015-06-03 13:30:02


«Всего» 16 лет назад мы разработали первый концепт технологии контейнерной виртуализации, который позднее стал серверным продуктом мирового класса. В 2005 году стартовал проект OpenVZ, в рамках которого разрабатывалась открытая версия коммерческого продукта. Несмотря на то, что OpenVZ [уступает][1] коммерческому продукту по функциональности, это решение часто используют как на [рынке хостинга][2], так и в [небольших проектах][3], где требуется легковесная виртуализация. Сейчас контейнеры становятся намного популярнее: если раньше единственной областью их применения был хостинг (и этот сегмент контейнеры захватили на 90%), то сегодня их все чаще используют на корпоративном рынке — от разработки ПО до промышленных систем (OpenVZ используют в Pixar, Atlassian, Яндекс [и др.][4]). В них заинтересованы и «большие» ребята – Google, IBM, Facebook и так далее. В принципе, это уже часть ответа на вопрос «Зачем мы объединили кодовые базы коммерческого и открытого проектов, и [анонсировали открытую разработку OpenVZ][5]?», но под катом мы хотели бы подробнее рассказать, зачем это сделали. [Читать дальше →][6]

[1]: https://openvz.org/Comparison
[2]: http://openvz.org/Hosting_providers
[3]: http://openvz.org/Partners
[4]: http://openvz.org/Partners
[5]: http://habrahabr.ru/company/parallels/blog/256279/
[6]: http://habrahabr.ru/post/259385/#habracut

[>] Два мира виртуальных машин
habra.14
habrabot(difrex,1) — All
2015-06-03 14:00:03




> _Виртуальный_
>
> . В отличие от большинства модных компьютерных словечек, это понятие обычно соответствует своему словарному определению в тех случаях, когда речь идёт об аппаратуре или программах. Словарь «Random House College Dictionary» определяет «virtual» как «проявляющий свойства и эффекты чего-либо, но не являющийся таковым на самом деле».
>
>
>
> Unlike most computer buzzwords, this one usually holds true to its dictionary definition when it refers to hardware or software. The Random House College Dictionary defines «virtual» as «being such in force or effect, though not actually or expressly such.» [4]
>
>

Последние несколько лет в начале каждого семестра я даю студентам определения основных терминов, используемых в моём курсе: _симуляция_, _эмуляция_ и _виртуализация_. И каждый раз я говорю, чтобы мои слова не принимали за стопроцентную правду. Дело в том, что в одних областях технического знания эти термины зачастую трактуются противоположно тому, что принято использовать в других. Нелёгкое это дело — давать определения. Видимо, эту проблему заметил не только я. В своей книге [Software and System Development using Virtual Platforms][1], вышедшей в прошлом году, мои коллеги Jakob Engblom и Daniel Aarno в [первой главе][2] вводят понятия _simulation_ и _emulation_ и отмечают неоднозначность их толкования в областях разработки программного обеспечения и проектирования аппаратуры. С беспорядком в толковании этих двух терминов я для себя разобрался и вроде бы смирился. Осталось ещё одно понятие, уже более десяти (на самом деле _пятидесяти_) лет не теряющее популярности — это «виртуализация». За время своего бытия в категории «buzzword» оно стало сочетаться со множеством других слов. Недавно я осознал, что термин «виртуальная машина» (ВМ) на самом деле используется для обозначения двух хоть и связанных, но различных сущностей. В этой статье я расскажу о двух классах: _языковые_ и _системные_ виртуальные машины. Я покажу сходства и различия между ними, их назначение, классификацию, общие и частные черты в их практической реализации. ![][3] [Читать дальше →][4]

[1]: http://store.elsevier.com/Software-and-System-Development-using-Virtual-Platforms/Daniel-Aarno/isbn-9780128008133/
[2]: http://scitechconnect.elsevier.com/software-system-development-using-virtual-platforms-chapter-one/
[3]: https://habrastorage.org/files/bbe/84f/f55/bbe84ff55c1d460796de7b42d603ef3f.png
[4]: http://habrahabr.ru/post/254793/#habracut

[>] Эксплуатируем XSS уязвимость на сайте ipay.ua для кражи карточных данных
habra.14
habrabot(difrex,1) — All
2015-06-03 14:30:02


Продолжая пинтестинг отечественных платежных систем, я остановился на довольно популярном в Украине платежном сервисе ipay.ua. Меня интересовало, на сколько PCI DSS сертификация платежными системами и проводимое ими ежеквартальное [ASV-сканирование][1] (в том числе на наличие XSS уязвимостей) гарантирует защиту данных клиентов. Моё внимание привлекла форма p2p переводов по адресу [www.ipay.ua/ru/p2p][2]. Проверяя форму на фильтрацию вводимых данных, я добрался до поля для комментария и, как обычно, для первичной проверки начал вводить текст

<script>alert('XSS!')


… И только я закрыл скобку, как увидел на экране модальное окно с сообщением. ![][3] [Читать дальше →][4]

[1]: https://www.pcisecuritystandards.org/approved_companies_providers/approved_scanning_vendors.php
[2]: https://www.ipay.ua/ru/p2p
[3]: https://habrastorage.org/files/f00/aa5/ae5/f00aa5ae502a436b90d5b43ad52e790e.jpg
[4]: http://habrahabr.ru/post/259419/#habracut

Pages: 1 ... 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41