RSS
Pages: 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 133
[>] Аккаунты пользователей Teamviewer взломаны
habra.16
habrabot(difrex,1) — All
2016-06-02 00:00:03


![][1]

**Tl;dr:** множество пользователей жалуются на то что их аккануты взломаны; сайт teamwiever.com не работал несколько часов из-за проблем с DNS.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/46b/145/154/46b1451545a746a7baf2b8dc695bc762.jpg
[2]: https://habrahabr.ru/post/302418/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Model-View в QML. Часть четвертая: C++-модели
habra.16
habrabot(difrex,1) — All
2016-06-02 12:00:02


Поскольку основное предназначение QML — это создание интерфейсов, то в соответствии с шаблоном MVC, на нем реализуются представление и контроль. Для реализации же модели, совершенно логично напрашивается C++. Здесь у нас будет гораздо меньше ограничений и мы сможем реализовать модель любой сложности. Кроме того, если значительная часть программы написана на C++ и данные поступают именно оттуда, то лучше всего там же поместить и модель.



От использования такой модели может отпугнуть кажущаяся сложность реализации. Я не стану спорить с тем, что C++ не самый простой язык. Он посложнее QML и требует больше осторожности, чтобы не выстрелить себе в ногу, это факт. Несмотря на это, на практике не все так уж и страшно.



Во-первых, не будем забывать, что мы пишем не на чистом С++, а с использованием Qt. Такие вещи как parent-child в QObject, implicit sharing для контейнеров, сигналы и слоты, QVariant и многое другое очень сильно упрощают и автоматизируют работу с памятью, чем избавляют разработчика от массы головной боли и повышают надежность. Иногда даже создается впечатление, что пишешь на динамическом языке программирования. Это же сокращает пропасть между QML и C++, делая переход между ними более-менее плавным.



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



В общем, освоить C++-модели очень даже стоит. В особенности это касается QAbstractItemModel, с которой мы и начнем.



Model-View в QML:


* [Model-View в QML. Часть нулевая, вводная][1]
* [Model-View в QML. Часть первая: Представления на основе готовых компонентов][2]
* [Model-View в QML. Часть вторая: Кастомные представления][3]
* [Model-View в QML. Часть третья: Модели в QML и JavaScript][4]
* Model-View в QML. Часть четвертая: C++-модели[Читать дальше →][5]

[1]: http://habrahabr.ru/post/181712/
[2]: http://habrahabr.ru/post/184416/
[3]: http://habrahabr.ru/post/190090/
[4]: http://habrahabr.ru/post/195706/
[5]: https://habrahabr.ru/post/302428/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Deployer — удобный и гибкий деплой приложений
habra.16
habrabot(difrex,1) — All
2016-06-02 13:30:03


Несомненно, тема, думаю, многими заезжена до дыр — всё-таки, деплой надо делать для _каждого_ проекта — но я всё же подниму её и расскажу об одном замечательном инструменте, о котором, по какой-то странной причине, до сих пор ничего не написали на Хабре, да и вообще в русскоязычном сегменте как-то о нём мало что написано. Исправим это недоразумение.



Deployer хорош во многих отношениях. Код скрипта для деплоя получается коротким. Написан на старом добром Пыхчанском, запакован в самоисполняемый бинарник — то бишь, ставить отдельно какие-то другие инструменты на сервер вам не придётся. Почему-бы и не заюзать его в своих проектах?

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

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

[>] Docker на службе команды .NET-разработчиков
habra.16
habrabot(difrex,1) — All
2016-06-02 13:30:03


[Docker][1] — инструмент автоматизации развертывания и управления приложениями в среде виртуализации на уровне операционной системы. Docker позволяет развертывать приложения в переносимых контейнерах и управлять такими контейнерами. Распространяется компанией Docker как свободное программное обеспечение.
Мы поговорили с Никитой Цукановым из компании  Promarket о том, в чем преимущества Docker и как его использовать для развертывания серверных приложений и управления ими.

[![][2]][3]

_**— В чём актуальность контейнерной виртуализации приложений, как она упрощает развертывание приложений и управление ими?**_

![][4] Корпоративные ИТ-команды очень часто сталкиваются с трудностями в развертывании приложений. Вполне «нормальна», к сожалению, ситуация, когда между разработчиками приложений и ИТ-администраторами отсутствует диалог, когда только один человек в компании знает, какие кнопки надо нажать, чтобы приложение развернулось, а администратор сам ничего сделать не может — потому что существует один-единственный человек, у которого есть сакральные знания о том, как нужно развертывать проект. Случается и такое, что нужно запустить, например, четыре разные версии (иногда почти одинаковые, но все же разные) на разных конфигурациях, на разных машинах, а потом это все поддерживать.

У меня довольно большой опыт подобных проектов, и я выделяю следующие основные проблемы с развертыванием приложений. Первая: очень длинная инструкция по развертыванию, очень сложный процесс развертывания, никто не понимает, что в каком порядке нужно развертывать. Вторая: одно приложение необходимо тиражировать для работы с разными клиентами. Третья: несколько серверных приложений должны работать на одном и том же сервере, и их окружение несовместимо между собой, к примеру, вы решили использовать у себя Linq2Excel, но он требует установки Access Database Engine, 32- и 64-битные версии которого не могут быть установлены одновременно.
[Читать дальше →][5]

[1]: https://www.docker.com/
[2]: https://habrastorage.org/files/a28/2eb/cc7/a282ebcc74cc4915a7e680237aeef74f.png
[3]: https://habrahabr.ru/company/jugru/blog/302254/
[4]: https://habrastorage.org/files/176/a54/ac5/176a54ac5ec34407a869f8879cddb8bf.png
[5]: https://habrahabr.ru/post/302254/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Дайджест KolibriOS #12
habra.16
habrabot(difrex,1) — All
2016-06-02 14:30:03


![][1]Очередной выпуска нашего дайджеста с описаниями изменений за последние 3 месяца. Срок короткий, но по событиям он оказался достаточно интересным. Подробности под катом.

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

[1]: https://habrastorage.org/getpro/habr/post_images/332/ac0/97c/332ac097cb7bfba245943a942c69f564.png
[2]: https://habrahabr.ru/post/302094/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Используем HTML и WebBrowser control в качестве UI для обычных windows-приложений на C#
habra.16
habrabot(difrex,1) — All
2016-06-02 14:30:03


Как известно, контрол WebBrowser это просто обертка над ActiveX компонентом Internet Explorer. Следовательно он предоставляет доступ к полноценному layout-движку со всеми современными плюшками. А раз так, то попробуем (сам не знаю правда зачем) на его основе сделать пользовательский интерфейс для обычного windows-приложения.

