RSS
Pages: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37
[>] Поиск множества регулярных выражений при помощи библиотеки Hyperscan
habra.15
habrabot(difrex,1) — All
2016-01-19 20:00:04


В данной статье я бы хотел рассказать о собственном опыте оптимизации выполнения множества регулярных выражений при помощи системы [hyperscan][1]. Так вышло, что при разработке своего спам-фильтра [rspamd][2] я столкнулся с необходимостью портировать большой объем старых правил, написанных для spamassassin за несколько лет работы. Моим первым решением было написать [плагин][3], который бы читал эти правила и строил из них синтаксическое дерево. Затем на этом дереве выполнялись различные оптимизации, чтобы сократить общее время выполнения (об этом я даже делал небольшую [презентацию][4]). К сожалению, в ходе эксплуатации выяснилось, что pcre все равно являются узким местом, и на больших письмах этот набор правил работает слишком медленно. Выяснилось, например, что на письме размером в мегабайт pcre проверяет около гигабайта (!) текста. Различные трюки, вроде ограничения количества текста для регулярных выражений, оказывали негативное влияние на срабатывания правил, а оптимизации pcre путем интенсивного использования jit fast path через **pcre\_jit\_exec** оказались слишком опасными — некоторые старые выражения были откровенно некорректными и в сочетании с некорректным входным текстом, например, содержащим «битые» UTF8 символы, приводили к воспроизводимым багам с повреждением стека программы. Однако на конференции [highload][5] мы поговорили со Славой Ольховченковым, и он мне посоветовал посмотреть на hyperscan. Далее я перейду к сути и расскажу, что из этого получилось. [Читать дальше →][6]

[1]: https://github.com/01org/hyperscan
[2]: https://rspamd.com
[3]: https://rspamd.com/doc/modules/spamassassin.html
[4]: https://highsecure.ru/ast-rspamd.pdf
[5]: http://highload.ru
[6]: http://habrahabr.ru/post/275507/#habracut

[>] Небезопасный способ авторизации в GitLab CE с использованием LDAP аккаунтов и метод устранения уязвимости
habra.15
habrabot(difrex,1) — All
2016-01-19 20:00:04


При эксплуатации системы GitLab CE на своем предприятии (имеющему большую филиальную структуру), была обнаружена уязвимость, которая может привести к получению полного доступа к аккаунту любого пользователя системы администраторами филиалов предприятия. Проблема выявлена в подсистеме LDAP-аутентификации пользователей. Дело в том, что основной сущностью, с использованием которой происходит авторизация в GitLab является E-Mail пользователя. Однако при входе пользователей в GitLab с использованием LDAP процесс аутентификации/авторизации происходит следующим образом:

* Пользователь вводит на странице Sign-In системы свои имя/пароль из службы каталогов LDAP (Active Directory).
* GitLab, используя введенные данные аккаунта производит аутентификацию пользователя в LDAP.
* В случае успешной аутентификации GitLab считывает из атрибута MAIL аутентифицированного аккаунта адрес электронной почты и авторизует по нему в GitLab без всяких дополнительных проверок

. В результате, например, «нехороший» системный администратор «филиала A», может используя свои полномочия, к примеру в Active Directory, создать в своем OU **«Филиал А»** любого пользователя (например** hackuser**) и записать в его LDAP-атрибут **MAIL** адрес электронной почты пользователя любого другого филиала, на который даже не распространяются полномочия этого администратора. После этого «нехороший» администратор «Филиала А» может авторизоваться пользователем **hackuser** в системе GitLab, при этом в результате авторизации будет получен полный доступ к аккаунту пользователя, имеющего адрес электронной почты установленный «нехорошим» администратором для **hackuser**. [Читать дальше →][1]

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

[>] Хостер FirstVDS оставил ключ доступа по SSH в поставляемых клиентам VDS
habra.15
habrabot(difrex,1) — All
2016-01-20 02:30:02


Хостер FirstVDS (у них есть [блог на хабре][1]) поставляет VDS своим пользователям с вот таким вот содержимым файла /root/.ssh/authorized\_keys:



Т.е. это даёт возможность получать доступ через SSH к арендуемым пользователями VDS тем личностям, которые установили этот ключ. Комментарий в файле гласит, что этот ключ — для доступа техподдержки. При этом никакого оповещения пользователю не выдаётся. В [базе знаний][2] ответа тоже не нашлось. Решил написать в техподдержку для разъяснения этой ситуации и получил вот такой ответ: [Читать дальше →][3]

[1]: http://habrahabr.ru/company/first/
[2]: https://firstvds.ru/technology
[3]: http://habrahabr.ru/post/275523/#habracut

[>] В ядре Linux обнаружили уязвимость, позволяющую получить права суперпользователя
habra.15
habrabot(difrex,1) — All
2016-01-20 08:30:02


![][1] Практически все версии ядра Linux, от 3.8 до 4.5 (в git) [подвержены достаточно серьезной уязвимости][2], которая дает возможность локальному юзеру получить права суперпользователя. Оказывается, уязвимость CVE-2016-0728 существует с 2012 года, а наиболее подвержены риску пользователи ОС Android. дело в том, что код приложений и игр, созданных с использованием NDK (Native Development Kit) и выложенных в Google Play, компания Google проверить не может. Что касается ПК и серверов, то здесь ситуация не такая сложная, в особенности, если в системе всего один пользователь. Кроме того, не является слишком опасной эта уязвимость и тогда, если пользователям запрещено исполнять код, либо же различные экземпляры ОС находятся в среде виртуализации. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/715/b1e/1d4/715b1e1d415d81d7723764ebd1450132.png
[2]: http://perception-point.io/2016/01/14/analysis-and-exploitation-of-a-linux-kernel-vulnerability-cve-2016-0728/
[3]: http://habrahabr.ru/post/275543/#habracut

[>] Новый интерфейс для получения атрибутов процессов в Linux
habra.15
habrabot(difrex,1) — All
2016-01-20 09:00:02


Разрабатывая CRIU, мы поняли, что текущий интерфейс получения информации о процессах не идеален. К тому же, подобная проблема была успешно решена для сокетов. Мы попытались перенести эти наработки на процессы и получили достаточно хорошие результаты, о которых вы узнаете, дочитав эту статью до конца.

# Недостатки текущего интерфейса

Прочитав заголовок, возникает вопрос:”A чем же старый интерфейс не угодил”? Многие из вас знают, что сейчас информация о процессах собирается по файловой системе _procfs_. Здесь каждому процессу соответствует директория, которая содержит несколько десятков файлов.

