RSS
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 41
[>] Искусство Feature Engineering в машинном обучении
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


Привет, хабр! ![][1] В предыдущей статье ([Введение в машинное обучение с помощью Python и Scikit-Learn][2]) мы с вами познакомились с основными этапами решения задач машинного обучения. Сегодня подробнее поговорим о техниках, которые позволяют заметно увеличить качество разрабатываемых алгоритмов. Одна из таких техник — **Feature Engineering**. Сразу отметим, что это своего рода искусство, обучиться которому можно только прорешав огромное количество задач. Тем не менее, с опытом вырабатываются некие общие подходы, которыми хотелось бы поделиться в данной статье. [Читать дальше →][3]

[1]: //habrastorage.org/files/d23/c1c/fd5/d23c1cfd5c02473f945f066df5679132.jpg
[2]: http://habrahabr.ru/post/247751/
[3]: http://habrahabr.ru/post/248129/#habracut

[>] [Перевод] Пишем быстрый и экономный код на JavaScript
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


Такой движок JS, как [V8 ][1](Chrome, Node) от Google, заточен для быстрого исполнения больших приложений. Если вы во время разработки заботитесь об эффективном использовании памяти и быстродействии, вам необходимо знать кое-что о процессах, проходящих в движке JS браузера. Что бы там ни было — V8, [SpiderMonkey ][2](Firefox), [Carakan ][3](Opera), [Chakra ][4](IE) или что-то ещё, знание внутренних процессов поможет вам оптимизировать работу ваших приложений. Но не призываю вас оптимизировать движок для одного браузера или движка – не делайте так. Задайте себе вопрос: — можно ли что-то в моём коде сделать более эффективным? — какую оптимизацию проводят популярные движки JS? — что движок не может компенсировать, и может ли сборка мусора подчистить всё так, как я от неё ожидаю? ![][5] Есть много ловушек, связанных с эффективным использованием памяти и быстродействием, и в статье мы изучим некоторые подходы, которые хорошо показали себя в тестах. [Читать дальше →][6]

[1]: http://code.google.com/p/v8/
[2]: https://developer.mozilla.org/en-US/docs/SpiderMonkey
[3]: http://my.opera.com/ODIN/blog/carakan-faq
[4]: http://en.wikipedia.org/wiki/Chakra_(JScript_engine)
[5]: //habrastorage.org/files/c1d/a94/5ae/c1da945ae17641d1b3eb709b46fb1a1b.jpg
[6]: http://habrahabr.ru/post/248111/#habracut

[>] Интернет тест-драйв «Мехатроника и робототехника». Нужна помощь Сообщества
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


Привет, Хабр! Пишу — потому что нужна помощь Сообщества. Меня зовут Александр Лемех. Я являюсь руководителем Лаборатории развития робототехники Механико-машиностроительного института УрФУ. 6 лет назад для меня стало очевидным — что будущее за робототехникой и автоматизацией. С тех пор начал заниматься этим направлением. Вначале мы с друзьями-единомышленниками организовали Клуб по развитию робототехники в Уральском федеральном университете, потом я стал в университете преподавать дисциплину «Промышленные роботы» и другие, 2 года назад удалось основать Лабораторию развития робототехники Механико-машиностроительного института УрФУ. Видео о нашей лаборатории:




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

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

[>] [Из песочницы] Уязвимость MS14-063 в драйвере FastFat в ОС Windows. Разбор полетов
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


В данном исследовании проведем анализ уязвимости MS14-063, связанной с некорректной работой драйвера fastfat.sys и приводящей (по крайней мере, по словам Microsoft) к несанкционированному повышению привилегий. Данной уязвимости до недавнего времени были подвержены Win Server 2003/2008 и Win Vista (в Win7 данная дыра была исправлена давным давно, кстати говоря, но это уже совсем другая история — об этом подробнее рассказывается в [статье][1] на ресурсе xakep.ru). Тут же мы поговорим о том, какие возможности могла на самом деле предоставить данная уязвимость злоумышленнику, решившему реализовать атаку с помощью флешки с «битой» ФС FAT. [Читать дальше →][2]

[1]: https://xakep.ru/2014/10/21/fastfat/
[2]: http://habrahabr.ru/post/248089/#habracut

[>] Отчёты для NORD POS. Часть 1
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06




### Берём данные, JasperReports и заполняем шаблон в iReport

![][1] Эта статья посвящена не столько, как это сделать красиво с точки зрения дизайна, а как с помощью имеющихся средств [JasperReports][2] сделать отчёты чёткими для восприятия пользователем и удобными для дальнейшего использования интегратором. Так как JasperReports, это в первую очередь не самостоятельное приложение, а библиотека расширения для программ написанных на Java, то в качестве источника информации для построения отчётов будем использовать базу данных от NORD POS(подробнее об этом моём проекте в [отдельной статье][3]). При этом изложенный «под катом» материал, я надеюсь, будет интересен не только пользователям моей POS, но и всем тем, кто хочет больше узнать о мощном инструменте формирования отчётов для своего приложения, а на русском языке материалов посвящённых JasperReports не так и много. [Читать дальше →][4]

[1]: //habrastorage.org/files/655/494/249/655494249c884032bd4cd879ca244adb.png
[2]: https://sourceforge.net/projects/jasperreports/
[3]: http://habrahabr.ru/post/246919/
[4]: http://habrahabr.ru/post/247515/#habracut

[>] [Из песочницы] Хостим персональный сайт на роутере
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


Доброго времени суток. Пару недель назад я решил создать персональный сайт с несколькими страницами о себе, своих достижениях, целях и контактах. Разумеется, одним из этапов его создания стал вопрос выбора хостинга. Отдавать деньги за размещение сайта на чьём-то сервере мне не хотелось, да и оставлять свой домашний компьютер постоянно включенным тоже. Поразмыслив, я вспомнил интересную [статью][1] о настройке сервера ip-телефонии Asterisk на маршрутизаторе Mikrotik. Так как у меня дома установлен роутер именно этого проиводителя, не раздумывая, я решил поднять на нём веб-сервер nginx. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/180889/
[2]: http://habrahabr.ru/post/248009/#habracut

[>] Дубль. Отключу фетчер пока, чтоб в верху висело.
habra.14
Difrex(difrex,2) — All
2015-01-20 12:27:14