Можно, конечно, было бы запустить в этом же процессе мини веб-сервер (на HttpListener например) и ловить запросы через него, но это слишком просто, скучно и неспортивно. Попробуем обойтись без сетевых компонентов, just for fun.
[Читать дальше →][1]

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

[>] Динамический неоднородный плотно упакованный контейнер
habra.16
habrabot(difrex,1) — All
2016-06-02 15:00:03


**Определение 1**. _Однородный_ контейнер – это такой контейнер, в котором хранятся объекты строго одного типа.



**Определение 2**. _Неоднородный_ контейнер — это такой контейнер, в котором могут храниться объекты разного типа.



**Определение 3**. _Статический_ контейнер — это контейнер, состав которого полностью определяется на этапе компиляции.


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

**Определение 4**. _Динамический_ контейнер — это контейнер, состав которого частично или полностью определяется на этапе выполнения.



По такой классификации, очевидно, существуют четыре вида контейнеров:


1. Статические однородные
**Сможете придумать пример?**
Обычный массив — `int[n]`.

2. Статические неоднородные
**Примеры?**
Наиболее яркий пример такого контейнера — это кортеж. В языке C++ он реализуется классом `std::tuple`.

3. Динамические однородные
**Догадались?**
Правильно, `std::vector`.

4. Динамические неоднородные
Вот об этом виде контейнеров и пойдёт речь в данной статье.
[Читать дальше →][1]

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

[>] PHD VI: как у нас угнали дрона
habra.16
habrabot(difrex,1) — All
2016-06-02 21:00:02


[![][1]][2]

В этом году на [PHDays][3] был представлен новый конкурс, где любой желающий мог перехватить управление квадрокоптером Syma X5C. Производители часто полагают, что если они используют не IP-технологии, а какой-нибудь другой беспроводной стандарт, то можно не думать о защищенности. Как будто хакеры махнут рукой, решив, что разбираться с чем-то, кроме IP, — это слишком долго, сложно и дорого.

Но на самом деле, как мы уже много раз упоминали, SDR (software-defined radio) — отличный инструмент для доступа в мир IoT, где уровень вхождения определяется уровнем добросовестности производителя IoT-решений. Однако даже не имея SDR можно творить чудеса, пусть и в ограниченном пространстве частот и протоколов.

Цель — перехватить управление дроном.

Входные данные:

* диапазон управления дроном: 2,4 ГГц ISM,
* управление осуществляется модулем [nRF24L01+][4] (на самом деле — его клоном [BK2423][5]).
Средства (выдавались желающим): Arduino Nano, nRF24L01+.

Результат — угонщик получил Syma X8C в подарок.

Так как среди желающих угнать наш дрон оказались уже подготовленные люди, имеющие в арсенале HackRF, BladeRF и другие серьезные игрушки, мы опишем два метода — SDR и непосредственно nRF24L01+. [Читать дальше →][6]

[1]: https://habrastorage.org/files/69f/012/8be/69f0128be51549f9b59c97e5e171ab78.JPG
[2]: https://habrahabr.ru/company/pt/blog/302490/
[3]: http://www.phdays.ru/
[4]: https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P
[5]: http://www.inhaos.com/uploadfile/otherpic/BK2423 Datasheet v2.0.pdf
[6]: https://habrahabr.ru/post/302490/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях
habra.16
habrabot(difrex,1) — All
2016-06-03 02:30:03


![][1]


_Перевод поста Bernat Espigulé-Pons "[A Year of Runkeeper: Analysis and Visualization][2]".
Код, приведенный в статье, можно скачать [здесь][3], а дополнительные файлы [здесь][4].
Выражаю огромную благодарность Кириллу Гузенко [KirillGuzenko][5] за помощь в переводе и подготовке публикации_
----
Почти год назад я решил записывать все свои передвижения с помощью [Runkeeper][6], и теперь хочу представить несколько вариантов визуализации моей годовой активности. Проект получается несложным: данные по своим передвижениям я буду подгружать из Runkeeper, а анализировать/визуализировать — в [Wolfram Language][7]. В этой анимации (см.ниже) показаны мои передвижения по Барселоне, и я покажу вам, как сделать такую же.

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

[1]: https://habrastorage.org/files/8a0/b93/82d/8a0b9382dbaf47d49bed269625be6ec5.png
[2]: http://blog.wolfram.com/2015/12/04/a-year-of-runkeeper-analysis-and-visualization/
[3]: http://blog.wolfram.com/data/uploads/2015/12/A-Year-of-Runkeeper-Blog-Post.cdf
[4]: http://blog.wolfram.com/data/uploads/2015/12/runkeeper-data.zip
[5]: https://habrahabr.ru/users/kirillguzenko/
[6]: https://runkeeper.com/
[7]: https://www.wolfram.com/language/
[8]: https://habrastorage.org/getpro/habr/post_images/af1/3da/16a/af13da16afd29ec8a41929ce867d22ab.gif
[9]: https://habrahabr.ru/post/302462/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Повышение производительности мультимедиа приложений с помощью аппаратного ускорения
habra.16
habrabot(difrex,1) — All
2016-06-03 16:00:03


![][1]
Архитектура процессоров Intel становится все более ориентированной на ГП, что открывает удивительные возможности для резкого повышения производительности просто за счет разгрузки обработки мультимедиа с ЦП на ГП. Существует немало инструментов, доступных разработчикам для повышения производительности мультимедиа приложений. В числе этих инструментов есть бесплатные и простые в использовании.
В этой публикации вы найдете:
* Обзор вычислительных архитектур и текущие возможности ГП Intel
* Реализацию аппаратного ускорения с помощью FFmpeg
* Реализацию аппаратного ускорения с помощью [Intel Media SDK][2] или аналогичного компонента [Intel Media Server Studio][3] (в зависимости от целевой платформы)[Читать дальше →][4]

[1]: https://habrastorage.org/files/09c/ad0/38b/09cad038b65745609fd5e2c508e0835c.jpg
[2]: https://software.intel.com/en-us/media-sdk
[3]: https://software.intel.com/en-us/intel-media-server-studio
[4]: https://habrahabr.ru/post/301698/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] World of Tanks: от чего же зависит винрейт танков?
habra.16
habrabot(difrex,1) — All
2016-06-03 17:00:03


Сегодня мы поговорим об использовании Wargaming API, построим много графиков и проанализируем, от чего же зависит винрейт танков. Сразу хочу отметить, что я не гуру World of Tanks, и если я где-то ошибся, то напишите пожалуйста в комментариях.



