RSS
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 41
[>] Браузер-в-браузере сделает сайт намного безопасней
habra.14
habrabot(difrex,1) — All
2015-01-25 16:00:02


В первую очередь поясню что эта технология находится на ранней стадии разработки, и я бы хотел подискутировать в этом топике о её рентабельности и полезности. Поэтому прототипа еще нет. Большинство уязвимостей в веб сайтах являются результатом изменения HTTP запроса, подмены URL или заголовков, и прочие неожиданные для сервера действия. Обычный пользователь не должен иметь возможности так делать, но так как современное приложение состоит из клиента и сервера, то в реальности сервер не имеет контроля над тем как пользователь использует клиентскую часть. Из-за этого «двойная валидация» встречается повсеместно — на экране нужно показывать только объекты доступные пользователю, плюс нужно на сервере проверять имеет ли пользователь доступ к данному объекту. Так возникла идея [SecureCanvas][1] — превратить сайт в подобие АТМ/терминала, где пользователь может только печатать и двигать мышку. Вместо попытки перехватить вредоносные запросы мы просто переводим игру в другую плоскость и снижаем поверхность атаки до нуля, разрешая пользователю делать лишь то что он и должен делать — взаимодействовать с сайтом. [Читать дальше →][2]

[1]: http://securecanvas.com/
[2]: http://habrahabr.ru/post/248761/#habracut

[>] Факторизация и шифрование на эллиптической кривой
habra.14
habrabot(difrex,1) — All
2015-01-25 19:00:03


     Проблема факторизации составных натуральных чисел (сннч) многие столетия удерживает внимание специалистов в различных теоретических (научных) и прикладных областях таких как числовые системы, вычислительная математика и техника, теория чисел, информационная безопасность, криптография, и др., и вынуждает их прикладывать немалые усилия к ее положительному и успешному решению. Тем не менее, проблема и сегодня далека от ее закрытия, завершения. Автор предлагает к рассмотрению и стремится дать читателю понятие о существующих подходах к решению проблемы, ставших уже своеобразной классикой, привести критику и выразить одобрение замечательным находкам.      В работе излагается один из известных подходов к решению задачи факторизации больших чисел (ЗФБЧ), использующий математику эллиптических кривых (ЭК). Об этой математике, а точнее о технике вычислений приведу цитату авторов из [ 1 ] «Техника, используемая в настоящее время при изучении ЭК, является одной из самых изощренных во всей математике. Мы надеемся, что элементарный подход настоящей работы побудит читателя к дальнейшему изучению этой живой и пленительной ветви теории чисел. Есть много того, что следует изучить, и много работы, которую еще надо проделать. „ [Читать дальше →][1]

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

[>] Age of JIT compiling. Part I. Genesis
habra.14
habrabot(difrex,1) — All
2015-01-25 20:30:04


Тема рантайма платформы .NET освещена весьма подробно. Однако работа самого JIT, результирующий код и взаимодействие со средой исполнения – не очень. Ну что ж, исправим это! Узнаем причины отсутствия наследования у структур, природу unbound delegates. А еще… вызов любых методов у любых объектов без reflection. [Читать дальше →][1]

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

[>] Когда данных действительно много: Vowpal Wabbit
habra.14
habrabot(difrex,1) — All
2015-01-25 22:30:03


Привет, хабр! ![][1] В предыдущих двух постах ([раз][2], [два][3]) мы расмотрели основные алгоритмы и техники, применяющиеся участниками соревнований [Kaggle][4]. Сегодня хотелось бы пойти дальше и поговорить про то, с какими трудностями встречаются исследователи при разработке алгоритмов в случае, когда данных очень много и обучаться приходится на выборках, которые не помещаются в память. Сразу стоит отметить, что это происходит довольно часто, [даже на самом Kaggle][5] (в данной задаче обучающая выборка имеет обьем в несколько гигабайт и новичку может быть просто не понятно, что с этим делать). Ниже мы рассмотрим алгоритмы машинного обучения и инструменты, справляющиеся с данной проблемой. [Читать дальше →][6]

[1]: //habrastorage.org/files/c7d/347/66a/c7d34766a2074fe48515fe66d2c6484c.png
[2]: http://habrahabr.ru/post/247751/
[3]: http://habrahabr.ru/post/248129/
[4]: http://www.kaggle.com
[5]: http://www.kaggle.com/c/avazu-ctr-prediction
[6]: http://habrahabr.ru/post/248779/#habracut

[>] Нерекурсивный алгоритм генерации перестановок
habra.14
habrabot(difrex,1) — All
2015-01-26 02:00:02


Предлагаемый ниже нерекурсивный алгоритм несколько отличается от изложенных в книге Липского [1] и обнаруженных мной в русскоязычном сегменте интернета. Надеюсь будет интересно. [Читать дальше →][1]

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

[>] [Перевод] Когда идентификатор не идентификатор (Атака монгольского разделителя гласных)
habra.14
habrabot(difrex,1) — All
2015-01-26 02:00:02


![][1]

В переводе я позволил себе использовать некоторые англицизмы, такие как «валидный», «нативный» и «бинарник». Надеюсь с ними вопросов не возникнет.
Идентификаторы (identifiers) – специальный термин спецификации C# отожествляющий собой всё к чему можно обратиться по имени, как например название класса, имя переменной и т.д.
Roslyn – компилятор C# кода, написанный на C#. Был создан взамен существующего csc.exe. Я обычно опускаю слово компилятор в данном тексте.



Для начала несколько вещей о которых вы могли не слышать:

* Идентификаторы в C# могут включать в себя escape-последовательности Unicode символов (как например \\u1234).
* Идентификаторы в C# могут включать в себя Unicode символы категории Cf (other, format), но при сравнении идентификаторов на идентичность эти символы игнорируются.
* Символ «Монгольский разделитель гласных» (U+180E) в зависимости от версии Unicode принадлежит либо категории Cf (other, format), либо категории Zs (separator, space).
* В .NET хранится свой собственный список Unicode категорий, независимый от оных в Win32.
* Roslyn является .NET приложением, и поэтому использует Unicode категории, прописанные в файлах .NET. Нативный компилятор (csc.exe) использует либо системные (Win32) категории, либо хранит в себе копию таблиц Unicode.
* Никакая из таблиц Unicode символов (ни .NET, ни Win32) точно следует какой-либо из версий стандарта Unicode.
* Компиляторы могут иметь баги.

Из всего этого вытекают некоторые проблемы…

# Во всём виноват Владимир

Все началось с обсуждения на собрании технической группы ECMA на прошлой неделе. Мы рассматривали «нормативные ссылки», и в частности какую версию стандарта Unicode мы будем использовать. На тот момент спецификация ECMA-335 (4-ое издание) использует Unicode 4.0, а спецификация C# 5 от Microsoft использует Unicode 3.0. Я точно не знаю, учитывают ли разработчики компиляторов такие особенности. На мой взгляд было бы лучше, если ECMA и Microsoft не указывали конкретную версию Unicode в своих спецификациях. Пусть разработчики компиляторов используют самую свежую версию Unicode, доступную на текущий момент. Однако тогда компиляторы должны будут поставляться со своей личной копией таблицы Unicode, что немного странно, на мой взгляд. [Читать дальше →][2]

[1]: //habrastorage.org/files/885/3b8/439/8853b8439abd4a9fb1bf2257b76dd4c1.jpg
[2]: http://habrahabr.ru/post/248797/#habracut

