RSS
Pages: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 37
[>] Jii: Масштабируемый комет сервер и клиент
habra.15
habrabot(difrex,1) — All
2015-10-15 15:30:03


Продолжаю серию статей про [Jii Framework][1]. Сегодня настал момент релиза комета, о котором я и расскажу в этой статье. ![][2] [**Jii-comet**][3] — это масштабируемый, готовый к высоким нагрузкам и плохому интернету транспорт, реализующий постоянную связь между клиентом и сервером для мгновенного обмена данными. Jii-comet предоставляет набор компонентов и классов, которые упрощают обмен сообщениями между каналами, подписки на них, обмена данными между серверами и так далее. Сам модуль не умеет доставлять сообщения на клиент и обратно, но в нем заложена абстракция, чтобы это можно было делать любой из существующих популярных библиотек (например, [socket.io][4], [sockjs][5]), а так же чтобы это было надежно и масштабируемо. [Читать дальше →][6]

[1]: http://www.jiiframework.ru
[2]: https://habrastorage.org/files/c04/cc0/3b8/c04cc03b88cb4c61a1c8cda3fde2b632.jpg
[3]: https://github.com/jiisoft/jii-comet
[4]: http://socket.io/
[5]: https://github.com/sockjs/sockjs-client
[6]: http://habrahabr.ru/post/268817/#habracut

[>] [Перевод] Использование изображений, доступных для чтения и записи, в OpenCL 2.0
habra.15
habrabot(difrex,1) — All
2015-10-15 15:30:03


![][1]До OpenCL 2.0 было невозможно проводить операции чтения и записи изображения в рамках одного и того же ядра. Можно было объявлять изображения как _CL\_MEM\_READ\_WRITE_, но после передачи изображения ядру приходилось выбирать одно из двух: либо _\_\_read\_only_ (доступ только для чтения), либо _\_\_write\_only_ (доступ только для записи). В OpenCL 2.0 появилась возможность читать и записывать изображения в пределах одного ядра. Однако, имеется несколько особенностей, о которых мы подробно поговорим в этом посте. [Читать дальше →][2]

[1]: https://habrastorage.org/files/38f/f10/b7c/38ff10b7c857489ab5d1cb2f70a22482.jpg
[2]: http://habrahabr.ru/post/268851/#habracut

[>] Зачем нужен свободный код и как на нем зарабатывать
habra.15
habrabot(difrex,1) — All
2015-10-15 19:00:02


![Linux Torvalds][1] Мы наблюдаем бум [свободных][2] проектов. В основном, благодаря Гитхабу. 23 декабря 2013 года на сервисе был создан [10-миллионный проект][3]. К 23 декабря 2015 года количество проектов более чем утроится: прямо сейчас на Гитхабе [28 миллионов проектов][4]. Многих привлекает идея свободности, потому что она перекликается с идеей «улучшения мира», как основной мотивации продуктивной деятельности человека. Но так как обычная работа программистов в конторах очень далека от open source, возникает вопрос, как кормиться (а желательно, и разбогатеть!), большую часть времени занимаясь свободными проектами. Судя по [последним][5] [вопросам][6] на Тостере, у людей много ожиданий, но мало понимания в этой области. Поэтому я решил написать это эссе.

### Само по себе выкладывание проекта не является улучшением мира

Польза миру это либо польза людям, либо природе, либо культуре/гуманизму, либо экономике, либо науке. Первые три категории не имеют ничего общего со свободным кодом, потому что людям, природе и культуре прекрасно помогает несвободный код. Пользу науке часто рассматривают как ту же помощь экономике, только в очень далекой перспективе, хотя большинство ученых с этим не согласно, считая познание мира самостоятельной ценностью. Но еще учитывая и то, что свободный программный проект с _научной_ новизной — экзотика, сконцентрируемся на том, как свободный код помогает экономике. Вы выложили код. Чем вы помогли экономике в этот момент? Ничем, поэтому и миру вы пока ничем не помогли. Ваш проект может спасать людей от рака, быть бесплатным, экономить миллионы долларов, и при этом быть закрытым. Сконцентрируйтесь не на том, чем вообще полезен ваш проект, а чем полезна _его свободность_.

### Синергетический эффект свободного кода

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

[1]: https://habrastorage.org/getpro/habr/post_images/830/407/7ed/8304077ed5997f3a164f4dedd6254db5.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5
[3]: https://github.com/blog/1724-10-million-repositories
[4]: https://github.com/about/press
[5]: https://toster.ru/q/253723
[6]: https://toster.ru/q/257024
[7]: http://habrahabr.ru/post/268845/#habracut

[>] [Перевод] Событийно-ориентированный бэктестинг на Python шаг за шагом. Часть 4
habra.15
habrabot(difrex,1) — All
2015-10-16 13:30:03


[![][1]][2] В предыдущих статьях мы говорили о том, что такое событийно-ориентированная система бэктестинга, разобрали [иерархию классов][3], необходимую для ее функционирования, обсудили то, как подобные системы [используют рыночные данные][4], а также [осуществляют][5] отслеживание позиций и генерацию приказов на покупку. Сегодня речь пойдет об исполнении ордеров с помощью создания иерархии классов, которая будет представлять симулированный механизм обработки приказов, связанный с брокерской системой или другим интерфейсом доступа на рынок. Также мы рассмотрим метрики для оценки производительности тестируемой стратегии. [Читать дальше →][6]

[1]: https://habrastorage.org/files/af3/3ff/d49/af33ffd497c1458cac21a2724bd2cb76.jpg
[2]: http://habrahabr.ru/company/itinvest/blog/268929/
[3]: http://habrahabr.ru/company/itinvest/blog/263097/
[4]: http://habrahabr.ru/company/itinvest/blog/264141/
[5]: http://habrahabr.ru/company/itinvest/blog/266623/
[6]: http://habrahabr.ru/post/268929/#habracut

[>] Философия программирования 10 — ИИ
habra.15
habrabot(difrex,1) — All
2015-10-16 15:30:02


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

[1]: https://habrastorage.org/files/077/431/432/077431432b4a48b08b51017d8d882dcc.jpg
[2]: http://habrahabr.ru/post/268935/#habracut

[>] Аудиокодек своими руками — это просто
habra.15
habrabot(difrex,1) — All
2015-10-16 15:30:02


Думаю, что для многих людей **аудиокомпрессия с потерями** напоминает магический чёрный ящик, где удивительно сложным образом с применением математической алхимии ужимаются данные за счёт утраты избыточной информации, плохоразличимой или неслышимой ухом человека, и, как следствие, некоторого снижения качества записи. Однако сразу оценить существенность таких потерь и понять их суть не очень-то просто. Но сегодня мы постараемся выяснить, в чём же там дело и благодаря чему вообще возможен подобный процесс сжатия данных _в десятки раз_… Пора снять завесу, отворить дверцу и воочию взглянуть на таинственный алгоритм будоражащий умы и сердца, добро пожаловать на ! ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/41e/d54/304/41ed54304cea46f58a70800ed24d3fcd.png
[2]: http://habrahabr.ru/post/268905/#habracut

[>] Security Week 42: коллизии в SHA-1, практический взлом роутеров, Android/Безопасность/Грусть
habra.15
habrabot(difrex,1) — All
2015-10-16 15:30:02


