RSS
Pages: 1 ... 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 210
[>] Машинное обучение, предсказание будущего и анализ причин успеха в электронной коммерции
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

[>] Как мы делали сингл на Ubuntu Studio 14.04
habra.14
habrabot(difrex,1) — All
2015-02-27 16:00:03


![][1] От создателей [Как мы создавали сингл на _Ubuntu Studio 13.10_][2]. Второй сингл мы делали тоже на _Ubuntu Studio 13.10_, так не хотели новых приключений. И созрели к ним только к осени. Каемся, но _KXStudio_ так и не попробовали. По




Так что ждём статей про этот дистрибутив от других хаброюзеров. [Читать дальше →][3]

[1]: //habrastorage.org/files/780/198/06f/78019806f2c74a48a028c8c8691460dc.jpg
[2]: http://habrahabr.ru/post/206204/
[3]: http://habrahabr.ru/post/250357/#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 — в заданиях NeoQUEST-2014!
habra.14
habrabot(difrex,1) — All
2015-02-27 17:30:03






Совсем скоро стартует отборочный тур NeoQUEST-2015, и в качестве подготовки к нему предлагаем вместе с нами разобрать задания очного тура NeoQUEST-2014! Мы уже [рассказали][1], как прошел NeoQUEST-2014, поделились материалами докладов и фотографиями (возможно, на них кто-то даже нашел себя!). Теперь расскажем о той таинственной и скрытой от глаз зрителей, но важнейшей части NeoQUEST — соревновании специалистов по кибербезопасности, оказавшихся лучшими по итогам февральского онлайн-тура. Очная ставка для участников включала в себя 5 заданий, однако одно из них не прошел никто. В этой статье разберем пройденные четыре:

* **«Am I Joker?»** — занимаемся конкурентной разведкой, применяя всю информацию о пользователе, которую удалось достать из соцсетей, выходим на сторонний сайт и эксплуатируем его уязвимость;
* **«Неожиданная находка»** — есть компьютер и флешка, но нет ни мышки, ни клавиатуры? Не беда, ведь флешка не простая, а с SecureDrive, и один из ее разделов компьютер может определить как компакт-диск;
* **«Глазам своим не верь ты»** — как найти на компьютере вредоносную программу, скрывающую свою сетевую активность, а заодно и файлы на диске?
* **«Кадры решают все»** — коннектимся к веб-серверу, который неожиданно оказывается поднят на телефоне с ОС Android, и формируем специальный jar, чтобы получить ключ.

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

[1]: http://habrahabr.ru/company/neobit/blog/230579/
[2]: http://habrahabr.ru/post/239089/#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

[>] [Из песочницы] Запуск SQL запросов в SAP
habra.14
habrabot(difrex,1) — All
2015-02-27 18:00:03


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

[1]: //habrastorage.org/files/358/fc0/6ea/358fc06ea30840b3a73aded2a3602cc2.jpg
[2]: http://habrahabr.ru/post/251665/#habracut

[>] [Из песочницы] «Реверс-инжиниринг» клиентского приложения в образовательном центре
habra.14
habrabot(difrex,1) — All
2015-02-28 03:00:02


Привет, Хабр. Хочу поделиться историей из жизненного опыта. Несколько месяцев назад я записался на платные курсы по изучению языка программирования JavaScript в прекрасном городе Минск. Потратил около недели времени на подробное изучение отзывов о каждой из компаний на рынке, сравнивал цены на услуги и местоположение относительно моего дома. Наконец, выбрав «достойного» кандидата, направился к ним в офис для заключения договора. В общем, прошел я начальный инструктаж, получил расписание занятий и содержание всего курса и с радостью приступил к делу. [Читать дальше →][1]

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

[>] [recovery mode] Анонс MongoDB 3
habra.14
habrabot(difrex,1) — All
2015-02-28 11:30:03


Как-то незаметно прошел анонс новой версии MongoDB. Изменение номера версии с 2 на 3 указывает на значительные изменения внутри базы данных. Разработчики заявляют о значительном увеличении производительности и более лучшей маштабируемости. Немного подробнее под катом. ![image][1] [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/40a/b7d/103/40ab7d103d0cad942a7c50b1d25ad660.jpg
[2]: http://habrahabr.ru/post/251745/#habracut

[>] [recovery mode] Работы по модернизации эксплорера в ReactOS завершены
habra.14
habrabot(difrex,1) — All
2015-02-28 16:00:02


![image][1] Коммитом [66418][2] была фактически завершена основная часть работ по модернизации графической оболочки ReactOS, и теперь она очень сильно напоминает файловый эксплорер из Windows 2000. После этого Giannis Adamopoulos посчитал работу над новым проводником в целом завершённой и закрыл баг-репрорт класса «эпик» [CORE-7330][3]. Основной разработчик новой оболочки, David Quintana, помимо контрактных денег получил ещё и постепенно собранные через [Bountysource 100$][4]. [Скриншоты][5]

[1]: http://habrastorage.org/getpro/habr/post_images/941/1ee/f9c/9411eef9cbadb36a009a1dab5bd5931d.jpg
[2]: https://code.reactos.org/changelog/reactos?cs=66418
[3]: https://jira.reactos.org/browse/CORE-7330
[4]: https://www.bountysource.com/issues/1607399-shell-rework
[5]: http://habrahabr.ru/post/251757/#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

[>] Отзыв команды PVS-Studio о конференции C++ Russia, 2015
habra.14
habrabot(difrex,1) — All
2015-03-01 01:00:02


![][1] Два с половиной часа в поезде – прекрасное время для того, чтобы написать благодарность организатору конференции Сергею Платонову ([sermp][2]) и его команде за то, что наконец-то в России появилась конференция про C++! Заслуги Сергея поистине впечатляют, учитывая то, что он не обладал бюджетами Microsoft и Intel. Однако оказалось, что главное не бюджет, а желание и энтузиазм. Поэтому собранные Сергеем докладчики были выше всяческих похвал, иностранные гости – крайне общительны и любезны. А на стендах JetBrains, IncrediBuild, Kaspersky и PVS-Studio собрались не говорящие головы, а профессионалы, с которыми интересно было общаться и гостям, и соседям по стенду. Наши личные впечатления – под катом. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/016/d54/02d/016d5402db27f7dc79b5039f430af358.png
[2]: http://habrahabr.ru/users/sermp/
[3]: http://habrahabr.ru/post/251777/#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

[>] Дайджест KolibriOS #7: как мы зиму перезимовали
habra.14
habrabot(difrex,1) — All
2015-03-01 02:30:03


![][1]Зима в проекте КолибриОС выдалась на редкость плодотворной: добавлено много мелких, но очень полезных в повседневной работе программ; улучшен пользовательский интерфейс некоторых существующих программ; исправлены ошибки в сетевой и звуковой подсистеме; и многое другое. Кроме того, зимой мы провели [новогодний конкурс][2] по написанию игр под нашу операционную систему. В сумме было написано 10 игр, о которых вы можете прочитать [здесь][3]. Подробности всех изменений и исправлений под катом. [Читать дальше →][4]

[1]: http://habrastorage.org/getpro/habr/post_images/332/ac0/97c/332ac097cb7bfba245943a942c69f564.png
[2]: http://habrahabr.ru/company/kolibrios/blog/243081/
[3]: http://habrahabr.ru/company/kolibrios/blog/247601/
[4]: http://habrahabr.ru/post/239033/#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

[>] [recovery mode] Фриланс — маленький резерв большого аутсорсинга
habra.14
habrabot(difrex,1) — All
2015-03-01 05:00:02


Сервисом top$dev было проведено исследование стран Восточной Европы по собственной методике на основе данных крупнейших фриланс-бирж (oDesk, Elance, Freelancer и других): более 88 тысяч профилей фриланс-разработчиков и 260 тысяч проектов на общую сумму более $350 млн. Краткие выводы: [Читать дальше →][1]

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

[>] Сделай сам: MSc Computer Science на уровне топ американских университетов из дома
habra.14
habrabot(difrex,1) — All
2015-03-01 14:30:02




#### Вступление

Давно хотел написать статью про образование в Computer Science, но руки не доходили. Решил все-таки это наконец сделать. Итак, о чем пойдет речь? Речь о том, что из себя представляет диплом MSc Computer Science топовых университетов США (во всех подробностях, включая основные курсы, книги и проекты) и как ему соответствовать. Почему именно MSc? Это — некая развилка: с одной стороны после MSc — вы уже готовый к жизни инженер (да, речь идет о инженерной подготовке, как мне кажется это самое больное место в нашей системе образования), с другой — можно спокойно идти по пути PhD. Как известно, в PhD программу можно попасть и не особо умея программировать — особенно это касается теоретического Computer Science. С другой стороны найти работу программиста тоже дело не очень сложное, и часто не требует мощного образования. Но достигнув уровня MSc — вы получаете возможность разбираться как во всех новый идеях в Computer Science, так и возможность их воплотить в практику. То есть с одной стороны круто разобраться в каком-нибудь deep learning и сделать в нем что-то новое, а также взять и написать свою операционную систему (кто так сделал?). Причем вы не зажаты в рамки узкой специализации (если конечно продолжаете учиться). То есть вы теперь — универсальный солдат, готовый на все. Надеюсь что эта статья будет полезна: 1. Студентам, которые хотят соответствовать высоким стандартам топ вузов США, или собирающиеся туда в аспирантуру по Computer Science 2. Профессионалам, которые хотят закрыть «дыры» и пробелы 3. Может кто-то из преподавателей возьмет на заметку для своих курсов. 4. Студентам, аспирантам американских вузов — хотелось бы тоже получить фидбэк, особенно касается последних трендов в образовании Что же здесь будет написано? Минимум философии и общих мыслей: конкретная программа undergraduate и graduate курсов, конечно из дисциплин наиболее мне близких. Все курсы были лично прочувствованы на собственной шкуре, по этому и пишу. (Я пытался записаться на все интересные курсы, которые были, но мой основной упор — системное программирование, базы данных и искусственный интеллект. Отсюда конечно некий bias, но пытаюсь предложить более-менее универсальную программу). [Читать дальше →][1]

[1]: http://habrahabr.ru/post/251747/#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

[>] Философия программирования 5 — Колибри и Реактос
habra.14
habrabot(difrex,1) — All
2015-03-01 15:00:03


Кто умеет копировать, тот умеет ДЕЛАТЬ. Это сказал Леонардо да Винчи. Видите ли, вы исходите из своих представлений, о том, что такое ХР, винда, операционка. Люди как рассуждают: — Мне было ещё мало лет у меня стояла ХР, вот были золотые деньки, но тепереча не то, что давеча. Новые времена, современное ПО. Не понимаю, зачем копаться в старье? Вы бы хоть делали клон десятой винды, но куда с вашей то скоростью, вы его сделаете лет через 100. Но если люди копируют старое ПО, это ещё не значит, что они ретрограды или некрофилы. Во-первых они это делают сейчас, находясь в современных условиях, зная все тенденции и направления. Во-вторых, устаревание софта вообще вещь крайне контр-интуитивная. Например, в самых современных приложениях есть куски кода написанные более двадцати лет назад, и, заметьте, — никто не собирается их переписывать. Это информация, она не изнашивается, как изнашиваются метал или дерево. Но людям свойственно своё бытовое восприятие переводить на вещи нематериальные и требующие совершенно иного взгляда. Понимаете? Информация. Это не вещь. Сравнивайте со стихами Пушкина. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/251793/#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

[>] Проверка проекта LibreOffice
habra.14
habrabot(difrex,1) — All
2015-03-01 18:00:02


![][1] Предлагаем читателю очередную статью о проверке известного open-source проекта. В этот раз мы проверили проект LibreOffice, представляющий собой офисный пакет. В его разработке принимает участие более чем 480 программистов. Код оказался весьма качественным и регулярно проверяемым статическим анализатором Coverity. Но, как и в любом другом большом проекте, были найдены новые ошибки и недочеты, о которых мы и расскажем в статье. Для разнообразия, в этот раз нас будут сопровождать не единороги, а коровы. [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/535/cb5/fb5/535cb5fb57b5f402a36685444634f1a4.png
[2]: http://habrahabr.ru/post/251817/#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

[>] [Перевод] Доказательство некорректности алгоритма сортировки Android, Java и Python
habra.14
habrabot(difrex,1) — All
2015-03-01 18:30:02


Тим Петерс разработал [гибридный алгоритм сортировки Timsort][1] в 2002 году. Алгоритм представляет собой искусную комбинацию идей сортировки слиянием и сортировки вставками и заточен на эффективную работу с реальными данными. Впервые Timsort был разработан для Python, но затем [Джошуа Блох][2] (создатель коллекций Java, именно он, кстати, отметил, что [большинство алгоритмов двоичного поиска содержит ошибку][3]) портировал его на Java (методы java.util.Collections.sort и java.util.Arrays.sort). Сегодня Timsort является стандартным алгоритмом сортировки в Android SDK, Oracle JDK и OpenJDK. Учитывая популярность этих платформ, можно сделать вывод, что счёт компьютеров, облачных сервисов и мобильных устройств, использующих Timsort для сортировки, идёт на миллиарды. Но вернёмся в 2015-й год. После того как мы успешно верифицировали Java-реализации [сортировки подсчётом][4] и [поразрядной сортировки][5] ([J. Autom. Reasoning 53(2), 129-139][6]) нашим инструментом формальной верификации под названием [KeY][7], мы искали новый объект для изучения. Timsort казался подходящей кандидатурой, потому что он довольно сложный и широко используется. К сожалению, мы не смогли доказать его корректность. Причина этого при детальном рассмотрении оказалась проста: в реализации Timsort есть баг. Наши теоретические исследования указали нам, где искать ошибку (любопытно, что ошибка была уже в питоновской реализации). В данной статье рассказывается, как мы этого добились. Статья с более полным анализом, а также несколько тестовых программ доступны на [нашем сайте][8]. [Читать дальше →][9]

[1]: http://ru.wikipedia.org/wiki/Timsort
[2]: http://en.wikipedia.org/wiki/Joshua_Bloch
[3]: http://habrahabr.ru/post/203398/
[4]: https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D0%BE%D0%B4%D1%81%D1%87%D1%91%D1%82%D0%BE%D0%BC
[5]: https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D0%B0%D0%B7%D1%80%D1%8F%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0
[6]: http://link.springer.com/article/10.1007%2Fs10817-013-9300-y
[7]: http://www.key-project.org/
[8]: http://www.envisage-project.eu/timsort-specification-and-verification/
[9]: http://habrahabr.ru/post/251751/#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

[>] Лекции Технопарка. 1 семестр. Алгоритмы и структуры данных
habra.14
habrabot(difrex,1) — All
2015-03-01 19:00:02


Очередной пост в рамках нашего цикла [лекций Технопарка][1]. В этот раз мы предлагаем вашему вниманию курс, посвящённый алгоритмам и структурам данных. Автор курса — Степан Мацкевич, сотрудник компании ABBYY.

#### **Лекция 1. Основы**

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




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

[1]: http://habrahabr.ru/search/?q=%5B%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8%20%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BF%D0%B0%D1%80%D0%BA%D0%B0%5D&target_type=posts
[2]: http://habrahabr.ru/post/251561/#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

[>] Опасности использования open-uri
habra.14
habrabot(difrex,1) — All
2015-03-01 21:00:03


[OpenURI в руби это стандартная библиотека сильно упрощающая работу с URL][1] так как она объеденяет в себе Net:HTTP/HTTPS/FTP и представляет из себя всего лишь метод open. Насколько я знаю это самый популярный способ для скачивания файла, GET запроса или чтения данных. Но на деле `require "open-uri"` патчит [Kernel.open][2] и вызывает разный код для разных аргументов, что может привести к удаленному выполнению кода или чтению любого файла на сервере! `open(params[:url])` это выполнение кода для url=`|ls` Все что начинается с | рассматривается как системный вызов. `open(params[:url]) if params[:url] =~ /^http://` не лучше для url=`|touch n;\nhttp://url.com` ([сломанные регулярки могут привести к RCE, используйте \\A\\z][3]). [Читать дальше →][4]

[1]: http://ruby-doc.org//stdlib-1.9.3/libdoc/open-uri/rdoc/OpenURI.html
[2]: http://ruby-doc.org//core-2.2.0/Kernel.html#method-i-open
[3]: http://homakov.blogspot.com/2012/05/saferweb-injects-in-various-ruby.html
[4]: http://habrahabr.ru/post/251823/#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

[>] [Перевод] Krita 2.9: Черновые профили кистей, заблокированные настройки и накопительная отмена
habra.14
habrabot(difrex,1) — All
2015-03-01 21:30:02


В только что вышедшем релизе Krita 2.9 был реализован один из проектов, выполенных в рамках Google Summer of Code 2014, над которым работал студент из Индии Мохит Гоял (Mohit Goyal). Это был достаточно сложный проект, поэтому предлагаем Вам краткое руководство по использованию новых функций: черновые профили кистей, заблокированные настройки и накопительная отмена!



Перевод статьи: [Ксения Кузяева][1] [Читать дальше →][2]

[1]: http://vk.com/trapezzo
[2]: http://habrahabr.ru/post/251803/#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

[>] [recovery mode] Nyan Cat с музыкой в 1023 байта на Wct
habra.14
habrabot(difrex,1) — All
2015-03-01 21:30:02


Здравствуйте. Сегодня я хотел бы показать вам небольшой timelapse кодинг на Wct (1023 байта). Накодил я Nyan cat-a в машинных кодах на системе счисления Wct с музыкой в 1023 байта. Ссылка на GitHub: [github.com/Mihip/Wct][1] Исходники: [pastebin.com/xTwp9w1V][2]




Спасибо за просмотр! Добра тебе! [][3]

[1]: https://github.com/Mihip/Wct
[2]: http://pastebin.com/xTwp9w1V
[3]: http://habrahabr.ru/post/251825/#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

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


![][1] Как-то раз, бороздя просторы интернета в поисках новых идей, я наткнулся на статью на Хабре [Как мы написали helpdesk][2]. В данной статье было описание системы очень похожей на ту, которую я создаю уже больше полугода. И я решил о ней написать.

## Поставленные задачи:



* Вся работа специалистов сводится к работе по заявкам
* Разные типы проблем для заявок
* Разные специалисты, решающие разные типы проблем заявок
* Наличие диспетчеров, распределяющих заявки специалистам
* Ведение временного учета по занятости специалистов
* Отчеты по заявкам и о занятости специалистов
* Возможность отказываться или переназначать заявку
* Создание занятости специалистом без привязки к заявке
* Поддержка OS Linux/FireFox 2.0 (~ 90% всех пользователей)
* БД — Sybase SQL Anywhere 11, PHP — 5.3

[Подробное описание созданной системы][3]

[1]: //habrastorage.org/files/f82/d8d/c87/f82d8dc8778047c8a1f8363b8a817904.jpg
[2]: http://habrahabr.ru/post/227277/
[3]: http://habrahabr.ru/post/251657/#habracut

[>] Автоматическое тестирование Java Swing приложений
habra.14
habrabot(difrex,1) — All
2015-03-02 12:00:02


![][1] Добрый день! Полтора года назад моей команде пришлось протестировать Java Swing приложение, которое могло иметь разные визуализации, натянутые на общий процесс. Статей тогда по этой теме было немного, конкретные решения отсутствовали вообще. TestComplete и прочие скриптовые технологии (да простят меня сторонники TestComplete) использовать не хотелось, так как приложение должно иметь гибкую архитектуру, расширяемую и изменяемую в рамках Agile процесса. Сутки поиска в Google, анализ десятков примеров и технологий привели меня к двум возможным вариантам:

* Fest
* Jemmy

Не погружаясь в глубины глубин сравнения, я выбрал Fest библиотеку. С её помощью и, конечно, Junit, Mockito мы начали тестировать наше приложение. Об этом и расскажу ниже. [Читать дальше →][2]

[1]: //habrastorage.org/files/617/481/132/61748113277a4eefa4f70e37833c6b98.png
[2]: http://habrahabr.ru/post/251339/#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

[>] Пишем бота для MMORPG с ассемблером и дренейками. Часть 4.5
habra.14
habrabot(difrex,1) — All
2015-03-02 12:00:02


Привет %username%! Сделаем небольшую остановку, что бы расставить все точки над «и», понять что к чему и как работает. За последнее время, я получил очень много вопросов связанных с офсетами для различных версий World of Warcraft, множество предложений по способам реализации инъекции сторонних инструкций в игровой процесс и теперь настало время это все обсудить. Если есть вопросы или предложения, добро пожаловать под кат! [Читать дальше →][1]

[1]: http://habrahabr.ru/post/251841/#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

[>] Пишем бота для MMORPG с ассемблером и дренейками. Часть 4
habra.14
habrabot(difrex,1) — All
2015-03-02 13:00:03


![][1] Привет, %username%! Итак, продолжим написание нашего бота. Из прошлых статей, мы научились находить адрес перехватываемой функции для DirectX 9 и 11, исполнять произвольный ассемблерный код в главном потоке игры скрывая его от различных методов защиты и получать информацию об окружающем мире. Другими словами, мы можем совершать осознанные действия в игре. И для начала я предлагаю научиться передвигаться! [I like to move it, move it!][2]

[1]: //habrastorage.org/files/708/53f/a39/70853fa39f3f4d4f82bc6525a2ebc41f.png
[2]: http://habrahabr.ru/post/251479/#habracut

[>] Безопасная Cisco
habra.14
habrabot(difrex,1) — All
2015-03-02 15:00:03


Всем привет! Многие из вас видели и читали прекрасные материалы под общим названием «Сети для самых маленьких». Собственно, я не претендую на лавры, но решил написать нечто подобное в области безопасности сети на основе оборудования Cisco. Первый материал будет посвящен BaseLine/L2 Security, т.е. тем механизмам, которые можно использовать при начальной конфигурации устройств а также на L2 коммутаторах под управлением IOS. Всем, кому интересно, поехали! [Читать дальше →][1]

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

[>] [recovery mode] Сравнение Android-приложений для шифрования данных
habra.14
habrabot(difrex,1) — All
2015-03-02 16:00:02


Цель данной статьи — сравнить три Android-приложения для шифрования данных — LUKS Manager, Cryptonite и CyberSafe Mobile. Сразу нужно отметить, что сравнение будет честное, а не с целью выделить преимущества той или иной программы. У каждой программы есть свои достоинства и недостатки, в этой статье они будут раскрыты в полном объеме. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/699/9b8/2cc/6999b82cc4f849b19648d3bb75ba831a.jpg
[2]: http://habrahabr.ru/post/251889/#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

[>] Как я поехал учиться в Сингапур бесплатно
habra.14
habrabot(difrex,1) — All
2015-03-02 17:00:03


Привет, я студент совместной программы [Национального Университета Сингапура][1] ([13 место][2] по версии Times Higher Education) и [Университета Иннополис][3] по направлению **Информационная и коммуникационная безопасность**. В данной заметке хочу рассказать о том, как я попал на эту программу, о моих первых впечатлениях о Сингапуре и обучении там. Если интересно, добро пожаловать под кат [много фото!]. ![][4] [Читать дальше →][5]

[1]: http://www.nus.edu.sg/
[2]: http://www.timeshighereducation.co.uk/world-university-rankings/2014-15/subject-ranking/subject/engineering-and-IT
[3]: http://university.innopolis.ru/
[4]: //habrastorage.org/files/c29/047/32f/c2904732fc674fedaa2f41796532a5d0.jpg
[5]: http://habrahabr.ru/post/251901/#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

Pages: 1 ... 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 210