[>] Аннотация к «Effective Modern C++» Скотта Майерса
habra.14
habrabot(difrex,1) — All
2015-01-26 10:30:04


![][1] Пару месяцев назд Скотт Майерс ([Scott Meyers][2]) выпустил новую книгу [Effective Modern C++][3]. Последние годы он безусловно является писателем №1 «про это», кроме того он блестящий лектор и каждая его новая книга просто обречена быть прочитана пишущими на С++. Более того, именно такую книгу я ждал давно, вышел стандарт С++11, за ним С++14, уже виднеется впереди С++17, язык стремительно меняется, однако нигде так и не были описаны все изменения в целом, взаимосвязи между ними, опасные места и рекомендуемые паттерны. Тем не менее, регулярно просматривая Хабр, я так и не нашел публикации о новой книге, похоже придется писать самому. На полноценный перевод меня конечно не хватит, поэтому я решил сделать краткую выжимку, скромно назвав ее аннотацией. Еще я взял на себя смелость перегруппировать материал, мне кажется для короткого пересказа такой порядок подходит лучше. Все примеры кода взяты прямо из книги, изредка с моими дополнениями. [Читать дальше →][4]

[1]: //habrastorage.org/files/069/615/2ef/0696152ef06e40cba11aa1eaba203f11.gif
[2]: http://www.aristeia.com/
[3]: http://shop.oreilly.com/product/0636920033707.do?cmp=af-code-books-video-product_cj_0636920033707_7708709
[4]: http://habrahabr.ru/post/248137/#habracut

[>] Встраиваем бэкдор в Bitcoin (ECDSA) или еще раз о клептографии
habra.14
habrabot(difrex,1) — All
2015-01-26 11:30:04


![][1] Привет, %username%! Пользуешься неофициальными bitcoin клиентами? Есть повод присмотреться к ним повнимательней. После реализации [бэкдора для RSA][2] мне стало интересно, как обстоят дела с остальными криптографическими примитивами. Оказывается, целая наука под названием **клептография** занимается передачей информации в так называемых «подсознательных» каналах. Таких, о которых никому не известно кроме отправителя и получателя. Вроде стеганографии, только внутри криптоалгоритов. [Читать дальше →][3]

[1]: //habrastorage.org/files/0e2/60f/394/0e260f3949a34383b030c5b37a339f84.jpg
[2]: http://habrahabr.ru/post/248269/
[3]: http://habrahabr.ru/post/248419/#habracut

[>] [Из песочницы] Что я хотел знать в начале своей карьеры разработчика. Часть 1
habra.14
habrabot(difrex,1) — All
2015-01-26 18:00:08


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

[1]: //habrastorage.org/files/c7e/701/b9f/c7e701b9fafd466783d4a3b6507f068a.jpg
[2]: http://habrahabr.ru/post/248841/#habracut

[>] Был получен доступ к тысячам персональных данных пользователей «Билайн проводной интернет»
habra.14
habrabot(difrex,1) — All
2015-01-26 18:30:07


Уж простите за пафосный заголовок, но раз [пошла такая пьянка][1], то продолжим. Мне лично такие посты нравились всегда. Итак, речь пойдёт про уязвимость известного в Мск (да и не только) провайдере Beeline. Многие помнят его под именем Corbina. Без сомнения, это один из передовых интернет провайдеров, с большой и хорошей историей. В своё время он был спасением, благодаря качественному и быстрому инету, интранет сетям итп. В настоящий момент сотрудники провайдера в курсе уязвимостей и самые критичные уже закрыты. Однако, уверен, многие откроют для себя много нового и интересного. Тем более, что техника применима практически к любому провайдеру.



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

[1]: http://habrahabr.ru/post/248727/
[2]: http://habrahabr.ru/post/243997/#habracut

[>] Основы программирования графики на Apple Metal: Начало
habra.14
habrabot(difrex,1) — All
2015-01-26 18:30:07


![image][1]Привет, Хабр! Мой сегодняшний пост — это руководство для начинающих программировать графику на Apple Metal API. Когда я начал разбираться с этой темой, то обнаружилось, что помимо документации от Apple и примеров от них же и смотреть особо нечего. Сегодня я расскажу о том, как создать простое приложение на Metal, которое отображает трехмерный куб с освещением. Затем мы нарисуем несколько кубов с использованием одной из главных фишек Metal — рендеринга в нескольких потоках. Заинтересовавшихся прошу под кат. [Читать дальше →][2]

[1]: http://habrastorage.org/files/525/22b/fce/52522bfce5b143139d8d6b111c19a684.png
[2]: http://habrahabr.ru/post/248785/#habracut

[>] Главное преимущество Go
habra.14
habrabot(difrex,1) — All
2015-01-26 21:00:11


Если спросить среднестатического Go-девелопера, какие есть преимущества у Go — скорее всего вы услышите уже знакомый перечень плюшек. О них уже написано немало, но очень часто обходится стороной другая вещь, гораздо более интересная — долгосрочный эффект тех или иных решений дизайна языка. Я хочу раскрыть эту тему чуть шире, которая на самом деле актуальна не только для Go. Но в данной статье я возьму для примера два аспекта — способ обработки ошибок в Go и систему тестирования и постараюсь показать, как дизайн языка вынуждает людей более писать более качественный код. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/424/dd5/fa0/424dd5fa03204d61af9dc18b9161a33f.jpg
[2]: http://habrahabr.ru/post/248857/#habracut

[>] [Из песочницы] Обзор Friendly interactive shell (fish) и почему она лучше bash
habra.14
habrabot(difrex,1) — All
2015-01-26 23:00:02


Недавно админ компании, в которой я работаю, посоветовал попробовать заменить стандартный bash на zsh или **fish**. Я начал искать информацию по обоим оболочкам, перед тем как попробовать их. Тут следует пояснить, почему мне не нравится bash. Основное неудобство для меня — это bash script. Когда надо что-то простенькое реализовать, то синтаксис довольно понятен. Но как только тебе надо сделать какую-то сложную логику (хотя бы несколько команд подряд), становится очень сложно разобраться в коде, особенно когда смотришь чужой скрипт. Следующее, что меня расстраивало — это сложности в автокомплите и поиске команд. Конечно, спасало сочетание Ctrl + r, но хотелось, чтобы такой поиск был по умолчанию. Ну и оставалось чисто индивидуальное недовольство настройкой цветов в баше. Единственное, что мне удалось настроить, это подсказка, и то без онлайн генератора PS1 мне было бы очень сложно и это сделать. Недовольство всеми этими недостатками медленно зрело во мне на протяжении последних 2 лет (приблизительно столько активно пользуюсь командной строкой). Я решил поискать альтернативы. Открыв «Хабр» (основной источник полезной информации для меня) я начал изучать статьи по обоим оболочкам. Первое, что бросилось в глаза — это всего одна короткая статья про [fish][1]. Тогда как про zsh было вполне достаточно информации. Изучив поверхностно последнюю оболочку, я понял, что она еще сложнее в усвоении, чем bash. Конечно, все что угодно можно усвоить и использовать по полной программе, но я не сисадмин, а веб-разработчик на Python и мне нужен удобный инструмент, который бы не отвлекал от основной работы, легко и **понятно** настраивался и конечно же был приятен глазу. ![image][2] Если вас заинтересовала оболочка **fish**, прошу под кат. [Читать дальше →][3]