$ ls /proc/self/
attr cwd loginuid numa_maps schedstat task
autogroup environ map_files oom_adj sessionid timers
auxv exe maps oom_score setgroups uid_map
cgroup fd mem oom_score_adj smaps wchan
clear_refs fdinfo mountinfo pagemap stack
cmdline gid_map mounts personality stat
comm io mountstats projid_map statm
coredump_filter latency net root status
cpuset limits ns sched syscall


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

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

[>] Параллельные алгоритмы для обработки BigData: подводные камни и непростые решения
habra.15
habrabot(difrex,1) — All
2016-01-20 12:30:05


_Эта публикация написана по материалам выступления [Александра Сербула][1] на осенней конференции [BigData Conference][2]._ Большие данные — тема модная и востребованная. Но многих по-прежнему отпугивает избыток теоретических рассуждений и некоторый недостаток практических рекомендаций. В этом посте я хочу отчасти заполнить этот пробел и рассказать об использовании параллельных алгоритмов для обработки больших данных на примере кластеризации товарного каталога из 10 млн позиций. [Читать дальше →][3]

[1]: http://bigdataconf.com.ua/2015/agenda/3125/
[2]: http://bigdataconf.com.ua/
[3]: http://habrahabr.ru/post/275455/#habracut

[>] Несколько интересностей и полезностей для всех
habra.15
habrabot(difrex,1) — All
2016-01-20 14:00:06


![][1] Доброго времени суток, уважаемые хабравчане! Обычно мои подборки ориентированы сугубо на веб-разработку, но этот выпуск охватывает все сферы программирования. Но самое главное, что интересность и полезность каждого материала имеет социальное доказательство, благодаря замечательному сервису [Slant.co][2]. Это некий аналог Quora, сфокусированный сугубо на разработчиков.

#### **Коллекция из почти 200 ответов в Slant на вопросы «Какие лучшие...» **

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

[1]: https://habrastorage.org/files/e93/0c4/bf7/e930c4bf7f2c4eb6b2b05e4083ab15c4.jpg
[2]: http://slant.co
[3]: http://habrahabr.ru/post/275547/#habracut

[>] [Из песочницы] Белый список с брандмауэром Windows
habra.15
habrabot(difrex,1) — All
2016-01-20 14:30:09


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

[1]: https://habrastorage.org/files/e3d/02c/32a/e3d02c32abcc443abf3aee35eff329f2.jpg
[2]: http://habrahabr.ru/post/275549/#habracut

[>] Корпоративные лаборатории 2016 — практическая подготовка в области информационной безопасности
habra.15
habrabot(difrex,1) — All
2016-01-20 17:00:04


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

[1]: https://habrastorage.org/files/0d7/01b/1e9/0d701b1e95ba44f68773458f3bfd2bf2.png
[2]: http://habrahabr.ru/post/275525/#habracut

[>] FlyElephant как инструмент для вычислений на C++, R, Python или Octave
habra.15
habrabot(difrex,1) — All
2016-01-20 17:30:05


![][1] Приветствую всех! Сегодня я расскажу о возможностях платформы [FlyElephant][2] для ученых и инженеров, которые в своей работе проводят различные вычисления на C++, R, Python или Octave. Это могут быть научные расчеты, анализ данных, моделирование или другие задачи.** 22 января** я буду проводить **[вебинар “Введение в FlyElephant”][3]**, на котором детально расскажу о платформе FlyElephant, а сегодня в общих чертах познакомлю вас с ней и покажу процесс проведения расчетов. **FlyElephant** — это платформа, которая предоставляет ученым готовую вычислительную инфраструктуру для проведения расчетов, автоматизирует рутинные задачи и позволяет сосредоточиться на основных вопросах исследований. [Читать дальше →][4]

[1]: https://habrastorage.org/files/aae/fc6/278/aaefc62783734fd4872b0ccf694a6364.png
[2]: http://flyelephant.net/
[3]: https://flyelephant.clickwebinar.com/introduction-to-flyelephant-ru/register
[4]: http://habrahabr.ru/post/275571/#habracut

[>] Монте-Карло моделирование в Mathcad Express
habra.15
habrabot(difrex,1) — All
2016-01-20 19:00:04


На Хабре много статей посвящено алгоритмам Монте-Карло, например,[ вот эта, вчерашняя][1]. Как основная идея, так и реализация методов весьма несложная, но небольшим препятствием может служить отсутствие под рукой подходящих инструментов для моделирования. Тем из читателей, для кого проблема актуальна, советую использовать бесплатный математический редактор Mathcad Express, про который [я и пишу в моем блоге][2]. Mathcad Express — это «легкая» версия известного пакета PTC Mathcad Prime, в которой большая часть функционала выключена. Тем не менее, датчики псевдослучайных чисел остаются доступными, что позволяет реализовать (довольно быстро и наглядно) различные статистические модели на основе алгоритмов Монте-Карло. Сразу оговорюсь, что некоторые решения будут не самыми лучшими, с точки зрения пользователей коммерческой версии Mathcad Prime, однако, они гарантированно не выведут нас за пределы функционала бесплатного Mathcad Express. Напомню, что алгоритмы Монте-Карло — это общее название группы численных методов, основанных на программном создании определенной последовательности псевдослучайных чисел, моделирующей тот или иной эффект, например, [последовательность отказов техники][3]. Получив большое число реализаций случайного процесса, можно надеяться, что его вероятностные характеристики совпадут с аналогичными величинами решаемой задачи «реального мира». Файл с дальнейшими расчетами в форматах Mathcad и XPS лежит [здесь][4].

## Часть 1. Как сгенерировать выборку псевдослучайных чисел

В Mathcad Express доступен ряд генераторов псевдослучайных чисел, создающих выборки псевдослучайных данных с различными законами распределения. Для создания вектора из N псевдослучайных чисел нужна всего лишь одна строка Mathcad-документа. Например сгенерировать N=5 псевдослучайных чисел с нормальным распределением (нулевым средним и единичной дисперсией) можно так: ![][5] Векторы случайных чисел удобно визуализировать на графиках так: одна выборка (т.е. компоненты одного из случайных векторов **T1**) по оси абсцисс, а другая выборка (другой случайный вектор **T2**)  – по оси ординат. На следующем рисунке приведены графики пар псевдослучайных чисел для экспоненциального (слева) и нормального (справа) распределения. Параметры распределений задаются в формулах над графиками. ![][6] [Читать дальше →][7]