![][1]Когда вы находитесь в эпицентре событий, иногда сложно понять, что на самом деле произошло. Находясь в пробке, вы не узнаете, что она произошла из-за ДТП, пока не доберетесь до двух подбитых летчиков, занявших три полосы. До этого момента у вас просто недостаточно информации, чтобы сделать выводы. В индустрии ИБ так часто происходит: тема сложная, нюансов много, а результат некоторых исследований можно реально оценить только через несколько лет. На этой неделе три самых интересных новости о безопасности не имеют между собой ничего общего, кроме толстого слоя подтекстов. Если не заниматься темой постоянно, важность некоторых событий можно оценить неправильно, или не увидеть какие-то важные детали. Попробую, по мере сил, объяснить на примерах, хотя подтексты — штука такая — каждому видится что-то свое. Добро пожаловать в 11 эпизод сериала Security Week им. Срыва Покровов. Традиционные правила: каждую неделю редакция новостного сайта [Threatpost][2] выбирает три наиболее значимых новости, к которым я добавляю расширенный и беспощадный комментарий. Все эпизоды сериала можно найти [тут][3]. [Читать дальше →][4]

[1]: https://habrastorage.org/files/bc0/17a/a70/bc017aa70efe4f1b804382226ac60f61.jpg
[2]: https://threatpost.ru/
[3]: http://habrahabr.ru/search/?target_type=posts&q=%5Bklsw%5D%20&order_by=date
[4]: http://habrahabr.ru/post/268907/#habracut

[>] [Из песочницы] Модифицируем плеер Vanilla Music под Android
habra.15
habrabot(difrex,1) — All
2015-10-16 15:30:02


Порой нам недостает функциональности приложений, которые мы используем каждый день. Имея при этом навыки программирования, хочется сделать что-нибудь свое: продукт, который будет иметь все необходимые функции, которые вам нужны. Так я решил написать свой собственный андроид-плеер, но столкнулся с серьезной трудностью — чтобы сделать более-менее пригодный плеер, требуется катастрофически много времени на программирование, а тем более на отладку. Погуглив немного на тему open-source плееров для андроид, я быстро нашел проект Vanilla Music в Google Play, а затем и на Github. Скачав исходники, я вскоре вскоре принялся его модифицировать под свои нужды. Я уже давно пытаюсь освоить программирование под Android и пишу приложения под собственные нужды, иногда выкладывая их на Google Play. В этот раз мне захотелось плеер с переключением песен по клавишам громкости. Это конечно неудобно, если хочешь поменять громкость, поэтому вторая версия идеи звучала так: переключение песен клавишами громкости должно происходить только когда телефон находится в кармане, иначе просто регулировать громкость. Второе, что мне хотелось бы иметь в функционале плеера — возможность сместить время остановки музыки, если я активно использовал телефон. Итак, приступим к практике! [Читать дальше →][1]

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

[>] Steam Files. Часть 2 — BLOB, CDR, VDF, PAK, VPK
habra.15
habrabot(difrex,1) — All
2015-10-16 15:30:02


![Steam Logo][1] После значительной задержки публикую продолжение цикла своих статей. Для ознакомления:

* [Steam Protocol 2 и Steam Files — Введение][2]
* [Steam Files. Часть 1 — GCF/NCF][3]

В данной статье я затрону оставшиеся форматы файлов:

* [BLOB][4] — устаревший формат данных, служащий контейнером для двоичных данных. Содержал в себе базовые параметры (IP-адреса серверов, CRD-запись и еще много чего);
* [CDR (Content Description Record)][5] — бинарный файл, содержащий данные о приложениях и их файлах кеша. На данный момент не используется;
* [VDF][6] — бинарный/текстовый файл, содержащий множество данных и имеющий структуру, зависящую от конкретного применения. Разработан как замена BLOB и CDR;
* [PAK][7] — ранее использовался в Half-Life 1, великое наследие Quake 1, уже не используется;
* [VPK][8] — новый формат игровых архивов внутри самих игр, активно используется на данный момент. Подробное описание файла имеется на [официальном ресурсе][9]. В статье описана только первая версия формата.

Статья представлена только для ознакомления, поскольку актуальной информации здесь относительно мало, а примеров алгоритмов почти нет — всё можно просмотреть в [упомянутом ранее репозитории][10]. [Читать дальше →][11]

[1]: http://habrastorage.org/getpro/habr/post_images/000/dca/198/000dca198a459957c5d705d59a8bc514.png
[2]: http://habrahabr.ru/post/223961/
[3]: http://habrahabr.ru/post/224027/
[4]: #BLOB
[5]: #CDR
[6]: #VDF
[7]: #PAK
[8]: #VPK
[9]: https://developer.valvesoftware.com/wiki/VPK_File_Format
[10]: https://github.com/andreili/steam_libs
[11]: http://habrahabr.ru/post/268921/#habracut

[>] PXE загрузка Thinstation в зависимости от железа тонкого клиента
habra.15
habrabot(difrex,1) — All
2015-10-16 15:30:02


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

[1]: http://thinstation.pro/thin/81-select.html
[2]: http://habrahabr.ru/post/268891/#habracut

[>] О безопасности UEFI, часть заключительная
habra.15
habrabot(difrex,1) — All
2015-10-16 18:00:02


![][1] Вот и подошел к концу мой опус о безопасности UEFI. В этой заключительной части осталось поговорить о перспективных технологиях и планах на будущее, да пообщаться с читателями в комментариях. Если вам интересно, чем безопасности прошивки могут помочь — жду вас под катом. Желая показать бунтарский дух и наплевательство на традиции, ссылки на предыдущие части не даю — сами ищите их [там][2]. [Читать дальше →][3]

[1]: https://habrastorage.org/files/b0e/4d5/c85/b0e4d5c8525c492088a43d909fcbb121.jpg
[2]: http://habrahabr.ru/users/coderush/topics/
[3]: http://habrahabr.ru/post/268423/#habracut

[>] Освоение специальности Data Science на Coursera: личный опыт (ч.2)
habra.15
habrabot(difrex,1) — All
2015-10-17 13:00:03


![][1] Мы публикуем **вторую часть** поста Владимира Подольского [vpodolskiy][2], аналитика в департаменте по работе с образованием [IBS][3], который закончил обучение по специализации Data Science  на Coursera. Это набор из 9 курсеровских  курсов от Университета Джонса Хопкинса + дипломная работа, успешное завершение которых дает право на сертификат. _Читайте [в первой части][4]: О специальности Data Science в общих чертах. Курсы: Инструменты анализа данных (программирование на R); Предварительная обработка данных; Документирование процесса обработки данных._ **_Часть 2_** [Читать дальше →][5]

[1]: https://habrastorage.org/files/52c/123/9b8/52c1239b8a61492bbbefd71f47940a53.png
[2]: http://habrahabr.ru/users/vpodolskiy/
[3]: http://www.ibs.ru/
[4]: http://habrahabr.ru/company/ibs/blog/268491/
[5]: http://habrahabr.ru/post/268893/#habracut

[>] [Перевод] Объекты нулевого размера
habra.15
habrabot(difrex,1) — All
2015-10-17 16:30:03


В чём разница между следующими парами длин и указателей?

size_t len1 = 0;
char *ptr1 = NULL;

size_t len2 = 0;
char *ptr2 = malloc(0);

size_t len3 = 0;
char *ptr3 = (char *)malloc(4096) + 4096;

size_t len4 = 0;
char ptr4[0];

size_t len5 = 0;
char ptr5[];


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

#### malloc(0)