[1]: http://habrahabr.ru/post/150096/
[2]: http://habrastorage.org/files/954/8a9/f5d/9548a9f5d85a49c0bf08ce480d22add9.png
[3]: http://habrahabr.ru/post/248881/#habracut

[>] Runscript — утилита для запуска python скриптов
habra.14
habrabot(difrex,1) — All
2015-01-27 00:00:02


Думаю многим знакома следующая ситуация. В вашем проекте есть различные действия, которые нужно выполнять время от времени. Для каждого действия вы создаёте отдельный скрипт на питоне. Чтобы далеко не лазить, скрипт кладёте в корень проекта. Через некоторое время вся корневая директория проекта замусоривается этими скриптами и вы решаете сложить их в отдельную директорию. Теперь начинаются проблемы. Если указать интерпретатору python путь до скрипта, включающий эту новую директорию, то внутри скрипта не будут работать импорты пакетов, находящися в корне проекта т.к. корня проекта не будет в sys.path. Эту проблему можно решить несколькими способами. Можно изменять sys.path в каждом скрипте, добавляя туда корень проекта. Можно написать утилитку для запуска ваших скриптов, которая будет изменять sys.path перед запуском скрипта или просто будет лежать в корне проекта. Можно ещё что-то придумать. Мне надоело каждый раз изобретать колесо и я создал велосипед [runscript][1] на котором с удовольствием катаюсь. [Читать дальше →][2]

[1]: http://github.com/lorien/runscript
[2]: http://habrahabr.ru/post/248871/#habracut

[>] Взлом биткоин биржи на Rails
habra.14
habrabot(difrex,1) — All
2015-01-27 00:00:02


В последнее время появилась масса биткоин сервисов. И то что раньше было проектом «for fun» неожиданно стало хранить десятки и даже сотни тысяч долларов. Цена биткоина выросла, но уровень безопасности биткоин сервисов остался таким же низким. Ради портфолио мы провели бесплатный аудит [биткоин биржи с открытым кодом Peatio][1] использующей Ruby on Rails. Репорт в pdf можно [скачать тут][2]. Самое интересное что в результате нашлись не очередные унылые рейс кондишены или SQLi, а довольно таки любопытная цепочка багов ведущая к угону аккаунта и краже существенной части горячего кошелька. [Читать дальше →][3]

[1]: http://github.com/peatio/peatio
[2]: http://sakurity.com/peatio.pdf
[3]: http://habrahabr.ru/post/248887/#habracut

[>] Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 3.1 из 6
habra.14
habrabot(difrex,1) — All
2015-01-27 07:00:05




# Содержание курса



* [Статья 1: алгоритм Брезенхэма][1]
* [Статья 2: растеризация треугольника + отсечение задних граней][2]
* [Статья 3: Удаление невидимых поверхностей: z-буфер][3]
* [Статья 3.1: Настала пора рефакторинга][4]
* Статья 4: Необходимая геометрия: фестиваль матриц
* [4а: Построение перспективного искажения][5]
* [4б: двигаем камеру и что из этого следует][6]
* Статья 5: Пишем шейдеры под нашу библиотеку
* Статья 6: Чуть больше, чем просто шейдер: просчёт теней

Данная статья написана в тесном сотрудничестве (спасибо создателям XMPP) с [haqreu][7], автором данного курса.Мы начали масштабный рефакторинг кода, направленный на достижение максимальной компактности и читаемости. Мы сознательно пошли на отказ от ряда возможных и даже очевидных оптимизаций для получения максимально доступного для понимания кода учебных примеров. P. S [haqreu][8] буквально на днях выложит статью о шейдерах! [Познавательного чтения!][9]

[1]: http://habrahabr.ru/post/248153/
[2]: http://habrahabr.ru/post/248159/
[3]: http://habrahabr.ru/post/248179/
[4]: http://habrahabr.ru/post/248909/
[5]: http://habrahabr.ru/post/248611/
[6]: http://habrahabr.ru/post/248723/
[7]: http://habrahabr.ru/users/haqreu/
[8]: http://habrahabr.ru/users/haqreu/
[9]: http://habrahabr.ru/post/248909/#habracut

[>] [Перевод] Письмо Дейкстры: почему обучение программированию нужно начинать с функционального языка
habra.14
habrabot(difrex,1) — All
2015-01-27 12:00:03


![][1] Недавний [перевод][2] статьи «Пора заменить Python как язык для обучения» спровоцировал большую дискуссию. Очевидно, что программисты считают эту тему очень важной. К сожалению, большинство споров были об императивных языках, и мало кто предлагал функциональные языки в качестве инструмента обучения программированию. Мы в Хекслете недавно запустили [новую версию][3], ключевой особенностью которой стали практические упражнения по программированию в браузере. В связи с этим мы стали получать еще больше писем от начинающих программистов с вопросами вроде «с чего начать». С одной стороны, они хотят выложить бета-версию приложения в app store через неделю. С другой стороны, мы понимаем, что за такой короткий срок, наверное, можно научиться кодить приложения, но нельзя научиться программировать. И сложно решить, что лучше: как можно быстрее научить созданию простых приложений без реального понимания программирования, алгоритмов и их вычислительной сложности, а потом начать знакомство с этими важными темами, или начать «с начала», и органично придти к созданию приложений и продуктов после освоения фундамента. В 2001 году, [Эдсгер Дейкстра][4] написал письмо экономическому совету университета Техаса. В нем знаменитый ученый призывает членов совета задуматься о смене языка программирования для вводного курса. К сожалению, язык [был заменен][5] на Java. Примерно в то же время MIT сменили язык курса «Структура и интерпретация компьютерных программ» с функционального Scheme (диалекта LISP) на Python. Сегодня мы публикуем перевод этого письма.

#### Членам Экономического Совета

Я пишу вам по поводу слуха о замене языка во вводном курсе по программированию с функционального языка Haskell на императивный язык Java. Я считаю, что Совет должен взять на себя ответственность, чтобы решение не было принято на неправильном уровне. [Читать дальше →][6]

[1]: //habrastorage.org/files/247/58a/748/24758a748ccd4084a2d0ebbf9bd7c68e.jpg
[2]: http://habrahabr.ru/company/hexlet/blog/248397/
[3]: https://hexlet.io
[4]: https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D0%B0,_%D0%AD%D0%B4%D1%81%D0%B3%D0%B5%D1%80_%D0%92%D0%B8%D0%B1%D0%B5
[5]: http://www.cs.utexas.edu/undergraduate-program/courses/312-introduction-programming
[6]: http://habrahabr.ru/post/248921/#habracut

[>] Обработка сообщений ядра
habra.14
habrabot(difrex,1) — All
2015-01-27 16:00:03




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

Страшная сказочка:

> EDAC MC0: 1 CE read ECC error on CPU#0Channel#1\_DIMM#0 (channel:1 slot:0)
>
>
>
> EXT4-fs error: ext4\_wait\_block\_bitmap:445: Cannot read block bitmap
>
>
>
> Out of memory: Kill process 95 (sshd) score 31 or sacrifice child
>
>
>
> CMCI storm detected: switching to poll mode
>
>
>
> page allocation failure: order:1, mode:0x4020
>
>
>
> invalid opcode: 0000 [#1] SMP
>
>

Неприятно выглядит, правда? Список очень длинный. В этой статье я расскажу как с этим жить и что мы с ним сделали. Часть из этих сообщений в приерах выше заставит вас погрузиться в бездны современной архитектуры процессоров («CMCI storm», удачи в поиске дороги назад, из дебрей интернетов)… Cтранные вещи в ядре могут нарушать ожидания о том, как работают компьютеры, делая последующую отладку очень затруднённой. Отсутствие знания о том, что случилось может даже оставить с грустным ответом «какая-то неведомая фигня, ребутнули, вроде, прошло». [Читать дальше →][1]

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

[>] Программная маршрутизация с VyOS
habra.14
habrabot(difrex,1) — All
2015-01-27 16:00:03


![image][1] Стабильность и эффективность бизнес-процессов современной организации во многом зависит от бесперебойного функционирования ИТ-инфраструктуры. Содержание ИТ-инфраструктуры во многих случаях обходится дорого, в особенности для малых и средних компаний. С целью оптимизации расходов многие организации прибегают сегодня к практике ИТ-аутсорсинга: вместо того, чтобы приобретать оборудование, компания арендует его в стороннем дата-центре, а для его обслуживания привлекает сторонних специалистов. Чтобы эта практика была выгодной с организационной и с финансовой точки зрения, нужно тщательно продумать техническую сторону вопроса. Планируя перенос части ИТ-инфраструктуры в сторонний дата-центр, следует решить, каким именно образом все информационные ресурсы организации будут объединены в единую сеть. Решения от ведущих производителей (Juniper, Cisco и других) зачастую стоят дорого; компаниям небольшого и среднего размера они могут оказаться не по карману. В этой связи вполне закономерным и объяснимым является возросший интерес к бесплатным продуктам с открытым исходным кодом, многие из которых по возможностям не уступают платным аналогам, а иногда даже превосходят их. Важным элементом корпоративной сети является **маршрутизатор ** — специализированное сетевое устройство, предназначенное для объединения сегментов сети и пересылки пакетов между ними. Маршрутизаторы бывают как аппаратные, так и программные. В случае, когда необходимо выстроить ИТ-инфраструктуру с минимальными расходами, использование программного маршрутизатора может оказаться вполне подходящим вариантом. В этой статье мы расскажем о маршрутизаторе [VyOS ][2] — интересном и перспективном продукте, к тому же распространяемым по свободной лицензии совершенно бесплатно, и покажем, как его можно использовать для решения практических задач. [Читать дальше →][3]

[1]: http://habrastorage.org/files/b1a/ff4/c4d/b1aff4c4df924746b3228d8ee36fce11.png
[2]: http://vyos.net/
[3]: http://habrahabr.ru/post/248907/#habracut

[>] [Из песочницы] Linux DDoS-троян скрывается за встроенным руткитом
habra.14
habrabot(difrex,1) — All
2015-01-27 16:00:03


_Предлагаю вниманию читателей «Хабрахабра» перевод статьи [«Linux DDoS Trojan hiding itself with an embedded rootkit»][1] из блога антивирусной компании Avast._ По сообщениям группы «MalwareMustDie!», в конце сентября 2014 года появилась новая угроза для ОС Linux. Её назвали [XOR.DDOS][2], как видно из названия, она образует ботнет для DDoS-атак. Пост упоминал о первоначальном вторжении, по SSH соединению, статические свойства исполняемых файлов Linux и используемые методы шифрования. Позже мы поняли, что процесс установки настраивает окружение Linux жертвы для работы дополнительного компонента — руткита. [Читать дальше →][3]

[1]: https://blog.avast.com/2015/01/06/linux-ddos-trojan-hiding-itself-with-an-embedded-rootkit/
[2]: http://blog.malwaremustdie.org/2014/09/mmd-0028-2014-fuzzy-reversing-new-china.html
[3]: http://habrahabr.ru/post/248933/#habracut

[>] Отчёты для NORD POS. Часть 2
habra.14
habrabot(difrex,1) — All
2015-01-27 16:30:02




### Берём jrxml шаблон и устанавливаем в приложение

В [первой части][1] я рассказал о том, как подготовить в iReport шаблон отчёта для библиотеки JasperReports. А эта статья посвящена тому, как получившийся шаблон интегрировать непосредственно в приложение [NORD POS][2]. И если в первой части программа нужна была только, как источник данных для построения примера отчёта по справочнику товаров, то в данной статье она будет необходима для интеграции отчёта в интерфейс приложения, а также для демонстрации возможностей взаимодействия бизнес логики приложения и элементов шаблона библиотеки JasperReports. ![][3] Кроме этого, пришлось разделить статью на две части из-за того, что при подготовки материала я обнаружил ошибку печати отчёта в версии 3.0.1CE. Ошибка возникала из-за неправильного вызова диалога выбора принтера при использовании не стандартного оформления из Swing Look&Feel библиотеки [Insubstantial][4]. Ошибка не возникала при использовании темы Metal или оформления в стиле операционной системы. Но, так как в NORD POS по-умолчанию используется нестандартная тема CremeSkin, то для написания этой части необходимо было устранить данный баг и выпустить обновлённую версию [NORD POS 3.0.2CE][5]. И именно эту версию мы будем использовать во второй части статьи. [Читать дальше →][6]

[1]: http://habrahabr.ru/post/247515/
[2]: http://www.nordpos.mobi
[3]: //habrastorage.org/files/442/dba/b26/442dbab2613640bf932e40190eb914ee.png
[4]: http://insubstantial.github.io/insubstantial/
[5]: http://nordpos.mobi/#download
[6]: http://habrahabr.ru/post/248587/#habracut

[>] Кластеризация: расскажи мне, что ты покупаешь, и я скажу кто ты
habra.14
habrabot(difrex,1) — All
2015-01-27 16:30:02







**Задача [Datawiz.io][1]**: провести кластеризацию клиентов программы лояльности в ритейле. [Кластеризация][2] — это метод поиска закономерностей, предназначенный для разбиения совокупности объектов на однородные группы (кластеры) или поиска существующих структур в данных. Целью кластеризации является **получение новых знаний**. Это как “найти клад в собственном подвале”. Для чего это нужно компаниям? Чтобы **лучше узнать своих клиентов**. Чтобы найти индивидуальный подход к каждому клиенту, а не работать со всеми одинаково. [Читать дальше →][3]

[1]: http://datawiz.io/ru/
[2]: http://datawiz.io/ru/clusterization/clusterization
[3]: http://habrahabr.ru/post/248863/#habracut

[>] Использование DSP-сопроцессора DM8168 с помощью фреймворка C6Accel
habra.14
habrabot(difrex,1) — All
2015-01-27 19:00:02


![][1] В этой статье мы познакомимся с отладочной платой DM816x/C6A816x/AM389x и фреймворком C6Accel (он же C6EZAccel), а также рассмотрим инструкции по наладке системы для выполнения встроенных тестовых приложений. Всё началось с интересной идеи использовать алгоритмы нынче очень популярной библиотеки компьютерного зрения OpenCV на микропроцессоре. Однако, изучив немного тему, идея уточнилась. Почему бы не реализовать алгоритмы не просто на ядре ARM, а на специализированном ядре для цифровой обработки сигналов DSP? Тем самым разгрузим ядро ARМ, ускорим выполнение алгоритмов, и, глядишь, самое громоздкое приложение заработает в реальном времени. Итак, что же использовать для решения задачи? Оказалось вариантов немного… [Читать дальше →][2]

[1]: //habrastorage.org/files/925/c68/7f5/925c687f57554086a9993a409b9a021d.jpg
[2]: http://habrahabr.ru/post/248591/#habracut

[>] [Из песочницы] ErgoEmacs — a way to Lisp
habra.14
habrabot(difrex,1) — All
2015-01-27 19:00:02


![][1]Если вы получаете удовольствие от программирования, то, наверняка, перманентно находитесь в состоянии поиска лучших инструментов, лучших идей, лучших решений. И знаете, конечной остановкой лично для меня стал Emacs. А точнее — его сборка под названием ErgoEmacs. Под катом будет попытка логического и последовательного рассказа об использовании данного текстового редактора в контексте знакомства с ним впервые в жизни (не вдаваясь в сильную конкретику, а скорее стараясь уловить общую идею); идеологическая пропаганда (емакса вообще и лиспа в частности); небольшая критика последней из статей на Хабре по данной тематике, а также небольшое философское заключение. Если вы хотите расширить свой кругозор, прошу под кат. [Расширить кругозор][2]

[1]: //habrastorage.org/files/f95/f61/707/f95f617077854ffca191d7dc13ed1644.png
[2]: http://habrahabr.ru/post/248957/#habracut

[>] Новые уязвимости Flash Player эксплуатируются in-the-wild
habra.14
habrabot(difrex,1) — All
2015-01-28 00:00:02


Компания Adobe выпустила очередное обновление [APSB15-03][1] для своего проигрывателя Flash Player, которое исправляет в нем критическую 0day уязвимость. Уязвимость с идентификатором CVE-2015-0311 использовалась атакующими для проведения атак drive-by download, т. е. скрытной установки вредоносного ПО. Для этого использовался набор эксплойтов Angler Exploit Kit, который содержал в своем арсенале эксплойт для этой уязвимости. Антивирусные продукты ESET обнаруживают различные модификации этого эксплойта как **SWF/Exploit.CVE-2015-0311.A**. ![][2] [Читать дальше →][3]

[1]: http://helpx.adobe.com/security/products/flash-player/apsb15-03.html
[2]: http://habr.habrastorage.org/post_images/7d0/bd9/84a/7d0bd984afd2bb9901c5014a5b3649c9.jpg
[3]: http://habrahabr.ru/post/249001/#habracut

[>] GHOST — уязвимость gethostbyname() в glibc
habra.14
habrabot(difrex,1) — All
2015-01-28 00:00:02


Специалисты Qualys сообщили о наличии уязвимости в **gethostbyname()** и **gethostbyname2()** в GNU C Library (glibc), которая, как минимум в одном случае, способна привести к удаленному выполнению кода. Уязвимость позволяет перезаписать до 4 байт на 32-битных системах и до 8 байт на 64-битных системах в куче числами (0…9), точкой (.) и NULL-символом (0x00). Уязвимость появилась в версии glibc-2.2 от 10 ноября 2000 года и была закрыта в версии 21 мая 2013 года с glibc-2.18, поэтому уязвимы только LTS-дистрибутивы Linux: Debian 7, Red Hat Enterprise Linux 6 и 7, CentOS 6 и 7, Ubuntu 12.04. Уязвимым является код, который отвечает за получение hostname. Для перезаписи кучи, имя хоста должно удовлетворять следующим условиям:

* Содержать в себе только цифры и точку
* Первый символ должен быть цифрой
* Последний символ не должен быть точкой
* Быть достаточно длинным, чтобы переполнить буфер (>1КБ)

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

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

[>] [recovery mode] Ансамбль синапсов – структурная единица нейронной сети
habra.14
habrabot(difrex,1) — All
2015-01-28 02:30:02


![][1] В мае прошлого года сотрудники лаборатории глубокого обучения Гугла и учёные из двух американских университетов опубликовали исследование «[Intriguing properties of neural networks][2]». Статья о нём вольно пересказывалась [здесь на Хабре][3], и само исследование также критиковалось [специалистом из ABBYY][4]. Гугловцы в результате своих исследований разочаровались в способностях нейронов сети распутывать признаки входных данных и стали склоняться к мысли, что нейронные сети не распутывают синтаксически значимые признаки по отдельным структурным элементам, а хранят их во всей сети в целом как в голограмме. В нижней части иллюстрации к этой статье чёрно-белыми я привёл карты активации 29, 31 и 33-его нейронов сети, которую обучил рисовать картинку. То, что тушка птицы без головы и крыльев, изображаемая для примера 29-ым нейроном, покажется людям синтаксически значимым признаком гугловцы считают всего лишь ошибкой интерпретации наблюдателя. В статье я на реальном примере постараюсь показать, что и в искусственных нейронных сетях распутанные признаки можно обнаружить. Постараюсь объяснить, почему гугловцы увидели то, что они увидели, а распутанных признаков увидеть не смогли, и покажу, где в сети скрываются синтаксически значимые признаки. Статья является популярной версией доклада, прочитанного на конференции «[Нейроинформатика — 2015][5]» в январе этого года. Наукообразную версию статьи можно будет почитать в материалах конференции. [Очень-очень много трафика][6]

[1]: //habrastorage.org/files/d2f/bb6/5f1/d2fbb65f1362462aa64998719c22d773.jpg
[2]: http://cs.nyu.edu/~zaremba/docs/understanding.pdf
[3]: http://geektimes.ru/post/225095/
[4]: http://habrahabr.ru/company/abbyy/blog/225349/
[5]: http://neuroinfo.ru/index.php/ru/schedule/sections?year=2015#Stend5
[6]: http://habrahabr.ru/post/249031/#habracut

[>] Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 5 из 6
habra.14
habrabot(difrex,1) — All
2015-01-28 03:00:03




# Содержание основного курса



* [Статья 1: алгоритм Брезенхэма][1]
* [Статья 2: растеризация треугольника + отсечение задних граней][2]
* [Статья 3: Удаление невидимых поверхностей: z-буфер][3]
* Статья 4: Необходимая геометрия: фестиваль матриц
* [4а: Построение перспективного искажения][4]
* [4б: двигаем камеру и что из этого следует][5]
* [**Статья 5: Пишем шейдеры под нашу библиотеку**][6]
* Статья 6: Чуть больше, чем просто шейдер: просчёт теней



### Улучшение кода

__

* [Статья 3.1: Настала пора рефакторинга][7]
* красивый класс матриц
* как работает новый растеризатор

Пришла пора веселья, давайте для начала смотреть размер [текущего кода][8]:

* geometry.cpp+.h — **218** строк
* model.cpp+.h — **139** строк
* our\_gl.cpp+.h — **102** строки
* main.cpp — **66** строк

Итого **525 строк**. Ровно то, что я обещал в самом начале курса. И заметьте, что отрисовкой мы занимаемся только в our\_gl и main, а это всего 168 строк, и нигде мы не вызывали сторонних библиотек, вся отрисовка сделана нами с нуля! **Я напоминаю, что мой код нужен только для финального сравнения с вашим работающим кодом! По-хорошему, вы всё должны написать с нуля, если следуете этому циклу статей. Очень прошу, делайте самые безумные шейдеры и выкладывайте в комментарии картинки!!!** ![][9] [Читать дальше →][10]

[1]: http://habrahabr.ru/post/248153/
[2]: http://habrahabr.ru/post/248159/
[3]: http://habrahabr.ru/post/248179/
[4]: http://habrahabr.ru/post/248611/
[5]: http://habrahabr.ru/post/248723/
[6]: http://habrahabr.ru/post/248963/
[7]: http://habrahabr.ru/post/248909/
[8]: https://github.com/ssloy/tinyrenderer/tree/a4537e02083091003c89ba78d209cbd7bda7580d
[9]: http://habrastorage.org/files/985/b3c/0ea/985b3c0eac7544fea05f6f9b56e03690.png
[10]: http://habrahabr.ru/post/248963/#habracut

[>] [Из песочницы] Watchface ProTime для Pebble (интерфейс с кучей настроек)
habra.14
habrabot(difrex,1) — All
2015-01-28 09:30:04






С помощью Canvas был разработан для себя удобный, красивый и функциональный **Watchface **под названием **ProTime **(продолжительность жизни часов **6-8 дней**), способный отображать не только текущее время, дату и день недели, но и еще много чего. При этом графика не используется вообще, что убирает недостаток **Canvas **в виде подгрузки графики. Решил поделиться с уважаемым сообществом опытом разработки интерфейсов под часы **Pebble **на **Canvas**. **Строка состояния**: 1) Отображают название оператора, режим сети и количество антеннок режима GSM/CDMA, даже если включен другой режим; 2) Отображают **WiFi **буквой **W**; 3) Отображают профиль беззвука **zZ**, вибру **»«**; 4) Отображают уровень батареи справа: **F ** — уровень 100% (телефон заряжен), **H ** — от 50% до 100%, **M ** — от 15% до 50%, **L ** — менее 15%; 5) При отключении **Bluetooth **соединения часы вибрирует один раз долго и один раз быстро (всего получается два раза и данную вибрацию не перепутаешь ни с чем). И строка состояния исчезает, появляется значок отсутствия подключения **BT: NO**; 6) Отображают количество пропущенных звонков и смс, если они есть в виде **1:2**, где 1 количество **пропущенных звонков**, а 2 — **не прочитанных смс**. В случае, если часы отключились от телефона, вместо строки состояния отображается количество пропущенных звонков и не прочитанных смс на момент, когда часы еще были подключены к телефону, как на скрине выше. **По центру**: часы, день недели и дата. **Снизу**: отображаются данные о погоде взятые с **Yahoo **или **OpenWeather **(зависит от настроек о чем расскажу позже): текущая температура, скорость ветра в км/ч, давление в мм ртутного столба и времени захода солнца (Yahoo отображает на час позже действительного, а OpenWeather правильно, но другие показатели в Yahoo мне нравятся больше). [Читать дальше →][1]

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