[1]: http://habrahabr.ru/post/274975/
[2]: http://habrahabr.ru/company/nerepetitor/blog/247999/
[3]: http://habrahabr.ru/company/nerepetitor/blog/255407/
[4]: http://nerepetitor.ru/habr/Monte-Karlo-Express.zip
[5]: https://habrastorage.org/files/75f/142/79b/75f14279bfb440d896278f6206ab28d3.png
[6]: https://habrastorage.org/files/824/85f/bf2/82485fbf295143a884489772f1b6c474.jpg
[7]: https://habrahabr.ru/post/272713/#habracut

[>] Немного о модульной системе языка Rust(часть 2)
habra.15
habrabot(difrex,1) — All
2016-01-20 19:00:04




##### **Продолжаем**

Хорошо. Давайте теперь попробуем подключить в main.rs ещё один модуль — **number2**. И в нём мы определим функцию _one2()_, которая возвращает не «one», а «one2». Подключаем:

use num::number;
use num::number2;


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

[1]: https://habrahabr.ru/post/275533/#habracut

[>] [recovery mode] Мониторинг блока бесперебойного питания ippon winner 3000 используя apcupsd+Zabbix в Ubuntu
habra.15
habrabot(difrex,1) — All
2016-01-20 21:00:05


Что побудило меня написать данную статью? Поискав на просторах интернета по запросу «мониторин ippon winner 3000». Интернет выдавал как правило статьи про настройку [NUT][1]. Проект действительно интересный, имеет много возможностей. Но есть одно маленькое НО! Не поддерживается ippon winner 3000 по USB. По COM-порту все работает замечательно. Видел конфиги подключение по USB, но мне кажется это копипаст без практической проверки. Хотя может я и ошибаюсь. Я по крайней мере убил пол дня на попытки заставить это рабоатать, но тщетно. [Читать далее][2]

[1]: http://www.networkupstools.org
[2]: https://habrahabr.ru/post/275535/#habracut

[>] Защита утилиты шифрования Scrypt с помощью Intel® Tamper Protection Toolkit
habra.15
habrabot(difrex,1) — All
2016-01-20 22:30:04


![][1]В нашей статье мы покажем, как _Intel Tamper Protection Toolkit_ позволяет защитить критически важные участки кода и ценные данные в утилите шифрования [Scrypt][2] против статического/динамического реверс-инженеринга и изменений. _Scrypt_ – наиболее новая и безопасная функция выработки ключа по паролю, широко применяемая на практике. Однако существует угроза фальсификации параметров функции _scrypt_, что приведет к появлению уязвимостей пароля пользователя. Инструментарий позволяет уменьшить эти угрозы. Мы определяем модель угроз для рассматриваемого приложения, объясняем как провести его рефакторинг для дальнейшей защиты, учитывая особенности применения инструмента _Tamper Protection_ к приложению. Основной целью этой статьи является демонстрация возможностей _Intel Tamper Protection Toolkit_ по защите от атак на критически важные участки кода и ценные данные, находящиеся в реальных приложениях. Инструментарий позволяет противодействовать статическому и динамическому реверс-инженерингу путем обфускации и препятствовать внесению изменений в защищаемое приложение путем контроля целостности во время выполнения. [Читать дальше →][3]

[1]: https://habrastorage.org/files/1f9/a19/34c/1f9a1934c18b42c6a609793f5f2e9d26.jpg
[2]: https://github.com/Tarsnap/scrypt/tree/1.1.6
[3]: https://habrahabr.ru/post/274045/#habracut

[>] Зачем и как мы бэкапим github
habra.15
habrabot(difrex,1) — All
2016-01-21 00:30:05


новый сотрудник решил привести в порядок тот самый домашний репозиторий. И самым популярным вопросом среди программистов в тот день было «коллега, а вы не видели мою ветку 0022? ну такая, с багфиксами». Руководство опс-тим было спокойно как никогда: гит — это распределенная система, версия кода хранится на персональном компьютере каждого разработчика. Давайте уже как-нибудь разберитесь между собой и не отвлекайте нас от сборки наших ядер и тюнингов сетевых стеков.

##### И все же зачем..?

Действительно, можно нафантазировать большое количество количество возможных проблем, например:

* Недоступность удаленного репозитория и отсутсвие актуальной локальной копии
* Злоумышленники с помощью украденного пароля испортили/удалили репозитории
* Ошибки в манипуляциях с репозиториями



##### Итак, что и как бэкапить...

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

[1]: https://habrahabr.ru/post/273513/#habracut

[>] Экосистема российского ПО. Экономикс
habra.15
habrabot(difrex,1) — All
2016-01-21 05:00:03


[Экосистема российского ПО. Вступление][1] [Экосистема российского ПО. Термины и классификация][2] Здравствуйте, Хабр. Позвольте продолжить цикл материалов по совместной работе над общим поиском наилучших сценариев импортозамещения в ИТ-отрасли. Сегодня предлагаю посмотреть на роль нашей отрасли в национальной экономике. Изменения происходят стремительные, а в некоторых моментах даже тектонические. Так например, вчера, 19 января, с небольшой задержкой получила таки общественный резонанс тема обновлений в [Стратегии национальной безопасности РФ][3]. Наряду с традиционной риторикой о статусе мировой державы в доке появляются новые цели, например, такие как:

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

Эти изменения важны, как мне кажется, и вот почему. [Читать дальше →][4]

[1]: http://habrahabr.ru/post/268415/
[2]: http://habrahabr.ru/post/268869/
[3]: http://www.rg.ru/2015/12/31/nac-bezopasnost-site-dok.html
[4]: https://habrahabr.ru/post/275559/#habracut

[>] Linux в кармане — на службе у фотографа
habra.15
habrabot(difrex,1) — All
2016-01-21 08:00:03


![][1]Так получилось, что фотография, это мой основной профессиональный вид деятельности, а программирование — хобби, которое иногда позволяет размять мозг. Кроме непосредственно разминки для мозга, программирование помогает и в работе. Например, писал полезные штуки, такие как [это][2] или [это][3], или [это][4]. Недавно поставил себе задачу, как бы еще порадовать своих клиентов. Вспомнил многочисленные просьбы клиентов на свадебную съемку: «Как хорошо было бы, если бы на банкете вы смогли показать коротенькое слайдшоу из фотографий, которые отсняли за день». На эти просьбы приходилось отказывать, по нескольким причинам: лень таскать с собой ноутбук для сборки слайдшоу, нет времени на отбор пары десятков снимков из сотен, из raw опять же нужно конвертировать, и самое главное — на это все нужно время, которого нет. Это рассказ, о том, как мне удалось сделать для себя инструмент, который с минимальным моим участием и минимальным дополнительным весом в рюкзаке, помогает сделать красивые слайдшоу. И конечно же рассказ о python, ffmpeg и linux на android. [Читать дальше →][5]

