RSS
Pages: 1 ... 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ... 210
[>] Fedora 22 — все тренды в одной сборке
habra.14
habrabot(difrex,1) — All
2015-06-01 11:28:09


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

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



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

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

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

[>] Измерение веса руды по току статора. Практика. Часть 1. Алгоритм обработки сигналов в МК
habra.15
habrabot(difrex,1) — All
2016-01-19 12:30:03


В прошлой [статье][1] мы рассмотрели теоретически основы измерения веса руды в сосуде ШПУ по измерению силы, развиваемым двигателем при подъеме. Схемотехнически подготовили сигналы тока и напряжения статора двигателя для обработки их в МК. В этой статье мы рассмотрим программную реализацию вычисления массы поднимаемого груза на МК. Для того что бы приступить к написанию программы для МК, необходимо разобраться, как правильно нужно данные сигналы в МК обрабатывать. Итак приступим. Сигналы тока и напряжения представляют собой синусоидальный сигнал, в основе своей содержащий основную частоту питающей сети (для наших реалий 50 Гц). Про гармоники и прочие составляющие в сетевом напряжении говорить не будем, они есть и оказывают влияние на качество сети и динамические свойства электродвигателей. На любом производстве с ними борются по мере сил, так что их влияние, пусть и не ничтожно, но все-таки мало. Останавливаться на этом не станем. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/275141/
[2]: http://habrahabr.ru/post/275459/#habracut

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


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

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

[>] Про трекпоинт и эмуляцию мыши
habra.15
habrabot(difrex,1) — All
2016-01-19 14:30:03




# Зачем это нужно и как реализовать программно



## Много рассуждений

В предыдущей статье про настройку док-станций, я упоминал как тяжко, в свое время, мне было пользоваться лаптопами «потребительского» сегмента. Отсутствие docking-port'a и необходимость каждый раз по приходу домой или на работу подключать кучу кабелей — все это неприятно и раздражало, но что действительно вызывало страдания, так это отсутствие трекпоинта: той самой «красной пимпочки», которую можно встретить на лаптопах от IBM/Lenovo (синяя или серая в случае HP и DELL). Подробней можно почитать на той же [Википедии][1]. Зачем он нужен? Когда большая часть операций производится с клавиатуры, будь то написание кода, либо работа в командной оболочке, необходимость переместить руку на мышь дабы переместить графический курсор и что-нибудь там кликнуть не вызывает особой радости. ![][2] [Читать дальше →][3]

[1]: https://ru.wikipedia.org/wiki/Тензометрический_джойстик
[2]: https://habrastorage.org/files/fe5/76c/4d1/fe576c4d11364046945f1d144315c874.png
[3]: http://habrahabr.ru/post/275427/#habracut

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


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

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

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




#### Чуть-чуть о статье

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

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

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


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

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

[>] Пользователи LastPass уязвимы для простейшей фишинговой атаки в Chrome
habra.15
habrabot(difrex,1) — All
2016-01-19 20:00:04


![image][1] Один из наиболее популярных менеджеров паролей, LastPass, несколько раз испытывал проблемы с безопасностью. К примеру, [сервис взломали][2] летом 2015 года, после чего пользователям пришлось менять свои данные для доступа к LastPass. В ноябре прошлого же года специалисты по информационной безопасности обнаружили у сервиса ряд багов, позволявших злоумышленникам получить доступ к учетным данным пользователей. Теперь же обнаружилось, что и двухфакторная защита сервиса не спасает, если злоумышленник будет использовать простейшую фишинговую атаку. Специалист по информационной безопаности Шон Кессиди, обнаруживший уязвимость, придумал и название для нее — «LostPass». Для того, чтобы продемонстрировать уязвимость, специалист создал специальный инструмент. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/4cf/966/5a3/4cf9665a333885b2c16930dfe0d630f6.png
[2]: http://habrahabr.ru/company/defconru/blog/260383/
[3]: http://habrahabr.ru/post/275443/#habracut

[>] Поиск множества регулярных выражений при помощи библиотеки 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

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


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

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

[>] Небезопасный способ авторизации в 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

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


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

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

[>] Хостер 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

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


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

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

[>] [Из песочницы] Белый список с брандмауэром 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

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






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

----

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

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

[>] Корпоративные лаборатории 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

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


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

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

[>] 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

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


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

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

[>] Монте-Карло моделирование в 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

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


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

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

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

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


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

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

[>] Немного о модульной системе языка 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

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


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

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

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

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

[>] [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

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


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

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

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




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

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

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

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


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

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

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

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

[>] Защита утилиты шифрования 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

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


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

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

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


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

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

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

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



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

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

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

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


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

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

[>] Экосистема российского ПО. Экономикс
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

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


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

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

[>] Сторожевой таймер для 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.14
habrabot(difrex,1) — All
2015-06-02 11:00:09


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

###

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

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

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


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

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

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


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



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

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

[>] [Перевод] Взгляд внутрь кибермошеннических колл-центров
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

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


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

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

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


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

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

[>] Конкурс 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

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


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

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

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


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



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

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

[>] 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

Pages: 1 ... 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ... 210