[>] YouTube отказался от Flash в пользу HTML5 по умолчанию
habra.14
habrabot(difrex,1) — All
2015-01-28 11:30:02


Команда разработчиков YouTube [объявила][1] о том, что теперь [HTML5][2] будет стандартом по умолчанию для проигрывания роликов, вместо Flash. HTML5 будет использоваться для проигрывания содержимого сервиса на веб-браузерах Google Chrome, MS IE11, Apple Safari 8 и бета-версий Mozilla Firefox. Еще несколько лет назад YouTube [запустил][3] экспериментальную версию проигрывателя на HTML5 для устройств или OS, которые не поддерживают Flash Player или просто не хотят его использовать (например, iOS). ![][4] [Читать дальше →][5]

[1]: http://youtube-eng.blogspot.jp/2015/01/youtube-now-defaults-to-html5_27.html
[2]: http://ru.wikipedia.org/wiki/HTML5
[3]: http://apiblog.youtube.com/2010/06/flash-and-html5-tag.html
[4]: //habrastorage.org/files/21d/25c/eea/21d25ceeac2e4fc8ad3ce9a66ce30f84.png
[5]: http://habrahabr.ru/post/249041/#habracut

[>] [Из песочницы] Как виртуальная реальность пришла в проект на Unity
habra.14
habrabot(difrex,1) — All
2015-01-28 13:00:02