[1]: https://habrastorage.org/files/3d2/f39/c60/3d2f39c605de4fda954bec52724d35b5.jpg
[2]: https://habrahabr.ru/post/216039/
[3]: https://habrahabr.ru/post/149898/
[4]: https://habrahabr.ru/post/162085/
[5]: https://habrahabr.ru/post/275595/#habracut

[>] Сторожевой таймер для 4G модема в CentOS 7
habra.15
habrabot(difrex,1) — All
2016-01-21 08:00:03


Эта статья является дополнением моей предыдущий [публикации][1] о настройке домашнего роутера / файл-сервера. Здесь речь пойдет о проблеме автоматического переподключения к интернету при зависании 4G USB модема. На оригинальность идеи не претендую, просто хочу поделиться с читателями своим решением. ![][2] [Читать дальше →][3]

[1]: http://habrahabr.ru/post/273547/
[2]: https://habrastorage.org/files/d7c/477/ed9/d7c477ed972e4803959a0bb3108c53fd.png
[3]: https://habrahabr.ru/post/275551/#habracut

[>] [Перевод] Взгляд внутрь кибермошеннических колл-центров
habra.15
habrabot(difrex,1) — All
2016-01-21 12:30:09


Brian Krebs, автор блога о взломах, хакерах, вирусах и другом, что связано с компьютерной безопасностью, не так давно написал пост о мошеннических колл-центрах. Что интересно, в статье описаны не те колл-центры, которые работают для обмана «своих» жертв, а те, которые работают, обманывая «чужих» клиентов за комиссию от звонка, т.е. колл-центры, которые работают на аутсорс. Такой себе **«CCCCaaS» – «Cyber-Crime-Call-Center-as-a-Service».** Термин мой, родился при написании данной статьи (к тому же, аббревиатура «CCaaS» в интернете уже занята такими понятиями как «Contact-Center-as-a-Service» и «Customer-Care-as-a-Service»). Второй особенностью таких онлайн-бизнесов является их принадлежность к постсоветскому пространству. Ниже _художественный_ перевод данной статьи (_замечания просьба писать в личные сообщения_). ![image][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/94f/70d/3d8/94f70d3d82944870bd9f668e97078c61.jpg
[2]: https://habrahabr.ru/post/275591/#habracut

[>] Конкурс GraphHPC-2016 на самую быструю реализацию параллельного алгоритма Community Detection
habra.15
habrabot(difrex,1) — All
2016-01-21 13:30:09


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

[1]: https://habrastorage.org/files/4b7/8b0/2c1/4b78b02c1d6643b09627d9dc072ef1c2.jpg
[2]: http://www.dislab.org/GraphHPC-2016/
[3]: http://contest.dislab.org/
[4]: https://habrahabr.ru/post/275577/#habracut

[>] Stream API: универсальная промежуточная операция
habra.15
habrabot(difrex,1) — All
2016-01-21 17:00:11


Я разрабатываю бесплатную библиотеку [StreamEx][1], которая расширяет стандартное Java 8 Stream API, добавляя туда новые операции, коллекторы и источники стримов. Обычно я не добавляю всё подряд, а всесторонне рассматриваю каждую потенциальную фичу. Например, при добавлении новой промежуточной ([intermediate][2]) операции встают такие вопросы:

1. Будет ли она действительно промежуточной, то есть не будет трогать источник до выполнения терминальной операции?
2. Будет ли она ленивой и вытаскивать из источника не больше данных, чем требуется?
3. Сработает ли она на бесконечном стриме? Требует ли она ограниченный объём памяти?
4. Будет ли она хорошо параллелиться?

Минусик по любому из этих пунктов заставляет серьёзно задуматься, добавлять ли такую операцию. Минусик по первому — это сразу нет. Например, у конкурентов в jOOλ есть операция [shuffle()][3], которая выглядит как промежуточная, но на самом деле прямо сразу потребляет весь стрим в список, перемешивает его и создаёт новый стрим. Я такое не уважаю. Минусики по остальными пунктам не означают сразу нет, потому что есть и стандартные операции, которые их нарушают. Второй пункт нарушает `flatMap()`, третий — `sorted()`, четвёртый — всякие `limit()` и `takeWhile()` (в JDK-9). Но всё-таки я стараюсь этого избегать. Однако на днях я открыл для себя операцию, которая плохо параллелится и в зависимости от использования может не сработать на бесконечном стриме, но всё же слишком хороша. Через неё удаётся буквально в несколько строчек выразить как практически любую существующую промежуточную операцию, так и кучу несуществующих. Я назвал операцию [headTail()][4]. [Читать дальше →][5]

[1]: https://github.com/amaembo/streamex
[2]: https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#StreamOps
[3]: http://www.jooq.org/products/jOO%CE%BB/javadoc/0.9.7/org/jooq/lambda/Seq.html#shuffle--
[4]: http://amaembo.github.io/streamex/javadoc/one/util/streamex/StreamEx.html#headTail-java.util.function.BiFunction-java.util.function.Supplier-
[5]: https://habrahabr.ru/post/262139/#habracut

[>] Используем Apache Spark как SQL Engine
habra.15
habrabot(difrex,1) — All
2016-01-21 17:30:09


![][1] Привет, Хабр! Мы, [Wrike][2], ежедневно сталкиваемся с потоком данных от сотен тысяч пользователей. Все эти сведения необходимо сохранять, обрабатывать и извлекать из них ценность. Справиться с этим колоссальным объёмом данных нам помогает [Apache Spark][3]. Мы не будем делать введение в Spark или описывать его положительные и отрицательные стороны. Об этом вы можете почитать [здесь][4], [здесь][5] или в [официальной документации][6]. В данной статье мы делаем упор на библиотеку [Spark SQL][7] и её практическое применение для анализа больших данных. [Читать дальше →][8]

[1]: https://habrastorage.org/files/6b9/92a/816/6b992a816c524f9c945a0296451bb434.png
[2]: https://www.wrike.com/ru
[3]: http://spark.apache.org
[4]: http://habrahabr.ru/company/mlclass/blog/250811/
[5]: http://habrahabr.ru/post/263491/
[6]: http://spark.apache.org/docs/latest/quick-start.html
[7]: http://spark.apache.org/docs/latest/sql-programming-guide.html
[8]: https://habrahabr.ru/post/275567/#habracut

[>] Entity vs Value Object: полный список отличий
habra.15
habrabot(difrex,1) — All
2016-01-21 18:00:10


Тема отличий таких понятий как Entity (Сущность) и Value Object (Объект-Значение) из Domain-Driven Design не нова. Тем не менее, я не смог найти статью с полным списком их отличий, так что решил написать свою. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/275599/#habracut

[>] В операционной системе FreeBSD обнаружены критические уязвимости (+ демонстрация атаки)
habra.15
habrabot(difrex,1) — All
2016-01-21 19:30:09


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

[1]: https://habrastorage.org/files/050/05e/854/05005e854a9040d9b8d190a7f7b38ec5.png
[2]: https://habrahabr.ru/company/pt/blog/275637/
[3]: https://habrahabr.ru/post/275637/#habracut

[>] [Перевод] Микросервисные паттерны проектирования
habra.15
habrabot(difrex,1) — All
2016-01-21 21:30:08


Здравствуйте, Хабр! В ближайшее время читайте пост о русском переводе долгожданной книги "[Создание Микросервисов][1]" Сэма Ньюмена, которая уже отправилась в магазины. Пока же мы предлагаем почитать перевод статьи Аруна Гупты, автор которой описывает самые интересные паттерны проектирования, применимые в микросервисной архитектуре [Читать дальше →][2]

[1]: http://www.piter.com/product_by_id/51778339
[2]: https://habrahabr.ru/post/275633/#habracut

[>] Как пользоваться i2pd: исчерпывающая инструкция под MS Windows
habra.15
habrabot(difrex,1) — All
2016-01-22 00:00:02


![][1] I2p — это сеть со специализацией на анонимности внутрисетевых ресурсов, этим она отличается от сети tor, основной задачей которой являются не внутренние ресурсы, а построение безопасного доступа к интернету. Зная об этих двух особенностях, люди могут гораздо эффективнее работать в обеих сетях. В i2p ты можешь заниматься множеством вещей: посещать и создавать сайты, форумы и торговые площадки, принимать почту, чатиться и скачивать торренты, и многое многое другое. Программа i2pd способна работать с большим числом программ и сервисов. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/144/2ca/908/1442ca908ce24a53a701c2fed63b9bf8.jpg
[2]: https://habrahabr.ru/post/275647/#habracut

[>] Как в первый раз запустить i2pd: инструкция под Debian/Ubuntu
habra.15
habrabot(difrex,1) — All
2016-01-22 00:30:04


![][1] I2p — это сеть со специализацией на анонимности внутрисетевых ресурсов, этим она отличается от сети tor, основной задачей которой являются не внутренние ресурсы, а построение безопасного доступа к интернету. Зная об этих двух особенностях, люди могут гораздо эффективнее работать в обеих сетях. В i2p ты можешь заниматься множеством вещей: посещать и создавать сайты, форумы и торговые площадки, принимать почту, чатиться и скачивать торренты, и многое многое другое. Программа i2pd способна работать с большим числом программ и сервисов. [Читать дальше →][2]

[1]: https://habrastorage.org/files/ee1/86f/775/ee186f775e9e4e7d826489e62f25918e.png
[2]: https://habrahabr.ru/post/275643/#habracut

[>] [Перевод] Анонс Rust 1.6
habra.15
habrabot(difrex,1) — All
2016-01-22 03:00:02


Привет в 2016-м году! Мы рады объявить первый в этом году релиз Rust — 1.6. Rust — системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода. Как всегда, вы можете [установить Rust 1.6][1] с соответствующей страницы нашего сайта, а также посмотреть [подробный список изменений для версии 1.6][2] на Github. Этот релиз включил в себя 1100 патчей.

### Что вошло в стабильную версию 1.6

В этот релиз вошли ряд небольших доработок, одно большое нововведение и изменение на [Crates.io][3]. [Читать дальше →][4]

[1]: http://www.rust-lang.org/install.html
[2]: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-160-2016-01-21
[3]: https://crates.io
[4]: https://habrahabr.ru/post/275593/#habracut

[>] О действительно БОЛЬШИХ числах (часть 1)
habra.15
habrabot(difrex,1) — All
2016-01-22 09:30:02


![image][1]Идея написать популярно про большие числа пришла во время чтения [этой статьи][2]. Речь в ней шла о числах-гигантах, имеющих хоть какой-то физический смысл. И заканчивается она упоминанием числа Грэма. Того числа, которое будет точкой отсчета сегодняшней статьи. Чтобы представить себе масштабы бедствия я настоятельно рекомендую предварительно прочитать [вот эту статью][3], в которое объясняется о числе Грэма на пальцах — там автор очень красочно и последовательно рассказывает о границах восприятия, в которые мы себя зажимаем, когда говорим о больших числах.




[итак, поехали...][4]

[1]: https://habrastorage.org/getpro/habr/post_images/ea8/dd4/e0c/ea8dd4e0c033f21dd1558e85feae0edc.png
[2]: http://geektimes.ru/post/253552/
[3]: http://sly2m.livejournal.com/620353.html
[4]: https://habrahabr.ru/post/265067/#habracut

[>] Project Abacus от Google: биометрия вместо пароля
habra.15
habrabot(difrex,1) — All
2016-01-22 12:00:04


Соответствие процесса аутентификации пользователей различных сервисов и устройств при помощи связки логин/пароль текущим потребностям и желаниям самих пользователей — большой вопрос. Обсуждений, посвященных поиску возможных альтернатив логину и пароля в Сети тоже очень много, как среди обывателей, так и среди технических специалистов высокого класса. Корпорация Google решила предложить собственный метод аутентификации, где не используется привычная форма с предложением ввести свои данные. Сейчас специалисты компании работают над проектом, получившим название Project Abacus. Работает над проектом команда Advanced Technology and Projects (ATAP). В рамках проекта разработчики пытаются найти надежный способ аутентификации пользователя при помощи биометрии. И здесь имеются в виду не отпечатки пальцев, проект более универсальный. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/275649/#habracut

[>] Systemd: пишем собственные .service и .target
habra.15
habrabot(difrex,1) — All
2016-01-22 12:00:04


У меня появился Linux на домашнем компьютере, и я поспешил обжиться в новой ОС. Она была установлена с systemd init process. Это было мое первое знакомство с этим новым инструментом. Cвой ноутбук я использую для каждодневной жизни и для программирования. Мне хотелось включать рабочие программы (Apache2 и MySQL) только на время, пока я их использую, чтобы не тратить впустую ресурсы своего компьютера. Дополнительно, для тестирования я написал bash скрипт, который выгружает содержимое одной из MySQL БД c жесткого диска в ОЗУ (в tmpfs) – так тесты выполняются значительно быстрее. По идее, я мог бы начинать свой рабочий день вот так:

systemctl start apache2.service
systemctl start mysqld.service
/root/scripts/mysqld-tmpfs start


И заканчивать его:

systemctl stop apache2.service
systemctl stop mysqld.service
/root/scripts/mysqld-tmpfs stop


Но мне хотелось сделать вещи “как надо”. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/275645/#habracut

[>] Research Day
habra.15
habrabot(difrex,1) — All
2016-01-22 14:00:09


**“Research day is coming”** — вот уже больше года все команды Plesk каждые две недели получают такое сообщение, напоминающее, что пора оторваться от своих текущих задач и заняться чем-то другим. «Свободный от работы день», так еще называют практику, принятую в Google, Apple, Microsoft, Linkedin и много где еще. Насколько она эффективна? Мы в Plesk, например, провели более 70 исследований, требовавших в обычных условиях в 4 раза больше времени. Другой вопрос, что компании понимают над «свободой от работы». В этой статье мы расскажем, что именно мы понимаем под практикой Research Day в нашей компании, как это работает, и что разработчики придумали, пока «отдыхали» от основных задач. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/275625/#habracut

[>] Common Lisp SDL2 туториал: урок 1
habra.15
habrabot(difrex,1) — All
2016-01-22 15:00:03


SDL2 — отличная библиотека, но туториалов по ней не очень много. Common Lisp — отличный язык, но статей по нему катастрофически мало. Думаю этого вполне достаточно, для того чтобы написать этот цикл статей. Почему я выбрал общелисп? Что ж, на вкус и цвет как говорится. Впрочем, причины есть:




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

[1]: https://habrahabr.ru/post/275651/#habracut

[>] [Перевод] Советы о том, как писать на С в 2016 году
habra.15
habrabot(difrex,1) — All
2016-01-22 15:00:03


![][1] _Если бы язык С был оружием_ _От автора: Наброски для этой статьи появились еще в начале 2015 года, правда, до публикации материалов дело так и не дошло. Наконец, решив, что в ящике моего письменного стола от вышеупомянутого «черновика» не будет никакой пользы, представляю его вашему вниманию в исходном виде. Единственное, что изменилось в тексте – год, с 2015 на 2016. И я всегда рад услышать комментарии по поводу необходимых исправлений, уточнений или даже ваши жалобы. Итак, статья ..._ Первое правило программирования на С – не используйте его, если можно обойтись другими инструментами. Когда найти альтернативный метод не удается, самое время вспомнить о современных заповедях программиста. [Читать дальше →][2]

[1]: https://habrastorage.org/files/da2/e08/e17/da2e08e172854d3ea0b0db284a03685a.png
[2]: https://habrahabr.ru/post/275685/#habracut

[>] ChakraCore: проверка JavaScript-движка для Microsoft Edge
habra.15
habrabot(difrex,1) — All
2016-01-22 16:00:06


![][1]В декабре 2015 года на конференции JSConf US разработчики объявили, что планируют открыть исходный код ключевых компонентов JavaScript-движка Chakra, работающего в Microsoft Edge. Недавно исходный код ChackraCore под MIT лицензией опубликовали в соответствующем репозитории на GitHub. В статье я расскажу, что удалось найти интересного в проекте с помощью статического анализатора PVS-Studio.

## Введение

[ChakraCore][2] это базовая составляющая Chakra, высокопроизводительный движок JavaScript, который запускает приложения Microsoft Edge и Windows, написанные на HTML/CSS/JS. ChakraCore поддерживает JIT-компиляцию на JavaScript для x86/x64/ARM, сборку мусора и широкий спектр самых последних возможностей JavaScript. [PVS-Studio][3] — это статический анализатор для выявления ошибок в исходном коде программ, написанных на языках С, C++ и C#. Инструмент PVS-Studio предназначен для разработчиков современных приложений и интегрируется в среды Visual Studio 2010-2015. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/4bf/919/24d/4bf91924dae0c9a42ba65ac3ffca2ca2.png
[2]: https://github.com/Microsoft/ChakraCore
[3]: http://www.viva64.com/ru/pvs-studio/
[4]: https://habrahabr.ru/post/275701/#habracut

[>] Во FreeBSD обнаружены критически опасные уязвимости
habra.15
habrabot(difrex,1) — All
2016-01-22 16:00:06


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

[1]: https://habrastorage.org/files/050/05e/854/05005e854a9040d9b8d190a7f7b38ec5.png
[2]: https://habrahabr.ru/company/pt/blog/275637/
[3]: https://habrahabr.ru/post/275637/#habracut

[>] Security Week 03 или неделя патчей: Linux, OpenSSH, Cisco, Yahoo Mail, Apple
habra.15
habrabot(difrex,1) — All
2016-01-22 19:00:02


![][1]В информационной безопасности бывают такие периоды, когда никаких особых открытий не происходит. Вместо этого достаточно рутинная работа по закрытию (или незакрытию) ранее обнаруженных уязвимостей. На этой неделе как раз такой период: самые популярные новости практически полностью посвящены заплаткам. Что ж, тоже неплохо, тем более, что подход у разных компаний к патчам серьезно отличается, да и восприятие этой темы иногда бывает, ну, несколько странным. Простой пример: в конце прошлого года в софте Apple (конкретно Mac OS X и iOS) [насчитали][2] рекордное количество уязвимостей. Ну то есть посмотрели в базу данных CVE, и обнаружили, что больше всего уязвимостей было обнаружено в Mac OS X, iOS и Adobe Flash. В некоторых СМИ даже назвали платформы Apple «самыми опасными», что, конечно, неправда. Ведь связь между «обнаружили уязвимость» и «пользователи в опасности» практически не прослеживается. Наоборот, в контексте базы CVE «обнаружили» как правило означает «закрыли». А это, в общем-то, хорошие новости. Возможно тут дело в том, что многие ухватились за простой и понятный рейтинг дыр, с абсолютными цифрами, которые дают ложное чувство понимания ландшафта угроз. Хорошая попытка «упростить» тему, но нет, с безопасностью этот прием не проходит. Поэтому посмотрим на патчи этой недели внимательнее. Все выпуски дайджеста — [тут][3]. [Читать дальше →][4]

[1]: https://habrastorage.org/files/21b/692/38f/21b69238ff8e46e4a7b042eae6ca382a.png
[2]: http://venturebeat.com/2015/12/31/software-with-the-most-vulnerabilities-in-2015-mac-os-x-ios-and-flash/
[3]: http://habrahabr.ru/search/?target_type=posts&q=%5Bklsw%5D%20&order_by=date
[4]: https://habrahabr.ru/post/275693/#habracut

[>] [Из песочницы] OpenShift: немного внутренностей Gear'ов
habra.15
habrabot(difrex,1) — All
2016-01-22 19:00:03




## Немного высокого

Gear — «движок» Openshift, собственно среда исполнения вашего приложения. При бесплатной регистрации сразу дают три. Собственно говоря об устройстве можно ничего и не знать. Но это вредно. 1. Имеется определенная структура каталогов. Для вашего приложения отведен ~/app-root. типа ls

build-dependencies -> runtime/build-dependencies
data
dependencies -> runtime/dependencies
logs
repo -> runtime/repo
runtime

Собственно говоря интересны data и repo. Забавная деталь три каталога являются ссылками на подкаталоги runtime, а runtime/data — линком на data в текущем каталоге. runtime/.state содержит текущее состояние gear'a: started, idle, deploing. 2. Все адреса, пароли, каталоги и прочее содержаться в переменных окружения, с ними то и предстоит работа. Подробно переменные описаны [здесь][1].

## Теперь к земле поближе

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

[1]: https://developers.openshift.com/en/managing-environment-variables.html
[2]: https://habrahabr.ru/post/275605/#habracut

[>] [Из песочницы] Как правильно мониторить UPS ippon с NUT и Zabbix
habra.15
habrabot(difrex,1) — All
2016-01-22 19:00:03


Длинный комментарий к [посту][1], в котором автор рассказал как мониторить ippon smart winner с помощью apcupsd. На мой взгляд это не правильное решение. В комментариях всплывал вопрос про NUT и я был удивлен, что никто не рассказал про работающее решение. Будем исправлять.

#### Часть первая: NUT

На самом деле NUT очень даже работает с представителями семейства smart winner от Ippon. И с InnovaRT тоже работает. [Читать дальше →][2]

[1]: https://habrahabr.ru/post/275535
[2]: https://habrahabr.ru/post/275665/#habracut

[>] Skype начал скрывать IP адреса по умолчанию
habra.15
habrabot(difrex,1) — All
2016-01-22 19:00:03


![image][1] Корпорация Microsoft наконец решила проблему с IP адресами в своем мессенджере Skype. Еще четыре года назад было известно, что уязвимость в VoIP мессенджере позволяла злоумышленнику получать IP адреса пользователей в сервисе. Несмотря на то, что Microsoft относительно недавно предоставила возможность пользователям скрывать свой IP, только сейчас эта опция [стала дефолтной][2]. Тяжелее всего приходилось геймерам и стримерам (и тем более геймерам-стримерам). Противники игрока всегда могли вычислить его IP, и осуществить DDoS атаку, выбрасывая геймера из системы. Изначально злоумышленнику нужен был Skype ID, после чего этот идентификатор при помощи сервиса резолвился в IP. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/1f0/949/850/1f0949850dacd17dd5b9b20d4960ff80.png
[2]: http://blogs.skype.com/2016/01/21/to-our-gamers-ip-will-now-be-hidden-by-default-in-latest-update/
[3]: https://habrahabr.ru/post/275695/#habracut

[>] Обновлённое приложение «Мой проездной» в помощь москвичам 
habra.15
habrabot(difrex,1) — All
2016-01-22 19:30:03


Приложение является частью экосистемы Единой платежной платформы Банка Москвы. Благодаря этому пользователи, зарегистрированные на других сервисах платформы, могут зайти в приложение, используя логин и пароль уже существующей учетной записи – никаких дополнительных танцев с бубном. [Подробнее][1]

[1]: https://habrahabr.ru/post/274259/#habracut

[>] Новости про C++ продукты и JetBrains C++ Night в Санкт-Петербурге
habra.15
habrabot(difrex,1) — All
2016-01-22 21:30:02


Привет, Хабр! Праздники отгремели, зима в полном разгаре, кто-то уже выкинул новогоднюю елку, а кто-то ждет потепления. А мы упорно трудимся над новыми версиями наших C++ продуктов. Так, например, с декабря открыта программа раннего доступа (Early Access Program) CLion — нашей кросс-платформенной IDE для C/C++. Там очень много всего нового и интересного: [Читать дальше →][1]

[1]: https://habrahabr.ru/post/275723/#habracut

[>] [Перевод] Процедурная генерация случайных игровых подземелий
habra.15
habrabot(difrex,1) — All
2016-01-22 23:30:02


![image][1] В посте подробно рассматривается техника генерации случайных подземелий. Основной алгоритм генерации, пример работы которого можно [посмотреть здесь][2], используется разработчиками игры [TinyKeep][3]. Оригинальный пост от разработчика [был размещён на reddit][4].

#### Оригинальное описание алгоритма

1. Сначала я задаю нужное количество комнат – к примеру, 150. Естественно, цифра произвольная, и чем она больше, тем сложнее будет подземелье. 2. Для каждой комнаты я создаю прямоугольник со случайными шириной и высотой, находящимися в пределах заданного радиуса. Радиус не имеет большого значения, хотя разумно предположить, что он должен быть пропорционален количеству комнат. Вместо равномерно распределённых случайных чисел (какие выдаёт генератор Math.random в большинстве языков), я использую [нормальное распределение Парка-Миллера][5]. В результате вероятность появления маленьких комнат превышает вероятность появления больших. Зачем это надо, объясню позже. Кроме того я проверяю, что соотношение длины и ширины комнаты не слишком велико. Нам не нужны как идеально квадратные комнаты, так и сильно вытянутые. 3. И вот у нас есть 150 случайных комнат, расположенных на небольшом пространстве. Большинство из них наезжают друг на друга. Теперь мы осуществляем их разделение по технологии separation steering, чтобы разделить прямоугольники так, чтоб они не пересекались. В результате они не пересекаются, но находятся достаточно близко друг от друга. 4. Заполняем промежутки клетками размером 1х1. В результате у нас получается квадратная решётка из комнат различного размера. 5. И тут начинается основное веселье. Определяем, какие из клеток решётки являются комнатами – это будут любые клетки с шириной и высотой, превышающими заданные. Из-за распределения Парка-Миллера мы получим сравнительно небольшое количество комнат, между которыми есть довольно много свободного пространства. Но оставшиеся клетки нам также пригодятся. 6. Следующий шаг – связывание комнат вместе. Для этого мы строим граф, содержащий центры всех комнат при помощи [триангуляции Делоне][6]. Теперь все комнаты связаны меж собой непересекающимися линиями. 7. Поскольку нам не нужно, чтобы все комнаты были связаны со всеми, мы строим [минимальное остовное дерево][7]. В результате получается граф, в котором гарантированно можно достичь любой комнаты. 8. Дерево получается аккуратным, но скучным – никаких вам замкнутых ходов. Поэтому мы случайным образом добавляем обратно примерно 15% ранее исключённых рёбер графа. В результате получится граф, где все комнаты гарантированно достижимы, с несколькими замкнутыми ходами. 9. Чтобы превратить его в коридоры, для каждого ребра строится серия прямых линий (в форме Г), идущих по рёбрам графа, соединяющим комнаты. Тут нам пригождаются те клетки, которые остались неиспользованными (те, что не превратились в комнаты). Все клетки, накладывающиеся на Г-образные линии, становятся коридорами. А из-за разнообразия размеров клеток стены коридоров будут неровными, что как раз хорошо для подземелья. И вот [пример результата][8]! Осторожно — под катом много анимированных гифок! [Читать дальше →][9]

[1]: https://habrastorage.org/getpro/habr/post_images/5b0/d69/ca8/5b0d69ca8da486503d313162d6ad0147.png
[2]: http://tinykeep.com/dungen/
[3]: http://store.steampowered.com/app/278620/
[4]: https://www.reddit.com/r/gamedev/comments/1dlwc4/procedural_dungeon_generation_algorithm_explained/
[5]: https://en.wikipedia.org/wiki/Normal_distribution
[6]: http://en.wikipedia.org/wiki/Delaunay_triangulation
[7]: http://en.wikipedia.org/wiki/Minimum_spanning_tree
[8]: http://tinykeep.com/images/tinykeep/dungen_example.png
[9]: https://habrahabr.ru/post/275727/#habracut

[>] Проект Qt меняет лицензию, а также открывает код некоторых модулей
habra.15
habrabot(difrex,1) — All
2016-01-23 03:00:02


На прошлой неделе компания Qt Company (подразделение Digia) обновила текст соглашения с организацией KDE Free Qt Foundation и объявила о новой политике лицензирования Qt. Организация KDE Free Qt Foundation была основана в 1998 г. с целью защиты Qt как свободного ПО. Между организацией и компанией Trolltech был заключен договор, позволяющий в случае прекращения разработки свободной версии Qt, выпустить Qt под лицензией типа BSD (или любой другой свободной). Договор обновлялся, по мере того, как права на Qt переходили к Nokia, а затем к Digia. Подробности новой лицензионной политики Qt под катом.



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

[1]: https://habrahabr.ru/post/275725/#habracut

[>] Проект Qt меняет лицензию и открывает код некоторых модулей
habra.15
habrabot(difrex,1) — All
2016-01-23 03:30:02


На прошлой неделе компания Qt Company (подразделение Digia) обновила текст соглашения с организацией KDE Free Qt Foundation и объявила о новой политике лицензирования Qt. Организация KDE Free Qt Foundation была основана в 1998 г. с целью защиты Qt как свободного ПО. Между организацией и компанией Trolltech был заключен договор, позволяющий в случае прекращения разработки свободной версии Qt, выпустить Qt под лицензией типа BSD (или любой другой свободной). Договор обновлялся, по мере того, как права на Qt переходили к Nokia, а затем к Digia. Подробности новой лицензионной политики Qt под катом.



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

[1]: https://habrahabr.ru/post/275725/#habracut

[>] Метод Санделиуса для получения случайных перестановок
habra.15
habrabot(difrex,1) — All
2016-01-23 13:00:03


Статьи о получении (псевдо)случайных чисел, о проверке качества полученных последовательностей неизменно вызывают интерес у населения Хабра. Однако в приложениях наряду с последовательностями случайных и псевдослучайных чисел требуется получать [перестановки][1] чисел, имеющие [равномерное распределение][2]. Например, потребность в таких перестановках периодически появляется в криптографических приложениях. Метод описанный ниже предложен Санделиусом (М. Sandelius) еще в 1962 г. в работе [1]. [Читать дальше →][3]

[1]: https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0
[2]: https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D1%80%D0%B0%D0%B2%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%BD%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
[3]: https://habrahabr.ru/post/275731/#habracut

[>] Кроссплатформенный Open Source Time Tracker
habra.15
habrabot(difrex,1) — All
2016-01-23 16:30:02


![][1] В этой статье я хочу рассказать о том, зачем мне понадобился тайм-трекер, как я его искал, почему не нашел и что из этого всего в итоге получилось. [Читать дальше →][2]

[1]: https://habrastorage.org/files/95f/6e4/8eb/95f6e48ebf5e42419fc5bf78b0031572.png
[2]: https://habrahabr.ru/post/275447/#habracut

[>] Наконец-то https://habrahabr.ru
habra.15
habrabot(difrex,1) — All
2016-01-23 18:00:02


![][1] UPD: первая же ветка комментариев показала, что даже на хабре пока не все серьезно относятся к вопросу; добавил в хаб ИБ — ещё одно напоминание не будет лишним. [][2]

[1]: https://habrastorage.org/files/6a5/316/49b/6a531649b5a74dc0817cce57a32adf5b.png
[2]: https://habrahabr.ru/post/275743/#habracut

[>] Использование SikuliX в фоновом режиме на Cloud9
habra.15
habrabot(difrex,1) — All
2016-01-25 03:30:02


SikuliX (старое название Sikuli) — это инструмент, который позволяет автоматизировать то, что вы видите на экране с помощью визуального распознавания (картинок). На хабре уже есть достаточно информации по [нему][1], но все примеры подразумевают использование реального экрана. Здесь же я опишу свой опыт использования SikuliX в фоновом режиме на облачной IDE [Cloud9][2]. В процессе работы с данным инструментом набил немного шишек, поэтому возможно, мой опыт будет кому-то полезен. Вариантов использования SikuliX достаточно много, вот некоторые из действий, которые вы можете автоматизировать:

* Работа с флеш сайтами (и любими другими)
* Автоматизация браузерных игр (собирать урожай на ферме)
* Работа с десктопными приложениями
* Настройка компьютера
* Разнообразные боты
* Всякого рода рутинная работа с сайтами/документами

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

[1]: http://habrahabr.ru/search/?q=Sikuli
[2]: https://c9.io
[3]: https://habrahabr.ru/post/275717/#habracut

[>] Centos 7.x USB Install Media (Добавляем Centos в Multiboot)
habra.15
habrabot(difrex,1) — All
2016-01-25 11:30:08


Как бывало здорово, берешь образ CentOS 6.x, выдергиваешь из него куски, и пихаешь все это на USB флешку, по соседству с другими системами. Но, начиная с Centos 7, сделать это стало немного сложнее, и единственным официальным способом стала запись образа на прямую на носитель (с потерей всего что на нем уже есть). Но, применив немножко смекалки, все решается, прошу под кат: [Читать дальше →][1]

[1]: https://habrahabr.ru/post/275751/#habracut

Pages: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37