Поведение malloc(0) определено стандартами. Можно вернуть нулевой или уникальный указатель. Второй вариант во многих реализациях выполняется внутренним увеличением длины на единицу (которая затем обычно округляется до 16). По правилам, разыменовать такой указатель нельзя, но обычно несколько байт всё-таки размещаются, и поэтому такая программа не упадёт. Возврат NULL приводит к возможности возникновения интересного бага. Часто возврат NULL из malloc расценивается как ошибка. [Читать дальше →][1]

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

[>] Удалённое исполнение системных команд по запросу через сокеты на Python 3 или как я сайты скачивал
habra.15
habrabot(difrex,1) — All
2015-10-18 11:00:02


_Проект был написан скорее в учебных целях (научиться сетевому программированию в Python), чем в практических. Такую же роль несёт и статься, ведь сейчас вряд ли кто-то будет скачивать сайты, чтобы прочитать пару статеек (за исключением некоторых случаев, когда подобное реально может пригодится)._ Не так давно качество мобильного интернета в моём городе стало постепенно ухудшаться из-за возрастающей на сети операторов нагрузки и некоторые сайты, требующие большое количество соединений (зависимые файлы страницы) стали загружаться ну ОЧЕНЬ медленно. По вечерам скорость опускается на столько, что некоторые сайты могут полностью загружаться в течении нескольких десятков секунд. Есть несколько способов решения данной проблемы, но я решил выбрать немного необычный для нашего времени способ. Я решил скачивать сайты. Конечно, данных способ не подходит для крупных сайтов, вроде Хабра, тут разумнее использовать парсер, но можно скачать и отдельный хаб, список пользователей, или только свои публикации с помощью HTTrack Website Copier, применив фильтры. Например, чтобы скачать хаб Python с Хабра нужно применить фильтр "+habrahabr.ru/hub/python/\*". Этот способ можно использовать ещё в нескольких целях. Например, чтобы скачать сайт, или его часть, перед тем, как вы окажитесь без интернет-соединения, например, в самолёте. Или для того, чтобы скачать заблокированные на территории РФ сайты, если скачивать их через Tor, что будет очень медленно, или через компьютер в другой стране, где данных сайт не запрещён, а потом передать его на компьютер, находящийся в РФ, что будет гораздо быстрее для многостраничных сайтов. Таким образом мы может скачать, например, Wikipedia через сервер в Германии или Нидерландах и получить сайт в сжатом виде по SFTP, FTP, HTTP или другому, удобному для вас, протоколу. Если, конечно, места хватит, для такого большого сайта :) Ну что, начнём!? [Читать дальше →][1]

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

[>] Что там у ReactOS?
habra.15
habrabot(difrex,1) — All
2015-10-19 03:30:02


Спешим поделится нашим прогрессом в разработке, в режиме ассорти. ![][1]

#### Поддержка дополнительных файловых систем понравится человекам

Появилась поддержка разделов жестких дисков с FS Ext2, Ext3 и Ext4.

> Просмотр раздела HDD-диска с файловой системой ext3 в reactos. Спасибо Peter Hater и Thomas Faber за их работу!



> Browsing an Ext3 volume in [@reactos][2]. Thanks to Peter Hater and Thomas Faber for their work on this achievement! [pic.twitter.com/U66m42hXQL][3]
>
> — Pierre Schweitzer (@HeisSpiter)
>
> [17 октября 2015][4]

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

[1]: https://habrastorage.org/files/ef3/329/ee2/ef3329ee2c8746dba7c9decef5aa0023.jpg
[2]: https://twitter.com/reactos
[3]: http://t.co/U66m42hXQL
[4]: https://twitter.com/HeisSpiter/status/655518443073085441
[5]: http://habrahabr.ru/post/269017/#habracut

[>] Машинное обучение, предсказание будущего и анализ причин успеха в электронной коммерции
habra.15
habrabot(difrex,1) — All
2015-10-19 12:30:03


![][1] Мы продолжаем публиковать материалы с летней конференции [Bitrix Summer Fest][2]. На этот раз хотим поделиться выступлением Александра Сербула, посвящённым текущим трендам в сфере машинного обучения, доступным методикам, а также практическим способам использования математики для увеличения конверсии и удержания клиентов. Материал ни в коем случае не претендует быть формальным и научно строгим. Воспринимайте его как лёгкое, весёлое, полезное и ознакомительное «чтиво». [Читать дальше →][3]

[1]: https://habrastorage.org/files/bf5/d88/30a/bf5d8830a10546c7b29dccf69602cf5b.jpg
[2]: http://conf.1c-bitrix.ru/summer2015/
[3]: http://habrahabr.ru/post/268971/#habracut

[>] Как Cisco Security Ninja научили 20 тысяч сотрудников безопасному программированию?
habra.15
habrabot(difrex,1) — All
2015-10-19 12:30:03


Когда вы слышите словосочетание “повышение осведомленности в области информационной безопасности”, то что вам первым приходит на ум? Обучение пользователей не открывать письма от посторонних и не кликать на фишинговые ссылки? Обучение способам распознавания социального инжиниринга? Отслеживание, чтобы никто посторонний не зашел в офис, как будто бы он с вами? У нас в Cisco такая программа тоже есть и мы тоже регулярно проходим соответствующее обучение. Но сегодня мне бы хотелось рассказать о другой нашей добровольной программе повышения осведомленности, которая была создана менее чем за полгода командой из всего четырех человек с бюджетом менее 50 тысяч долларов. Обратите внимание еще раз. Добровальная программа! Создана четырьмя людьми! Меньше чем за полгода! Всего за 50 тысяч долларов! А прошло обучение и успешно сдало экзамен по этой программе свыше 20 тысяч сотрудников Cisco — инженеров и разработчиков. [Читать дальше →][1]

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

[>] [Перевод] GitFlow и Semantic Versioning на каждый день
habra.15
habrabot(difrex,1) — All
2015-10-19 12:30:03


![image][1] Cколько времени я использую [GitFlow][2] и [Semantic Versioning][3], меня все не покидает чувство, что чего-то в них не хватает. Обе концепции хороши, но так как они предлагают решения для проблем из разных областей, их совместное использование выглядит сложнее, чем должно быть. Возможно причина в том, что я выбрал не самый оптимальный путь, и это может стать хорошей темой для будущего поста. В этом же я хочу описать простой подход к управлению релизами приложений и библиотек. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/71c/98d/0a7/71c98d0a759e5f8f7037032e3e2c4edc.png
[2]: http://habrahabr.ru/post/106912/
[3]: http://habrahabr.ru/post/134033/
[4]: http://habrahabr.ru/post/267889/#habracut

[>] Ускоряем код на Android'е
habra.15
habrabot(difrex,1) — All
2015-10-19 13:30:03


Продолжу начатую в моей предыдущей [статье][1] работу по оптимизации алгоритма. Вкратце расскажу, что было сделано. Были взяты готовые [java исходники и каскадная модель][2] одной из реализаций алгоритма [Виола-Джонса][3]. Данный алгоритм используется для поиска объектов на фотографии, в частности для поиска лиц. Тестирование проводил на своем телефоне, по результатам было получено, что изначальный код на java работал 54 секунды на фотографии размером 300 на 400. Это было слишком медленно, переписанный мною код на C++ показал результат в 14 секунд. В комментариях было предложено догнать java-реализацию до C++ следующим образом: отпрофилировать и найти узкие места, и заменить двумерный массив на одномерный. Также у меня в планах было распараллелить алгоритм на C++. Все было сделано и исследовано, результаты ниже. [Читать дальше →][4]