_«Веяния моды заставляют меняться»_ Наверно именно от этой мысли было принято решение подключить в проект на Unity, шлем виртуальной реальности, всем известный Oculus Rift DK2. Вопреки суровому прощупыванию рублем финансового дна удалось заказать Oculus Rift с доставкой в Санкт-Петербург по адекватной цене. Оперативно, менее чем за две недели, заказ прибыл в стены нашего офиса. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/863/c71/113/863c7111362e49d58c724cec26339b34.png
[2]: http://habrahabr.ru/post/249053/#habracut

[>] Apple выпустила iOS 8.1.3
habra.14
habrabot(difrex,1) — All
2015-01-28 15:30:03


Компания Apple выпустила новое обновление для iOS — iOS 8.1.3 (APPLE-SA-2015-01-27-2). В этой версии мобильной ОС исправлен ряд багов, а также security-уязвимостей, в том числе и тех, которые потенциально могут использоваться злоумышленниками для установки вредоносных программ. Мобильная ОС iOS 8 используется на таких устройствах Apple как iPhone 4s+, iPod touch 5 и iPad 2+. Apple также исправила известную уязвимость под названием Masque (CVE-2014-4493), о которой мы подробно писали [здесь][1] и которая позволяла перезаписывать одно приложение iOS на другое. ![][2] [Читать дальше →][3]

[1]: http://habrahabr.ru/company/eset/blog/243279/
[2]: //habrastorage.org/files/1e2/768/edf/1e2768edf240492abe752dfd7c8e4452.PNG
[3]: http://habrahabr.ru/post/249081/#habracut

[>] Oracle join elimination
habra.14
habrabot(difrex,1) — All
2015-01-28 16:00:04


Оптимизатор в Oracle может применять различные способы трансформации запросов для улучшения их производительности. Одним из таких способов является **join elimination**. В официальной документации [Oracle Database SQL Tuning Guide][1] об этом способе сказано достаточно мало, в отличие от других. Приглашаю читателей под кат, чтобы поговорить об этом способе поподробнее. [Читать дальше →][2]

[1]: https://docs.oracle.com/apps/search/search.jsp?word=+join+elimination&product=e50529-01&book=tgsql
[2]: http://habrahabr.ru/post/248817/#habracut

[>] Универсальный способ мониторинга Asterisk с помощью Zabbix
habra.14
habrabot(difrex,1) — All
2015-01-28 16:00:04


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

[1]: http://habrastorage.org/files/700/841/279/700841279f7f460e82d1e4d8ae9ee3a8.png
[2]: http://habrahabr.ru/post/249055/#habracut

[>] Новая уязвимость GHOST угрожает популярным дистрибутивам на базе Linux
habra.14
habrabot(difrex,1) — All
2015-01-28 18:00:02


![image][1] Уязвимость в распространенных дистрибутивах Linux может позволить злоумышленнику получить удаленный контроль над системой. Под ударом оказались пользователи Debian 7 (wheezy), Red Hat Enterprise Linux 6 & 7, CentOS 6 & 7, Ubuntu 12.04. Информация о новой уязвимости ([CVE-2015-0235][2]) в библиотеке glibc (GNU C Library) впервые была опубликована во французской [рассылке][3]. Некоторые специалисты считают, что это было сделано по ошибке, так как к тому моменту никто не успел подготовить обновления. Подробное техническое описание уязвимости и эксплойт для уязвимости можно найти на [Openwall][4], а первые описания были опубликованы в сообществе [Rapid 7][5]. [Читать дальше →][6]