![image][1]

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

[1]: https://habrastorage.org/files/ae1/f02/fbc/ae1f02fbc23f4c04acc5ed8c411e89ea.jpeg
[2]: https://habrahabr.ru/post/302536/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Как использовать Python для «выпаса» ваших неструктурированных данных
habra.16
habrabot(difrex,1) — All
2016-06-03 17:30:03


Здравствуйте, уважаемые читатели.

В последнее время мы прорабатываем самые разные темы, связанные с языком Python, в том числе, проблемы извлечения и анализа данных. Например, нас заинтересовала книга [«Data Wrangling with Python: Tips and Tools to Make Your Life Easier»][1]:

![][2]

Поэтому если вы еще не знаете, что такое скрепинг, извлечение неструктурированных данных, и как привести хаос в порядок, предлагаем почитать перевод интересной статьи Пита Тамисина (Pete Tamisin), рассказывающего, как это делается на Python. Поскольку статья открывает целую серию постов автора, а мы решили пока ограничиться только ею, текст немного сокращен.

Если кто-то сам мечтает подготовить и издать книгу на эту тему — пишите, обсудим.
[Читать дальше →][3]

[1]: http://www.amazon.com/Data-Wrangling-Python-Tools-Easier/dp/1491948817/
[2]: https://habrastorage.org/files/8f2/46d/392/8f246d3921444ac083f8f5e47e0a0ac1.jpg
[3]: https://habrahabr.ru/post/302520/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Device Lab от Google: Android TV
habra.16
habrabot(difrex,1) — All
2016-06-03 20:00:03


Мы в самом центре [Device Lab от Google][1], в которой вы сможете взять на тест самые новые устройства компании и начать разрабатывать свои приложения для них. В[прошлый раз][2] мы рассмотрели устройства Chromecast - аудиоверсию и большой Chromecast. Мы показали, как встраивать их поддержку в свои приложения, а сегодня речь пойдет уже о "большой" Android-платформе Google - Android TV.  [Читать далее][3]

[1]: http://bit.ly/1TRK4sv
[2]: https://habrahabr.ru/article/301902/
[3]: https://habrahabr.ru/post/302492/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 22: Microsoft против паролей, судебные неувязки с Tor, криптолокер атакует клиентов Amazon
habra.16
habrabot(difrex,1) — All
2016-06-03 20:00:03


![][1]Google хоронит пароли, а Microsoft — нет. Напомню, в предыдущем выпуске я [рассказал][2] про светлое будущее в виде проекта Google Abacus — спорную, но весьма прогрессивную систему идентификации пользователя по его поведению (aka _я помню все твои трещинки_). Почти одновременно к беседе о паролях присоединилась компания Microsoft, но выступила ([новость][3]), скажем так, с позиций традиционализма и ортодоксальности. Конкретно, [пост][4] в блоге разработчиков Active Directory посвящен борьбе не со всеми паролями, а только с плохими.

Microsoft можно понять: она работает на рынке корпоративного ПО, а там инновации приживаются убийственно медленно _(мимо дрожащих истерзанных рук_; да что у меня сегодня такое с песенными ассоциациями?!). Очевидно, что с абакусом или без него, с паролями мы будем иметь дело еще долго. Так вот, по словам представителя Microsoft, типовые подходы к обеспечению стойкости паролей, такие как требования к длине пароля, наличию спецсимволов и регулярной замене — не работают. Более того, они упрощают задачу взлома: огражденные со всех сторон заборчиками политик, пользователи задают и обновляют свои пароли крайне предсказуемым образом. Если, например, поставить забор повыше (задать порог минимум в 10-15 символов), сотрудники начинают повторять одно и то же слово несколько раз подряд. Не ок.

Как многолетний офисный труженик Ворда, не могу не согласиться. Браво! Но не уверен, что предлагаемое компанией решение порадует меня именно как сотрудника. Microsoft работает с огромным количеством учетных записей в куче пользовательских и корпоративных сервисов, и решила использовать информацию о том, как эти записи пытаются взломать (10 миллионов атак в день!). В результате мы получаем функцию Dynamically Banned Passwords. Будучи внедренной в корпоративном окружении, эта фича не позволит сотруднику задать пароль, про который точно известно, что он (1) слаб и что (2) злодеи уже пытались (возможно успешно) взломать такой же (или похожий) пароль где-то еще.
[Читать дальше →][5]

[1]: https://habrastorage.org/files/c85/f57/f2e/c85f57f2eac84503ab388f045672e955.jpg
[2]: https://habrahabr.ru/company/kaspersky/blog/301932/
[3]: https://threatpost.ru/microsoft-moves-against-bad-passwords/16437/
[4]: https://blogs.technet.microsoft.com/ad/2016/05/24/another-117m-leaked-usernames-and-passwords-new-best-practices-azuread-and-msa-can-help/
[5]: https://habrahabr.ru/post/302548/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Укол на миллиард долларов: худшие кошмары банков
habra.16
habrabot(difrex,1) — All
2016-06-03 20:00:03


![][1]

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

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

А где есть большие деньги? [Читать дальше →][2]

[1]: https://habrastorage.org/files/4e7/bbe/791/4e7bbe79181f42f795329de47d129ebe.jpg
[2]: https://habrahabr.ru/post/302524/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Разработка Docker контейнеров с помощью системы многоцелевых сценариев Sparrow
habra.16
habrabot(difrex,1) — All
2016-06-03 20:00:03


В этой статье я хотел бы рассказать как можно создавать сценарии сборки имиджей для [Docker][1] контейнеров с помощью системы многоцелевых сценариев [Sparrow\*][2].


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

[1]: https://www.docker.com/
[2]: https://github.com/melezhik/sparrow
[3]: https://habrahabr.ru/post/302278/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Как настроить двухфакторную аутентификацию для логина и sudo
habra.16
habrabot(difrex,1) — All
2016-06-04 01:30:03


![][1]

Безопасность в моде, как это и должно быть. Мы живем в мире, где данные — невероятно ценная валюта, которую вы всегда рискуете потерять. Поэтому вы должны сделать все, чтобы убедиться, что то, что вы держите на серверах и десктопах — в безопасности. Для этого администраторы и пользователи создают невероятно сложные пароли, используют менеджеры паролей и т.д. Но что, если я вам скажу, что вы можете логиниться на ваши серверы и десктопы Linux за два шага, вместо одного? Вы можете это делать благодаря Google Authenticator. Более того, это невероятно легко настроить.

