RSS
Pages: 1 ... 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 210
[>] [Перевод] Лексические переменные в Perl 6
habra.14
habrabot(difrex,1) — All
2015-03-16 11:30:03


Одна из проблем программирования – борьба с возрастающей сложностью программ при возрастании их объёма. Исторически она решается путём изолирования отдельных частей программ, взаимодействие которых друг с другом ограничено. Такой подход действует на всех уровнях программирования – «разделение концепций», «делай что-то одно и делай это хорошо», BCNF, монады, процедуры, классы, роли, модули. Все они поощряют ограничение частей программы, чтобы не играть против комбинаторики. Простейшим примером логического разделения является лексическая переменная.

{
my $var;
# $var доступна тут
}
# $var а тут недоступна


Что же в этом интересного? [Читать дальше →][1]

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

[>] Бюджетное SAN-хранилище на LSI Syncro, часть 1
habra.14
habrabot(difrex,1) — All
2015-03-16 12:30:02


![][1] Итак, продолжу свои [редкие][2] [статьи][3] на тему «как не платить HP/EMC/IBM многие кило-(или даже мега-) доллары и собрать своё хранилище не хуже». Прошлый цикл я до победного конца не довёл, но 90% мыслей всё же оформил в текст. Нашей сегодняшней целью будет отказоустойчивое «All-Flash» (то есть — только из SSD, без жестких дисков, хотя это и не принципиально) хранилище для нужд кластера vSphere, в несколько раз дешевле брендовых аналогов и с очень неплохой производительностью. Подключаться к нему мы будем по Fibre Channel, но никто не мешает сделать iSCSI, FCoE или даже, о ужас, Infiniband.

## Syncro

Как ясно из названия, основой всей этой богодельни станет достаточно уникальный на рынке продукт под названием **Syncro CS** от компании **LSI** (ныне Avago). Что же оно такое есть и чем примечательно? По сути, это комплект из двух обычных контроллеров LSI 9286-8e (либо 9271-8i, если нужны внутренние порты) и двух суперконденсаторов для сохранения кеш-памяти на флешку контроллера в случае потери питания. Стоимость комплекта при этом в несколько раз выше цены аналогичного комплекта без HA-функционала. Но, если сравнивать с решениями на базе DRBD, то эта разница с лихвой компенсируется отсутствием необходимости иметь двойной набор накопителей. Но самое интересное кроется в прошивке. Благодаря ей, эти контроллеры, будучи подключенными к одной SAS-сети (например, дисковой корзине с экспандерами) устанавливают через неё связь друг с другом и работают в режиме отказоустойчивого кластера. Для нас это интересно вот чем:

* Возможность создавать RAID-массивы, доступные сразу на двух серверах
* Отказоустойчивость на уровне контроллеров: при смерти одного из них (или целиком сервера) второй продолжит работать и обслуживать I/O

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

[1]: //habrastorage.org/files/fb4/986/ac7/fb4986ac7f1d4dfe98c76576c3f28264.jpg
[2]: http://habrahabr.ru/post/209460/
[3]: http://habrahabr.ru/post/209666/
[4]: http://habrahabr.ru/post/252403/#habracut

[>] [Из песочницы] Брутфорс паролей инженерного меню радиостанции
habra.14
habrabot(difrex,1) — All
2015-03-16 12:30:02


![image][1] Что такое инженерное меню и зачем оно нужно? Позволю себе процитировать из [wiki][2]:

> **Недокументи́рованные возмо́жности**
>
> (англ. undocumented features), НДВ — возможности технических устройств и/или программного обеспечения, не отраженные в документации. Чаще всего недокументированные возможности сознательно закладываются разработчиками в целях тестирования, дальнейшего расширения функциональности. Недокументированные возможности обнаруживаются, обычно, в процессе
>
> [обратной разработки][3]
>
> , но могут быть обнаружены и случайно.

Далее в статье, описание моей попытки подобрать коды к инженерному меню радиостанции. [Читать дальше →][4]

[1]: http://habrastorage.org/files/fbd/52d/4ec/fbd52d4ec6aa47d3a47d0da37cee0967.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8
[3]: https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0
[4]: http://habrahabr.ru/post/253153/#habracut

[>] Новость как для охотников за багами, так и для всего IT сообщества в целом
habra.14
habrabot(difrex,1) — All
2015-03-16 13:30:04


С сегодняшнего дня у нас появились реальные рычаги, которые позволят заставить банки «залатать дыры» в своем ПО, а также сменить устаревшее железо. [Читать дальше →][1]

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

[>] [Из песочницы] История участия в конкурсе «Летающие роботы». Часть 1
habra.14
habrabot(difrex,1) — All
2015-03-16 14:30:03




#### **Предисловие**

В 2013 году с целью популяризации робототехники в России и создания среды программистов и инженеров, ориентированных на данную тематику компания КРОК (г.Москва) организовала конкурс «Летающие роботы». Наша команда «iKar» (3 человека из Барнаула и 1 из Москвы) участвовала в 2013 году (конкурс «Улететь и вернуться») и 2014 году («Догнать и перегнать Крок») не победила, но добилась неплохих результатов.

#### **1\. С чего все началось или условия конкурса**

Будучи по профессии программистом 1С, нередко приходится пользоваться форумом forum.mista.ru. Один из моих друзей-коллег первым заметил объявление на тему «Кому лимон» и предложил участвовать. Условия конкурса выглядели заманчиво: необходимо было построить или купить летающего робота и научить его перемещаться/ ориентироваться в помещении-полигоне, автоматически взлетать и садиться и распознавать посадочные маркеры. Срок на всю работу 1 год, а приз — 1 миллион рублей. ![][1] Имелся опыт построения вертолетов и квадрокоптеров, как для хобби, так и для профессионального применения в аэрофотосъемке. Было много вопросов по поводу различных настроек, ПИД коэффициентов, кода и алгоритмов полетных контроллеров. Используя мотивацию конкурса, можно было глубоко во всем разобраться. С детства была мечта заниматься робототехникой, участие в конкурсе позволило сделать первые шаги в данном направлении. Вера в собственные силы, «правое» дело и «вкусный» приз, сделали свое дело, весь семейный бюджет плюс доступные кредитные средства, были направлены на постройку «бюджетного» робота-беспилотника и поездку в Москву на конкурс. [Читать дальше →][2]

[1]: //habrastorage.org/files/495/541/3ce/4955413ceaea4cf99f1edad0f35f3c5e.jpg
[2]: http://habrahabr.ru/post/253159/#habracut

[>] [Перевод] Майкл Стоунбрейкер — Hadoop на распутье
habra.15
habrabot(difrex,1) — All
2015-11-03 18:30:02