[1]: http://habrahabr.ru/post/268653/
[2]: https://code.google.com/p/jviolajones/
[3]: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%92%D0%B8%D0%BE%D0%BB%D1%8B_%E2%80%94_%D0%94%D0%B6%D0%BE%D0%BD%D1%81%D0%B0
[4]: http://habrahabr.ru/post/268987/#habracut

[>] Непересекающиеся множества и загадочная функция Аккермана
habra.15
habrabot(difrex,1) — All
2015-10-19 14:00:05


![][1]Речь пойдёт о простой структуре данных — _системе непересекающихся множеств_. Вкратце: даны непересекающиеся множества (например, компоненты связности графа) и по двум элементам x и y можно: 1) узнать, находятся ли x и y в одном множестве; 2) объединить множества, содержащие x и y. Сама структура очень проста в реализации и описывалась много раз в различных местах (например, есть хорошая статья на [хабре][2] и ещё [кое-где][3]). Но это один из тех удивительных алгоритмов, написать который ничего не стоит, а вот разобраться, почему он работает эффективно совсем нелегко. Я постараюсь изложить относительно простое доказательство точной оценки на время работы этой структуры данных, придуманное Зейделем и Шариром в 2005 (оно отличается от того ужаса, который многие могли видеть в других местах). Конечно, сама структура тоже будет описана, а попутно разберёмся причём здесь обратная функция Аккермана, о которой многие знают только, что она оооочень медленно растёт. [Читать дальше →][4]

[1]: https://habrastorage.org/files/35e/6ec/625/35e6ec62557d4301881d8b2aa82610b6.png
[2]: http://habrahabr.ru/post/104772/
[3]: http://e-maxx.ru/algo/dsu
[4]: http://habrahabr.ru/post/266859/#habracut

[>] Виртуальный квадрокоптер на Unity + OpenCV (Часть 2)
habra.15
habrabot(difrex,1) — All
2015-10-19 14:00:05


![КПДВ][1] Доброго времени суток, дорогие хабравчане! Этой статьей я хотел бы продолжить серию о том, как подружить Unity, C++ и OpenCV. А также, как получить виртуальную среду для тестирования алгоритмов компьютерного зрения и навигации дронов на основе Unity. В [предыдущей статье][2] я рассказывал о том, как сделать виртуальный квадрокоптер в Unity. В этой статье речь пойдет о том, как подключить C++ плагин, передать туда изображение с виртуальной камеры и обработать его посредством OpenCV. [Читать дальше →][3]

[1]: https://habrastorage.org/files/bf5/5fb/c59/bf55fbc5926c4341b3265725200994a2.png
[2]: http://habrahabr.ru/post/267791/
[3]: http://habrahabr.ru/post/269007/#habracut

[>] Удалённое исполнение системных команд по запросу через сокеты на Python 3. Часть 2. Протокол передачи данных
habra.15
habrabot(difrex,1) — All
2015-10-19 14:30:04


В [предыдущей статье][1] я рассказал как создать сервер и клиент на Python 3, используя встроенные сокеты. Но у этого приложения было много недостатков, которые я попытаюсь исправить в этой и последующих статьях. Так какими же недостатками обладает наше приложение?

* Отсылается один единственный пакет, длина которого не может превышать заранее заданной границы в 1 Кбайт.
* Приложение без проверки передаёт аргумент, принятый из сети, в оболочку (URL).
* Недостаток функциональности. Мы не можем, например, скачать все изображения с Хабра, или скачать отдельный хаб.

Сегодня я расскажу как решить первую проблему, а заодно и немного о TCP.

##### Описание протокола

Мы использовали «голый» протокол TCP для передачи данных между сервером и клиентом. TCP — это потоковый протокол, он передаёт данные последовательным набором байт. Передавая команду с аргументами по сети в первой версии нашего приложения мы читали только 1024 байт данных из принятого пакета. Но что делать, если данные не помещаются в 1024 байт? Выход только один — разбить данные на несколько пакетов на одном хосте и «склеить» их в один кусок при получении на другом хосте. Но как узнать когда заканчивается одна команда (с её аргументами) и начинается другая? Для этого нам нужно нужно знать, какова длина всего передаваемого сообщения. Так как заранее узнать длину сообщения у нас не получиться, придётся передавать её в одном из пакетов. Разумеется, делать это лучше в самом начале первого пакета. Выделив под хранение длины сообщения всего 4 байта, мы сможем передать сообщение длиной свыше 4 млрд символов! Длина сообщения — это информация о нём, то есть, часть заголовка, заголовка нашего протокола. Какого протокола спросите вы? Если верить Википедии, то

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

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

[1]: http://habrahabr.ru/post/268993/
[2]: http://habrahabr.ru/post/269019/#habracut

[>] Steam Protocol v2
habra.15
habrabot(difrex,1) — All
2015-10-19 15:30:08


![Steam Logo][1] Завершающая статья цикла, самая интересная и самая объемная:

* [Steam Protocol 2 и Steam Files — Введение][2]
* [Steam Files. Часть 1 — GCF/NCF][3]
* [Steam Files. Часть 2 — BLOB, CDR, VDF, PAK, VPK][4]

В статье будут рассмотрены протоколы обмена данными клиента Steam с различными серверами:

* [General Direcrory Server][5];
* [Config Server][6];
* [Authentication Server][7];
* [Content Lists Server][8];
* [Content Server][9].

В очередной раз напомню, что рассматриваемые протоколы устарели и в настоящее время не используются (за исключением GDS и Config — для совместимости). Все алгоритмы представлены в моем [репозитории][10]. [Читать дальше →][11]

[1]: http://habrastorage.org/getpro/habr/post_images/000/dca/198/000dca198a459957c5d705d59a8bc514.png
[2]: http://habrahabr.ru/post/223961/
[3]: http://habrahabr.ru/post/224027/
[4]: http://habrahabr.ru/post/268921/
[5]: #GDS
[6]: #Conf
[7]: #Auth
[8]: #CLS
[9]: #Content
[10]: https://github.com/andreili/steam_libs
[11]: http://habrahabr.ru/post/269061/#habracut

[>] Русские хакеры взломали Dow Jones и завладели инсайдерской информацией
habra.15
habrabot(difrex,1) — All
2015-10-19 19:00:03


[![][1]][2] По [сообщению][3] издания Bloomberg, группа хакеров (предположительно, российских) осуществила успешную атаку на серверы компании Dow Jones & Co. В итоге злоумышленникам удалось похитить чувствительную финансовую информацию, которая может представлять интерес для участников биржевых торгов, до ее публикации. [Читать дальше →][4]

[1]: https://habrastorage.org/files/220/755/329/2207553293ac46d7be665273a8d1ae01.jpg
[2]: http://habrahabr.ru/company/itinvest/blog/269099/
[3]: http://www.bloomberg.com/news/articles/2015-10-16/russian-hackers-of-dow-jones-said-to-have-sought-trading-tips
[4]: http://habrahabr.ru/post/269099/#habracut

[>] Big data, билайн и кококо
habra.15
habrabot(difrex,1) — All
2015-10-20 11:30:03