Всем привет!

Кто-нибудь фетчит эту эху? У меня тут жд сгорел, а конфиг клиента ii я не забекапил -- похерил строку авторизации на spline.

Напишите мне в джаббер difrex@jabber.ru или me@difrex.ru

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




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



# Удаление невидимых поверхностей

Знакомьтесь, это мой друг z-buffer головы абстрактного африканца. Он нам поможет убрать визуальные артефакты отбрасывания задних граней, которые у нас оставались в прошлой статье. ![][3] Кстати, не могу не упомянуть, что эта модель, которую я использую в хвост и в гриву, была любезно предоставлена замечательным [Vidar Rapp][4]. Мы её можем использовать исключительно в рамках обучения рендерингу. Это очень качественная модель, с которой я варварски обошёлся, но я обещаю вернуть ей глаза! [Читать дальше →][5]

[1]: http://habrahabr.ru/post/248153/
[2]: http://habrahabr.ru/post/248159/
[3]: http://habrastorage.org/getpro/habr/post_images/3f0/57a/756/3f057a75601d8ac34555e72ea03ef711.png
[4]: https://se.linkedin.com/in/vidarrapp
[5]: http://habrahabr.ru/post/248179/#habracut

[>] [Перевод] Пытливый взгляд АНБ: что такое война за Интернет-безопасность (Часть 1)
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


[![image][1]][2] Разведывательные агентства Великобритании и США предпринимают все возможные действия для дешифровки любого рода Интернет-сообщений. Возникает ощущение, что в «облаке» полно «дыр». Хорошие новости: новые документы Сноудена подтверждают, что с некоторыми формами шифрования не могут справиться даже в АНБ. Накануне Рождества [_статья опубликована 28 декабря 2014 – прим. перев._] шпионы из альянса «Пяти глаз» [англ. [Five Eyes][3]] ждут небольшой передышки от своей нелегкой работы. Вдобавок к своим обычным обязанностям – то есть к дешифровке сообщений по всему миру – они играют в игру под названием «Kryptos Kristmas Kwiz», участникам которой нужно разгадать сложные числовые и буквенные головоломки. Победители соревнования становятся гордыми обладателями «криптокружек». Шифрование – использование математических приемов для защиты коммуникаций от шпионажа – используется в электронных транзакциях всех типов и применяется государством, компаниями и частными лицами. Но, согласно данным бывшего агента АНБ Эдварда Сноудена, далеко не все технологии шифрования действительно выполняют свои задачи. [Читать дальше →][4]

[1]: http://habrastorage.org/getpro/habr/post_images/63c/5fe/6fa/63c5fe6fa5087dd59db02fbd02bf3757.jpg
[2]: http://habrahabr.ru/company/1cloud/blog/248435/
[3]: http://en.wikipedia.org/wiki/Five_Eyes
[4]: http://habrahabr.ru/post/248435/#habracut

[>] [Перевод] Пора заменить Python как язык для обучения
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


В последние десять лет мой стандартный ответ на вопрос «с какого языка начинать знакомство с программированием?» был прост — Python. Теперь я меняю свою рекомендацию. Python все еще хороший язык. Он позволяет сфокусироваться на задаче и не волноваться об архитектурных заморочках. О штуках, которые опытные программисты считают важными, позабыв о том, каково это — быть абсолютным новичком. Сам язык растворяется на фоне, и вместо объяснения возможностей и философий, уроки посвящены генерации музыкальных звукорядов, вычислению расстояний на стадионе в зависимости от беговой дорожки, или написанию автоматического игрока в покер или [ятцы][1]. И вот в один прекрасный день студент задаст невинный вопрос: «А как сделать так, чтобы симулятор покера был не в командной строке, а в окне, с кнопкой для выдачи следующих карт?» [Читать дальше →][2]

[1]: https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BA%D0%B5%D1%80_%D0%BD%D0%B0_%D0%BA%D0%BE%D1%81%D1%82%D1%8F%D1%85
[2]: http://habrahabr.ru/post/248397/#habracut

[>] [Из песочницы] Как начать работу в Kaggle: руководство для новичков в Data Science
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


Доброго времени суток, уважаемые хабровчане! Сегодня я хотел бы поговорить о том, как не имея особого опыта в машинном обучении, можно попробовать свои силы в соревнованиях, проводимых [Kaggle][1]. ![image][2] Как вам уже, наверное, известно, Kaggle – это платформа для исследователей разных уровней, где они могут опробовать свои модели анализа данных на серьезных и актуальных задачах. Суть такого ресурса – не только в возможности получить неплохой денежный приз в случае, если именно ваша модель окажется лучшей, но и в том (а, это, пожалуй, гораздо важнее), чтобы набраться опыта и стать специалистом в области анализа данных и машинного обучения. Ведь самый важный вопрос, зачастую стоящий перед такого рода специалистами – где найти реальные задачи? Здесь их достаточно. Мы попробуем поучаствовать в обучающем соревновании, не предусматривающем каких-либо поощрений, кроме опыта. [Читать дальше →][3]

[1]: http://www.kaggle.com
[2]: http://habrastorage.org/files/0eb/4ea/4bc/0eb4ea4bc8174cf8845fd5aca2cb1fc6.png
[3]: http://habrahabr.ru/post/248395/#habracut

[>] [Из песочницы] Именованные аргументы функции в C
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


В некоторых языках существует возможность вызова функции с именованными параметрами. Такой способ позволяет указать аргумент для определённого параметра, связав его с именем параметра, а не с позицией. Это возможно, например, в C# или Python. Рассмотрим «игрушечный» пример на Python с использованием именованных аргументов:

#вычислим объем параллелепипеда
#если значение стороны не указано, то считаем что оно равно единице
def volume(length=1, width=1, height=1):
return length * width * height;
print(volume()) # V = 1
print(volume(length=2)) # V = 2
print(volume(length=2, width=3)) # V = 6
print(volume(length=2, width=3, height=4)) # V = 24


Здесь в примере одна и та же функция вызывается с разными аргументами. И видно, какой параметр каким значением проинициализирован. Если у функции есть параметры, значения которых можно оставить по умолчанию, то очень удобно проинициализировать только необходимые параметры с помощью именованных аргументов. Но в языке C аргументы функции связаны с позицией, поэтому разработчику нужно помнить порядок следования параметров, что может быть неудобно, если их достаточно много. Ниже я покажу, как можно сымитировать использование именованных аргументов в C. [Читать дальше →][1]

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