> ![][1]
>
> [@tsafin — Обладателя
>
> [премии Тьюринга][2]
>
> [Майкла Стоунбрейкера][3]
>
> представлять не надо, он и его студенты из Беркли и MIT создали, по ощущениям, большую часть реляционных и нереляционных баз данных за последние пару десятилетий. Ingress и Postgress, C-Store и Vertica, H-Store и VoltDB – вот лишь малая часть проектов и фирм, на который Майкл и его студенты повлияли напрямую, а ведь еще есть множество форков и деривативов…
>
>
>
>
>
> Т.о. когда он критикует что-то, будь то NoSQL или Hadoop, то индустрии стоит, как минимум, прислушаться, а лучше попытаться измениться.
>
>
>
>
>
> Мне показалось интересной его точка зрения на Hadoop, высказанная в статьях 2012 и 2014 года, и было интересно проследить развитие точки зрения «классика» за такой короткий промежуток времени.
>
>
>
>
>
> Первую статью «Possible Hadoop Trajectories», опубликованную в «Comunications of ACM»
>
>
>
> , Стоунбрейкер написал в мае 2012 года в соавторстве с Джереми Кепнер (Jeremy Kepner), который в тот момент работал как старший технический персонал в
>
> [MIT][4]
>
> , и как исследователь в
>
> [MIT Mathematics Department][5]
>
> и
>
> [MIT Computer Science and AI Lab][6]
>
> . Эта статья, написанная в соавторстве, кажется более дерзкой и задорной, по сравнению со второй, написанной уже им самим двумя годами позже (да и, чего уж там, первая статья написана IMHO в лучшем стиле), но я публикую их в связке, т.к. контекст за прошедшие пару лет сильно изменился, и было бы нечестно по отношению к экосистеме Hadoop/HDFS оставлять это незамеченным.
>
>

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

[1]: https://habrastorage.org/files/b48/c25/465/b48c25465c0e43cf8a23b13ad2d4a72e.png
[2]: http://amturing.acm.org/award_winners/stonebraker_1172121.cfm
[3]: https://en.wikipedia.org/wiki/Michael_Stonebraker
[4]: http://www.mit.edu/
[5]: http://math.mit.edu/
[6]: http://csail.mit.edu/
[7]: http://habrahabr.ru/post/270017/#habracut

[>] Курс “Комбинаторика слов и ее приложения”
habra.14
habrabot(difrex,1) — All
2015-03-16 15:00:02


Каждый университет сталкивается с тем, что на некоторые темы в городе невозможно найти преподавателя, который бы являлся в этой теме специалистом. Один из вариантов решить эту проблему состоит в том, чтобы поручить подготовить курс на эту тему какому-нибудь из имеющихся преподавателей, который не является специалистом в этой области. Мы в Акадеическом университете стараемся пойти другим путем — пригласить специалиста для чтения курса. В прошлом году мы поучаствовали в [конкурсе][1] фонда Династия “приглашенный профессор”. Мы подали две заявки и обе выиграли, а также два наших преподавателя были приглашены в Уральский и Казанский федеральные университеты. В сентябре 2014 года [Александр Охотин][2] из университета Турку прочитал курс [Формальные грамматики][3]. А 18 марта начнет читать [курс][4] “Комбинаторика слов и ее приложения” профессор Уральского федерального университета [Арсений Михайлович Шур][5]. Мы приняли решение сделать этот курс полностью открытым для всех и провести его в рамках Computer Science клуба, нашего постоянного партнера. Арсений Михайлович — активный исследователь в области комбинаторики слов, поэтому курс обещает быть очень интересным. Первое занятие состоится в среду 18 марта в 18-30 в Мраморном зале ПОМИ РАН (Санкт-Петербург, наб. реки Фонтанки д. 27), вход свободный, регистрация не требуется. Подробное описание курса и расписание: [тут][6]. **Краткое описание курса** [Читать дальше →][7]

[1]: http://www.dynastyfdn.com/grants/visiting_professor
[2]: http://users.utu.fi/aleokh/
[3]: http://mit.spbau.ru/courses/formalgrammars
[4]: http://compsciclub.ru/course/wordscombinatorics
[5]: http://kadm.imkn.urfu.ru/pages.php?id=shur
[6]: http://compsciclub.ru/course/wordscombinatorics
[7]: http://habrahabr.ru/post/253177/#habracut

[>] [Перевод] Буферы и двоичный ввод и вывод в Perl6
habra.15
habrabot(difrex,1) — All
2015-11-03 19:00:03


В Perl 5, начиная с версии 5.8, неплохо реализована поддержка Unicode – но люди всё равно жаловались на сложности в её использовании. В основном из-за того, что программисту нужно отслеживать, какие строчки были декодированы, а какие надо обрабатывать как двоичные данные. И нет надёжного способа посмотреть на переменные и понять, двоичные это строчки или текстовые. В Perl6 эту проблему решили вводом отдельных типов. В Str хранится текст. Строковые литералы в Perl6 имеют тип Str. Двоичные данные хранятся в объектах Buf. И перепутать их уже нельзя. Конвертация между ними осуществляется при помощи методов encode и decode.

my $buf = Buf.new(0x6d, 0xc3, 0xb8, 0xc3, 0xbe, 0x0a);
$*OUT.write($buf);

my $str = $buf.decode('UTF-8');
print $str;


У обеих операций эффект одинаковый – они выводят в стандартный выходной поток «møþ» и перевод строки. Buf.new(...) принимает список целых от 0 до 255 – байты из которых и строится новый буфер. $\*OUT.write($buf) выводит буфер из $buf в стандартный выходной поток. $buf.decode('UTF-8') декодирует буфер и возвращает объект Str (или падает, если в буфере не содержится допустимая строка в UTF-8). Обратная операция — $Buf.encode($encoding). Str можно вывести просто через print. [Читать дальше →][1]

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

[>] Ещё раз про семь основных методологий разработки
habra.15
habrabot(difrex,1) — All
2015-11-03 21:30:03


Разработка программного продукта знает много достойных методологий — иначе говоря, устоявшихся best practices. Выбор зависит от специфики проекта, системы бюджетирования, субъективных предпочтений и даже темперамента руководителя. В статье описаны методологии, с которыми мы регулярно сталкиваемся в [Эдисоне][1]. ![][2] [Читать дальше →][3]

[1]: http://www.edsd.ru/
[2]: https://habrastorage.org/files/e2a/620/d25/e2a620d25bf0417c8b31f2ffd144eab0.jpg
[3]: http://habrahabr.ru/post/269789/#habracut

[>] Эволюция автоматического тестирования в среде 1С: Предприятие
habra.15
habrabot(difrex,1) — All
2015-11-04 01:00:02


До релиза новой версии фреймворка по тестированию “xUnitFor1C” осталось совсем немного, а значит пришло время рассказать о проделанной работе и о том, что ожидает пользователей. Релиз получится действительно мажорным, изменений очень много, и они носят глобальный характер. Но обо всем по порядку.

#### Зачем все перепиливать?

Насколько я понимаю, на момент, когда проект только рождался, основной целью было понять, насколько модульное тестирование может быть востребовано в среде 1С. Понятное дело, что продумывать и выделять уровни абстракций на этапе прототипирования — дело не особо перспективное. Прототип не обладает эластичностью настоящего кода. Прототип — это эксперимент, результаты которого нужно выбрасывать. Далее флаг разработки переходил от одного энтузиаста к другому, при этом базовая архитектура оставалась прежней. С ростом популярности продукта и осознания того, что хотелось бы получить, стало все сложнее вносить изменения. Мне нравится метафора Алана Купера:

> Создание большой программы можно сравнить с постройкой столба из кирпича. Этот столб состоит из тысячи кирпичей, положенных один на другой. Столб может быть выстроен, только если класть кирпичи с большой точностью. Любое отклонение приведет к падению кирпичей. Если кирпич с номером 998 сможет отклонить на пять миллиметров, столб, вероятно, сможет выдержать тысячу кирпичей, но если отклонение на 5-ом кирпиче, столб никогда не станет выше трех десятков.

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

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

[>] Новый алгоритм синхронизации Яндекс.Диска: как не подавиться 900 000 файлами
habra.14
habrabot(difrex,1) — All
2015-03-16 16:00:04


Яндекс.Диск — один из немногих сервисов Яндекса, частью которого является программное обеспечение для десктопа. И одна из самых важных его составляющих — алгоритм синхронизации локальных файлов с их копией в облаке. Недавно нам пришлось его полностью поменять. Если старая версия с трудом переваривала даже несколько десятков тысяч файлов и к тому же не достаточно быстро реагировала на некоторые «сложные» действия пользователя, то новая, используя те же ресурсы, справляется с сотнями тысяч файлов. В этом посте я расскажу, почему так получилось: чего мы не смогли предвидеть, когда придумывали первую версию ПО Яндекс.Диска, и как создавали новую. [![][1]][2] Прежде всего, о самой задаче синхронизации. Технически говоря, она состоит в том, чтобы в папке Яндекс.Диска на компьютере пользователя и в облаке был один и тот же набор файлов. То есть такие действия пользователя, как переименование, удаление, копирование, добавление и изменение файлов, должны синхронизироваться с облаком автоматически. [Читать дальше →][3]

[1]: //habrastorage.org/files/452/bdd/9aa/452bdd9aabcc4598a92dcdade1b56bb5.jpg
[2]: http://habrahabr.ru/company/yandex/blog/253171/
[3]: http://habrahabr.ru/post/253171/#habracut

[>] Как мы впервые в Украине провели мероприятие по безопасности с размахом
habra.15
habrabot(difrex,1) — All
2015-11-04 22:00:04


_Привет всем ИБ'шникам и хакерам, здесь отчет о HackIT с интересными подробностями._ Наверняка многие слышали о том, что в Украине официально проходит набор в киберполицию на позиции инспектора и спецагента. Так вот, это не случайно. Это мероприятие, которое мы готовили еще с мая 2015, подразумевало собой проведение форума на 3 секции из 21 спикеров и отдельного зала для проведения олимпиады в формате CTF, где 9 лучших по scoreboard награждались призами. Надеюсь данный пост не сочтут за рекламу, т.к. мероприятие уже прошло, а цель публикации — собрать не безраличных людей к кибербезопасности в Украине. ![image][1] Дальше — фото и видео. [Читать дальше →][2]

[1]: https://habrastorage.org/files/e67/908/74e/e6790874e2d3412fa83cc551ab924fdd.jpg
[2]: http://habrahabr.ru/post/270163/#habracut

[>] Анализ AST c помощью паттернов
habra.15
habrabot(difrex,1) — All
2015-11-05 01:00:03


Сейчас я работаю [над senjin/gglsl][1] — библиотекой для программирования шейдеров с помощью Groovy, о которой [недавно писал][2]. Здесь я опишу три подхода к анализу AST (abstract syntax tree), все на примерах под-задач, вытекающих одна из другой и связанных общим контекстом: рекурсивные функции, паттерн Visitor, и паттерн-матчинг. Паттерн-матчинг реализован на Java и [доступен на GitHub][3]. [Читать дальше →][4]

[1]: https://github.com/kravchik/senjin
[2]: http://habrahabr.ru/post/269591/
[3]: https://github.com/kravchik/jcommon/wiki/pattern-matching
[4]: http://habrahabr.ru/post/270173/#habracut

[>] Android и iOS приложения пересылают данные пользователей третьей стороне намного чаще, чем принято считать
habra.15
habrabot(difrex,1) — All
2015-11-05 05:30:03


Проведя анализ 110 приложений (как Android, так и iOS), [команда экспертов][1] сделала вывод, что передача персональных данных пользователей этих приложений третьим лицам происходит достаточно часто. При этом у пользователя, зачастую, просто нет выбора. Как оказалось, подавляющее большинство проверенных приложений предоставляют Google, Apple и третьим лицам такие данные, как e-mail, имена и координаты своих пользователей. В среднем одно приложение Android отсылает данные такого рода по 3,1 адресам (доменам), а iOS приложение делает то же самое для 2,6 адресов (доменов). В некоторых случаях медицинские приложения отсылают поисковые результаты по словам «герпес» или «интерферон» не менее, чем на 5 различных доменов, не уведомляя пользователя о том, что происходит. ![][2] [Читать дальше →][3]

[1]: http://arstechnica.com/security/2015/11/user-data-plundering-by-android-and-ios-apps-is-as-rampant-as-you-suspected/
[2]: https://habrastorage.org/getpro/habr/post_images/b80/710/4ff/b807104ffdc9c4f8c7ff02a1a52eb1a4.png
[3]: http://habrahabr.ru/post/270181/#habracut

[>] [recovery mode] CSS Sans — шрифт, написанный на CSS
habra.14
habrabot(difrex,1) — All
2015-03-16 17:00:03


Привет, %habrauser%! Уверен, ты уже видел CSS анимацию, часы, блоки с уголком и прочее-прочее-прочее. Однако, видел ли ты когда-нибудь шрифт, который написан только на CSS? [Читать дальше →][1]

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

[>] Где находиться типу: справа или слева?
habra.15
habrabot(difrex,1) — All
2015-11-05 10:30:06


Как-то увидев очередную статью на Хабре, посвященную для меня совершенно новому и неизведанному языку Go, решил попробовать, что это за зверь и с чем его едят . Конечно, язык имеет много возможностей и достаточно удобен. Но что меня сразу удивило, это отличный от C-подобных языков принцип объявления переменных, а именно тип переменных описывается справа от имени переменной. У меня как человека, практически выросшего на С, это вызывало удивление. Потом я конечно вспомнил Pascal, что там тоже тип переменной был справа. Заинтересовавшись этим вопросом, я попытался разобраться, почему используется тот или иной синтаксис описания типа переменных в этих 2-х языках. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/bfe/77c/bd3/bfe77cbd353f4792ba9a129db04efe8b.jpg
[2]: http://habrahabr.ru/post/270081/#habracut

[>] Новый алгоритм синхронизации Яндекс.Диска: как не подавиться 900 000 файлов
habra.14
habrabot(difrex,1) — All
2015-03-16 17:30:03


Яндекс.Диск — один из немногих сервисов Яндекса, частью которого является программное обеспечение для десктопа. И одна из самых важных его составляющих — алгоритм синхронизации локальных файлов с их копией в облаке. Недавно нам пришлось его полностью поменять. Если старая версия с трудом переваривала даже несколько десятков тысяч файлов и к тому же не достаточно быстро реагировала на некоторые «сложные» действия пользователя, то новая, используя те же ресурсы, справляется с сотнями тысяч файлов. В этом посте я расскажу, почему так получилось: чего мы не смогли предвидеть, когда придумывали первую версию ПО Яндекс.Диска, и как создавали новую. [![][1]][2] Прежде всего, о самой задаче синхронизации. Технически говоря, она состоит в том, чтобы в папке Яндекс.Диска на компьютере пользователя и в облаке был один и тот же набор файлов. То есть такие действия пользователя, как переименование, удаление, копирование, добавление и изменение файлов, должны синхронизироваться с облаком автоматически. [Читать дальше →][3]

[1]: //habrastorage.org/files/452/bdd/9aa/452bdd9aabcc4598a92dcdade1b56bb5.jpg
[2]: http://habrahabr.ru/company/yandex/blog/253171/
[3]: http://habrahabr.ru/post/253171/#habracut

[>] К тридцатилетию первого C++ компилятора: ищем ошибки в Cfront
habra.15
habrabot(difrex,1) — All
2015-11-05 12:30:03


[![Бьёрн Страуструп][1]][2] _Авторы: Андрей Карпов, Бьёрн Страуструп._ **Cfront** это компилятор для С++, существующий примерно с 1983 года и разработанный Бьёрном Страуструпом. В то время он был известен как «C с классами». Cfront имел полноценный парсер, таблицы символов, строил дерево для каждого класса, функции и т.д. Cfront был основан на CPre. Cfront определял развитие языка приблизительно до 1990г. Многие неясные моменты, имеющие место в С++, связаны с ограничениями реализации Cfront. Причина в том, что Cfront осуществлял трансляцию с C++ в C. Одним словом, Cfront — это священный артефакт для любого C++ программиста. И я просто не мог пройти мимо, не проверив этот проект. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/a67/ff9/3a1/a67ff93a1111469ca360932dfbc0ab4f.png
[2]: http://www.viva64.com/media/images/content/b/0355_CFront/image2.png
[3]: http://habrahabr.ru/post/270191/#habracut

[>] CLion 1.2: еще больше возможностей и преимуществ
habra.15
habrabot(difrex,1) — All
2015-11-05 15:00:03


Сегодня мы хотим рассказать про новый релиз нашей кросс-платформенной IDE для C и C++ — CLion 1.2. Этот релиз вышел буквально на днях, в рамках [апдейта всех десктопных продуктов JetBrains и запуска новой лицензионной модели][1]. Кстати, если у вас уже есть лицензия CLion (купленная до 2 ноября или после запуска новой лицензионной модели), этот апдейт Вы получаете абсолютно бесплатно. Итак, что же внутри?

# Google Test

Одно из главных нововведений этого релиза — поддержка Google Test и возможность запускать тесты прямо из IDE. Для этого в CLion реализованы специальные конфигурации, которые создаются автоматически при запуске теста, файла с тестами, тестового класса или вручную в настройках. В настройках конфигурации указывается, какие тесты запускать, какой при этом таргет вызвать и пр.: [Читать дальше →][2]

[1]: http://habrahabr.ru/company/JetBrains/blog/270003/
[2]: http://habrahabr.ru/post/270185/#habracut

[>] Развёртывание приложений в InterSystems Caché
habra.15
habrabot(difrex,1) — All
2015-11-05 15:30:03


[][1]

## Введение

Итак, вы разработали своё приложение на технологиях InterSystems. Теперь его надо развернуть у клиента и часто не один раз. В процессе разработки у вас появилась инструкция по установке – потому что недостаточно просто импортировать классы, нужно ещё и провести тонкую настройку среды под ваши нужды. Для решения этих задач существует утилита [%Installer][2]. Эта статья о ней. [Читать дальше →][3]

[1]: http://habrahabr.ru/company/intersystems/blog/268767/
[2]: http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=GCI_manifest
[3]: http://habrahabr.ru/post/268767/#habracut

[>] Уличная магия в скриптах или что связывает Groovy, Ivy и Maven?
habra.15
habrabot(difrex,1) — All
2015-11-05 15:30:03


После мучений с отладкой сложных MVEL скриптов + MavenClassloader, обнаружил, что механизм динамического разрешения зависимостей есть в языке Groovy. К тому же отладка Groovy скриптов возможна и в Idea и в Eclipse. ![][1] Вы спросите зачем нужно динамическое разрешение зависимостей? Некоторые вещи проще делать так, а некоторые возможно только так.














В публикации вы найдете работающее решение для Groovy в виде одного jar файла, загрузчик классов из репозитариев maven для Java приложения. Узнаем про особенности работы Grape «из коробки». Чтобы не быть голословным и были понятны возможности [Grape][2]… [Читать дальше →][3]

[1]: https://habrastorage.org/files/3f0/ecd/0db/3f0ecd0dbafe402caa35b2a1a88ca7d3.jpg
[2]: http://docs.groovy-lang.org/latest/html/documentation/grape.html
[3]: http://habrahabr.ru/post/270145/#habracut

[>] [Из песочницы] Highload на Java: о чем нужно помнить
habra.15
habrabot(difrex,1) — All
2015-11-05 15:30:03


Highload — это тема одновременно модная и достаточно заезженная, тем более, что нет четкого определения, что же такое «Highload». Для ясности, давайте назовем «Highload» сетевое приложение, которое должно обрабатывать 1000 запросов в секунду. А приложение, обрабатывающее 1 запрос в секунду, соответственно, «не Highload». Мой опыт показывает, что между первым и вторым есть существенная разница в архитектуре, подходах к разработке и проблемах. В этой статье я попытаюсь изложить эти отличия, как я их понимаю. ![image][1] Итак… [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/eae/1e7/fd0/eae1e7fd01584b0509bc3a484b0af3a7.jpg
[2]: http://habrahabr.ru/post/270059/#habracut

[>] [Перевод] Почему я не испытываю неприязни к Git: скрытая целостность
habra.14
habrabot(difrex,1) — All
2015-03-16 18:30:02


![][1] _Предлагаю вашему вниманию перевод небольшой [статьи][2] из блога Armin Ronacher — автора Flask, Jinja2 и много чего еще. На этот раз он поделится своими мыслями о Git — распределенной системе управления версиями файлов. _ Git для меня интересная тема. Впервые я попробовал использовать Git, когда там не было вообще никакой системы команд, а [Cogito][3] считался многообещающим проектом. Не могу сказать, что мне это понравилось, в то время я в основном пользовался SVN, и он полностью решал все мои задачи. Вскоре я познакомился с Mercurial, и это была любовь с первого взгляда, положившая начало долгому и позитивному опыту использования этой VCS (version control system), которая получила в моем лице преданного сторонника. Только в 2008 году я перешел на Git, и мне потребовалось несколько попыток, прежде чем я понял, что пора переносить на него мои репозитории. [Читать дальше →][4]

[1]: //habrastorage.org/files/1ee/135/c9f/1ee135c9fb6c4c78b85da94cf87cc8d2.jpg
[2]: http://lucumr.pocoo.org/2015/2/17/ui-and-hidden-consistency/
[3]: http://git.or.cz/cogito/
[4]: http://habrahabr.ru/post/253211/#habracut

[>] [Перевод] Как обнаружить и устранить скрытую переадресацию для мобильных устройств
habra.15
habrabot(difrex,1) — All
2015-11-05 15:30:03


Привет, Хабр! Все мы любим, когда сайт отлично работает на любом устройстве, вне зависимости от размеров экрана, способов управления и взаимодействия. Нередко контент приходится незначительно адаптировать к устройству, на котором его просматривает пользователь: например, оптимизация для небольшого экрана смартфона предполагает изменение изображений и других элементов содержания. Чтобы мобильным посетителям было удобнее, разработчики нередко используют [всплывающую панель навигации][1]. Если такие модификации реализованы должным образом и их цель — повысить удобство, мы не рассматриваем их как нарушение правил Google. То же самое относится к переадресации на сайты для мобильных устройств. Пользователям смартфонов будет удобнее работать не с обычной версией сайта, а с мобильной. Поэтому переадресация, например, с **example.com/url1** на **m.example.com/url1** оправдана. Однако скрытая переадресация мобильных пользователей на посторонние страницы мешает работе и нарушает [рекомендации Google для веб-мастеров][2].



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

[1]: https://developers.google.com/web/fundamentals/layouts/navigation-patterns/navigationdrawer/
[2]: https://support.google.com/webmasters/answer/2721217
[3]: http://habrahabr.ru/post/269951/#habracut

[>] [Из песочницы] Устройство и работа портов ввода-вывода микроконтроллеров AVR. Часть 1
habra.14
habrabot(difrex,1) — All
2015-03-16 19:00:03




#### Робота портов ввода/вывода

Изучив данный материал, в котором все очень детально и подробно описано с большим количеством примеров, вы сможете легко овладеть и программировать порты ввода/вывода микроконтроллеров AVR.

* Робота портов ввода/вывода
* Подключение светодиода к линии порта ввода/вывода
* Подключение транзистора к линии порта ввода/вывода
* Подключение кнопки к линии порта ввода/вывода

_Пример будем расматривать на микроконтроллере **ATMega8**. Программу писать будем в **Atmel Studio 6.0**. Емулировать схему будем в **Proteus 7 Professional**._ С внешним миром микроконтроллер общается через порты ввода вывода. Схема порта ввода вывода указана в даташите: ![image][1] Но новичку разобраться довольно со схемой довольно сложно. Поэтому схему упростим: ![image][2] **Pxn** – имя ножки порта микроконтроллера, где x буква порта (A, B, C или D), n номер разряда порта (7… 0). **Cpin** — паразитная емкость порта. **VCC** — напряжение питания. **Rpu** — отключаемый нагрузочный верхний резистор (pull-up). **PORTxn** — бит n регистра PORTx. **PINxn** — бит n регистра PINx. **DDRxn** — бит n регистра DDRx. [Читать дальше →][3]

[1]: http://habrastorage.org/files/6cd/82c/f36/6cd82cf3698b4c8da82c2551cade1f01.png
[2]: http://habrastorage.org/files/cbb/0d2/38e/cbb0d238e34243aa978df2a5000863fe.png
[3]: http://habrahabr.ru/post/253213/#habracut

[>] Как нам обустроить альтернативу 1С
habra.15
habrabot(difrex,1) — All
2015-11-05 15:30:03


Поскольку задача написания «аналогов» и «альтернатив» 1С нетривиальная, есть смысл изложить свое видение и ключевые моменты на основе опыта написания своей наколенной поделки. Ну и как бонус услышать критику и вовремя переделать где промахнулся. По факту, на данный момент 1С занимает подавляющий сегмент в нише учетных систем. Это объясняется рядом причин, в том числе и агрессивным маркетингом. Напомню техническую сторону. 1С в общем виде, состоит как бы из двух физически отдельных частей — собственно платформы (ядра, движка) и так называемой конфигурации. Конфигурация — это та часть, где собственно и реализуется прикладная бизнес-логика. Платформа предоставляет персистентное хранилище, бизнес-объекты высокого уровня, всякого рода конструкторы и построители отчетов, и специальный язык программирования. Но сама по себе технологическая платформа, даже с такими возможностями, не имела бы успеха. Поэтому конфигурация поставляется с уже написанной логикой — бухучет, торговля, склад и т.д. с учетом действующего законодательства. Это достаточно объемный труд, но в результате пользователь получает готовое законченное решение. А поскольку код самой конфигурации открыт, то остается возможность, как угодно корректировать бизнес-логику и подстраивать под свой бизнес. Это плюсы. Но есть и масса минусов. Чтобы не описывать тут можно почитать например [здесь][1]. Попыток вытеснить 1С предпринимается великое множество. Большинство проектов пытается переплюнуть плюсы 1С. Тягаться с огромной корпорацией дело малоперспективное. Продукты, писанные на Делфи или .NET, то есть требующие перекомпиляции, вообще неконкурентные, те, кто пытаются прикручивать в качестве DSL движки javascript или VBA выглядят чуть получше, но в любом случает такие решения могут использоваться в основном если есть штатный программист, чего малый бизнес, как правило, позволить себе не может. Попробуем подобраться с другой стороны. Не пытаться переплюнуть достоинства 1С а предложить решения тех проблем где 1С имеет минусы. Поскольку минусы где то уравновешивают плюсы а у нас этих минусов не будет то, даже если у нас не будет плюсов на уровне 1С, сальдо примерно будет такое же. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/244727/
[2]: http://habrahabr.ru/post/270087/#habracut

[>] Ваш персональный курс по Big Data
habra.14
habrabot(difrex,1) — All
2015-03-16 20:00:03


![][1] Привет, хабр! После публикации [нескольких статей][2] по **Big Data** и **Машинному обучению**, ко мне пришло немало писем от читателей с вопросами. За последние несколько месяцев мне удалось помочь многим людям сделать быстрый старт, некоторые из них — уже решают прикладные задачи и делают успехи. А кто-то уже устроился на работу и занимается решением реальных задач. Моя цель — чтобы вокруг меня были умные люди, с которыми в том числе и я смогу работать в дальнейшем. Поэтому я хочу помочь тем, кто действительно хочет научиться решать настоящие задачи на практике. В сети присутствует большое количество мануалов о том, как стать ученым по данным (**Data Scientist**). В свое время я прошел все, что там есть. **Однако, на практике порой нужны совсем другие знания.** О том, какие именно навыки нужны — я расскажу в сегодняшней статье и постараюсь ответить на все Ваши вопросы. [Читать дальше →][3]

[1]: //habrastorage.org/files/5d5/583/b08/5d5583b088a14c7eb219fbe1e2072d4a.png
[2]: http://habrahabr.ru/users/akrot/topics/
[3]: http://habrahabr.ru/post/252743/#habracut

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


[![][1]][2] В предыдущих статьях мы говорили о том, что такое событийно-ориентированная система бэктестинга, разобрали [иерархию классов][3], необходимую для ее функционирования, обсудили то, как подобные системы [используют рыночные данные][4], а также [осуществляют][5] отслеживание позиций и генерацию приказов на покупку. Кроме того, мы описали [процесс][6] оценки производительности тестируемых стратегий. В сегодняшнем материале будет рассмотрен процесс создания обработчика API брокерской системы для перехода к реальной торговле. **Примечание**: _В качестве примера автор использует API зарубежной компании Interactive Brokers, отсюда названия обсуждаемых модулей (IBExecutionHandler и т.п.). У ITinvest есть собственный [API-интерфейс SmartCOM][7], который может быть использован при создания систем, подобных описываемой._ [Читать дальше →][8]

[1]: https://habrastorage.org/files/ad3/461/7df/ad34617df75b47a19bce3b3fcd7866df.jpg
[2]: http://habrahabr.ru/company/itinvest/blog/270215/
[3]: http://habrahabr.ru/company/itinvest/blog/263097/
[4]: http://habrahabr.ru/company/itinvest/blog/264141/
[5]: http://habrahabr.ru/company/itinvest/blog/266623/
[6]: http://habrahabr.ru/company/itinvest/blog/268929/
[7]: http://www.itinvest.ru/software/smartcom/
[8]: http://habrahabr.ru/post/270215/#habracut

[>] [Из песочницы] Выгрузка условий конкурсов госзакупок с ООС zakupki.gov.ru
habra.14
habrabot(difrex,1) — All
2015-03-16 22:00:04


Примечания:

* **ООС** — _общероссийский официальный сайт ([Государственные закупки][1])._
* Требуемые знания для понимания статьи: _VBA (MS Excel)._



#### **Введение**

Цитата:

> «Официальный сайт Российской Федерации в сети «Интернет» для размещения информации о размещении заказов на поставки товаров, выполнение работ, оказание услуг … предназначен для обеспечения свободного и безвозмездного доступа к полной и достоверной информации о контрактной системе в сфере закупок и закупках товаров, работ, услуг, отдельными видами юридических лиц, а также для формирования, обработки и хранения такой информации.»

Для многих коммерческих и иных компаний система «госзакупок» является основным способом привлечения в хозяйственную деятельность государственных (бюджетных) средств. Информация о закупках товаров, услуг, исследовательских работ, осуществляемых компаниями с государственным участием (и другими отдельными видами компаний) в обязательном порядке (согласно федеральным законам №№ 223, 94, 44) размещается на сайте госзакупок. Коммерческие компании также зачастую публикуют свои тендеры именно на официальном сайте госзакупок. Ссылки на упоминаемые законы, информация на сайте «КонсультантПлюс»:

* [Федеральный закон от 21.07.2005 N 94-ФЗ (ред. от 02.07.2013) "О размещении заказов на поставки товаров, выполнение работ, оказание услуг для государственных и муниципальных нужд"][2]
* [Федеральный закон от 18.07.2011 N 223-ФЗ (ред. от 12.03.2014, с изм. от 29.12.2014) "О закупках товаров, работ, услуг отдельными видами юридических лиц" (с изм. и доп., вступ. в силу с 01.01.2015)][3]
* [Федеральный закон от 05.04.2013 N 44-ФЗ (ред. от 08.03.2015) "О контрактной системе в сфере закупок товаров, работ, услуг для обеспечения государственных и муниципальных нужд"][4]

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

[1]: http://zakupki.gov.ru/
[2]: http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=148890
[3]: http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=166488
[4]: http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=176365
[5]: http://habrahabr.ru/post/253201/#habracut

[>] Boost C++ libraries на Android; и не только
habra.14
habrabot(difrex,1) — All
2015-03-16 23:30:03


Итак, мы запустили регулярное регрессионное тестирование библиотек Boost на Android. С результатами все желающие могут ознакомиться на [официальной страничке Boost (develop branch)][1] или на нашем сайте (Android-only): [master][2], [develop][3]. На данный момент есть немало регрессий, часть из которых вызвана багами в Boost, а часть — багами в [CrystaX NDK][4]. Мы, естественно, на этом не останавливаемся и продолжаем работать, так что количество фэйлов будет уменьшаться со временем. Тем не менее, это довольно важный шаг, т.к. процесс тестирования теперь полностью налажен и работает в автоматическом режиме, так что теперь сделать Boost полноценно поддерживаемым на Android — относительно несложная техническая задача и всего лишь вопрос времени. Призываю всех заинтересованных обращать внимание на регрессии и, если причиной окажется баг в CrystaX NDK — [заводить тикет][5]. Само собой, мы этим занимаемся тоже, но эффективность, очевидно, будет выше при участии большего количества людей. [Читать дальше →][6]

[1]: http://www.boost.org/development/tests/develop/developer/summary.html
[2]: https://boost.crystax.net/master/developer/summary.html
[3]: https://boost.crystax.net/develop/developer/summary.html
[4]: https://www.crystax.net/android/ndk
[5]: https://tracker.crystax.net/projects/ndk/issues
[6]: http://habrahabr.ru/post/253233/#habracut

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


Эта публикация может быть интересна тем системным администраторам, которые используют что-то из нижеперечисленнго:

* Linux — based систему на машинах-клиентах;
* Тонкие/толстые однотипные клиенты на различном железе;
* Сетевое хранилище клиентских данных;
* Предустановленный регламентированный софт;
* Openvpn/rdp к серверам приложений.
* Плюшевый (мягкий и пушистый) мониторинг linux клиентов типа Nagios.

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

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

[>] [recovery mode] Скриптование под .NET на JScript
habra.15
habrabot(difrex,1) — All
2015-11-05 15:30:03


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

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

[>] Ansible 2.0 beta 2
habra.15
habrabot(difrex,1) — All
2015-11-05 18:00:03


![image][1] О системе управления конфигурациями Ansible мы [уже писали][2] два года назад. Мы активно её используем в собственной практике и внимательно следим за всеми изменениями и обновлениями. Конечно же, мы не могли оставить без внимания следующую новость: [вышла в свет вторая бета-версия Ansible v2.0][3]. Черновой вариант Ansible v2.0 был размещён на GitHub уже давно, а теперь наконец-то появился более или менее стабильный бета-релиз. В этой статье мы расскажем о наиболее значимых нововведениях во второй версии. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/07b/9ae/fb8/07b9aefb84b4863c9161edb0b4bde6df.png
[2]: http://habrahabr.ru/company/selectel/blog/196620/
[3]: https://groups.google.com/forum/m/#!topic/ansible-project/krpeTwi3mpo
[4]: http://habrahabr.ru/post/270209/#habracut

[>] Реализация сортировки в V8 от Google
habra.15
habrabot(difrex,1) — All
2015-11-05 19:00:04


![image][1] Мир javascript развивается с невероятной скоростью: новые стандарты языка, новые фреймворки, и в браузере, и на сервере и в десктопных приложениях и так далее… Но иногда хочется вместо изучения новой супер-фичи погрузиться в какую-то более базовую тему. И погрузиться глубоко, до самых исходников. И в этот момент под моим пристальным взглядом оказалась незаметная строчка «native code», которая так или иначе появляется перед глазами любого JS разработчика в консоли Chrome или Node.js:

[].sort.toString();
"function sort() { [native code] }"


Итак, кому интересно, какая реализация сортировки скрывается в V8 за надписью [native code] — добро пожаловать под кат. [Читать дальше →][2]

[1]: https://habrastorage.org/files/55b/c99/c47/55bc99c47029458e80fe886fdec184e4.png
[2]: http://habrahabr.ru/post/265079/#habracut

[>] [Из песочницы] Про Parboiled
habra.15
habrabot(difrex,1) — All
2015-11-05 19:00:04




#### Часть 1. Почему Parboiled?

Сегодня, в свете бурного роста популярности функциональных языков программирования, всё чаще находят себе применение комбинаторы парсеров — инструменты, облегчающие разбор текста простым смертным. Такие библиотеки, как [Parsec][1] (Haskell) и [Planck][2] (OCaml) уже успели хорошо себя зарекомендовать в своих экосистемах. Их удобство и возможности в своё время подтолкнули создателя языка Scala, Мартина Одерски, внести в стандартную библиотеку их аналог — [Scala Parser Combinators][3] (ныне вынесены в [scala-modules][4]), а знание и умение пользоваться подобными инструментами — отнести к обязательным требованиям к Scala-разработчикам [уровня A3][5]. Эта серия статей посвящена библиотеке [Parboiled][6] — мощной альтернативе и возможной замене для Scala Parser Combinators. В ней мы подробно рассмотрим работу с текущей версией библиотеки — Parboiled2, а также уделим внимание Parboiled1, так как большая часть существующего кода всё ещё использует именно её. **Структура цикла:**

* Часть 1. Почему Parboiled?
* Часть 2. Сопоставление текста
* Часть 3. Извлечение данных
* Часть 4. Суровая действительность

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

[1]: https://wiki.haskell.org/Parsec
[2]: https://bitbucket.org/camlspotter/planck
[3]: https://github.com/scala/scala-parser-combinators
[4]: http://mvnrepository.com/artifact/org.scala-lang.modules
[5]: http://www.scala-lang.org/old/node/8610
[6]: https://github.com/sirthias/parboiled
[7]: http://habrahabr.ru/post/270233/#habracut

[>] Ansible 2.0. Обзор новшеств
habra.15
habrabot(difrex,1) — All
2015-11-05 19:00:04


![image][1] О системе управления конфигурациями Ansible мы [уже писали][2] два года назад. Мы активно её используем в собственной практике и внимательно следим за всеми изменениями и обновлениями. Конечно же, мы не могли оставить без внимания следующую новость: [вышла в свет вторая бета-версия Ansible v2.0][3]. Черновой вариант Ansible v2.0 был размещён на GitHub уже давно, а теперь наконец-то появился более или менее стабильный бета-релиз. В этой статье мы расскажем о наиболее значимых нововведениях во второй версии. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/07b/9ae/fb8/07b9aefb84b4863c9161edb0b4bde6df.png
[2]: http://habrahabr.ru/company/selectel/blog/196620/
[3]: https://groups.google.com/forum/m/#!topic/ansible-project/krpeTwi3mpo
[4]: http://habrahabr.ru/post/270209/#habracut

[>] [Из песочницы] Об установке Crashplan в FreeNAS (и решение проблемы с кириллицей)
habra.14
habrabot(difrex,1) — All
2015-03-17 06:30:07




#### **Аннотация**

Я всегда рассматривал Хабр как кладезь ценной информации в решении многих проблем. Поэтому, столкнувшись с проблемой и найдя адекватное решение, решил поделиться _своим опытом_. Я не пытался написать мануал, а скорее руководство к действию, но со своей точки зрения и исходя из своих потребностей. Надеюсь, кому-то пригодится.





[Всем, кому интересно читать далее.][1]

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

[>] Pebble: приложения в фоне на примере «всплывающих» уведомлений
habra.14
habrabot(difrex,1) — All
2015-03-17 11:00:03


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

[1]: //habrastorage.org/files/b41/26f/f68/b4126ff68b79482cafcc453cd65b62c6.png
[2]: http://habrahabr.ru/post/253221/#habracut

[>] Изолируем демоны с systemd или «вам не нужен Docker для этого!»
habra.15
habrabot(difrex,1) — All
2015-11-05 19:30:03


В последнее время я вижу, как довольно большое количество людей применяет контейнерную виртуализацию только для того, чтобы запереть потенциально небезопасное приложение внутри контейнера. Как правило, используют для этого Docker из-за его распространенности, и не знают ничего лучше. Действительно, многие демоны первоначально запускаются от имени root, а далее либо понижают свои привилегии, либо master-процесс порождает обрабатывающие процессы с пониженными привилегиями. А есть и такие, которые работают исключительно от root. Если в демоне обнаружат уязвимость, которая позволяет получить доступ с максимальными привилегиями, будет не очень приятно обнаружить злоумышленников, уже успевших скачать все данные и оставить вирусов. Контейнеризация, предоставляемая Docker и другим подобным ПО, действительно спасает от этой проблемы, но также и привносит новые: необходимо создавать контейнер для каждого демона, заботиться о сохранности измененных файлов, обновлять базовый образ, да и сами контейнеры часто основаны на разных ОС, которые необходимо хранить на диске, хотя они вам, в общем-то, и не особо нужны. Что делать, если вам не нужны контейнеры как таковые, в Docker Hub приложение собрано не так, как нужно вам, да и версия устарела, SELinux и AppArmor кажутся вам слишком сложными, а вам бы хотелось запускать его в вашем окружении, но используя такую же изоляцию, которую использует Docker?

### Capabilities

В чем отличие обычного пользователя от root? Почему root может управлять сетью, загружать модули ядра, монтировать файловые системы, убивать процессы любых пользователей, а обычный пользователь лишен таких возможностей? Все дело в [capabilities][1] — средстве для управления привилегиями. Все эти привилегии даются пользователю с UID 0 (т.е. root) по умолчанию, а у обычного пользователя нет ни одного из них. Привилегии можно как дать, так и отобрать. Так, например, привычная команда ping требует создания RAW-сокета, что невозможно сделать от имени обычного пользователя. Исторически, на ping ставили SUID-флаг, который просто запускал программу от имени суперпользователя, но сейчас все современные дистрибутивы выставляют CAP\_NET\_RAW capability, которая позволяет запускать ping из-под любого аккаунта. Получить список установленных capabilities файла можно командой `getcap` из состава libcap.

% getcap $(which ping)
/usr/bin/ping = cap_net_raw+ep


Флаг **p** здесь означает _permitted_, т.е. у приложения есть возможность использовать заданную capability, **e** значит _effective_ — приложение будет ее использовать, и есть еще флаг **i** — _inheritable_, что дает возможность сохранять список capabilities при вызове функции `execve()`. Capabilities можно задать как на уровне ФС, так и просто у отдельного потока программы. Получить capability, которая не была доступна с момента запуска, нельзя, т.е. привилегии можно только понижать, но не повышать. Также существуют биты безопасности (Secure Bits), их три: KEEP\_CAPS позволяет сохранить capability при вызове setuid, NO\_SETUID\_FIXUP отключает перенастройку capability при вызове setuid, и NOROOT запрещает выдачу дополнительных привилегий при запуске suid-программ. [Читать дальше →][2]

[1]: http://man7.org/linux/man-pages/man7/capabilities.7.html
[2]: http://habrahabr.ru/post/270165/#habracut

[>] [Из песочницы] Установка и запуск Android-приложений на Linux
habra.14
habrabot(difrex,1) — All
2015-03-17 11:00:03


![image][1] Как известно, многие Android-приложения можно нативно запускать на Chrome OS благодаря библиотеке [Chrome App Runtime][2]. С помощью расширений [chromeos-apk][3] и [ARChon][4] запуск Android APK стал возможен и на других ОС. В этой публикации я расскажу, как установить произвольное Android-приложение на Ubuntu 14.04. [Читать дальше →][5]

[1]: http://habrastorage.org/files/8f1/8eb/ac9/8f18ebac9443465ab3df4d94da72cb60.png
[2]: https://developer.chrome.com/apps/app_runtime
[3]: https://github.com/vladikoff/chromeos-apk
[4]: https://github.com/vladikoff/chromeos-apk/blob/master/archon.md
[5]: http://habrahabr.ru/post/253238/#habracut

[>] Ansible 2.0 b2. Обзор новшеств
habra.15
habrabot(difrex,1) — All
2015-11-05 19:30:03


![image][1] О системе управления конфигурациями Ansible мы [уже писали][2] два года назад. Мы активно её используем в собственной практике и внимательно следим за всеми изменениями и обновлениями. Конечно же, мы не могли оставить без внимания следующую новость: [вышла в свет вторая бета-версия Ansible v2.0][3]. Черновой вариант Ansible v2.0 был размещён на GitHub уже давно, а теперь наконец-то появился более или менее стабильный бета-релиз. В этой статье мы расскажем о наиболее значимых нововведениях во второй версии. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/07b/9ae/fb8/07b9aefb84b4863c9161edb0b4bde6df.png
[2]: http://habrahabr.ru/company/selectel/blog/196620/
[3]: https://groups.google.com/forum/m/#!topic/ansible-project/krpeTwi3mpo
[4]: http://habrahabr.ru/post/270209/#habracut

[>] Вышел новый Intercepter-NG [Android Edition] 1.6
habra.15
habrabot(difrex,1) — All
2015-11-05 21:30:04


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

[1]: https://habrastorage.org/files/4af/5e6/265/4af5e62655834b11b118b9f277b9057d.jpg
[2]: http://habrahabr.ru/post/270249/#habracut

[>] Lock-free структуры данных. Concurrent maps: деревья
habra.14
habrabot(difrex,1) — All
2015-03-17 12:00:02


![][1] Это последняя, на сегодняшний день, статья из цикла про внутреннее устройство конкурентных ассоциативных контейнеров. В предыдущих статьях рассматривались hash map, был построен алгоритм lock-free ordered list и контейнеры на его основе. За бортом остался один важный тип структур данных — деревья. Пришло время немного рассказать и о них. Исследования, посвященные алгоритмам конкурентных деревьев, не требующих внешней синхронизации доступа к ним, начались довольно давно — в 70-х годах прошлого века, — и были инициированы развитием СУБД, поэтому касались в основном оптимизации страничных деревьев ([B-tree][2] и его модификации). Развитие lock-free подхода в начале 2000-х не прошло мимо алгоритмов деревьев, но лишь недавно, в 2010-х годах, появилось множество действительно интересных работ по конкурентным деревьям. Алгоритмы деревьев довольно сложны, поэтому исследователям потребовалось время — порядка 10 лет — на их lock-free/non-blocking адаптацию. В данной статье мы рассмотрим самый простой случай — обычное бинарное дерево, даже не самобалансирующееся. [Читать дальше →][3]

[1]: //habrastorage.org/files/f16/711/864/f16711864e6e4ea78e8cea08ceeb709d.png
[2]: https://ru.wikipedia.org/wiki/B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE
[3]: http://habrahabr.ru/post/251267/#habracut

[>] [Перевод] Что нового в Fedora 23 Workstation
habra.15
habrabot(difrex,1) — All
2015-11-06 00:00:03


![image][1] Выпущен новый релиз Fedora 23 Workstation. Это надежная, удобная и мощная операционная система направлена на домашних пользователей, любителей, студентов, и разработчиков программного обеспечения. Fedora 23 Workstation включает последний релиз GNOME 3.18 сообщества GNOME. Этот релиз GNOME включает обновления файлового менеджера, нового календаря и Todo приложений. Fedora 23 Workstation — первый релиз Fedora, включающий LibreOffice 5. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/ea7/9ef/87d/ea79ef87db66305e586ee870640a005a.png
[2]: http://habrahabr.ru/post/270253/#habracut

[>] PVS-Studio: 25 подозрительных фрагментов кода из CoreCLR
habra.14
habrabot(difrex,1) — All
2015-03-17 12:30:02






Корпорация Microsoft выложила в открытый доступ исходный код движка CoreCLR, который является ключевым элементом .NET Core. Эта новость, конечно же, не могла не привлечь наше внимание. Ведь чем больше аудитория у проекта, тем тревожнее будут выглядеть найденные подозрительные места. Несмотря на авторство Microsoft, как в любом крупном проекте, тут есть на что посмотреть и над чем задуматься.

## Введение

[CoreCLR][1] является средой исполнения .NET Core, выполняя такие функции как сборку мусора или компиляции в конечный машинный код. .Net Core — это модульная реализация .Net, которая может быть использована как база для огромного количества сценариев. Исходный код с недавнего времени доступен на GitHub и проверялся с помощью [PVS-Studio][2] 5.23. Как и я, желающие могут получить полный лог проверки с помощью Microsoft Visual Studio Community Edition, выход которой тоже был недавней [новостью][3] от Microsoft. [Читать дальше →][4]

[1]: https://github.com/dotnet/coreclr
[2]: http://www.viva64.com/ru/pvs-studio/
[3]: http://www.viva64.com/ru/n/0102/
[4]: http://habrahabr.ru/post/253280/#habracut

[>] [Из песочницы] Решение задачи кредитного скоринга в студии Microsoft Azure Machine Learning
habra.15
habrabot(difrex,1) — All
2015-11-06 08:30:03




#### Резюме

Предсказать, выплатит клиент банка кредит или нет. Задача была предложена на интернет-турнире, устроенном одним банком. Один из примеров ее решения можно найти [здесь][1]. Наша цель состоит в построении решения на платформе Microsoft Azure. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/204500/
[2]: http://habrahabr.ru/post/270201/#habracut

[>] SWAPY с новым генератором кода
habra.15
habrabot(difrex,1) — All
2015-11-06 13:30:04


![SWAPY][1]SWAPY – графическая утилита для автоматизации UI для pywinauto (Python). В версии [0\.4.7][2] полностью переработан генератор кода. Основные возможности, а также примеры как быстро и просто создать скрипты автоматического тестирования UI, смотрите под катом. [Читать дальше →][3]

[1]: https://habrastorage.org/files/97b/a96/d4c/97ba96d4c55d4e73a6205689cfb98604.png
[2]: https://github.com/pywinauto/SWAPY/releases
[3]: http://habrahabr.ru/post/270247/#habracut

[>] [Перевод] Про Swift, и почему мои большие проекты будут на Objectve-C еще какое-то (возможно долгое) время
habra.15
habrabot(difrex,1) — All
2015-11-06 14:00:02


_От переводчика: C пятницей, дорогие хабровчане! Хочу поделиться сегодня с вами переводом стататьи с небольшого блога о опыте работы с языком Swift. Вряд-ли она претендует на лавры серьезного и скурпулезного анализа, но думаю будет интересна всем, кто задумывался «а не пора ли оправить на свалку истории этот Objective-C._ Когда Apple представила нам Swift, это было круто! Наконец то мы получили next-gen (т. е. модный-скриптоподобный) язык для разработки под яблочные девайсы (но без поддержки приватных членов класса, хм....). Теперь этот [языкДинозавр квадратноскобочный] может отправиться в музей, а мы начнем тыкать эти новые блестящие фичи языка. Безусловно наивно предполагать что язык, которому менее года, будет без тараканов: очевидное некоторое время нужно дать ему на избавление от детских болячек. Именно поэтому я не бросился переписывать все мои проекты на Swift сразу после анонса. ![][1] _Заметили, что птица падает вниз?_ [Но ты-таки взялся за Swift, ведь так?][2]

[1]: https://habrastorage.org/files/5d2/304/cf7/5d2304cf756b4f3d815d8ca0f309fe3e.jpg
[2]: http://habrahabr.ru/post/270291/#habracut

[>] Программа-криптовымогатель шифрует пользовательские файлы в «оффлайне»
habra.15
habrabot(difrex,1) — All
2015-11-06 15:30:04


![][1] Разного рода ransomware, программ-криптовымогателей развелось сейчас довольно много. Некоторые просто блокируют ПК, пока пользователь не заплатит. Иные разновидности такого ПО шифруют файлы, отправляя ключ на сервер, контролируемый мошенниками. Но есть и другие виды криптовымогателей, которые действуют еще более оригинально. Исследователи из компании Check Point недавно [провели анализ][2] работы одной из разновидностей такого рода программ, которая использует альтернативный метод шифрования файлов и предоставления ключа своим создателям. Сама программа — не новая, впервые ее заметили в июне прошлого года. С тех пор автор неоднократно обновлял свое творение (примерно раз в два месяца), криптовымогатель постоянно эволюционирует и совершенствуется. По мнению специалистов по информационной безопасности, этот образец был создан русскоязычными злоумышленниками, и работает это ПО, как правило, с пользователями из России. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/54d/7cc/056/54d7cc0568a482407b84a68acc4e9e30.jpg
[2]: http://blog.checkpoint.com/2015/11/04/offline-ransomware-encrypts-your-data-without-cc-communication/
[3]: http://habrahabr.ru/post/270307/#habracut

[>] [Из песочницы] Создание плагина для Intellij IDEA. Заметки и мелкие советы
habra.15
habrabot(difrex,1) — All
2015-11-06 16:00:04


Полгода назад или около того я загорелся-таки идей написать свой плагин для Intellij IDEA. Согласно задумке, он должен был считать, сколько времени разработчик потратил на проект (всего, за день, за сеанс) и отображать результат на диаграмме. Никакой магии, но такая функция здорово помогла бы мне рассчитывать время работы. ![][1] [И что из этого вышло?][2]

[1]: https://habrastorage.org/files/550/c43/130/550c431301474e55be9c302426770c55.png
[2]: http://habrahabr.ru/post/270309/#habracut

Pages: 1 ... 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 210