Я собираюсь провести вас через процесс настройки двухфакторной аутентификации для использования ее на логине и _sudo_. Я продемонстрирую это на десктопной Ubuntu 16.04, но процесс также работает и для сервера. Чтобы справиться с двухфакторной стороной вещей, я буду использовать [Google Authenticator][2].
[Читать дальше →][3]

[1]: https://habrastorage.org/files/638/0ea/cdf/6380eacdf2c242c4bf9fde58fb009f1f.png
[2]: https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2
[3]: https://habrahabr.ru/post/302562/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Встраивание PyPy кода в приложения на C
habra.16
habrabot(difrex,1) — All
2016-06-05 13:30:03


![][1]
На конференции [PyGrunn 2016][2] я выступил с докладом о пакете Python _cffi_ и его использовании для встраивания PyPy кода в приложения на C.

С выходом _cffi 1.5.0_ и его последующим включением в PyPy 5, становится возможным встраивать PyPy код. Это делается путем компиляции кода Python в динамическую библиотеку, которая затем может быть использована в любом другом языке. В этой статье я покажу вам, как это делать.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/b1c/71c/b62/b1c71cb6299741fc9b60f3500f199c27.jpg
[2]: http://www.pygrunn.org/
[3]: https://habrahabr.ru/post/302050/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Взлом вконтакте: украдены данные 171 миллиона пользователей
habra.16
habrabot(difrex,1) — All
2016-06-06 12:00:03


![][1]

Издание Motherboard сообщило, что хакер по прозвищу Peace осуществил взлом популярной российской социальной сети, после чего разместил украденные данные на продажу.

По сообщению представителей соцсети — взлома не было, речь идет о старой базе, которую хакеры собирали в 2011–2012 годах.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/de0/d85/8a5/de0d858a5e734142873e2fed8369ae74.png
[2]: https://habrahabr.ru/post/302644/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Node-SPICE: Моделирование переходных процессов в электрической сети
habra.16
habrabot(difrex,1) — All
2016-06-06 13:00:04


Всем привет! Сегодня я хочу рассказать об одном своем проекте, который создавался как один из инструментов получения данных для диссертации, и так как на данный момент он свою основную задачу выполнил, я хочу пустить его в GPLv3-плавание — быть может, он будет полезен кому-то еще. Однако перед тем, как отдать швартовы, я решил воспользоваться профилировщиком Intel Vtune Implifier, чтобы убедиться в том, что мой пакет имитационного моделирования древовидной сети электроснабжения оптимально расходует вычислительные ресурсы компьютера.

[![][1]][2]

Под катом подробности про себя, про проект и про оптимизацию производительности (которую за полчаса удалось повысить более, чем в два раза)
[Читать дальше →][3]

[1]: https://habrastorage.org/files/df6/94a/6f5/df694a6f5ce9412cb1843c69a7dcaa89.jpg
[2]: https://habrahabr.ru/company/intel/blog/301684/
[3]: https://habrahabr.ru/post/301684/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Asus автоматически обновляет BIOS/UEFI по HTTP без верификации
habra.16
habrabot(difrex,1) — All
2016-06-06 14:00:03


![][1]

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

Вкратце: компьютеры с материнскими платами Asus [осуществляют запросы к удалённому серверу по HTTP][2] на регулярной основе. Причиной является программное обеспечение LiveUpdate, которое предустанавливается на компьютеры Asus. Оно отвечает за скачивание новых прошивок BIOS/UEFI и исполняемых файлов. Обновления поступают в архивах ZIP по чистому HTTP, распаковываются во временную папку, а исполняемый файл запускается от имени пользователя. Не происходит никакой верификации файлов или аутентификации при их загрузке, что позволяет провести MiTM-атаку и банальную эскалацию привилегий до `NT AUTHORITY\SYSTEM`.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/405/eef/c83/405eefc838af497193b1a48820436c9f.png
[2]: http://teletext.zaibatsutel.net/post/145370716258/deadupdate-or-how-i-learned-to-stop-worrying-and
[3]: https://habrahabr.ru/post/302660/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Docker meetup в Badoo
habra.16
habrabot(difrex,1) — All
2016-06-06 14:30:03


![][1]

У нас отличная новость! 18-го июня проводим Docker meetup.


#### **Программа**


**Антон Турецкий, Badoo

«Docker в Badoo: ПМЖ или временная регистрация»**

**Тезисы**:
— Реальная история из жизни о том, как мы внедряли Docker;
— Хочешь чтобы все коллеги узнавали тебя? Займись внедрением Docker в своей компании!;
— Собрать все шишки? Легко… или «Даунтайм, как неотъемлемая часть внедрения»;
— Будь сильным и смелым, если уверен в перспективах и необходимости своего внедрения;
— «Делать новое не ломая старого» – основная цель любого внедрения;
— Чекпоинт, как инструмент промежуточной оценки результатов;
— Как растут наши аппетиты или о новых инфраструктурных идеях;
— Мы сделали это, значит это вполне осуществимо;
— Самое сложное позади или какие приятные результаты вас ожидают, если все пошло правильно.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/a7d/024/231/a7d024231ca14c3da51a3e9b18821454.png
[2]: https://habrahabr.ru/post/302676/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Одновременное монтирование зашифрованных папок в Synology DSM
habra.16
habrabot(difrex,1) — All
2016-06-06 14:30:03


![][1]

Если у вас есть Synology и уровень вашей параноидальности >0, то наверняка вы используете зашифрованные папки. Основанная на encfs эта технология работает стабильно и не доставляет никаких неудобств. Кроме того случая, когда этих папок становиться 2-3, да еще каждая со своим паролем! Ведь по результатам исследований _британских ученых_, уровень параноидальности отдельного индивидума со временем только растет)
Соответственно, вводить 2-3 разных пароля после каждой, хотя и довольно редкой, перезагрузки устройства, начинает напрягать.
[Да, мне уже надоело вводить эти пароли!][2]

[1]: https://habrastorage.org/files/075/7b0/ca4/0757b0ca496c4fad8562c12fb1957b04.png
[2]: https://habrahabr.ru/post/302634/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] OAuth-авторизация в Mozilla Thunderbird: от зарождения до релиза
habra.16
habrabot(difrex,1) — All
2016-06-06 15:00:04


![][1]



Некоторое время назад мы рассказывали о том, [как в Mail.Ru реализован сбор почты с использованием протокола OAuth 2.0][2]. Мы продолжаем повышать безопасность почты и продвигать стандарт OAuth 2.0 в массы. И сегодня расскажем о том, как мы добавили OAuth-авторизацию в почтовый клиент Mozilla Thunderbird. На этом примере мы разберем процесс внесения новой фичи в продукт с открытым исходным кодом, от создания тикета до релиза. Если вы давно хотели сделать свой первый pull request, но не знали как, — читайте нашу историю.

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