[>] [Из песочницы] Gnuplot на домашней страничке
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28




## Зачем?

При разработке доступной онлайн базы данных для хранения результатов расчётов возникло непреодолимое желание представлять информацию не только в табличном виде, но и в виде графиков. Можно пойти различными путями, например, рисовать кривые в PHP, но правильнее (в смысле UNIX-way) будет использовать внешнюю программу, уже умеющую строить графики, такую как [Gnuplot][1]. Особенно интригует возможность вывода графиков в виде набора JS комманд для рисования на HTML5-холсте (canvas), чем мы и займёмся. [Читать дальше →][2]

[1]: http://www.gnuplot.info/
[2]: http://habrahabr.ru/post/248383/#habracut

[>] evalidate: безопасная обработка пользовательских выражений
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28




# Зачем нужно

Различная фильтрация есть везде. Например, файрволл netfilter (iptables) имеет свой синтаксис для описания пакетов. В файле .htaccess апача свой язык, как определять, кому давать доступ к каталогу, кому нет. В СУБД свой очень мощный язык (SQL WHERE ...) для фильтрации записей. В почтовых программах (thunderbird, gmail) — свой интерфейс описания фильтров, в соответствии с которыми письма будут раскидываться по папкам. И везде — свой велосипед. Для бухгалтерской программы вам может быть удобно позволить пользователю выбрать, кому будет повышена зарплата (все женщины, а так же мужчины возрастом от 25 до 32 лет, либо же до 50 лет если у мужчины имя Вася). И каждому подходящему повысить по пользовательскому выражению ( + 2000 рублей + 20% от прежней зарплаты + по 1000 рублей за каждый год стажа) Для интернет-магазина (или его админки) — найти все ноутбуки, с памятью от 4 до 8 Gb, которых на складе более 3 штук, но не Acer, или даже Acer, если стоят меньше 30 000 рублей. Конечно, можно присобачить свою сложную систему фильтров и критериев, сделать для них веб-интерфейс, но проще было бы все сделать в пару строк?

src="(RAM>=4 and RAM<=8 and stock>3 and not brand=='Acer') or (brand=='Acer' and price<30000)"
success, result = evalidate.safeeval(src,notebook)


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

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

[>] Еще раз о Hyper-Threading
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


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

[1]: http://composter.com.ua/content/hyper-threading-i-proizvoditelnost-pamyati-2014-12-16 "Hyper-threading и производительность памяти"
[2]: http://habrahabr.ru/post/248359/#habracut

[>] Как написать хорошую демку
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


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

[1]: //habrastorage.org/files/f4c/d4c/cac/f4cd4ccac04347eba8d4fcff2eba9396.png
[2]: http://habrahabr.ru/post/248321/#habracut

[>] Вычисление факториала на числах Чёрча
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


Доброго дня, друзья! Тема функционального программирования раскрыта на Хабре весьма неплохо, есть целая куча статей посвященных [λ-исчислению][1], [числам Чёрча][2] и подобным темам, так что ничего нового я не открою, зато мы напишем одну бесполезную и крайне неэффективную программу. Для того, чтоб жизнь мёдом не казалась, ограничим себя небольшим подмножеством языка JavaScript, а именно, будем использовать только анонимные функции от одного аргумента. Больше нам ничего не потребуется (ну почти). Начнем с определения факториала, и посмотрим, что нам понадобится в процессе решения задачи:

var fact = function (n) {
if (n === 0) return 1;
return n * fact(n - 1);
};


Итак, нам потребуются функции, логические значения (для результата операции сравнения с нулем), условный оператор, операции умножения и вычитания единицы, кроме того нужно будет реализовать рекурсивный вызов функции. Готовы? [Ну тогда поехали.][3]

[1]: https://ru.wikipedia.org/wiki/%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
[2]: http://en.wikipedia.org/wiki/Church_encoding
[3]: http://habrahabr.ru/post/248331/#habracut

[>] Встраиваем бэкдор в публичный ключ RSA
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


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

[1]: //habrastorage.org/files/344/f90/68f/344f9068f4c146d28f0a2cefa8c99800.jpg
[2]: http://habrahabr.ru/post/248269/#habracut

[>] Xargs: многообразие вариантов использования
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