[1]: http://habrastorage.org/getpro/habr/post_images/715/54e/e62/71554ee628b682412d1ea44dddfddc71.png
[2]: https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2015-0235
[3]: http://www.frsag.org/pipermail/frsag/2015-January/005722.html
[4]: http://www.openwall.com/lists/oss-security/2015/01/27/9
[5]: https://community.rapid7.com/community/infosec/blog/2015/01/27/ghost-in-the-machine-is-cve-2015-0235-another-heartbleed
[6]: http://habrahabr.ru/post/249097/#habracut

[>] Практикум «Intel IoT». Galileo Gen2 — Linux & Arduino
habra.14
habrabot(difrex,1) — All
2015-01-28 18:00:02


В этой части «практикума», я превращу Intel Galileo Gen2 в полноценный linux-компьютер и покажу простой способ взаимодействия Arduino- и linux-составляющих.



[Приступим!][1]

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

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


Однажды мне окончательно надоели странички вроде «данный ресурс заблокирован по требованию», которые стали попадаться все чаще и чаще. А еще все больше стало упоминаний про «глубинный интернет», i2p, tor, onion, анонимные p2p сети и вообще повеяло хакерской романтикой детства, когда интернет был чем-то загадочным и был доступен только с двух часов ночи со скоростью 31200… В общем, была поставлена цель: сделать прокси сервер, через который можно заходить на любые сайты (включая сайты в доменах .i2p и .onion) в обход любых блокировок. Цель обеспечения анонимности не ставилась. Ужа с ежом удалось скрестить, и вот теперь я, как и 17 лет назад, исследую глубинные слои интернета. Кстати, если говорить про i2p, то скорость по ощущениям не намного больше, чем у интернета 17 лет назад. История циклична. Статья не призывает к каким-либо действиям политического или криминального характера и предназначена для тех, кто не любит рамок и ограничений и сам выбирает что и как читать. Как это работает: Основным прокси сервером явлется squid. Через cache\_peer (вышестоящий прокси) squid подключается к i2p и tor. tor является Socks прокси, а squid — http прокси, поэтому между squid и tor встраивается прослойка privoxy. Также мы имеем обновляемый ACL список всех заблокированных ресурсов в русском интернете. Squid обрабатывает запросы от браузеров следующим образом: Если запрашивается URL в домене .i2p, то запрос передается по цепочке в i2p. Если запрашивается URL в домене .onion, то запрос передается по цепочке в tor. Если запрашивается запрещенный URL, то запрос передается по цепочке в tor. Все остальные запросы отправляются напрямую самим squid. **Инструкция как сделать интернет без ограничений своими руками:** [Читать дальше →][1]

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

[>] Процедурная генерация текстур планет на основе алгоритма Diamond-Square, часть 1
habra.14
habrabot(difrex,1) — All
2015-01-28 19:30:02


![image][1] Доброго времени суток. Как со мной бывает, как только я разобрался в каком-то сложном для себя вопросе, я сразу хочу рассказать всем решение. Поэтому решил написать серию из двух статей по такой интересной теме, как процедурная генерация. А конкретнее, я буду рассказывать про генерацию текстур планет. В этот раз я подготовился основательнее и постараюсь сделать материал качественнее, чем в моем предыдущем посте [«Простая система событий в Unity»][2] (кстати, спасибо всем за ответные посты). Прежде чем продолжить, хочу обратить ваше внимание на несколько моментов: 1)Этот генератор не претендует на реалистичность, и писал я его для того, чтобы сгенерировать уникальные текстуры для сотни маленьких шариков, которые занимают 10% экрана и к тому же прикрыты облаками. 2)Но это не значит, что я не буду рад критике. Напротив, одна из причин написания этого поста — получить советы по улучшению алгоритма, я с радостью улучшу его. 3)Чисто технический момент: я пишу на C# под Unity3d, так что думать о том, как выводить в изображение с приемлимой скоростью вам придется самим, для каждого языка и платформы свои способы. Итак, план таков: в первой статье я рассказываю о процедурной генерации планет типа «терра», потом получаю шквал критики, ради которого все и делалось, улучшаю алгоритм, дорабатываю для других типов планет и пишу вторую часть. Готовы? Поехали. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/b8a/b3f/d27/b8ab3fd276ab744744eca2a1cd8376ba.jpg
[2]: http://habrahabr.ru/post/245219/
[3]: http://habrahabr.ru/post/249027/#habracut

[>] [Перевод] Категории Клейсли
habra.14
habrabot(difrex,1) — All
2015-01-28 20:30:03




#### Композиция логирования

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

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

[>] Три слова, способные изменить мир
habra.14
habrabot(difrex,1) — All
2015-01-29 05:30:02


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

[1]: http://habrastorage.org/files/317/77e/779/31777e7798fd42de9edbbe0fdce571ac.jpg
[2]: http://habrahabr.ru/post/249131/#habracut

[>] Проталкиваем не‐ASCII в непредназначенные для этого места
habra.14
habrabot(difrex,1) — All
2015-01-29 09:30:03


Сидел вечером дома, думал чем бы заняться. А: у Python есть отладчик, но в нём совершенно некрасивое приглашение ко вводу. Дай‐ка я впилю туда [powerline][1]. Дело казалось бы совершенно плёвое: нужно просто создать свой подкласс [pdb.Pdb][2] со своим [свойством][3], да?

def use_powerline_prompt(cls):
'''Decorator that installs powerline prompt to the class
'''
@property
def prompt(self):
try:
powerline = self.powerline
except AttributeError:
powerline = PDBPowerline()
powerline.setup(self)
self.powerline = powerline
return powerline.render(side='left')

@prompt.setter
def prompt(self, _):
pass

cls.prompt = prompt

return cls


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

[1]: https://github.com/powerline/powerline
[2]: https://docs.python.org/2.7/library/pdb.html#pdb.Pdb
[3]: https://docs.python.org/2.7/library/functions.html#property
[4]: http://habrahabr.ru/post/249129/#habracut

[>] Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 1: Введение
habra.14
habrabot(difrex,1) — All
2015-01-29 12:00:03


Ansible – популярный инструмент для автоматизации настройки и развертывания ИТ-инфраструктуры. Основные задачи, которые решает Ansible:

* **Управление конфигурациями**. Максимально быстрая и правильная настройка серверов до описанной конфигурации.
* **Провижнинг**. Управление процессом развертывания новых облачных серверов (например через API, с помощью Docker или LXC).
* **Развертывание**. Инсталляция и обновление ваших приложений без простоя наилучшим образом.
* **Оркестрация**. Координация компонентов вашей инфраструктуры для выполнения развертываний. Например проверка, что веб-сервер отключен от балансировщика нагрузки, до апгрейда ПО на сервере.
* **Мониторинг и уведомления**.
* **Логгирование**. Централизованный сбор логов.

По сравнению с другими популярными инструментами автоматизации ит-инфраструктуры, Ansible не требует установки клиентских приложений на обслуживаемые сервера, что может сократить время настройки перед развертыванием инфраструктуры. Для работы Ansible подключается к обслуживаемым серверам по SSH. [Читать дальше →][1]

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

[>] [Перевод] Построение кроссвордов с помощью языка Wolfram Language (Mathematica)
habra.14
habrabot(difrex,1) — All
2015-01-29 12:30:03