Пару дней назад, случайно зайдя на Хабр без адблока, я увидел баннер: ”Билайн, будь мужиком — реши шайтан-задачу”. Челендж звучал интересно, определить возраст по набору таких параметров, как регион, тарифный план и т.д. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/26d/d13/9c1/26dd139c1ce04f6b979fa36dbab4ba03.jpeg
[2]: http://habrahabr.ru/post/269065/#habracut

[>] Админка как юнит тест для HTTP API
habra.15
habrabot(difrex,1) — All
2015-10-20 12:30:04


![][1]Приветствую, коллеги. Множество сервисов в интернет предоставляют HTTP API для разработчиков. Есть много статей как это сделать правильно, не меньшее количество рассказов как получилось неправильно, и могучая кучка критики что получилось у других. Хорошее API сделать трудно — оно постоянно пытается выпасть из [кошелька миллера][2], обзавестись циклическими зависимостями среди сущностей и засунуть бедного разработчика в прокрустово ложе сценариев использования “как их видят разработчики”. Свои пять копеек добавлю и я — под катом забавный, но рабочий способ, который мы используем для укрощения нашего немаленького HTTP API [заглянуть под кат][3]

[1]: https://habrastorage.org/files/f5e/58b/f0a/f5e58bf0a0654a0da81871a35f28ae5f.png
[2]: https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE_%D1%81%D0%B5%D0%BC%D1%8C_%D0%BF%D0%BB%D1%8E%D1%81-%D0%BC%D0%B8%D0%BD%D1%83%D1%81_%D0%B4%D0%B2%D0%B0
[3]: http://habrahabr.ru/post/269115/#habracut

[>] [Из песочницы] Простой клиент-сервер на Android (интернет-мессенджер)
habra.15
habrabot(difrex,1) — All
2015-10-20 12:30:04


**Важно.** Все написанное ниже не представляет собой какой либо ценности для профессионалов, но может служит полезным примером для начинающих Android разработчиков! В коде старался все действия комментировать и логировать. **Поехали.** Многие мобильные приложения (и не только) используют архитектуру клиент-сервер. Общая схема, думаю, понятна. ![][1] Уделим внимание каждому элементу и отметим:

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

Неважно, как реализован любой из этих элементов, все они в любом случае присутствуют. Давайте реализуем примитивный сервер и Android клиент, работающий с ним. Как пример, будем использовать любой популярный мобильный интернет-мессенджер (Viber, ICQ), а приложение условно назовем «интернет-чат». [Читать дальше →][2]

[1]: https://habrastorage.org/files/72f/f3c/c13/72ff3cc1380e4a05a3a22a614b2d0bfd.jpg
[2]: http://habrahabr.ru/post/269135/#habracut

[>] JCoro — асинхронность на сопрограммах в Java
habra.15
habrabot(difrex,1) — All
2015-10-20 14:00:04


К исследованиям в этой сфере меня вдохновила статья [Асинхронность: назад в будущее][1]. В ней автор описывает идею о том, как, используя [сопрограммы][2], можно упростить асинхронный код так, чтобы выглядел он так же, как обычный синхронный, но сохранял плюшки, которые нам даёт применение асинхронных операций. Вкратце, суть подхода такова: если у нас есть механизм, позволяющий сохранять и восстанавливать контекст выполнения (поддержка сопрограмм), то код на цепочках callback'ов

startReadSocket((data) -> {
startWriteFile(data, (result) -> {
if (result == ok) ...
});
});


мы можем переписать так:

data = readSocket();
result = writeFile(data);
if (result == ok) ...


Здесь readSocket() и writeFile() — сопрограммы, в которых асинхронные операции вызываются следующим образом:

byte[] readSocket() {
byte[] result = null;
startReadSocket((data) -> {
result = data;
resume();
});
yield();
return result;
}


Методы yield() и resume() сохраняют и восстанавливают контекст выполнения, со всеми фреймами и локальными переменными. Происходит следующее: при вызове readSocket() мы планируем асинхронную операцию вызовом startReadSocket() и выполняем yield(). Yield() сохраняет контекст выполнения и поток завершается (возвращается в пул). Когда асинхронная операция будет выполнена, мы вызовем resume() перед выходом из callback'a, и тем самым возобновим выполнение кода. Управление снова получит основная функция, которая вызовет writeFile(). writeFile() устроен аналогично, и всё повторится. Сделав единожды такое преобразование для всех используемых асинхронных операций и поместив полученные функции в библиотеку, мы получаем инструмент, позволяющий нам писать асинхронный код так, как будто это обычный синхронный код. Мы получаем возможность сочетать плюсы синхронного кода (читабельность, удобная обработка ошибок) и асинхронного (производительность). Плата за это удобство — необходимость как-то сохранять и восстанавливать контекст выполнения. В статье автор описывает реализацию на С++, мне же захотелось заиметь что-то такое в Java. Об этом и пойдёт речь. [Читать дальше →][3]

[1]: http://habrahabr.ru/post/201826/
[2]: https://ru.wikipedia.org/wiki/Сопрограмма
[3]: http://habrahabr.ru/post/269021/#habracut

[>] Алгоритмы: теория и практика. Методы
habra.15
habrabot(difrex,1) — All
2015-10-20 14:30:02


![image][1] В ноябре мы запускаем онлайн-курс [«Алгоритмы: теория и практика. Методы»][2] от [Computer Science центра][3]. Курс бесплатный, приглашаются все желающие. В курсе будут подробно разобраны базовые алгоритмические методы: жадные алгоритмы, метод «разделяй и властвуй», динамическое программирование. Для всех алгоритмов будут математически строго доказаны корректность и оценки на время работы. Мы постарались изложить материал так, чтобы были понятны и сами алгоритмы, и то, как можно было бы догадаться до их основных идей. Помимо теоретических основ, будут рассказаны тонкости реализации алгоритмов на языках программирования C++, Java и Python. В частности, будет рассказано, какие есть общие практики написания кода, позволяющие минимизировать вероятность ошибки, как писать и тестировать код, где стоит использовать стандартные методы, а не изобретать колесо. Мы тщательно подобрали задачи для закрепления материала. Большинство алгоритмов, которые вы узнаете, вам нужно будет запрограммировать. Это лучший способ убедиться, что вы разобрались во всех деталях. Решая такие задачи, вы получите ценный опыт написания и отладки эффективных и надёжных программ. Задачи на программирование помогут вам почувствовать разницу между плохим (медленным) и хорошим (быстрым) алгоритмом. Вас также ждут тесты (где нужно выбрать правильные ответы из предложенных) и теоретические задачи (в них нужно доказать математическое утверждение). Наконец, в курсе есть также задачи повышенной сложности — менее стандартные задачи, которые не являются обязательными для прохождения курса. Получить удовольствие от решения этих задач смогут и те, кто уже знаком с базовыми алгоритмами. [Читать дальше →][4]

[1]: https://habrastorage.org/files/3b3/782/843/3b37828434ad469d910dfaf8f70245a9.png
[2]: http://stepic.org/217
[3]: http://compscicenter.ru
[4]: http://habrahabr.ru/post/269147/#habracut

[>] Мегахакатон IoT Russia от Intel и Microsoft
habra.15
habrabot(difrex,1) — All
2015-10-20 15:00:04


![][1] Друзья, [Intel IoT Roadshow][2] продолжает путешествие по разным странам и 14-15 ноября снова остановится в Москве. Заявки для участия в нашем первом московском IoT Roadshow подавали разработчики из самых разных уголков страны. Конечно, приехать в столицу смогли далеко не все. Поэтому в этот раз совместно с Microsoft мы решили расширить географию участников и рады пригласить IoT энтузиастов из Перми, Казани, Томска, Иваново, Ярославля и Петрозаводска присоединиться к [мегахакатону][3]! [Читать дальше →][4]

