Как стать автором
Обновить
2
0
Сергей @r1der

Пользователь

Отправить сообщение

Коллекция примеров 64-битных ошибок в реальных программах — часть 1

Время на прочтение16 мин
Количество просмотров5.1K
Эту статью я посвящаю хабрапользователю f0b0s, который постоянно следит за нашей активностью, сопровождая ее тонким юмором, что держит нас в тонусе.

Читатели наших статей, посвященных разработке 64-битных приложений, часто упрекают нас в отсутствии обоснованности описываемых проблем. А именно, что мы не приводим примеры ошибок в реальных приложениях.

Я решил собрать примеры различных типов ошибок, которые мы сами обнаружили в реальных программах, о которых прочитали в интернете или о которых нам сообщили пользователи PVS-Studio. Итак, предлагаю вашему вниманию статью, представляющую собой коллекцию из 30 примеров 64-битных ошибок на языке Си и Си++.

Продолжение статьи >>

Читать дальше →
Всего голосов 150: ↑143 и ↓7+136
Комментарии62

Project Offset

Время на прочтение3 мин
Количество просмотров4.3K


Вступление


Недавно наткнулся на ютубе на несколько тех. демок движка еще неизвестной и не анонсированной игры под кодовым названием «Project Offset» с комментариями авторов.

Постов про этот проект на Хабре я не нашел — решил поделиться с уважаемой аудиторией.
Настоятельно рекомендую смотреть в HD качестве.

Увиденное для меня было легким шоком — такого я просто не ожидал увидеть в игре в ближайшие 5-7 лет. Дело даже не в том, что выглядит почти фотореалистично, а в том, какие фичи предлагают нам авторы.

Интересно, что, насколько я смог узнать, над движком работают всего три человека — энтузиаста, а результат настолько впечатляет.

Комментарии в видео на английском — их я переведу, а после — прокомментирую увиденное с моей точки зрения. На объективность я не претендую — не играл в игры уже года три, но с 3д-графикой знаком более-менее близко (на уровне любителя/хобби).
Читать дальше →
Всего голосов 187: ↑171 и ↓16+155
Комментарии158

Распознаем текст с помощью cuneiform

Время на прочтение2 мин
Количество просмотров30K
Поступила задача наладить автоматическое распознание текста с фотографий, т.е. пользователь при загрузке фотогографии на сервер, получает еще и распознанный с нее текст. Сказано — сделано. Было найдено хорошее бесплатное консольное решение — cuneiform.
Читать дальше →
Всего голосов 68: ↑60 и ↓8+52
Комментарии58

Улучшаем 3d движок на js: Gouraud shading

Время на прочтение2 мин
Количество просмотров3.7K

Пост babarun про 3d-движок на js вызвал творческий порыв добавить тонирование Гуро для пущей реалистичности. Вот, что получилось (а сейчас ещё и с зеркальностью). По сравнению с обычным (flat) тонированием нормали требуется иметь не для граней, а для вершин (то есть для треугольной грани три нормали). По готовым нормалям граней нормали вершин вычисляются просто усреднением нормалей всех граней, включающих данную вершину; это делается один раз перед рендерингом. Освещённость вершин высчитывается в начале каждого кадра с учётом изменения положения камеры.

Основная сложность заключалась в том, как залить треугольник градиентом.
Читать дальше →
Всего голосов 103: ↑97 и ↓6+91
Комментарии108

Практика использования arp-spoofing

Время на прочтение4 мин
Количество просмотров65K
В данной статье я расскажу как, используя пакет утилит arp-sk в операционной системе GNU/Linux реализовать атаку man-in-the-middle на протокол arp.
image

Для чего вообще нужна такая атака:
На хабре достаточно много статей например для взлома Wi-Fi. Но что делать после того, как ключ взломан? Тут можно увидеть один из вариантов действий.
Читать дальше →
Всего голосов 59: ↑52 и ↓7+45
Комментарии29

Практическая атака на беспроводную сеть с WEP шифрованием

Время на прочтение7 мин
Количество просмотров26K
Теорию и процесс атаки хорошо описал юзер n3m0 в статьях «Атаки на беспроводные сети». Но практика там описана достаточно слабо.

В данной статье будет описан практический процесс атаки на беспроводную сеть с шифрованием WEP, используя пакет aircrack-ng и операционную систему OpenSuse.
image image
Читать дальше →
Всего голосов 138: ↑113 и ↓25+88
Комментарии57

Алгоритмы на графах — Часть 0: Базовые понятия

Время на прочтение5 мин
Количество просмотров261K

Вступление


Как оказалось тема алгоритмов интересна Хабра-сообществу. Поэтому я как и обещал, начну серию обзоров «классических» алгоритмов на графах.
Так как публика на Хабре разная, а тема интересна многим, я должен начать с нулевой части. В этой части я расскажу что такое граф, как он представлен в компьютере и зачем он используется. Заранее прошу прощения у тех кто это все уже прекрасно знает, но для того чтобы объяснять алгоритмы на графах, нужно сначала объяснить что такое граф. Без этого никак.