_Перевод поста Майкла Тротта (Michael Trott), «[Constructing Crossword Arrays Faster][1]». Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно [здесь][2]._ В главе 6 моей книги _Mathematica GuideBook for Programming_, в качестве примера работы со списками я обсудил то, как построить массив, представляющий собой кроссворд. Хотя этот пример был хорош для демонстрации продвинутой работы со списками, тем не менее, использование списков не является оптимальным путем построения массива кроссворда. Сложность добавления нового слова в массив с уже размещенными _n__-__1_ словами составляла для этого алгоритма , что для кроссвордов из тысяч слов даст большую разницу во времени, затрачиваемом на вычисления. Этот алгоритм реализован в данной статье. Когда мы размещаем отдельные буквы слова в некоторой прямоугольной таблице необходимо рассматривать множество различных ситуаций. В результате в статье содержится большее, чем обычно, количество процедурного кода. Хотя некоторые определения функций несколько длинные, благодаря комментариям между шагами вычислений и ветками решений код должен быть довольно простым для чтения и понимания. [Читать дальше →][3]

[1]: http://www.mathematica-journal.com/2009/11/constructing-crossword-arrays-faster/
[2]: http://goo.gl/GOG0Fe
[3]: http://habrahabr.ru/post/249141/#habracut

[>] Введение в топологические пространства. Программирование конечных топологий на Java. Часть 2: База топологии. Непрерывные отображения
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:20




# Список частей:



* [Часть 1: Определение топологии. Открытые и замкнутые множества.][1]
* Часть 2: База топологии. Непрерывные отображения.



# Введение

В прошлый раз мы познакомились с основным понятиями теории топологических пространств, а также рассмотрели класс для представления конечных топологических пространств, написанный на языке Java. Сегодня мы двинемся дальше, изучим понятие базы топологии и получим представление о том, дла чего она нужна, а также определим понятие непрерывного отображения топологических пространств. Основной интерес последнее вызывает тем, что в топологическом пространстве отсутствует понятие _расстояния между объектами_, но тем не менее мы можем описать формальным языком достаточную близкость объектов в терминах… Ну, впрочем, вы это узнаете чуть позже. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/248659/
[2]: http://habrahabr.ru/post/249163/#habracut

[>] STM32 и FreeRTOS. 1. Развлечение с потоками
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:20


_Данный цикл из 5 статей рассчитан на тех, кому стало мало возможностей привычных «тинек» и ардуинок, но все попытки перейти на более мощные контроллеры оканчивались неудачей или не приносили столько удовольствия, сколько могли бы. Все ниженаписанное проговаривалось мной много раз на «ликбезе» программистов нашей студии (которые часто сознавались, что переход с «тинек» на «стмки» открывает столько возможностей, что попадаешь в ступор, не зная за что хвататься), поэтому смею надеяться, что польза будет всем. При прочтении подразумевается, что читающий — человек любопытный и сам смог найти и поставить Keil, STM32Cube и понажимать кнопки «ОК». Для практики я использую оценочную плату STM32F3DISCOVERY, ибо она дешевая, на ней стоит мощный процессор и есть куча светодиодиков. Каждая статья рассчитана на «повторение» и «осмысление» где-то на один околовечерний час, ибо дом, семья или отдых… _ ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/2b7/340/ece/2b7340ece81145e79f8e336231b83325.jpg
[2]: http://habrahabr.ru/post/249273/#habracut

[>] Интерфейс для Яндекс.Диска в Ubuntu 14.04
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:20


![image][1] Как известно, Яндекс.Диск на Ubuntu существует только как консольный клиент. Сегодня я решил «хватит это терпеть» и написал для себя простенький скрипт, который значительно упрощает работу с ним (исходники в низу статьи). [Читать дальше →][2]

[1]: http://habrastorage.org/files/45e/899/97f/45e89997fa5e4eeeb84cb9adac3adb36.png
[2]: http://habrahabr.ru/post/249267/#habracut

[>] [Из песочницы] Как мы делали робота-футболиста
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:20


25 ноября 2012 года в Таллинне проводилось крупнейшее в Балтии соревнование роботов — «Роботекс». Мы решили построить робота в категории профессиональный футбол. Конечно, это будет не Криштиану Роналдо, но вызов интересный. Я опишу детали создания и программирования робота. Имя его — Палмер. Сам футбол проходит на площадке зеленого цвета, на котором расположены 11 оранжевых мячиков для гольфа. Имеются ворота, 15 см высотой и примерно 37 см шириной, желтые у одной стороны и синие с другой. Робот должен искать мячи на поле, захватывать их, выбирать нужные ворота и забивать. На поле находятся два робота. Побеждает тот, кто забьет больше мячей. Технические требования к роботу: цилиндр высотой 35 см и диаметром 35 см. Все просто. [Читать дальше →][1]

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

[>] [Из песочницы] Микросервисы (Microservices)
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:20


_От переводчика: некоторые скорее всего уже читали этот титанический труд от Мартина Фаулера и его коллеги Джеймса Льюиса, но я все же решил сделать перевод этой статьи. Тренд микросервисов набирает обороты в мире enterprise разработки, и эта статья является ценнейшим источником знаний, по сути выжимкой существующего опыта работы с ними. _ _Термин «Microservice Architecture» получил распространение в последние несколько лет как описание способа дизайна приложений в виде набора независимо развертываемых сервисов. В то время как нет точного описания этого архитектурного стиля, существует некий общий набор характеристик: организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными._ [Читать дальше →][1]

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

[>] Apple исправила важные уязвимости в OS X
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:21


Компания Apple выпустила OS X 10.10.2, закрыв 54 уязвимости в рамках обновления APPLE-SA-2015-01-27-4. Большинство закрытых уязвимостей позволяют атакующим исполнять произвольный код в OS X, в т. ч. с системными привилегиями. Apple также исправила опасную уязвимость под названием [Thunderstrike][1], которая позволяла компрометировать безопасность OS X на самых ранних этапах загрузки (OS X bootkit). Обновление APPLE-SA-2015-01-27-4 исправляет множественные уязвимости в ОС, которые были публично [раскрыты][2] группой специалистов из Google Project Zero. ![][3] [Читать дальше →][4]

[1]: https://trmm.net/Thunderstrike
[2]: http://www.zdnet.com/article/googles-project-zero-reveals-three-apple-os-x-zero-day-vulnerabilities/
[3]: //habrastorage.org/files/382/09d/8ea/38209d8ea3ae44d788a957cb25c0018d.png
[4]: http://habrahabr.ru/post/249159/#habracut

[>] Продолжаем смотреть публичные камеры видео-наблюдения Москвы
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:21


Дело было вечером, делать было нечего. Поводом послужила активность пользователя [leider][1], который дал в [комментарии][2] ссылку на публичный ресурс: `http://video.dit.mos.ru/window/` ![image][3] Чем примечателен этот ресурс — он предоставляет **публичный доступ** к камерам видео-наблюдения **через встроенный плеер**. [Читать дальше →][4]

[1]: http://habrahabr.ru/users/leider/
[2]: http://habrahabr.ru/post/248727/#comment_8241135
[3]: http://habrastorage.org/getpro/habr/post_images/69f/956/a90/69f956a900896bb4dc093a4a2c8f3dd8.jpg
[4]: http://habrahabr.ru/post/249173/#habracut

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 41