[1]: https://habrastorage.org/files/4d3/cd5/26a/4d3cd526a9a3409895fab682dc247a13.jpg
[2]: https://habrahabr.ru/company/mailru/blog/264049/
[3]: https://habrahabr.ru/post/282319/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Фонтанные коды
habra.16
habrabot(difrex,1) — All
2016-06-06 15:00:04


Сегодня поговорим о [фонтанных кодах][1]. Их ещё называют «кодами нефиксированной скорости». Фонтанный код позволяет взять, например, какой-нибудь файл, и преобразовать его в практически неограниченное количество закодированных блоков. Имея некоторое подмножество этих блоков, можно восстановить исходный файл, при условии, что размер этого подмножества немного превышает размер файла. Другими словами, такой код позволяет создавать «фонтан» из кодируемых данных. Получатель может восстановить исходные данные, собрав достаточно «капель» из фонтана, при этом неважно – какие именно «капли» у него есть, и какие именно он пропустил.

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

[1]: http://en.wikipedia.org/wiki/Fountain_code
[2]: https://habrastorage.org/files/f94/cb2/99e/f94cb299e3594da6be19eedf0d602f19.jpg
[3]: https://habrahabr.ru/company/wunderfund/blog/302638/
[4]: https://habrahabr.ru/post/302638/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Опыт использования Liferay Portal в eСommerce
habra.16
habrabot(difrex,1) — All
2016-06-06 15:30:03


![][1]



Многие из нас уже не раз писали разного рода магазины. Но большие e-commerce проекты в быстро растущей и развивающейся компании разрабатывать приходится нечасто. К таким решениям предъявляются дополнительные требования, такие как конфигурируемость, адаптивность к изменениям, возможности встраивания в другие системы и прочее. Для написания такого решения компания Netcracker использовала Liferay Portal фреймворк. В итоге получили достаточно преимуществ, но и без проблем не обошлось.
[Подробнее под катом][2]

[1]: https://habrastorage.org/files/06e/a5b/738/06ea5b7388304b5bb31fe7bf9e0ba94f.jpg
[2]: https://habrahabr.ru/post/302538/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Подход игродела к созданию современных веб приложений
habra.16
habrabot(difrex,1) — All
2016-06-06 15:30:03


# Скучное вступление


Не так давно, мне довелось участвовать в разработке некоего программно-аппаратного комплекса для одной американской компании. Разрабатывал я бэкенд, немного фронтенд, сращивал устройства с облаком ([IoT][1] то бишь). Стек технологий был обозначен четко. Ни в право, ни в лево — enterprise, одним словом. В определенный момент меня перекинули в помощь на фронтенд POS (Point of Sale) веб приложения.


# Проблема. Становится интересней


Всё бы ничего, но веб приложение разрабатывалось для работы в 6 тыс. офисах по всей территории Америки (для начала). Где, как оказалось, с интернетом могут быть проблемы. Да да, в той самой, продвинутой Америке! Проблемы с покрытием не только проводного интернета, но и мобильной связью! Т.е. плохой интернет канал (часто, мобильный) — вполне себе обычная история для небольших американских городов.

А это же POS… Тут, понимаешь, клиенты стоят, надо инвойс быстро распечатать… Тормозов быть не должно! И livesearch… Были обсуждения, прикидки, в итоге — не стали грузить бэкенд запросами (трафик, опять же). Сошлись на том, что веб приложение должно по-максимуму подгружать данные и делать, тот же поиск, локально. Речь идет, конечно, о данных, размер которых позволяет это сделать.

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

[1]: https://en.wikipedia.org/wiki/Internet_of_Things
[2]: https://habrahabr.ru/post/302684/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Пишем свой канал-бот для Telegram как у Хабра на Python
habra.16
habrabot(difrex,1) — All
2016-06-06 16:00:04


Недавно ко мне обратился друг с просьбой написать бота, импортирующего новости из RSS-канала на сайте в Telegram-канал. Огромнейшим плюсом данного способа оповещения являются push-уведомления, которые приходят каждому подписанному пользователю на его устройство. Уже давно хотелось заняться чем-то подобным. Недолго думая, в качестве образца я выбрал канал Хабра [telegram.me/habr\_ru][1]. В качестве языка программирования был выбран Python.

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

[1]: http://telegram.me/habr_ru
[2]: https://habrahabr.ru/post/302688/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] На Amazon идёт война алгоритмов за позицию «лучшего» товара
habra.16
habrabot(difrex,1) — All
2016-06-06 17:00:04


![][1]
_В 2011 году два алгоритма, оставленные без присмотра, подняли цену книги до 23 миллионов долларов_

Amazon начал как книжный магазин в 1994 году, но к настоящему времени превратился в настоящего монстра интернет-торговли. На площадке продаётся что угодно. Самое удобное — там можно сравнить цены разных продавцов и выбрать наиболее подходящее предложение. Более того, алгоритм Amazon выполняет такое сравнение за нас и находит «оптимальное предложение» (“Buy Box”), остаётся только нажать кнопку «Добавить в корзину».

Никто не знает, как работает алгоритм Amazon: формула включает в себя не только цену, но и количество положительных отзывов, и что-то ещё. Проблема в том, что торговцы _активно манипулируют_ алгоритмом Amazon, чтобы попасть в заветный “Buy Box”. Причём задача торговца — не только попасть на оптимальную позицию, но и продать товар по максимально возможной цене, не теряя позицию. Наблюдать за битвой торговых ботов на Amazon с постоянными рывками цен весьма забавно: такое исследование провели специалисты из Северо-Восточного университета (США), [pdf][2].
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/932/04c/0a8/93204c0a820ed00f1306b4dc33c8cd19.png
[2]: http://www.ccs.neu.edu/home/cbw/pdf/amazon-www16.pdf
[3]: https://habrahabr.ru/post/302698/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Проверяем исходный код 7-Zip с помощью PVS-Studio
habra.16
habrabot(difrex,1) — All
2016-06-06 17:30:03


Одной из программ, которая позволяет решить задачу сжатия данных, является популярный файловый архиватор 7-Zip, я и сам частенько его использую. Читатели давно обращались к нам с просьбой проверить код данного приложения. Что ж, пришло время заглянуть в его исходники и посмотреть, что интересного сможет найти PVS-Studio.

![][1]

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