Читать дальше →
Всего голосов 130: ↑118 и ↓12+106
Комментарии70

Поиск и редактирование значений в памяти сторонней программы на C++

Время на прочтение6 мин
Количество просмотров50K

Чем не устраивает ArtMoney



Часто возникает необходимость найти и поменять какие-либо строки/числа в чужой программе. С этой задачей лучше всего справляется ArtMoney. Для тех, кто не умеет или не хочет использовать отладчики, это на сегодня, наверное, единственный вариант, так как нормальных аналогов просто нету. Хотя ArtMoney и поддерживает очень много возможностей для работы с памятью, весь процесс происходит вручную, без возможности создания действий по алгоритму. Если значений много и их надо, например, менять при каждом запуске программы, то время, затрачиваемое на эту работу, превышает всякие допустимые пределы. Выход один — написать свой редактор памяти!
Читать дальше →
Всего голосов 52: ↑43 и ↓9+34
Комментарии31

Алгоритмы поиска старшего бита

Время на прочтение3 мин
Количество просмотров39K
Здесь я хочу рассказать и обсудить несколько алгоритмов для нахождения старшего единичного бита числа.

На всякий случай, поясню: старшим битом называется единичный бит числа, отвечающий за самую большую степень двойки. Иными словами, это самая большая степень двойки, не превосходящая числа. Чтобы избежать многих случаев, будем здесь считать, что мы имеем дело с натуральным числом в пределах от 1 до 2^31 — 1 включительно. Кроме того, чтобы не слишком углубляться в теорию вероятности, будем считать, что число, в котором требуется определить старший бит, с одинаковой вероятностью будет любым из возможных чисел.

Для начала, рассмотрим самый простой, первым приходящий в голову алгоритм. Давайте переберём все степени двойки, и выберем из них максимальную, которая не превосходит числа. Здесь, очевидно, можно воспользоваться монотонностью этого свойства, то есть тем, что если какая-то степень двойки не превосходит числа, то и меньше степени и подавно не превосходят. Поэтому, это метод можно написать очень просто:

int bit1(int x) {
   int t = 1 << 30;
   while (x < t) t >>= 1;
   return t;
}


Читать дальше →
Всего голосов 73: ↑55 и ↓18+37
Комментарии101

Самостоятельное изучение схемотехники. Основные понятия. Часть 1

Время на прочтение3 мин
Количество просмотров320K
Изучение цифровой схемотехники нужно начинать с теории автоматов. В этой статье можно найти некоторые элементарные вещи, которые помогут не потеряться в дальнейших статьях. Я постарался сделать статью легкочитабельной и уверен, что неподготовленный читатель сможет в ней легко разобраться.

image
Читать дальше →
Всего голосов 198: ↑188 и ↓10+178
Комментарии158

Место под солнцем для нового стартапа

Время на прочтение6 мин
Количество просмотров39K
Недавно мы опубликовали историю появления на свет LinguaLeo.ru. Сервис запустился в бета-версии 1 марта. Меньше чем через месяц команда разработчиков возвращается в Москву. Но нам жаль просто так уезжать с острова Ко Чанг — уж очень много было вложено в создание комфортных условий для работы. Поэтому мы хотим поделиться своими впечатлениями, каково это — вести разработку на острове в Таиланде, и в подробностях рассказать, с чем придется столкнуться тем, кто отважится на авантюру и отправится в тропики, чтобы целиком посвятить себя реализации задуманной идеи. И объявляем акцию: мы передадим наше солнечное место хорошим ребятам с новым интересным стартапом!

091 -- DSC_9057
Читать дальше →
Всего голосов 116: ↑108 и ↓8+100
Комментарии96

Прогресс-индикатор со стеком

Время на прочтение5 мин
Количество просмотров1.3K
В работе мне нередко случается реализовывать долгие процессы, где не обойтись без прогресс-индикатора. Проблемы начались, когда процессы стали слишком сложными, но при этом хотелось иметь один непрерывный прогресс-индикатор для всего процесса. К примеру, процесс может состоять из вызовов функций Asub, Bsub и Csub, каждая из которых выполняется довольно долго (скажем, примерно 10%, 20% и 70% общего времени). Пусть Asub содержит два цикла, идущих подряд, Bsub несколько вложенных циклов, а Csub один цикл, но при этом в середине этого цикла вызывает Asub. Решая задачу в лоб, можно довести код до такого состояния, что треть всех строчек будет вычислять текущий процент и определять, пора ли его обновлять в UI, а функция Asub принимать дополнительные параметры, чтобы определить, какой диапазон процентов ей отображать (от 0 до 10, если вызвана из основного процесса или какой-то другой, если вызвана изнутри Csub). В результате код теряет читаемость, а поддерживать его становится сложнее. И нас ждут приятные минуты, когда мы захотим повторно использовать Bsub в другом месте, но уже не в середине, а в конце общего процесса, так что выводимые ей проценты от 10% до 30% будут не к месту. Я пришёл к выводу, что с этим надо что-то делать.
Читать дальше →
Всего голосов 38: ↑28 и ↓10+18
Комментарии10