![xargs][1] Об утилите xargs написано очень много — что можно написать еще? Но если, что называется, копнуть поглубже, то выясняется, что во многих публикациях излагаются лишь самые основы, но нет главного: не объясняется, как можно применять xargs в реальной практике. Статей с разбором сложных и нетривиальных вариантов применения этого весьма полезного для системного администратора инструмента, к сожалению, очень мало. Именно поэтому мы написали свою статью и постарались включить в нее как можно больше примеров использования xargs для решения различных проблем. Сначала мы рассмотрим принцип работы xargs и разберем примеры попроще, а затем перейдем к разбору сложных и интересных кейсов. [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/032/7ca/41f/0327ca41ffe465acffe37dbc30f25509.png
[2]: http://habrahabr.ru/post/248207/#habracut

[>] Как мы сейчас делаем детский урок про программистов и программирование с трансляцией
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


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

[1]: //habrastorage.org/files/14a/ec0/d88/14aec0d885ce43eba6a32632e3026ef4.jpg
[2]: http://habrahabr.ru/post/248307/#habracut

[>] Pointer Checker: проверим наши указатели
habra.14
habrabot(difrex,1) — All
2015-01-21 17:32:28


![][1]Мы все сталкивались с проблемами, возникающими при неправильной работе с указателями: выход за пределы массива и переполнение буфера, случайная запись в неизвестный кусок памяти, с последующим чтением этого «мусора» в другом месте, а в некоторых отдельных случаях и просто падение всей системы. Иногда это просто «дичь», господа! И нужно уметь обходится с этой «дичью» правильно – вовремя находить и исправлять подобные ошибки и проблемы. Именно этим занялись в «плюсовом» компиляторе Intel ещё несколько релизов тому назад. Кроме того, многие идеи пошли дальше и будут реализованы в «железе» через технологию [Intel® Memory Protection Extensions][2]. Давайте-ка посмотрим, как всё это работает в компиляторе. [Читать дальше →][3]

[1]: //habrastorage.org/files/1a9/3a0/93a/1a93a093a7244efe88bf33bba5045d4b.jpg
[2]: https://software.intel.com/en-us/articles/introduction-to-intel-memory-protection-extensions
[3]: http://habrahabr.ru/post/248099/#habracut

[>] Развертываем OpenVPN сервер с панелью управления в облаке InfoboxCloud и настраиваем доступ для клиентов
habra.14
habrabot(difrex,1) — All
2015-01-21 18:00:03


Процесс настройки и управления VPN на Linux-сервере обычно занимает немало времени. И если настроить можно один раз и забыть, то управлять пользователями VPN периодически приходится и хорошо бы, чтобы это мог делать и рядовой сотрудник компании без прав доступа к серверу и SSH вообще. Часто используется сценарий, когда с помощью VPN организуется доступ во внутреннюю сеть облака для подключения виртуальных серверов к корпоративной сети компании. Даже для себя быстро поднять VPN бывает полезно. В этой статье мы буквально за несколько минут настроим OpenVPN сервер с возможностью простого управления VPN–серверами, пользователями и организациями и запустим все это в [InfoboxCloud][1]. Это облако присутствует в регионах Москва и Амстердам, благодаря чему можно использовать VPN как для корпоративных целей, так и для того, чтобы представиться жителем Нидерландов в сети (например для использования сервисов, которые не доступны на территории вашей страны). На сервере мы будем использовать проект [Pritunl][2], который представляет собой панель управления, автоматизирующую управление конфигурациями OpenVPN. Исходные тексты pritunl открыты и доступны на [гитхабе][3]. Бесплатной версии более чем достаточно для использования. Платная позволяет отправлять данные для доступа по email или настраивать автоматическую отказоустойчивость сервиса (что для InfoboxCloud не очень важно, т.к. само облако работает в отказоустойчивом кластере) и управлять балансировкой нагрузки между несколькими серверами. [Читать дальше →][4]

[1]: http://infoboxcloud.ru
[2]: https://pritunl.com
[3]: https://github.com/pritunl/pritunl
[4]: http://habrahabr.ru/post/248445/#habracut

[>] [Из песочницы] Зачем SCADA, когда есть .NET?
habra.14
habrabot(difrex,1) — All
2015-01-21 18:30:02


Я работаю в компании, которая занимается автоматизацией производственных процессов. Знаком не по наслышке с программируемыми логическими контроллерами (PLC), человеко-машинным интерфейсом (HMI) и SCADA (диспетчерское управление и сбор данных). А еще я увлекаюсь программированием. В основном на языках C# и Java (Android). Когда я познакомился с технологией WPF и увидел как просто на ней реализуется графический интерфейс пользователя, восторгу моему не было предела. «Да это же убийца SCADA-систем», — подумал я. Надо просто каким-то образом связать .NET проект с устройствами ввода-вывода (PLC). [Читать дальше →][1]

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

[>] Розыгрыш билета на конференцию С++ Russia от компании JetBrains
habra.14
habrabot(difrex,1) — All
2015-01-21 19:00:03


Всем привет, Как вы знаете, JetBrains сейчас активно ведет разработку сразу нескольких продуктов, поддерживающих языки С и С++. [ReSharper C++][1] и [CLion][2] сейчас пока находятся в стадии ранней программы тестирования (Early Access Program), а в [AppCode][3] мы не только добавляем функции для работы с новым языком [Swift][4], но и активно дорабатываем поддержку С и С++. 27-28 февраля 2015 в Москве пройдет первая в своем роде [конференция C++ Russia][5], организованная сообществом C++ User Group Russia. Нас ждет множество отличных докладов на самые разнообразные темы из мира С++. [Читаем дальше][6]

[1]: http://www.jetbrains.com/resharper/features/cpp.html
[2]: http://www.jetbrains.com/clion/
[3]: http://www.jetbrains.com/objc/
[4]: http://www.jetbrains.com/objc/whatsnew/
[5]: http://meetingcpp.ru
[6]: http://habrahabr.ru/post/248475/#habracut

[>] [Из песочницы] Open source проекты: Media Player Classic и SharpDevelop. Первые впечатления
habra.14
habrabot(difrex,1) — All
2015-01-21 21:00:04


Нечто невообразимое творится в мире разработки: популярные программы, фундаментальные библиотеки выкладываются в open source. У обычных разработчиков появляется возможность вносить изменения в известные продукты. Вот и я, устав от ежедневной рутины, решил попробовать что-то новое, почувствовать полёт творческой мысли и приобщиться к великому. Говоря более простым языком, решил подключиться к какому-либо open source проекту. Почему именно open source? Меня привлекает:

* отсутствие строгих сроков разработки
* свободный выбор задач
* свободный выбор способа реализации задач
* возможность внести свои изменения в популярный продукт

В этой статье я хотел бы описать первый опыт работы с двумя проектами: Media Player Classic — Home Cinema и SharpDevelop. Хотелось бы дать общие рекомендации по работе с open source проектом на начальном этапе. Статья не содержит полноценного анализа исходного кода или рекламы новой функциональности, в ней описаны лишь первые впечатления о работе с проектами. Возможно, статья привлечет внимание разработчиков к описанным в ней проектам и к разработке open source в целом. [Читать дальше →][1]

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

[>] WebSocket RPC или как написать живое WEB приложение для браузера
habra.14
habrabot(difrex,1) — All
2015-01-22 06:30:04


![][1] В статье речь пойдет о технологии WebSocket. Точнее не о самой технологии, а о том, как ее можно использовать. Я давно слежу за ней. Еще когда в 2011 году один мой коллега прислал мне ссылку на [стандарт][2], пробежав глазами, я как-то расстроился. Выглядело настолько круто, и я думал, что в момент, когда это появится в популярных браузерах, я уже буду планировать, на что потратить свою пенсию. Но все оказалось не так, [и как гласит caniuse.com][3] WebSocket не поддерживается только в Opera Mini (надо бы провести голосование, как давно кто-либо видел Opera Mini). Кто трогал WebSocketы руками, тот наверняка знает, что работать с API тяжело. В Javascript API достаточно низкоуровневый (принять сообщение — отправить сообщение), и придется разрабатывать алгоритм, как этими сообениями обмениваться. Поэтому и была предпринята попытка упростить работу с вебсокетами. Так и появился [WSRPC][4]. Для нетерпеливых [вот простое демо][5]. [Читать дальше →][6]

[1]: //habrastorage.org/files/960/20a/2f5/96020a2f5946495699ac1e1816cc6a6d.jpg
[2]: https://tools.ietf.org/html/rfc6455
[3]: http://caniuse.com/#feat=websockets
[4]: https://github.com/mosquito/wsrpc
[5]: https://github.com/mosquito/wsrpc
[6]: http://habrahabr.ru/post/248507/#habracut

[>] [Из песочницы] Миграция проекта со StarTeam в SVN
habra.14
habrabot(difrex,1) — All
2015-01-22 11:00:04


Доброго времени суток! Кто из вас вообще слышал, что такое StarTeam? Думаю мало кто, в прочем как и я пару месяцев назад. Я до моего текущего места работы вообще не слышал о таком продукте компании Borland. Если спросить у гугла, то окажется, что данный продукт до сих пор существует и даже развивается, но как вы все догадались, речь пойдёт далеко не о последней версии и даже не о предпоследней. У меня версия 5.3, которая была разработана где-то в 2003 году, а установлена и запущена в оборот здесь в 2004 году. И вот почти 11 лет она работала и решала свои задачи. [Читать дальше →][1]

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

[>] [Перевод] Проблема PID 1 zombie reaping в Докере
habra.14
habrabot(difrex,1) — All
2015-01-22 12:00:03


_Привет, Хабр! Мы в Хекслете активно используем Докер как для запуска самого приложения и сопутствующих серверов, так и для запуска пользовательского кода в практических упражнениях по программированию. Без этих легковесных контейнеров нам было бы в разы сложнее справиться с этими задачами. Докер –замечательная технология, но иногда возникают неожиданные проблемы. Одна из таких проблем (и ее решение) описана в блоге Phusion (это создатели Phusion Passenger), сегодня мы публикуем ее перевод._ Примерно год назад, когда Докер был в версии 0.6, мы первыми представили Baseimage-docker. Это минимальный образ Ubuntu, модифицированный специально для Докера. Люди могут пуллить этот базовый образ из Docker Registry и использовать его как основу для своих образов. Мы были ранними пользователям Докера, используя его для CI и для создания рабочего окружения задолго до выхода версии 1.0. Базовый образ мы сделали чтобы решить проблемы, специфичные для принципов работы Докера. Например, Докер не запускает процессы под специальным процессом init, который бы правильно обрабатывал дочерние процессы, поэтому возможна такая ситуация, когда зомби-процессы вызывают кучу проблем. Докер также не делает ничего с syslog, поэтому важные сообщения могут быть утеряны. И так далее. Однако, мы выяснили, что многие люди не понимают проблем, с которыми мы столкнулись. Да, это довольно низкоуровневые системные механизмы Unix, которые понятны далеко не всем. Поэтому в этом посте мы опишем самую главную проблему, которую мы решаем – PID 1 zombie reaping problem. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/405/56c/f8f/40556cf8f5ac4f8ea21ee08751c590e8.jpg
[2]: http://habrahabr.ru/post/248519/#habracut

[>] Игра про автора systemd — Леннарта Поттеринга
habra.14
habrabot(difrex,1) — All
2015-01-22 16:00:02


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

[1]: //habrastorage.org/files/d24/3b6/e22/d243b6e2264948c893b4cebf475663a7.png
[2]: http://habrahabr.ru/post/248543/#habracut

[>] 7 золотых правил одного программиста
habra.14
habrabot(difrex,1) — All
2015-01-22 17:30:04


![][1]Это статья про семь простых правил которые я сформулировал для себя за годы работы программистом. Семь правил которые подняли мою эффективность. Сделали меня лучше. Это **мои** правила и они работают **для меня**. Я не пытаюсь навязать их вам, я хочу поделиться с вами, и возможно, узнать о том, каких правил и принципов придерживаетесь вы.

#### Компьютер всегда прав

Самая раздражающая ситуация в программировании — когда код верный, но не работает. “_Да тут три строчки, блин, просто негде ошибиться! Наверное баг! Пойду потрачу три дня на изучение баг-репортов компилятора/интерпретатора/фреймворка..._”. Возникает чувство, будто компьютер над вами издевается! Тут главное помнить, что в этих трех строчках есть ошибка. **Если код работает не верно — значит код написан не верно**. Точка. Виноваты только вы. Универсальный совет — идите спать! Ну или хотя бы отвлекитесь на чашку чая. Когда, через некоторое время, вы вернетесь к коду, наверняка станет ясно, что тут лишний оператор отрицания, или перепутаны две переменные с похожими именами, или еще какая-нибудь мелочь, в которой мы никогда никому не признаемся. [Читать дальше →][2]

[1]: //habrastorage.org/files/598/993/dc2/598993dc2389434eb64c372e4a7eb2e7.jpg
[2]: http://habrahabr.ru/post/248565/#habracut

[>] [Из песочницы] Selenium для Python. Глава 1. Установка
habra.14
habrabot(difrex,1) — All
2015-01-22 17:30:04


Представляю перевод неофициальной документации Selenium для Python. Перевод сделан с разрешения автора Baiju Muthukadan. Оригинал можно найти [здесь][1]. Содержание: 1. Установка 2. Первые Шаги 3. Навигация 4. Поиск Элементов 5. Ожидания 6. Объекты Страницы 7. WebDriver API 8. Приложение: Часто Задаваемые Вопросы [Читать дальше →][2]

[1]: http://selenium-python.readthedocs.org/index.html
[2]: http://habrahabr.ru/post/248559/#habracut

[>] «Гонки роботов» в Уральском федеральном
habra.14
habrabot(difrex,1) — All
2015-01-22 20:00:05


Десятого января в Уральском федеральном университете на паркете ГУКа были проведены региональные соревнования по робототехнике «Гонки роботов». В соревнованиях приняли участие порядка 300 человек из 25 городов Уральского региона. Соревнования проходили в 3 номинациях: «Новички», которым роботов для соревнований предоставлял Уральский федеральный университет; «Любители» участвовали в соревнованиях со своими роботами; «Профессионалы», для них была подготовлена трасса повышенной сложности. [Читать дальше →][1]

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

[>] Продукты JetBrains по ценам прошлого года
habra.14
habrabot(difrex,1) — All
2015-01-22 22:30:03


Нас постоянно спрашивают: «Когда же будут скидки?». Отвечаем: **«Скидки — есть!»**. До 5 февраля на ВСЕ продукты JetBrains можно приобрести **новую лицензию** или **обновить** существующую со **скидкой 40%** от текущей цены. На этот раз акция не международная, а только для жителей трех стран: России, Украины и Белоруссии. Мы понимаем, что курсы валют сильно пошатнулись и изменили цены в последние месяцы, и надеемся, что наша акция как-то компенсирует это и позволит вам не экономить на производительности и качестве кода. Как воспользоваться скидкой? [Читать дальше →][1]

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

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




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



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



# Построение перспективного искажения

Четвёртая статья будет разбита на две, первая часть говорит про построение перспективного искажения, вторая про то, как двигать камеру и что из этого следует.Задача на сегодня научиться генерировать вот такие картнки: ![][4] [Читать дальше →][5]

[1]: http://habrahabr.ru/post/248153/
[2]: http://habrahabr.ru/post/248159/
[3]: http://habrahabr.ru/post/248179/
[4]: http://habrastorage.org/getpro/habr/post_images/394/67d/da6/39467dda61fdb644e68bdafc1e1f17f1.png
[5]: http://habrahabr.ru/post/248611/#habracut

[>] One ring to rule them all или аутентификация через TeddyID
habra.14
habrabot(difrex,1) — All
2015-01-23 05:30:03


![][1] Недавно меня попросили высказать свое мнение по поводу нового сервиса, который обещает решить все проблемы пользователей-склеротиков, и значительно снизить риски связанные с кражей пароля. Основная концепция системы заключается в избавлении пользователя от необходимости помнить свой пароль для аутентификации и параллельно увеличить безопасность за счет двухфакторной аутентификации. Также сервис предлагает «полуторафакторную аутентификацию», которая представляет из себя вариант LastPass. Заинтересовавшись, я решил рассмотреть все плюсы и минусы такого подхода с точки зрения пользователя-гика. Сразу оговорюсь, что я не являюсь экспертом в области информационной безопасности, поэтому прошу простить заранее возможные неточности. [Осторожно тыкаем медвежонка палочкой][2]

[1]: //habrastorage.org/files/f02/100/8b6/f021008b6a4d4de4845aca02d2b18bf5.png
[2]: http://habrahabr.ru/post/248575/#habracut

[>] [Из песочницы] Визуализация многомерных данных с помощью диаграмм Эндрюса
habra.14
habrabot(difrex,1) — All
2015-01-23 12:00:02


В эпоху Big Data графическое представление многомерных данных является весьма актуальной задачей. Однако результат визуализации не всегда соответствует ожиданиям. Вот пример не самого наглядного графика для изображения многомерных данных [«Ирисы Фишера»][1]: ![][2] [Читать дальше →][3]

[1]: https://ru.wikipedia.org/wiki/%D0%98%D1%80%D0%B8%D1%81%D1%8B_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0
[2]: //habrastorage.org/files/f61/cd1/b18/f61cd1b1841044b8a9fd2d660a2f657e.jpg
[3]: http://habrahabr.ru/post/248623/#habracut

[>] Взлом времени: более 30 000 серверов NTP еще уязвимы
habra.14
habrabot(difrex,1) — All
2015-01-23 15:30:03


В конце декабря специалисты по безопасности из Google Security Team обнаружили ряд критических уязвимостей в реализации протокола NTP, который используется во многих промышленных системах управления для синхронизации времени на серверах. [Уязвимости][1], которым подвержены все NTP-сервера до версии 4.2.8, включают несколько вариантов переполнения буфера и позволяют атакующему удалённо выполнять произвольный код на сервере. Как отмечают исследователи, эксплойты для данных уязвимостей уже существуют в публичном доступе. По данным Positive Technologies, использование открытых источников позволяет легко выявить более 30 000 серверов в интернет, до сих пор подверженных данной уязвимости. Причем 4300 из них расположенны в российском сегменте сети Интернет. [![image][2]][3] [Читать дальше →][4]

[1]: http://www.securitylab.ru/vulnerability/463537.php
[2]: http://habrastorage.org/getpro/habr/post_images/837/194/034/837194034ab697eb15d05696bbb33255.png
[3]: http://habrahabr.ru/company/pt/blog/248637/
[4]: http://habrahabr.ru/post/248637/#habracut

[>] [Из песочницы] GNU Emacs. Статья, которую я так и не нашел…
habra.14
habrabot(difrex,1) — All
2015-01-23 16:00:04


![][1] Доброго времени суток, **%username%**! В данной статье хочу подробно рассказать про настройку замечательного текстового редактора [GNU Emacs][2]. GNU Emacs — программируемый текстовый редактор для программистов, написанный на программируемом языке программирования. Для расширения Emacs используется диалект языка [Lisp][3] — [Emacs Lisp][4]. [Читать дальше →][5]

[1]: //habrastorage.org/files/9b9/2f2/79e/9b92f279ec8140e98169fa73ffde32c3.png
[2]: https://ru.wikipedia.org/wiki/Emacs
[3]: https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%81%D0%BF
[4]: https://ru.wikipedia.org/wiki/Emacs_Lisp
[5]: http://habrahabr.ru/post/248663/#habracut

[>] Подходы к контролю доступа: RBAC vs. ABAC
habra.14
habrabot(difrex,1) — All
2015-01-23 16:00:04


В этой теме хотелось бы познакомить читателей с относительно новым подходом к контролю доступа под названием **Attribute-based access control**. Знакомство будет происходить на примере сравнения с популярным нынче **Role-based access control**. [Читать дальше →][1]

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

[>] [Из песочницы] Posix threads
habra.14
habrabot(difrex,1) — All
2015-01-23 16:00:04


![image][1] Рано или поздно любой программист в своей жизни встречается с многопоточностью. Многопоточность – это свойство алгоритма распаралеливатся, т.е. выполнять операции некими вычислителями независимо друг от друга. Самый простой пример — это программирование GUI. GUI всегда должен быть отрисован, вне зависимости от того, что делается в программе. Например, loading screen – он всего лишь показывает прогресс, по мере загрузки ресурсов. И выглядит это примерно так: ![][2] Для решения подобных задач используются потоки (threads). Почти каждый язык программирования содержит свой wrapper над потоками ОС, или реализует свои потоки (привет, велосипед). На Хабре есть довольно много статей про потоки, например, [«Что такое нити (threads)?»][3] или [«Многопоточность в Java»][4]. В общем, поиск в помощь. Но эта статья будет отличатся тем, что здесь будут рассмотрены нативные потоки ОС – POSIX threads. [Читать дальше →][5]

[1]: http://std3.ru/23/f8/1369451839-23f86164203441f9ed1c259cb966ebf3.jpeg
[2]: //habrastorage.org/files/dec/bd2/45a/decbd245a1734ed186e86c618f49e4f9.png
[3]: http://habrahabr.ru/post/40275/
[4]: http://habrahabr.ru/post/164487/
[5]: http://habrahabr.ru/post/248651/#habracut

[>] Приближенное сравнение чисел в Haskell
habra.14
habrabot(difrex,1) — All
2015-01-23 17:30:04


Наверное, все знают, что при вычислениях с ограниченной точностью два математически эквивалентных выражения могут оказаться не равны друг другу. Например, следующее очевидное математическое равенство при вычислении в Haskell неожиданно оказывается ложным:

ghci> 3 * sqrt(24 ^ 2 + 16 ^ 2) == sqrt(72 ^ 2 + 48 ^ 2)
False


Причина такого нарушения в том, что выражения в этом равенстве вычисляются лишь приближенно:

ghci> 3 * sqrt(24 ^ 2 + 16 ^ 2)
86.53323061113574
ghci> sqrt(72 ^ 2 + 48 ^ 2)
86.53323061113575
ghci> sqrt(72 ^ 2 + 48 ^ 2) - 3 * sqrt(24 ^ 2 + 16 ^ 2)
1.4210854715202004e-14


Различие здесь только в последнем (четырнадцатом!) знаке после запятой, но этого уже достаточно, чтобы сравнение оказалось ложным. Несмотря на то, что эта проблема хорошо известна, программисты уделяют ей мало внимания. Во-первых, считается, что сравнения такого рода возникают только в узкой области численных методов, а во-вторых, что нарушение равенства происходит крайне редко. Как оказалось, и то и другое не совсем верно. Приведенный случай возник, когда мне понадобилось реализовать функцию вычисления длины вектора с целочисленными координатами. При этом для модульного тестирования используются средства пакета [QuickCheck][1], который довольно быстро нашел случай нарушения инварианта масштабирования для длины вектора. Замечу, что это далеко не единственный инвариант, нарушение которого было обнаружено при тестировании. Возникает вопрос: как проще всего описать проверку приблизительного равенства двух чисел, полученных в результате вычислений с ограниченной точностью? Для решения этой задачи в Haskell достаточно определить еще один оператор сравнения (скажем, ~=), который используется так же, как и обычный оператор равенства. Предлагаю рассмотреть реализацию такого оператора, которую можно оформить в виде достаточно простого модуля [Circa][2]. [Читать дальше →][3]

[1]: http://hackage.haskell.org/package/QuickCheck
[2]: http://snipplr.com/view/88264/circa-comparison-of-fractional-numbers/
[3]: http://habrahabr.ru/post/248043/#habracut

[>] [Перевод] Пытливый взгляд АНБ: что такое война за Интернет-безопасность (Часть 2)
habra.14
habrabot(difrex,1) — All
2015-01-23 17:30:04


[![image][1]][2] Предположения о том, что разведывательные агентства опередили нас настолько, что защищаться от них шифрованием бессмысленно, неверны. Как показывает один документ из архива Сноудена, АНБ не преуспело в расшифровке ряда коммуникационных протоколов, как минимум в 2012 году. В презентации для конференции, проведенной в том году, значится список программ шифрования, которые американцам взломать не удалось. В процессе дешифровки криптологи АНБ разделили свои цели на пять уровней согласно уровню сложности атаки и получаемому результату, начиная с «тривиальных» и до «катастрофических». [[первая часть][3]] Мониторинг пути перемещения документа в Сети классифицируется, как «тривиальная» цель. Запись чата в Facebook – «несложная» задача, в то время как уровень сложности дешифровки писем, отправляемых через [российский провайдер][4] интернет-сервисов Mail.ru, рассматривается, как задача «умеренной сложности». Но все три эти уровня классификации не представляют серьезных проблем для АНБ. [Читать дальше →][5]

[1]: http://habrastorage.org/getpro/habr/post_images/500/f36/2bc/500f362bcb343e4aae2271ddf5e4698a.jpg
[2]: http://habrahabr.ru/company/1cloud/blog/248675/
[3]: http://habrahabr.ru/company/1cloud/blog/248435/
[4]: https://1cloud.ru/
[5]: http://habrahabr.ru/post/248675/#habracut

[>] Горный ЦОД
habra.14
habrabot(difrex,1) — All
2015-01-24 02:00:03


В наше время сооружение дата-центров стало весьма обыденным событием. К этому естественно привело то впечатляющее и все возрастающее на протяжении последнего десятилетия количество, такого рода, новых сооружений. Типовые проекты производственных зданий, совершенно безликих, как внутри так и снаружи, задвигают на второй план ту важную роль которую они осуществляют в современном мире. ЦОД о который далее пойдет речь – это скорее исключение из правил. Более необычной ИТ-инфратструктуры не стоит даже и искать. Этому есть целый ряд удивительных причин. Размещенный глубоко под землей, в недрах горы швейцарских Альп – Форт Кнокс (Fort Knox) – дата-центр, который стал обязан своему созданию компании SIAG. Осуществление проекта стало следствием понимания руководством компании тех простых вещей, что информация – это ценность сродни золоту. Даже само название ИТ-комплекса не случайно перекликается со всем известной военной базой в штате Кентукки, США, которая в свою очередь является одним из наиболее известных в мире хранилищ золота. Давайте же рассмотрим более детально на сколько тщательно «дух горы» бережет свои сокровища. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/111/c9c/02c/111c9c02c2894b1e84cd8c97550664d6.jpg
[2]: http://habrahabr.ru/post/248703/#habracut

[>] Введение в топологические пространства. Программирование конечных топологий на Java
habra.14
habrabot(difrex,1) — All
2015-01-24 04:00:03




# Введение

Я долго думал о том, чтобы выбрать какой-либо математический объект, интересный не только с точки зрения дискретной математики, но и функционального анализа, и попытаться запрограммировать его. Этим объектом стали так называемые **топологические пространства**. Естественно, конечный объём представления объектов в памяти компьютера не позволяет с абсолютной точностью смоделировать имеющиеся в математике топологические пространства, а значит, остаётся довольствоваться конечными топологиями. К счастью, это один из тех объектов, для которых конечность не только позволяет оперировать стандартными математическими понятиями, но и упрощает некоторые из них. Тем более довольно интересно исследовать объекты, для которых у нас **нет никакой возможности **померить расстояние между точками. Да, да, вы не ослышались. В общей топологии такой возможности у нас нет. Но обо всём по порядку. [Читать дальше →][1]

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

[>] [Из песочницы] Был получен несанкционированный доступ к более чем 20 000 камерам видео-наблюдения Москвы (теперь вы тоже)
habra.14
habrabot(difrex,1) — All
2015-01-24 12:30:03


Привет, Хабрахабр! Наверняка многие из вас помнят легендарный пост «[Были получены исходники 3300 глобальных интернет-проектов][1]», который долгое время был первым в рейтинге всех публикаций на сайте. Несмотря на схожий заголовок у моего поста, не претендую на первое место, но считаю, что вам стоит обратить внимание. ![][2] [Читать дальше →][3]

[1]: http://habrahabr.ru/post/70330/
[2]: //habrastorage.org/files/f7d/013/04c/f7d01304c09b47cb99d21c1dc3b801f8.jpg
[3]: http://habrahabr.ru/post/248727/#habracut

[>] Доработка USB-стека в микроконтроллерах STM32 и TivaC
habra.14
habrabot(difrex,1) — All
2015-01-24 15:30:03


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

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

[>] Снова книги по свободной цене на books.ru
habra.14
habrabot(difrex,1) — All
2015-01-24 20:00:04


В конце декабря Books.ru провело [продажу книг][1] в электронном формате по свободной цене (от 1 рубля). Было выставлено на продажу большое количество полезных для айтишника изданий, от «Алгоритмические трюки для программистов» до «Гидроизоляция конструкций, зданий и сооружений». К сожалению организовано это событие было не очень удачно и, насколько я понял, многие не смогли оплатить выбранные покупки. Я тоже не смог. Ну, не особо то и горе но немножко обидно, я там и правда много интересного понавыбирал. И тут вдруг мне приходит письмо: [Читать дальше →][2]

[1]: http://habrahabr.ru/post/247175/
[2]: http://habrahabr.ru/post/248621/#habracut

[>] Must-read книги за 2014 год по ИБ и программированию
habra.14
habrabot(difrex,1) — All
2015-01-24 20:30:04


Пока вся страна готовится к новому экономическому кризису, судорожно скупая всевозможные товары, продукты и недвижимость, мы предлагаем всем заняться саморазвитием, вложиться в себя. Ведь гречка с макаронами скоро будут съедены, но зато на новые харчи можно будет заработать, вложив время в самообразование. Сами понимаете, в непростые времена выгодно быть универсальным, неприхотливым и не болеющим. О последних двух качествах, возможно, поговорим отдельно, а сейчас обсудим ассортимент наиболее интересной литературы по информационной безопасности и программированию, опубликованной в 2014 году.

# Безопасность



#### **Тактика хакера: практическое руководство по тестированию на проникновение (The Hacker Playbook: Practical Guide To Penetration Testing)**

![][1] Книга написана в стиле планирования футбольной игры. Здесь подробно и пошагово разобраны проблемы и трудности, с которыми сталкиваются специалисты по безопасности, тестируя системы защиты. В частности, рассматриваются атаки на различные типы сетей, обход антивирусов и взлом систем безопасности. Автор книги — Питер Ким, специалист по IT-безопасности с многолетним опытом, CEO компании Secure Planet. [Читать дальше →][2]

[1]: //habrastorage.org/files/091/3f4/f88/0913f4f88dba40ce887cfcbdf3c5b7f9.jpg
[2]: http://habrahabr.ru/post/248733/#habracut

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




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



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

Сегодня мы заканчиваем с ликбезом по геометрии, в следующий раз будет веселье с шейдерами! Чтобы не было совсем скучно, вот вам тонировка Гуро: ![][5] Я убрал текстуры, чтобы было виднее. [Тонировка Гуро][6] очень проста: добрый дяденька-моделёр дал нам нормальные вектора к каждой вершине объекта, они хранятся в строчках vn x y z файла .obj. Мы считаем интенсивность освещения для каждой вершины треугольника и просто интерполируем интенсивность внутри. Ровно как мы делали для глубины z или для текстурных координат uv! Кстати, если бы дяденька-моделёр был не таким добрым, то мы могли бы посчитать нормали к вершине как среднее нормалей граней, прилегающих к этой вершине. Текущий код, который сгенерировал эту картинку, находится [здесь][7]. [Читать дальше →][8]

[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://habrastorage.org/getpro/habr/post_images/bcd/f0b/ba5/bcdf0bba53495b4ebc86ba45f03d255e.png
[6]: http://en.wikipedia.org/wiki/Gouraud_shading
[7]: https://github.com/ssloy/tinyrenderer/tree/10723326bb631d081948e5346d2a64a0dd738557
[8]: http://habrahabr.ru/post/248723/#habracut

[>] [Перевод] Какой язык программирования выбрать начинающему (инфографика)
habra.14
habrabot(difrex,1) — All
2015-01-25 13:00:02


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

[1]: //habrastorage.org/files/859/da3/681/859da368187f4274acc4594993524583.png
[2]: http://habrastorage.org/files/4e5/6a4/a55/4e56a4a553a14a41b8610463a07a6f60.png
[3]: http://habrahabr.ru/post/248763/#habracut

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