[1]: https://habrastorage.org/files/129/d96/b5c/129d96b5c9844ddc884eb191d043358a.jpg
[2]: https://iotroadshow.intel.com/ru/home/
[3]: http://special.habrahabr.ru/intel/iot-hackathon
[4]: http://habrahabr.ru/post/268933/#habracut

[>] Антивирусная компания AVG теперь может продавать данные своих клиентов
habra.15
habrabot(difrex,1) — All
2015-10-20 16:00:05


![][1] На днях крупный производитель антивирусов, компания AVG, обновила собственное пользовательское соглашение (вы ведь читаете EULA, правда?), добавив пункт о возможности продажи собранных с пользовательских ПК данных. Понятно, это не номера кредитных карт или имена клиентов, а информация другого рода: история посещений сайтов, данные об установленных приложениях, названия беспроводных сетей, через которые пользователи выходят в сеть. Другими словами, обновленное [пользовательское соглашение][2] дает право компании продавать, так называемые, **неперсональные данные пользователей.** Кроме перечисленных выше данных, компания считает неперсональными еще и _рекламный идентификатор клиента, название провайдера, который обеспечивает пользователя доступом в сети, информация об использовании приложений на компьютере пользователя_. Эти данные AVG может продавать сторонним лицам. Деньги же, по словам руководства, дают компании право делать некоторые свои продукты бесплатными для пользователя. **Обновленные правила начали работать с 15 октября.** [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/464/095/b7e/464095b7ea4bde986b91c2bec00977bd.png
[2]: http://www.avg.com/ru-ru/privacy#what-changes-have-you-recently-made
[3]: http://habrahabr.ru/post/269161/#habracut

[>] Большой хакатон на ВДНХ
habra.15
habrabot(difrex,1) — All
2015-10-20 16:30:04


![][1]В следующие выходные я буду вести очередной хакатон. Этот хакатон будет первым из серии четырех соревнований и конкурсов проектов, посвященных интеграции IT и того, что обычно именуют емким термином “креативная индустрия”: кино, телевидение, музеи, арт-площадки и прочие развлекательтные штуки. Как обычно, основная задача мероприятия — это создать тусовку для айтишников, где разработчики, дизайнеры и стартаперы смогут в сжатые сроки создать работающий прототип продукта, выступить с ним перед заслуженным жюри и побороться за денежные призы. Два дня и одну ночь на площадке вас буду ждать я, менторы из киноиндустрии, горячая пица, red bull и возможность воплотить свою идею или присоединиться к перспективной команде. Кроме того, в этот раз можно не только разработать новые прототипы приложений, но и представить уже существующие (на тему кино и телевидения) в рамках особого формата — баркемп, на мероприятии. [Скандалы, интриги, подробности, регистрация][2]

[1]: https://habrastorage.org/files/e68/b1d/cc1/e68b1dcc146d4dc5afdae8667784f8fb.png
[2]: http://habrahabr.ru/post/269103/#habracut

[>] Курс по машинному обучению на Coursera от Яндекса и ВШЭ
habra.15
habrabot(difrex,1) — All
2015-10-20 19:30:03


Когда-то мы [публиковали на Хабре][1] курс по машинному обучению от Константина Воронцова из Школы анализа данных. Нам тогда [предлагали][2] сделать из этого полноценный курс с домашними заданиями и разместить его на Курсере. И сегодня мы хотим сказать, что наконец можем выполнить все эти пожелания. В январе на Курсере пройдёт курс, организованный совместно Яндексом (Школа анализа данных) и ВШЭ. Записаться на него можно уже сейчас: [www.coursera.org/learn/introduction-machine-learning][3]. [![][4]][5] _Дафна Коллер в офисе Яндекса_ Курс продлится семь недель. Это означает, что по сравнению с ШАДовским двухсеместровым курсом он будет заметно упрощен. Однако в эти семь недель мы попытались вместить только то, что точно пригодится на практике, и какие-то базовые вещи, которые нельзя не знать. В итоге получился идеальный русскоязычный курс для первого знакомства с машинным обучением. Кроме того, мы верим, что после прохождения курса у человека должна остаться не только теория в голове, но и скилл «в пальцах». Поэтому все практические задания построены вокруг использования библиотеки [scikit-learn][6] (Python). Получается, что после прохождения нашего курса человек сможет сам решать задачи анализа данных, и ему будет проще развиваться дальше. Под катом можно прочитать подробнее обо всех авторах курса и узнать его примерное содержание. [Читать дальше →][7]

[1]: http://habrahabr.ru/company/yandex/blog/208034/
[2]: http://habrahabr.ru/company/yandex/blog/208034/#comment_7163012
[3]: https://www.coursera.org/learn/introduction-machine-learning
[4]: https://habrastorage.org/files/78b/bd4/e6e/78bbd4e6eae642229d38f8cd1c9fcb06.jpg
[5]: http://habrahabr.ru/company/yandex/blog/269175/
[6]: http://scikit-learn.org/
[7]: http://habrahabr.ru/post/269175/#habracut

[>] 1Password меняет формат файлов для повышения уровня безопасности
habra.15
habrabot(difrex,1) — All
2015-10-20 19:30:03


![image][1] Менеджер файлов 1Password заявил о смене формата файлов, в которых хранится информация пользователей. Эти действия компания решила предпринять в ответ на пост Дейла Майерса, работника Microsfoft, обнаружившего уязвимость в текущем формате. Так, Майерс изучил файл .agilekeychain, оставляемый 1Password, и обнаружил, что [метаданные не зашифрованы][2], а хранятся практически в открытом виде, plain text. А поскольку 1Password — достаточно популярный менеджер паролей, то данные многих сотен тысяч пользователей могут быть скомпрометированы. Если кто-либо получает доступ к соответствующему файлу, то этот человек без проблем может получить информацию о сайтах, на которых пользователь недавно логинился. Есть также возможность получить данные о банковском аккаунте пользователя, и узнать, какого рода лицензии на ПО были приобретены. Вся эта информация позволяет обратиться в банк от имени пользователя, плюс злоумышленник может сбросить все пароли. Плюс ко всему, Google индексирует keychain-ы пользователей, обеспечивающих простой доступ к различным сайтам. .agilekeychain — это директория, где находится файл 1password.html. Все данные пользователя хранятся в файле 1Password.agilekeychain/data/default/contents.js. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/868/4a6/ca4/8684a6ca411514dda610ec5adf8ec765.png
[2]: http://myers.io/2015/10/22/1password-leaks-your-data/
[3]: http://habrahabr.ru/post/269177/#habracut

[>] 1Password меняет формат файлов по умолчанию для повышения уровня безопасности
habra.15
habrabot(difrex,1) — All
2015-10-20 20:00:02


![image][1] Менеджер файлов 1Password заявил о смене формата файлов, в которых хранится информация пользователей. Эти действия компания решила предпринять в ответ на пост Дейла Майерса, работника Microsfoft, обнаружившего уязвимость в текущем формате. Так, Майерс изучил файл .agilekeychain, оставляемый 1Password, и обнаружил, что [метаданные не зашифрованы][2], а хранятся практически в открытом виде, plain text. А поскольку 1Password — достаточно популярный менеджер паролей, то данные многих сотен тысяч пользователей могут быть скомпрометированы. Если кто-либо получает доступ к соответствующему файлу, то этот человек без проблем может получить информацию о сайтах, на которых пользователь недавно логинился. Есть также возможность получить данные о банковском аккаунте пользователя, и узнать, какого рода лицензии на ПО были приобретены. Вся эта информация позволяет обратиться в банк от имени пользователя, плюс злоумышленник может сбросить все пароли. Плюс ко всему, Google индексирует keychain-ы пользователей, обеспечивающих простой доступ к различным сайтам. .agilekeychain — это директория, где находится файл 1password.html. Все данные пользователя хранятся в файле 1Password.agilekeychain/data/default/contents.js. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/868/4a6/ca4/8684a6ca411514dda610ec5adf8ec765.png
[2]: http://myers.io/2015/10/22/1password-leaks-your-data/
[3]: http://habrahabr.ru/post/269177/#habracut

[>] 4 способа писать в защищённую страницу
habra.15
habrabot(difrex,1) — All
2015-10-20 21:00:02


Имеется в виду выполнение записи по аппаратно защищённому от записи адресу памяти в архитектуре x86. И то, как это делается в операционной системе Linux. И, естественно, в режиме ядра Linux, потому как в пользовательском пространстве, такие трюки запрещены. Бывает, знаете ли, непреодолимое желание записать в защищённую область … когда садишься писать вирус или троян… [Читать дальше →][1]

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

[>] Совмещенный АВС и XYZ анализ в Ритейле
habra.15
habrabot(difrex,1) — All
2015-10-20 23:30:02


Когда-то давно владелец магазина, он же продавец, мог легко запомнить все товары своего ассортимента. Рассказать об особенностях каждого, историю, насколько товар эффективен, знал точно как он продается, когда заказать еще… С развитием ритейла управление движением товаров требует других подходов. Системы учета и аналитики продаж, управления ассортиментом дополняют опыт работников магазина или торговой сети. Серьезные решения, например, о выведении товара из ассортимента, принимаются не так просто. И категорийному менеджеру, и управляющему магазином нужны обоснования для таких действий. Поэтому одного вида анализа недостаточно. Применяют совмещение нескольких видов (по-другому, кросс-анализ). В статье мы на примере товарной группы “Кондитерских изделий” рассмотрим основные подходы к организации кросс-анализа. А еще узнаем, кто виноват в том, что Рафаэлло — товар с нестабильными продажами. [][1]



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

[1]: http://habrahabr.ru/company/datawiz/blog/269167/
[2]: http://habrahabr.ru/post/269167/#habracut

[>] Чем защищают сайты, или Зачем нужен WAF?
habra.15
habrabot(difrex,1) — All
2015-10-21 07:00:04


[![][1]][2] В этом году компанию Positive Technologies назвали «визионером» в рейтинге Gartner Magic Quadrant for Web Application Firewalls. Это вызвало ряд вопросов о том, за какие достижения мы туда попали и что такое WAF вообще. Вопросы вполне правомерные, ведь Gartner выпускает своё исследование WAF лишь с прошлого года (для примера: «квадранты» по SIEM стали выходить на пять лет раньше, в 2009 году). Кроме того, некоторые до сих пор путаются с терминологией, не отличая «экран для защиты веб-приложений» (WAF) от обычного «межсетевого экрана» (network firewall) или «системы предотвращения вторжений» (IPS). В этой статье мы попробуем отделить мух от котлет — и рассказать, как идёт эволюция периметровой защиты по мере роста изощрённости атак. [Читать дальше →][3]

[1]: https://habrastorage.org/files/dae/502/0d6/dae5020d61cc49c9a85554b5022750a0.jpg
[2]: http://habrahabr.ru/company/pt/blog/269165/
[3]: http://habrahabr.ru/post/269165/#habracut

[>] Легендарные книги Амазона. Продолжение темы «Elements of Programming Interviews: The Insiders' Guide»
habra.15
habrabot(difrex,1) — All
2015-10-21 07:00:04


Добрый день, Хабр! [В начале лета][1] мы уже говорили об одной из легенд Амазона «Elements of Programming Interviews: The Insiders' Guide». Книга продолжает занимать первые места в рейтинге Амазона, но в сентябре 2015 года авторы выпустили еще одну книгу, которая тоже сразу стала бестселлером. [Elements of Programming Interviews in Java: The Insiders' Guide][2] [Читать дальше →][3]