Волшебное решето Эратосфена

Время на прочтение4 мин
Количество просмотров73K
image
Наверняка все, кто читает этот пост не раз использовали, или хотя бы слышали о решете Эратосфена — методе отыскания простых чисел. Сама проблема получения простых чисел занимает ключевое место в математике, на ней основаны некоторые криптографические алгоритмы, например RSA. Есть довольно много подходов к данной задаче, но в этой статье я остановлюсь на некоторых модификациях самого простого из них — решета Эратосфена.
Читать дальше →
Всего голосов 83: ↑74 и ↓9+65
Комментарии35

Тинейджер улучшил производительность Ruby

Время на прочтение1 мин
Количество просмотров801
Интересный случай произошел в Японии. Молодой подросток, который участвовал летом в сборе «Security and Programming Camp 2009», под руководством учителя занимался улучшением производительности Ruby 1.9. Достигнутые им успехи можно назвать отличными, а если принять во внимание возраст, то удивительными. Подросток смог ускорить выполнение некоторых методов Ruby 1.9 (которая, напомню, славится своей производительностью относительно версии 1.8) в среднем на 8%. При этом максимальное ускорение составило даже 63%.

По ссылке небольшие подробности того, что сделал тинейджер. Его работа касалась оптимизации циклов и избавлении от ненужных макросов. Патчи паренька были приняты 5 октября этого года в транк Ruby.

via yokolet.blogspot.com/2009/11/japanese-teenage-boy-improved-ruby-19.html
Всего голосов 60: ↑54 и ↓6+48
Комментарии32

Перехват вызовов API-функций

Время на прочтение11 мин
Количество просмотров74K
— Папа, я бежал за троллейбусом и сэкономил пять копеек!
— Сынок, бежал бы за такси — сэкономил бы пять рублей!


Сегодня я хочу рассказать вам, как сэкономить 10 тысяч долларов. А заодно, что гораздо менее интересно – научить перехватывать вызовы Win32 API функций, и не только. Хотя, в первую очередь – конечно, именно их.
Читать дальше →
Всего голосов 92: ↑88 и ↓4+84
Комментарии72

ПО для организации очной формы обучения

Время на прочтение6 мин
Количество просмотров2.7K
Рассуждения на тему систем очного обучения и организации образовательного процесса 2.0
… Во многих ВУЗах есть факультет дистанционного обучения, на котором, как правило, используется специальное ПО для обеспечения и облегчения процесса обучения. Почему же, в этих ВУЗах, не используются ПО для облегчения ведения процесса очного обучения? Система очного обучения(СОО) смогла бы избавить преподавателей от ненужной бумажной волокиты, от хранения тонн бумажных отчетов студентов, от составления списков прогульщиков, выставления рейтинга, дала бы дополнительные возможности такие, как: оповещение студентов(рассылка, новости, блог преподавателя), статистика по студенту/группе/потоку/месяцу/году.
Итак, давайте поговорим о ПО для очного обучения…
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии78

Подводный мир Интернета или где топят оптику в мировом океане

Время на прочтение3 мин
Количество просмотров32K
image
Интернет – это не только web. Помимо контента (и устройств его хранения и обработки), отображаемого на web страницах важны ещё и линии связи. Причём важнее всего дальнемагистральные направления, т.к. провайдеров в городе может быть несколько, а вот соединение между городами и странами могут обеспечить немногие. Тем более, если речь идёт о разных континентах, тогда приходится топить сотни километров оптоволокна в пучинах мирового океана.
Читать дальше →
Всего голосов 162: ↑161 и ↓1+160
Комментарии110

Швабрашвабр2

Время на прочтение1 мин
Количество просмотров2.2K
Разработал и выложил в открытый доступ вторую версию своей «социальной» сборки Друпала — Швабрашвабр.

К старым возможностям системы:
  • система блогов и коллективных блогов,
  • система рейтингования материалов, комментариев и «карма» (репутация) пользователей,
  • система распределения прав доступа к ресурсам сайта на основе кармы.

Добавил ряд новых фишек:
  • персональные и общие фотогалереи,
  • система статусов (в стиле Фейсбука и Твиттера),
  • персональные гостевые книги (в стиле стены во вКонтакте),
  • списки друзей и посетителей.

По моему мнению в социальных сетях основной сущностью сайта, вокруг которой строится взаимодействие посетителей, является не контент (записи в блогах, фотографии и т.п.), а пользователи, по этому в этой сборке я уделил максимальное внимание кастомизации профилей пользователей. Примеры таких кастомизированных профилей можно увидеть по ссылкам: Заказчик, Исполнитель, Лошадь.

Дистрибутив сборки, подробная инструкция и скринкасты (6 роликов почти на полтора часа) для самостоятельной настройки сайта с аналогичным функционалом доступны на Швабрешвабр.
Всего голосов 113: ↑86 и ↓27+59
Комментарии22

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность