Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Sam Protsenko @skb7
User
C++11 — removed and deprecated
3 min
15K
Все уже в курсе выхода нового стандарта С++11, на Хабре уже было несколько статей о его фичах. А я вот решила написать о том, что из С++ в новой версии было исключено и по каким причинам. Оно, может быть, кажется и не таким важным, как новые возможности, но, как говорится: «Тот, кто не знает истории, обречён на повторение ошибок».
+172
Ещё более современный C++
6 min
49KTranslation
“C++11 feels like a new language.” – Bjarne Stroustrup
Не так давно Герб Саттер открыл на своём сайте новую страничку — Elements of Modern C++ Style, где он описывает преимущества нового стандарта и то, как они повлияют на код.
Не так давно Герб Саттер открыл на своём сайте новую страничку — Elements of Modern C++ Style, где он описывает преимущества нового стандарта и то, как они повлияют на код.
+129
Мониторинг (измерение) потребляемого траффика в Linux
2 min
72KОднажды мне потребовалось измерить количество трафика, которое «пожирает» некоторое приложение. Один из способов такого измерения — это установить прокси. Но что, если не хочется ставить прокси-сервер?.. Мне вот не хотелось. В поисках других способов я сначала перерыл Хабр, потом интернет. Так как я в своё время потратил на это много времени, то сейчас я создаю эту заметку, чтобы у других такой проблемы не возникло.
ВАЖНО:
Этот метод работает, если мы знаем по какому адресу (адресам) обращается наше приложение, или же с какого/каких портов.
ВАЖНО:
Этот метод работает, если мы знаем по какому адресу (адресам) обращается наше приложение, или же с какого/каких портов.
+18
Не все лицензии Creative Commons являются свободными
1 min
3.1KTutorial
Уважаемые обитатели Хабрахабра!
Пожалйста, помните, что не все лицензии Creative Commons являются свободными лицензиями.
Только 2 из 6-ти лицензий являются свободными:
1) лицензия «Attribution», сокращённо CC BY
и 2) лицензия «Attribution-Share Alike», сокращённо CC BY-SA (это лицензия Википедии, если кому от этого стало понятнее)
Все остальные лицензии НЕсвободные! Всегда помните это!
Почему я это пишу? Да потому, что вас уже, как минимум, два раза обманули. Pioneer One на самом деле несвободный фильм (т.к. запрещено коммерческое использование), а диафильм ни в коем случае не является open source-фильмом (т.к. запрещены любые его изменения).
Пожалуйста, будьте бдительны!
Как узнать, какая лицензия является свободной*? Надо всего лишь зайти на сайт Определения свободных произведений культуры (Definition of Free Cultural Works) в раздел Лицензии.
Пожалйста, помните, что не все лицензии Creative Commons являются свободными лицензиями.
Только 2 из 6-ти лицензий являются свободными:
1) лицензия «Attribution», сокращённо CC BY
и 2) лицензия «Attribution-Share Alike», сокращённо CC BY-SA (это лицензия Википедии, если кому от этого стало понятнее)
Все остальные лицензии НЕсвободные! Всегда помните это!
Почему я это пишу? Да потому, что вас уже, как минимум, два раза обманули. Pioneer One на самом деле несвободный фильм (т.к. запрещено коммерческое использование), а диафильм ни в коем случае не является open source-фильмом (т.к. запрещены любые его изменения).
Пожалуйста, будьте бдительны!
Как узнать, какая лицензия является свободной*? Надо всего лишь зайти на сайт Определения свободных произведений культуры (Definition of Free Cultural Works) в раздел Лицензии.
+42
Обработка Segmentation Fault в C++
3 min
72KВводная
C++ является «небезопасным» («unmanaged») языком, поэтому программы могут «вылетать» — аварийно завершать работу без сохранения данных пользователя, сообщения об ошибке и т.п. — стоит только, например, залезть в не инициализированную память. Например:
void fall()
{
char * s = "short_text";
sprintf(s,"This is very long text");
}
или
void fall()
{
int * pointer = NULL;
*pointer = 13;
}
Всем было бы лучше, если бы мы могли «отловить» падение программы — точно так же, как в java ловим исключения — и выполнить хоть что-то перед тем, как программа упадет (сохранить документ пользователя, вывести диалог с сообщением об ошибке и т.п.)
Общего решения задача не имеет, так как C++ не имеет собственной модели обработки исключений, связанных с работой с памятью. Тем не менее, мы рассмотрим два способа, использующих особенности операционной системы, вызвавшей исключение.
+53
Nmap — руководство для начинающих
3 min
536KМногие слышали и пользовались замечательной утилитой nmap. Ее любят и системные администраторы, и взломщики. Даже Голливуд знает про нее — в фильме «Матрица» при взломе используется nmap.
+72
Вычисления с фиксированной точкой. Основные принципы (ч.1)
11 min
96KВведение или зачем этот топик
Читая Хабрахабр, я натолкнулся на два топика, «выводящие на чистую воду» вычисления с плавающей запятой.
В одном из них достаточно подробно и качественно дана выжимка из стандарта IEEE754 и основные проблемы при вычислениях с плавающей запятой, другой — короткий топик-заметка про то, что не все так хорошо при вычислениях на ПК. При этом даются рекомендации в случае, когда важна математическая точность результата, использовать целочисленные вычисления, «фиксировать запятую» или как минимум проверять результаты, выдаваемые платформой (компилятор + процессор).
Несмотря на то, что советы дельные, понять, как использовать целочисленные вычисления там, где до этого была плавающая запятая, не так просто, особенно без математической подготовки. Достаточно занимательна в этом смысле попытка одного из «хабровчан» разобраться с фиксированной точкой методом экспериментов.
Данный топик — краткое введение, которое должно дать представление о вычислениях с фиксированной точкой. Математика в данной статье не должна никого напугать — все очень примитивно. Сразу прошу простить: среди моих знакомых устоявшимся выражением является именно «фиксированная точка» (от англ., fixed-point), а не «запятая», поэтому я буду придерживаться именно этого термина.
+71
Взгляд изнутри: светодиодные лампочки
17 min
662K
Предисловие
В последнее время был поднят ажиотаж вокруг светодиодных ламп, которые должны заменить собой обычные лампы Ильича. И как поведал главный нанотехнолог России, такие лампы скоро поступят в продажу в Москве и Санкт-Петербурге. Конечно, всё было обставлено с пафосом: первым оценил новинку В.В.Путин. Мне удалось достать лампочку от «Оптогана» одним из первых, к тому же в руках у меня оказались ещё одна лампочка российского производства («СветаLED» или «SvetaLED»), правда побитая жизнью, но рабочая, и китайский NoName, которую с лёгкостью можно купить на ebay или dealextreme.com.
+532
Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install
5 min
177KК написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install. |

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и об
+293
Признаки плохого программиста
18 min
69KTranslation
Неспособность рассуждать о коде
«Рассуждать о коде» значит понимать порядок исполнения инструкций («исполнять программу в голове»), зная, каково предназначение кода.
Симптомы
- Наличие «волшебного», «вуду» кода или кода, который не имеет никакого отношения к целям программы, но всё равно тщательно поддерживается (например, инициализация переменных, которые никогда не используются, вызов функций, не имеющих отношения к цели, создание выходных данных, которые не используются, и т.д.).
- Многократные вызовы идемпотентных функций (например, вызов save() по нескольку раз, «чтобы уж точно»).
- Исправление ошибок написанием избыточного кода, который замещает данные, полученные при исполнении неисправного кода.
- «Йо-йо код», который конвертирует значения в различные представления, а потом конвертирует их обратно ровно в то же представление, с которого начинали (например, преобразование десятичного числа в строку, а потом обратно в десятичное число, или padding строчки с последующим trim'ом).
- «Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).
+220
Бинаризация (практика часть ?)
2 min
23K Моя статья о бинаризации
Как просили реализовать часть методов о которых я писал. Что не сделаешь ради интереса и людей.
Начну с малого и простого:
Реализовал
Применение на практике
Как просили реализовать часть методов о которых я писал. Что не сделаешь ради интереса и людей.
Начну с малого и простого:
Реализовал
- Бинаризация с нижним порогом
- Бинаризации с верхним порогом
- Бинаризация с двойным ограничением
- Метод Отса (Оцу)
- Метод Янни (Яни)
- Метод среднего
+25
Ubuntu в техническом вузе
5 min
39KХотел бы рассказать об опыте использования Linux'a в целом и Ubuntu в частности в учебном процессе технического вуза — Ивановская государственная текстильная академия для студентов направления подготовки — «Моделирование и исследование в организационно-технических системах».
+249
Представляем десятое измерение
1 min
6.3K
Эх… А ведь нам даже четвертое-то измерение представить довольно трудно, а вы про какие-то десять говорите… Но, несмотря на это, мы попытались перевести и переозвучить видеоролик, который интересно и доходчиво объясняет, как же можно представить себе аж десятое измерение!
+111
Анимированные графики с помощью gnuplot+bash+Avidemux
6 min
14KПрактически неотъемлемая часть любой презентации на естественно-научной конференции — это графики. Нередко интересно увидеть не только график какой-нибудь зависимости в некоторый момент времени, но и посмотреть, как эта зависимость меняется во времени. Очень наглядно это можно показать, сделав много-много графиков и собрав из них видео. Об одном из вариантов, как это сделать, и будет мой пост.
+32
MBR для флешки своими руками или как сделать из одного устройства три
8 min
114KМое почтение читающему!
Топик мог бы получиться просто катастрофически огромным, поэтому перейдем сразу к делу. Впереди вас ждет рассказ, о том, как можно одну флешку сделать одновременно загрузочной как для ОС семейства Windows, так и *nix, а также сделать из нее live-usb. Заранее прошу прощения за жаргон, не сторонник, но так короче.
Как-то пришлось много раз подряд устанавливать на одну и ту же машину кучу разных операционных систем, как оттоварищей господ из Майкрософт, так и любимых всеми нами *nix`ов. При этом инсталляторы вновь устанавливаемых ОСей периодически терли загрузчики ранее установленных, так что приходилось их восстанавливать вручную, загружаясь с live-usb. Но самое ужасное, что при всем при этом под рукой была всего одна флешка (и еще 15 компьютеров правда, но толку от них было мало, так как разбирать их по причинам гарантии в надежде на лишний жесткий диск было нельзя). Флешка к счастью была большого объема. Вот тут-то и возникла идея сделать из одной флешки две, а лучше три (хотя можно и 4) разных девайса.
Как сделать из одной флешки несколько с целью последующей установки на нее одновременно нескольких установщиков ОС и еще live-операционки? Ответ очевиден — сделать на флешке несколько разделов!
Топик мог бы получиться просто катастрофически огромным, поэтому перейдем сразу к делу. Впереди вас ждет рассказ, о том, как можно одну флешку сделать одновременно загрузочной как для ОС семейства Windows, так и *nix, а также сделать из нее live-usb. Заранее прошу прощения за жаргон, не сторонник, но так короче.
Аннотация
Как-то пришлось много раз подряд устанавливать на одну и ту же машину кучу разных операционных систем, как от
Немного теории
Как сделать из одной флешки несколько с целью последующей установки на нее одновременно нескольких установщиков ОС и еще live-операционки? Ответ очевиден — сделать на флешке несколько разделов!
+169
Python-неизвестный
4 min
27KНа Хабре уже есть несколько статей\переводов, в которых рассказывается о неизвестных фичах\тонкостях\возможностях Пайтона. Я буду пытаться не повторять их, а дополнять, но если уж так случилось, что вы это уже где-то видели — не огорчайтесь. Я уверен, что найдется что-то интересное и для вас.
+136
Ставим объекты на поток, паттерн фабрика объектов
12 min
92KДоброго времени суток, читатель. Я хочу поделится с тобой знаниями об одном из наиболее часто используемых мною паттернов — фабрики объектов, для данного паттерна так же подходит другое название — виртуальный конструктор.
Что представляет из себя этот паттерн?
Исходя из названия легко догадаться, что это некая, определенная, фабрика (или завод), который создает объекты. Еще раз выражу слово определенная. Как и в реальной жизни фабрика имеет некую специализацию, создавая товары или устройства какого-либо определенного типа. И фабрика, которая выпускает, например, мебель, не может производить, например, еще и компоненты для смартфонов. По аналогии с программированием фабрика объектов может создавать только объекты определенного типа, которые используют единый интерфейс. Самыми главными преимуществами данного паттерна в С++, является упрощение создания объектов различных классов, использующих единый интерфейс. Зачастую библиотекам, которые разрабатывают программисты нужно не только уметь работать с определенными объектами, но и создавать их. Самый очевидный пример загрузка файлов различных форматов. Мы не знаем, какой файл мы будем загружать заранее, но у нас есть список возможных форматов. Пользователь указывает файл, библиотека пытается определить тип файла и вызвать соответствующий загрузчик для него. В большинстве случаев программисты использует конструкции типа switch или if, чтобы определить экземпляр какого класса им необходимо создать. И чем больше возможных вариантов появляется, тем больше разрастается эта конструкция, в последствии превращающиеся в уродливого монстра.
Что нам может предложить фабрика объектов?
Во-первых, простой метод создания объектов, который сократит switch/if до 1ой строчки.
Во-вторых, удобные методы для работы с объектами фабрики. Мы всегда точно можем узнать, зарегистрирован ли у нее определенный класс, количество зарегистрированных классов, а так же удобные методы для добавления и удаления экземпляров классов в фабрику. С помощью фабрики можно ограничивать набор возможных классов, которая она будет создавать, используя некую конфигурацию.
Что представляет из себя этот паттерн?
Исходя из названия легко догадаться, что это некая, определенная, фабрика (или завод), который создает объекты. Еще раз выражу слово определенная. Как и в реальной жизни фабрика имеет некую специализацию, создавая товары или устройства какого-либо определенного типа. И фабрика, которая выпускает, например, мебель, не может производить, например, еще и компоненты для смартфонов. По аналогии с программированием фабрика объектов может создавать только объекты определенного типа, которые используют единый интерфейс. Самыми главными преимуществами данного паттерна в С++, является упрощение создания объектов различных классов, использующих единый интерфейс. Зачастую библиотекам, которые разрабатывают программисты нужно не только уметь работать с определенными объектами, но и создавать их. Самый очевидный пример загрузка файлов различных форматов. Мы не знаем, какой файл мы будем загружать заранее, но у нас есть список возможных форматов. Пользователь указывает файл, библиотека пытается определить тип файла и вызвать соответствующий загрузчик для него. В большинстве случаев программисты использует конструкции типа switch или if, чтобы определить экземпляр какого класса им необходимо создать. И чем больше возможных вариантов появляется, тем больше разрастается эта конструкция, в последствии превращающиеся в уродливого монстра.
Что нам может предложить фабрика объектов?
Во-первых, простой метод создания объектов, который сократит switch/if до 1ой строчки.
Во-вторых, удобные методы для работы с объектами фабрики. Мы всегда точно можем узнать, зарегистрирован ли у нее определенный класс, количество зарегистрированных классов, а так же удобные методы для добавления и удаления экземпляров классов в фабрику. С помощью фабрики можно ограничивать набор возможных классов, которая она будет создавать, используя некую конфигурацию.
+39
Russian Code Cup: итоги финального раунда
9 min
13K18 сентября состоялся финальный раунд всероссийского кубка по программированию Russian Code Cup. В этом году в финал олимпиады вышли 50 программистов — 27 из России, 11 из Украины, 7 из Беларуси, двое из США и по одному из Армении, Грузии и Швейцарии.

Победителем стал Петр Митричев из Москвы. Он получил приз в 10 тыс. долл. США. Второе место занял Евгений Капун из Санкт-Петербурга, он получил 5 тыс. долл. США. На третьем месте — Михаил Дворкин из Санкт-Петербурга с призом в 3 тыс. долл. США. Поздравляем ребят и желаем им дальнейших успехов!
В этой статье мы проведем разбор задач из финального раунда.

Победителем стал Петр Митричев из Москвы. Он получил приз в 10 тыс. долл. США. Второе место занял Евгений Капун из Санкт-Петербурга, он получил 5 тыс. долл. США. На третьем месте — Михаил Дворкин из Санкт-Петербурга с призом в 3 тыс. долл. США. Поздравляем ребят и желаем им дальнейших успехов!
В этой статье мы проведем разбор задач из финального раунда.
+47
Микроэлектроника – мотивации псто
8 min
50K
Дисклаймер
Мне нравится заниматься микроэлектроникой. Причем я даже не уверен, что я правильно использую слово «микроэлектроника» — может быть, я занимаюсь совсем не ей. Может быть я занимаюсь схемотехникой. Или программированием. Или программированием микроконтроллеров. Или сборкой электронных устройств. Или еще бог знает чем. Но для себя то, что я делаю, я называю микроэлектроникой – мне лень пойти почитать определение и сопоставить с тем, что я делаю — да простят меня сведущие и, возможно, обидевшиеся.
Несмотря на то, что я занимаюсь микроэлектроникой и уделяю этому занятию достаточно много времени на протяжении почти трех лет – я все еще начинающий с массой больших пробелов в знаниях. Но кое-что у меня получается и я стараюсь разобраться в вопросах, в которых все еще не разбираюсь.
Решил я написать этот пост потому, что вижу с одной стороны большой интерес к «ардуино-постам», трепет при виде мигающего светодиода, а с другой стороны какой-то непонятный мне страх самостоятельно взять и сделать что-то. Ребята, от страхов нам надо избавляться.
+176
Information
- Rating
- Does not participate
- Location
- Краматорск, Донецкая обл., Украина
- Date of birth
- Registered
- Activity