[1]: http://habrahabr.ru/company/piter/blog/259875/
[2]: http://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/ref=asap_bc?ie=UTF8
[3]: http://habrahabr.ru/post/269169/#habracut

[>] [Из песочницы] Oracle, типичные задачи SQL. Размножение строк таблицы в зависимости от значения числа в колонке
habra.15
habrabot(difrex,1) — All
2015-10-21 07:00:04


![image][1] На носу зима, приближаются морозы, а это значит, что сегодня мы будем мариновать бананы. Для этого нам понадобятся следующие ингредиенты:








































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

[1]: https://habrastorage.org/files/b9c/a97/233/b9ca97233c7e4ad987936449fea05bea.jpg
[2]: http://habrahabr.ru/post/269173/#habracut

[>] Let's Encrypt объявил о кросс-сертификации от IdenTrust
habra.15
habrabot(difrex,1) — All
2015-10-21 10:00:03


![][1] На сайте проекта Let's Encrypt появилась [информация][2], что 19 октября 2015 удостоверяющие центры «Let's Encrypt Authority X1» и «Let's Encrypt Authority X2» получили кросс-подписи от IdenTrust. Теперь сертификаты выпущенные Let's Encrypt стали доверенными для всех основных браузеров. Проверить это можно, зайдя на страницу, защищенную первым сертификатом Let's Encrypt: [helloworld.letsencrypt.org][3]. Если ваш браузер не выдает предупреждения, значит считает сертификат этого домена доверенным. [Читать дальше →][4]

[1]: https://habrastorage.org/files/b33/dc9/4e8/b33dc94e88554756b9593cae9a242ae8.gif
[2]: https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html
[3]: https://helloworld.letsencrypt.org/
[4]: http://habrahabr.ru/post/269213/#habracut

[>] PYCON RUSSIA-2015: видео и презентации докладов
habra.15
habrabot(difrex,1) — All
2015-10-21 14:30:03


18-19 сентября в Екатеринбурге прошла третья международная конференция python-разработчиков [PyCon Russia][1]. 21 доклад, два мастер-класса, Lightning Talks — все это PyCon-2015. Под катом — отчет о прошедшей конференции, много видео и презентации докладов. [][2]

###### _Питонисты собрались из 25 городов, среди которых: Сан-Франциско, Париж, Прага, Бонн, Таллин, Минск, Киев, Москва, Санкт-Петербург, Казань, Уфа_

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

[1]: http://pycon.ru/2015/program/schedule/
[2]: https://fotki.yandex.ru/next/users/it-people-ekb/album/169532/view/1223460
[3]: http://habrahabr.ru/post/269223/#habracut

[>] HP Helion OpenStack Carrier Grade – облако для операторов связи
habra.15
habrabot(difrex,1) — All
2015-10-21 16:30:03


Мы продолжаем серию публикацию по семейству решений для построения облаков HP Helion OpenStack и хотим рассказать о недавно выпущенном пакете **HP Helion OpenStack** операторского класса (**Carrier Grade**) или, сокращенно, HOS CG. [![image][1]][2] [Читать дальше →][3]

[1]: http://habrastorage.org/files/f2c/d80/94b/f2cd8094b2bb4049a3f012e65a63b18e.png
[2]: http://habrahabr.ru/company/hp/blog/269255/
[3]: http://habrahabr.ru/post/269255/#habracut

[>] Panda Adaptive Defense 360: адаптация IT-защиты к новым потребностям предприятий
habra.15
habrabot(difrex,1) — All
2015-10-21 16:30:03


![][1] **Панорама вредоносных программ** За последние годы панорама вредоносных программ претерпела серьезные изменения: во-первых, стремительно выросло число угроз в обращении, а во-вторых, они стали более сложными для обнаружения. В наши дни ежедневно появляются сотни тысяч новых вариантов вредоносных программ, при этом методы преодоления систем защиты и маскировки угроз стали намного более изощренными, в результате чего корпоративные сети стали более уязвимы перед целенаправленными атаками и угрозами «нулевого дня», чем [Читать дальше →][2]

[1]: https://habrastorage.org/files/7d1/94f/117/7d194f11773b4ccfbe539d41ec8a4eea.jpg
[2]: http://habrahabr.ru/post/269235/#habracut

[>] [Из песочницы] Схема Блома
habra.15
habrabot(difrex,1) — All
2015-10-21 16:30:03


![image][1]В июне 2015 года в России был принят стандарт блочного шифрования — ГОСТ Р 34.12-2015. Мне стало интересно объединить этот ГОСТ (точнее, полином, который используется в нем) и схему Блома. Вооружившись [исходниками][2] и самим [ГОСТом][3], я приступил к делу. Но для начала немного теории. Итак, Схема Блома —схема предварительного распределения ключей в сети связи. Принцип её действия таков: [Читать дальше →][4]

[1]: http://lectoriy.mipt.ru/img/course/ComputerTechnology-InformationSecurity-13L.jpg
[2]: https://github.com/mjosaarinen/kuznechik
[3]: http://tc26.ru/standard/gost/GOST_R_3412-2015.pdf
[4]: http://habrahabr.ru/post/269229/#habracut

[>] Google обязала производителей смартфонов шифровать данные на устройствах с Android 6 по умолчанию
habra.15
habrabot(difrex,1) — All
2015-10-21 16:30:03


Полгода назад мы [писали][1], что Google решила повременить со своей инициативой шифрования данных (_full-disk encryption_) на устройствах с Android 5 (Lollipop), после его анонсирования в 2014 г. Тогда инициатива производителя мобильной ОС носила для производителей устройств рекомендательный характер. На фирменных устройствах Google Nexus 5 с Android Lollipop шифрование по умолчанию также было отключено. ![][2] С выходом Android 6 (Marshmallow) ситуация изменилась, как [сообщает][3] издание Ars Technica, Google изменила требования к шифрованию в своем основном документе Android Compatibility Definition Document. Теперь в пункте спецификации, отвечающем за шифрование, компания регламентирует шифрование данных на устройстве с Android 6 по умолчанию, правда, с некоторыми исключениями для определенного типа устройств, которые не могут обеспечить должный уровень криптографической производительности. [Читать дальше →][4]

[1]: http://habrahabr.ru/company/eset/blog/252027/
[2]: https://habrastorage.org/files/20f/3a5/c41/20f3a5c41fdf42fd97f28e8b60b72977.jpg
[3]: http://arstechnica.com/gadgets/2015/10/android-6-0-re-implements-mandatory-device-encryption-for-new-devices/
[4]: http://habrahabr.ru/post/269155/#habracut

[>] Модификация программы и что лучше менять: исполняемый код или AST программы?
habra.15
habrabot(difrex,1) — All
2015-10-21 16:30:03


Принципы в заметке общие для почти любого языка программирования и системы исполнения, но акцент будет на jvm. Рассмотрим два основных подхода по модификации программы:

* манипуляции с исполняемым кодом программы после компиляции или во время загрузки кода;
* изменение исходного кода перед компиляцией.

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

[1]: https://habrastorage.org/files/b41/afe/133/b41afe133ab646b48568f7b25d0f875c.jpg
[2]: http://habrahabr.ru/post/269037/#habracut

[>] Сервис для системного администратора. Часть 1
habra.15
habrabot(difrex,1) — All
2015-10-21 16:30:03


![image][1]

#### 1\. Предисловие

Задачи системного администратора — разнообразны. Работа в консоли — создание пользователей, тестирование, установка и конфигурация пакетов на серверах, просмотр логов и трафика, настройка сети и туннелей. Работа с железом — установка оборудования и документацией, написание планов работ, описание работы сервисов. Системные администраторы имеют большое количество скриптов для автоматизации. Хранятся они, обычно, в их домашних папках (и хорошо если не только там, но и в CVS), периодически апдейтятся на новую функциональность. Как правило, использовать такие скрипты могут лишь те же люди которые их пишут (а, иначе, последствия могут быть самыми разрушительными). Таким образом — задачи по автоматизации часто нуждаются в простом GUI для удобного управления, упрощения. Например — сбор трафика. Или возможность откатывать бекапы/релизы по кнопке (даже если кто-то катится пакетами через SCM систему). Или менять Mysql master без подглядывания консоль ( какое-то количество ошибок возникает из-за неверно забитой в команды, не на том сервере). [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/cba/93e/e4c/cba93ee4c98e3293a220e58d9556e974.png
[2]: http://habrahabr.ru/post/269163/#habracut

[>] Проверка Wine: Год спустя
habra.15
habrabot(difrex,1) — All
2015-10-21 18:00:03


![][1] Чуть больше года назад для написания статьи о проверки проекта с помощью PVS-Studio был взят проект Wine. Статья написана, авторы были уведомлены и даже попросили полный отчёт проверки анализатором, на что получили положительный ответ. Недавно нам написал один из разработчиков проекта. В статье будет рассказано о нашем общении, проделанной работе команды разработчиков проекта Wine по улучшению кода и о том, что ещё предстоит сделать. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/e97/afe/61f/e97afe61f4af5ea87c025a699217dce0.png
[2]: http://habrahabr.ru/post/269265/#habracut

[>] [Перевод] Let's Encrypt теперь доверенный
habra.15
habrabot(difrex,1) — All
2015-10-21 20:00:03


![][1] Мы рады объявить, что получили кросс-подписи от [IdenTrust][2]. Это означает, что теперь наши сертификаты считаются доверенными в большинстве основных браузеров. Это знаменательный рубеж: теперь все посетители веб-сайтов на которых установлен сертификат Let's Encrypt смогут наслаждаться безопасным просмотром интернет-страниц без каких-либо дополнительных настроек. Оба промежуточных сертификата Let's Encrypt (Let’s Encrypt Authority X1 и Let’s Encrypt Authority X2) получили кросс-подписи. Веб-серверы теперь необходимо настроить, чтобы обслуживать подходящую кросс-подпись сертификата. Клиент Let's Encrypt сделает это автоматически. Вы можете посмотреть на пример сервера, который использует сертификат Let’s Encrypt по [этой ссылке][3]. [Читать дальше →][4]

[1]: https://habrastorage.org/files/00e/73f/15c/00e73f15c7f741c3a59a14d9739b7deb.png
[2]: https://identrustssl.com/
[3]: https://helloworld.letsencrypt.org/
[4]: http://habrahabr.ru/post/269269/#habracut

Pages: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 37