[1]: https://habrastorage.org/files/feb/328/b1f/feb328b1f6984c91b71b711b481a9c9d.png
[2]: https://habrahabr.ru/post/302708/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Установка связки Carbon + Graphite + Grafana + Nginx + MySQL для сбора и отображения метрик в Ubuntu
habra.16
habrabot(difrex,1) — All
2016-06-06 21:00:03


Хочу поделиться опытом установки и настройки сервиса для сбора и отображения метрик `Graphite` + `Grafana`.
Искал долго, читал много, нашёл 2 статьи на английском, добавил своё, в итоге получилась данная статья.



Немного предыстории..



`Graphite` — система для отображения метрик (числовых значений) для любых свойств сервера или домашнего ПК.



`Carbon` — демон/бэкенд, в который пишутся метрики.



`Grafana` — более красивая и удобная Web-морда для `Graphite`.



И так, приступим.

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

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

[>] Коммуникации в программировании — во сне и наяву
habra.16
habrabot(difrex,1) — All
2016-06-07 09:30:04


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

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

[1]: https://ru.wikipedia.org/wiki/%D0%92%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%B1%D0%B0%D1%88%D0%BD%D1%8F
[2]: https://habrastorage.org/files/f8d/5db/63f/f8d5db63f68b4187864b731e3a64df9a.jpg
[3]: https://habrahabr.ru/post/302704/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] О трехмерном Z-order замолвите слово
habra.16
habrabot(difrex,1) — All
2016-06-07 11:30:03


![][1]
«Давным-давно, кажется, в прошлую пятницу» автору попалась на глаза [статья][2], в которой сравниваются разные популярные методы индексации небесных объектов. По причине неровного дыхания к этой теме пришлось разбираться в тонкостях и делать выводы.

Вы спросите: «Кому вообще интересны эти небесные объекты?» и даже: «Ну и при чём здесь 2ГИС?» и будете отчасти правы. Ведь методы пространственного индексирования являются универсальной ценностью.

Обычно, имея дело с геоданными, мы работаем с локальной проекцией на плоскость и тем самым отмахиваемся от искажений. В масштабах планеты это сделать труднее — начинают выпирать астрономические проблемы.
Что касается объёмов данных, уже сейчас в OSM более 4 млрд точек и 300 млн дорог. Это соизмеримо с масштабами, характерными для звёздных объектов. Да и помимо всего прочего, звёздные атласы — отличный стенд для разработки и отладки пространственных алгоритмов.

Обещанные тонкости и выводы под катом.
[Читать дальше →][3]

[1]: https://habrastorage.org/files/87d/9d8/410/87d9d8410fee4c34ab060ffbb051cc35.png
[2]: http://skyview.gsfc.nasa.gov/xaminblog/index.php/tag/pgsphere/
[3]: https://habrahabr.ru/post/302606/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Дайджест интересных событий из мира Java, и вокруг нее #3 (23.05.2016 — 05.06.2016)
habra.16
habrabot(difrex,1) — All
2016-06-07 12:30:04


![image][1]


## В этом выпуске


— В битве **Google vs Oracle** поставлена жирная точка с запятой
— Вброс: **checked exceptions** не нужны, доказано!
— Учимся писать на ассемблере в Java-коде
… и многое другое
[Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/034/cfc/77a/034cfc77ac5e0b7e373cd5980dace4a6.jpg
[2]: https://habrahabr.ru/post/302734/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Humane VimScript: Инициализация редактора
habra.16
habrabot(difrex,1) — All
2016-06-07 12:30:04


# Введение



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



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



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

[Инициализировать][1]

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

[>] Client-side Linq to NHibernate
habra.16
habrabot(difrex,1) — All
2016-06-07 12:30:04


Практически любой .NET разработчик так или иначе использует в своей практике технологию Linq. Linq позволяет писать красивый и лаконичный код для получения объектов из источника данных с возможностью определения критериев получения и/или трансформации запрошенных объектов «на лету». Поддержка Linq присутствует практически во всех популярных ORM-фреймворках, в том числе и в NHibernate. NHibernate предоставляет Linq-провайдер, с помощью которого мы можем написать запрос на этапе разработки (Design-Time), но для того, чтобы составить запрос в runtime, придется повозиться с Reflection. Однако, если возникнет потребность в формировании запроса во внешнем процессе, например, в клиентской части сервиса, то в таком случае Reflection уже не спасет, клиентская часть, как правило, не знает (и не должна ничего знать) про серверный ORM.
Ниже мы разберем как создать API для написания Linq запросов к NHibernate в ситуации, когда запрос пишется в одном процессе, а выполняется в другом. Также, реализуем собственный IQueryProvider, который будет транслировать запросы из приложения-источника в исполняющее приложение.
[Читать дальше →][1]

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

[>] xfcRS — оригинальный лаконичный шустрый рендер сглаженных тайлов, «expansion fast cell — Rounded Squares»
habra.16
habrabot(difrex,1) — All
2016-06-07 12:30:04


![image][1]

xfcRS — многофункциональный быстрый алгоритм, для тайлового рендера с гладкими переходами / для построения изоповерхности / для выделения края в растре / для постпроцессинга как пиксельный шейдер — для пиксельарт масштабирования 8х8 (для быстрой растеризации шрифтов, иной материал для upscale'инга без доработок не рекомендуется). Расшифровка акронима — «eXpansion Fast Cell — Rounded Squares»

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

Забегая вперед, скажу сразу: это не улучшенный Marshing Squares, [Читать дальше →][2]

[1]: https://habrastorage.org/files/627/974/807/6279748079044210bee89f87a9f6afd9.jpg
[2]: https://habrahabr.ru/post/302756/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Обзор вариантов организации доступа к сервисам корпоративной сети из Интернет
habra.16
habrabot(difrex,1) — All
2016-06-07 12:30:04


[![][1]][2]
_© Кившенко Алексей, 1880_

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

[1]: https://habrastorage.org/files/247/b0a/41f/247b0a41fdf043b4ad25bf8987bb3987.jpg
[2]: https://habrahabr.ru/post/302068/
[3]: https://habrahabr.ru/post/302068/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Внедрение зависимостей в CDI. Часть 3
habra.16
habrabot(difrex,1) — All
2016-06-07 13:00:03


Если вы следите за этим блогом, то помните, что в последнее время я пишу (и [говорю][1]) о CDI ([Contexts and Dependency Injection][2]). У CDI много аспектов, но до сих пор я акцентировал внимание на том, как [начать работу с CDI][3] в вашем окружении и как [интегрировать CDI в существующее Java EE 6 приложение][4], а затем сфокусировался на внедрении зависимостей в CDI. Это уже третий пост про внедрение в CDI: в [первом][5] я рассказывал о внедрении по умолчанию и спецификаторах, во [второй][6] о всех возможных точках внедрения (поле, конструктор, сеттер). В этом посте я расскажу о **продюсерах** или "_как вы можете [типобезопасным][7] способом внедрять что угодно и куда угодно_".



![COFFEE_BEANS][8]

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

[1]: https://antoniogoncalves.org/2011/05/23/to-inject-or-not-to-inject-cdi-is-the-question/
[2]: http://jcp.org/en/jsr/summary?id=299
[3]: https://antoniogoncalves.org/2011/01/12/bootstrapping-cdi-in-several-environments/
[4]: https://antoniogoncalves.org/2011/02/07/adding-cdi-to-an-existing-java-ee-6-application/
[5]: https://habrahabr.ru/company/at_consulting/blog/301636/
[6]: https://habrahabr.ru/company/at_consulting/blog/301768/
[7]: https://ru.wikipedia.org/wiki/%D0%A2%D0%B8%D0%BF%D0%BE%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C
[8]: https://habrastorage.org/files/cbb/352/f3f/cbb352f3f8f147c49314e29041a80278.jpg
[9]: https://habrahabr.ru/post/302010/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Внедрение зависимостей в CDI. Часть 2
habra.16
habrabot(difrex,1) — All
2016-06-07 13:00:03


Это второй пост о внедрении зависимостей в CDI ([Часть 1][1]) после нашего разговора о том, как [начать работу с CDI][2] в вашем окружении и как [интегрировать CDI в существующее Java EE 6 приложение][3]. В этом посте я хочу рассказать о различных точках внедрения в CDI: **поле**, **конструктор** и **сеттер**. Для этого я буду использовать часть предыдущего примера: **внедрение POJO генератора ISBN в сервлет**.



![COFFEE_BEANS][4]

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

[1]: https://habrahabr.ru/company/at_consulting/blog/301636/
[2]: https://antoniogoncalves.org/2011/01/12/bootstrapping-cdi-in-several-environments/
[3]: https://antoniogoncalves.org/2011/02/07/adding-cdi-to-an-existing-java-ee-6-application/
[4]: https://habrastorage.org/files/987/527/93b/98752793bce149448549fee08a9f31ca.jpg
[5]: https://habrahabr.ru/post/301768/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Внедрение зависимостей в CDI. Часть 1
habra.16
habrabot(difrex,1) — All
2016-06-07 13:00:03


После статьи о том, как [начать работу с CDI][1] в вашем окружении и нескольких советов о том, как [интегрировать CDI в существующее Java EE 6 приложение][2], я хочу поговорить о внедрении зависимостей. Да, о простом внедрении или о том, **как провести внедрение одного бина в другой**. Из этой серии трех статей ([Часть 2][3], [Часть 3][4]) вы увидите, что есть множество различных способов: давайте начнем с самого простого — обыкновенного внедрения.



![COFFEE_BEANS][5]

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

[1]: https://antoniogoncalves.org/2011/01/12/bootstrapping-cdi-in-several-environments/
[2]: https://antoniogoncalves.org/2011/02/07/adding-cdi-to-an-existing-java-ee-6-application/
[3]: https://habrahabr.ru/company/at_consulting/blog/301768/
[4]: https://habrahabr.ru/company/at_consulting/blog/302010/
[5]: https://habrastorage.org/files/95f/dab/15d/95fdab15d0a84a9e9036d93c9308044a.jpg
[6]: https://habrahabr.ru/post/301636/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как я программирую на Python
habra.16
habrabot(difrex,1) — All
2016-06-07 13:00:03


Часто с началом нового проекта программист не в состоянии увидеть полную картину — он не знает с чего начать, где получить информацию, сколько ее получить, при этом есть шанс засесть за документацией надолго пока не пропадет желание что-либо делать. Я относительно часто делаю проекты «для души» в ранее незнакомых областях, например, программировал микроконтроллеры, делал свой segway, проектировал на ПЛИС свой микропроцессор, делал плагины под Counter-Strike, софт к купюроприемникам и другие проекты, в которых на старте был абсолютным нулем.

![][1]

[А недавно...][2]

[1]: https://habrastorage.org/files/c8d/c0a/b00/c8dc0ab00c9f4b8da2eda7551261b177.png
[2]: https://habrahabr.ru/post/302694/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Перчатки для тех, кто всё усложняет
habra.16
habrabot(difrex,1) — All
2016-06-07 15:30:11


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

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

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

[>] Как построить грамотную систему тестирования? Инсайты от QA-экспертов: видео и презентации с митапа в Wrike
habra.16
habrabot(difrex,1) — All
2016-06-07 16:00:03


Какие инструменты облачного тестинга используют в Яндексе? Как устроено тестирование в Badoo? Что представляет собой система автоматизированного frontend-тестирования в Wrike?

![][1]

Пару недель назад наш [Wrike Tech club][2] собрал около 150 специалистов по тестированию, чтобы обсудить в питерском офисе [компании][3] насущные, вечные и, на первый взгляд, почти неразрешимые проблемы QA в больших (и не очень) проектах. Как и обещали, делимся видео и презентациями со встречи.

[Смотреть][4]

[1]: https://habrastorage.org/files/979/76d/69a/97976d69ad4e46baa0fce11b902f3130.jpg
[2]: https://www.youtube.com/channel/UCu-RrZ8JmADlGZGO8d3OW5w
[3]: http://www.wrike.com/?utm_source=habrahabr&utm_medium=blogposts&utm_campaign=QAmeetup
[4]: https://habrahabr.ru/post/302798/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Самоконфигурирующиеся приложения
habra.16
habrabot(difrex,1) — All
2016-06-07 16:00:03


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

![][2]
_Фотку взял с [Yaplakal][3]_

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

[1]: https://ru.wikipedia.org/wiki/Непрерывная_интеграция
[2]: https://habrastorage.org/files/e66/7e5/4bd/e667e54bd4234602a9c48ce6960cb5ba.jpg
[3]: http://www.yaplakal.com/forum2/topic281720.html?sa=X&ved=0CCkQ9QEoADAPOChqFQoTCJuXpe-9-sYCFYjRFAodYdEBbg
[4]: https://habrahabr.ru/post/302726/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Lazarus: Кто стоит за атаками на систему банковских переводов SWIFT
habra.16
habrabot(difrex,1) — All
2016-06-07 19:00:04


[![][1]][2]

Межбанковская система SWIFT испытывает не лучшие времена. В феврале 2016 года, из-за несовершенства SWIFT, хакерам удалось вывести из Центробанка Бангладеш $81 млн — мы [писали об этой истории][3]. Впоследствии выяснилось, что это не единственный случай взлома SWIFT. Жертвой злоумышленников еще в январе 2015 года [стал][4] также эквадорский банк Banco del Austro в Эквадоре. Кроме того, обнародован факт о неудачной [атаке][5] на вьетнамский Tien Phong Bank из Вьетнама, о которой ранее не сообщалось.

Эксперты антивирусной компании Symantec [расследовали][6] участившиеся случаи взлома, чтобы понять, кто мог стоять за этими преступлениями и похищениями миллионов долларов у финансовых организаций со всего мира. [Читать дальше →][7]

[1]: https://habrastorage.org/files/d56/cf6/b96/d56cf6b964874b50a4ab6537974b0397.png
[2]: https://habrahabr.ru/company/itinvest/blog/302832/
[3]: https://habrahabr.ru/company/itinvest/blog/283382/
[4]: http://money.cnn.com/2016/05/20/news/swift-bank-attack-global-ecuador/?iid=EL
[5]: http://money.cnn.com/2016/05/13/news/swift-bangladesh-bank-sony-attack/?iid=EL
[6]: http://www.reuters.com/article/cyber-heist-swift-symantec-idUSL3N18N4NN
[7]: https://habrahabr.ru/post/302832/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Станет ли OpenStack «новым LAMP»?
habra.16
habrabot(difrex,1) — All
2016-06-07 19:30:03


Думаю, что каждый пользователь хабра, знает, что такое [LAMP][1]. Но для меня LAMP это не просто комплект (стэк) ОС Linux + Apache HTTP Server + MariaDB/MySQL + PHP/Python/Perl. Для меня это символ того, что открытое ПО может (и должно) быть причиной революционных изменений в ИТ-отрасли. Я уверен, что именно благодаря LAMP, появился интернет в его сегодняшнем виде. Без того, что скрывается за этими четырьмя буквами, не было бы Google, Facebook,… да и Habrahabr. Ну, по крайней мере, не было бы такими, какими мы их знаем. Только представьте себе, технологии, с помощью которых стало возможно создать [компанию с самой большой капитализацией в мире][2], появились всего-лишь 20-25 лет назад! ![][3] Когда я писал свой пост "[Почему Citrix не стала «новой Red Hat» на рынке виртуализации?][4]", я задумался о том, что серверная виртуализация могла бы стать ещё одной областью ИТ-технологий, где открытое ПО играет ключевую роль. К сожалению, этого (пока?) не произошло, однако [OpenStack, вероятно, сможет избежать ошибок][5], и стать стандартом де-факто для ЦОД. Или нет? Опрос после поста.
[Читать дальше →][6]

[1]: https://ru.wikipedia.org/wiki/LAMP
[2]: http://www.vesti.ru/doc.html?id=2715230
[3]: https://habrastorage.org/files/3b7/191/de0/3b7191de09c44beaa4481851eda2eb51.png
[4]: https://habrahabr.ru/post/279577/
[5]: https://habrahabr.ru/post/282734/
[6]: https://habrahabr.ru/post/302774/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Очередное крупное мошенничество с использованием платежных карт
habra.16
habrabot(difrex,1) — All
2016-06-07 20:30:04


В статье ноября 2015-го была описана ситуация с относительно новым видом мошенничества, с помощью которого преступники похищали деньги с банковских счетов: [Хакеры изобрели новую схему воровства денег, украв 250 млн. рублей][1]. Как именно происходило мошенничество, кратко:

_Преступник получал платёжную карту, пополнял её и тут же снимал внесённые деньги в банкомате, запрашивая чек. Далее данные о транзакциях отправлялись сообщнику, который имел доступ к зараженным POS-терминалам. Через терминалы, по коду операции, формировалась отмена снятия наличных. В результате баланс карты мгновенно восстанавливался и у злоумышленника появлялись «отменённые» деньги на счету. Преступники повторяли эти действия многократно, пока в банкоматах не заканчивалась наличка, модифицируя свою схему после исправления банками ошибки. Тогда было открыто несколько судебных дел в отношении виновных, «денежные мулы» были из Лондона, Украины, Латвии и Литвы._

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

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

[1]: https://habrahabr.ru/post/271211/
[2]: https://habrastorage.org/files/bcb/e61/dd7/bcbe61dd73874524b97131e47e89d7c6.jpg
[3]: https://habrahabr.ru/post/302836/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Web scraping на Node.js и проблемные сайты
habra.16
habrabot(difrex,1) — All
2016-06-07 23:30:03


![][1]Это вторая статья про создание и использование скриптов для веб-скрейпинга на Node.js.



В [первой статье][2] разбиралась простейшая задача из мира веб-скрейпинга. Именно такие задачи достаются веб-скрейперам в подавляющем большинстве случаев – получение данных с незащищённых HTML-страниц стабильно работающего сайта. Быстрый анализ сайта, HTTP-запросы при помощи [needle][3] (организованные при помощи [tress][4]), рекурсивный проход по ссылкам, DOM-парсинг при помощи [cheerio][5] – вот это вот всё.



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



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

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

[1]: https://habrastorage.org/files/aa6/c13/e2c/aa6c13e2c79e4aefb0fa46d896f7ed86.png
[2]: https://habrahabr.ru/post/301426/
[3]: https://github.com/tomas/needle
[4]: https://github.com/astur/tress
[5]: https://github.com/cheeriojs/cheerio
[6]: https://habrahabr.ru/post/302766/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Готовим простой блог на микросервисах, пишем свой микрофреймворк на php и запускаем все на Docker с примерами
habra.16
habrabot(difrex,1) — All
2016-06-08 00:00:04


А что если я скажу вам, что новый продукт можно сразу начинать писать на микросервисной архитектуре, а не заниматься распилом монолита? Это вообще нормально? Удобно? Хотите узнать ответ?



Задача: необходимо написать за выходные (время ограниченно 10-15 часами) сферический блог на микросервисах, на php, не используя никаких фреймворков. Можно пользоваться здравым смыслом. А еще забудем о том что такое фронтенд и вспомним что мы жить не можем без виртуализации. Выберем Docker. Интересно? Вперед под кат.


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

[1]: https://habrastorage.org/files/f7f/b56/6a3/f7fb566a3f724874bf53cdb8e3b37d7a.jpg
[2]: https://habrahabr.ru/post/302844/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 133