Как стать автором
Обновить
0
0

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

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

Квантовая механика для всех, даром, и пусть никто не уйдёт обиженным: часть первая

Время на прочтение10 мин
Количество просмотров215K
Здравствуйте! Я хотел бы представить вашему вниманию отличное введение в квантовую механику, написанное Элиезером Юдковским; быть может, он известен вам по своему сайту lesswrong.com, посвящённому рационализму, предрассудкам, когнитивным парадоксам и ещё многим интересным вещам.
Читать дальше →
Всего голосов 119: ↑109 и ↓10+99
Комментарии149

Жизнь разработчика (в картинках)

Время на прочтение1 мин
Количество просмотров65K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Всего голосов 884: ↑700 и ↓184+516
Комментарии132

Прикручиваем django-registration

Время на прочтение6 мин
Количество просмотров56K
Нужно было прикрутить регистрацию на сайт. Вспомнил про django-registration (классический django reusable app). Первое, что удивило — в исходниках не было шаблонов. Пришлось немного покопаться в интернете, поискать ответы на вопросы и поделиться результатом.
Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии53

Избранное: ссылки по IT безопасности

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




Давно хотел написать этот пост с подборкой полезных ссылок, так как очень часто спрашивают подобное (думаю, у многих, кто в этой (да и в других) сфере). Ссылки разбиты на категории.




Читать дальше →
Всего голосов 92: ↑86 и ↓6+80
Комментарии18

WebSocket-чат на Tornado для вашего Django-проекта

Время на прочтение28 мин
Количество просмотров68K
TornadoНедавно я запустил сайт backgrounddating.com и написал об этом здесь, на Хабрахабре. Разумеется, я уже тогда рассказал о некоторых технических деталях реализации этого проекта, но об одной из возможностей сайта я бы хотел написать отдельно, тем более, что документации (как на русском, так и на английском) на эту тему в Интернете пока что довольно мало. Итак, речь пойдёт о чате в реальном времени между двумя пользователями. Задача состоит в том, чтобы любой пользователь мог отправлять другим пользователям сообщения, и, если у получателя сообщения открыт чат с этим пользователям, то он сразу же видел входящие сообщения (а в ином случае он мог прочитать сообщения позже: то есть при открытии чата загружается история последних сообщений).

Если вам нужно, чтобы пользователи могли общаться не только вдвоём, а группами из любого количества человек, то сделать это можно почти что элементарно: описанная реализация, по сути, рассчитана на такое расширение функциональности.

Сразу уточню, что это не единственный способ реализовать подобное. Вы можете использовать другой асинхронный веб-сервер (например node.js), можете использовать другую очередь сообщений (или вообще её не использовать, если вам подходят особенности такого варианта: с пользователями одного канала обязательно общается один и тот же worker веб-сервера). Я даже не утверждаю, что этот вариант самый лучший (но в данном случае он подошёл лучше всех). В конце концов, мы здесь вообще не будем рассматривать костыли (long polling, Flash) для старых браузеров (а это почти все версии IE, например), не поддерживающих веб-сокеты, и даже не будем рассматривать возможность подключаться из тех браузеров, которые уже поддерживают протокол WebSocket, но не стандартизированную версию (RFC 6455), а одну из устаревших. О том, как можно включить поддержку устаревшей версии «draft 76» (она же «hixie-76»), смотрите в документации Tornado.
Читать дальше →
Всего голосов 56: ↑43 и ↓13+30
Комментарии17

Как работает yield

Время на прочтение6 мин
Количество просмотров664K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Всего голосов 141: ↑136 и ↓5+131
Комментарии41

DoS эксплоит для движка WebKit

Время на прочтение1 мин
Количество просмотров145K
Определенная последовательность арабских символов позволяет вызвать критическую ошибку, приводящую к аварийному завершению любого приложения использующего движок WebKit в iOS и Mac OS.

Уязвимость воспроизводится на Mac OS 10.8 (Mountain Lion) и iOS 6. Версии iOS <6 и 7 beta, Mac OS <10.8 и 10.9 beta не подвержены проблеме.

Ссылка на эксплоит: https://zhovner.com/tmp/killwebkit.html

Уязвимость можно воспроизвести:
  • Отправив sms на iPhone — при этом происходит респринг и больше нельзя зайти в приложение «Сообщения». Исправить можно так habrahabr.ru/post/191654/#comment_6658802
  • Отправив сообщение через iMessage на iOS или десктопный Messages в Mac OS — приложение завершится и более в него нельзя будет зайти.
  • Открыв страницу содержащую строку — мобильный Safari в iOS просто закроется. При этом, если не удалить историю посещений, зайти повторно в него не получится. Десктопный Safari ведет себя так же. Десктопный Chrome завершит процесс вкладки показав сообщение об ошибке, сам браузер продолжит работать. Новая Opera и Яндекс.Браузер ведут себя аналогично Хрому.
  • Поместив строку в название WiFi-сети (ESSID) — во время сканирования сетей это должно вызвать ошибку. Метод описан на news.ycombinator.com и мною не проверялся: news.ycombinator.com/item?id=6293824


Читать дальше →
Всего голосов 124: ↑115 и ↓9+106
Комментарии209

Android NDK: OpenSL ES

Время на прочтение9 мин
Количество просмотров24K
Здравствуйте, уважемые хабражители!
Недавно, читая хабр, я увидел статью об Android NDK и OpenAL. А в комментариях был задан вопрос о OpenSL ES. Тогда у меня и родилась мысль написать статью об этой библиотеке. Я занимался этой темой, когда мне понадобилось добавить звуки и музыку в игру под Android, написанную на C++, под NDK. Статья не претендует на полноту, здесь будут лишь основы.

Содержание:
  1. Краткое описание структур OpenSL ES
  2. Инициализация механизма библиотеки и создание объекта для работы с динамиками
  3. Проигрывание PCM(wav)
  4. Проигрывание MP3, OGG
  5. Заключение

Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии15

«Пакет смерти» для сетевых карт Intel

Время на прочтение2 мин
Количество просмотров138K
Сетевой инженер Кристиан Кильхофнер (Kristian Kielhofner), купив новые серверы для обработки VoIP-трафика, столкнулся с неприятной проблемой. Серверы периодически падали без видимой причины. Но самое странное, что на серверах иногда отключался Ethernet-контроллер. Отключался в прямом смысле: система некоторое время работала нормально, но после обработки определённого количества трафика интерфейс выдавал аппаратную ошибку и обрывал связь, а восстановление работы было возможно только после холодной перезагрузки.

Кристиан провёл небольшое исследование и нашёл ряд сообщений о том, что у других пользователей тоже бывают проблемы с контроллерами Intel 82574L, говорили, что у них баги в EEPROM, ASPM и т.д. Кристиан с коллегами потратил несколько месяцев на поиск причин, почему в их случае контроллеры выдавали ошибку. В конце концов, им удалось докопаться до сути.
Читать дальше →
Всего голосов 161: ↑157 и ↓4+153
Комментарии146

Valve выпустила Half-Life под Linux

Время на прочтение1 мин
Количество просмотров76K
Компания Valve сегодня выпустила нативный порт под Linux оригинальной игры Half-Life (да-да, той самой первой игры, 1998 года).



Если пятнадцать лет назад вы не купили игру, а пользовались пиратской версией, то теперь у вас появился шанс отдать долг разработчику. В каталоге Valve игра Half-Life продаётся за 199 руб.

Valve усиленно продвигает игровую платформу Steam и считает Linux самой лучшей платформой для компьютерных игр на десктопе. Может быть, Half-Life 3 даже выйдет эксклюзивно под Linux, кто знает.
Всего голосов 170: ↑145 и ↓25+120
Комментарии152

Светодиодная лента в качестве освещения комнаты

Время на прочтение15 мин
Количество просмотров1.3M
Изначально для основного освещения одной из комнат, где шёл капитальный ремонт, планировалась обычная люстра. Но недавно мне на глаза попалась суперяркая светодиодная лента Ultra 5000 со светодиодами smd 5630 торговой марки Arlight. Решение было принято быстро, окончательно и бесповоротно — хочу такую ленту в качестве основного света в комнате.



О реализации светодиодного периметра освещения далее
Всего голосов 420: ↑415 и ↓5+410
Комментарии329

Барьеры доступа к памяти в Linux

Время на прочтение15 мин
Количество просмотров48K
Эта статья — частичный перевод исчерпывающего руководства Дэвида Хоуэлса (David Howells) и Пола Маккени (Paul E. McKenney) распространяемого в составе документации Linux (Documentation/memory-barriers.txt онлайн версия).

Must read для разработчиков ядра/драйверов и очень познавательно для прикладных программистов.
ASCII art и очень много букв
Всего голосов 114: ↑109 и ↓5+104
Комментарии33

Шпаргалки для тех, кто делает первые шаги

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


На картинке фрагмент отличной шпаргалки, где собраны основные электронные компоненты — их внешний вид и обозначения на принципиальных схемах.

Шпаргалка по электронным компонентам (PDF, 168Kb)
Шпаргалка по контроллерам AVR (ч.1) (PDF, 61Kb)
Шпаргалка по контроллерам AVR (ч.2) (PDF, 61Kb)

PS: Там же, на сайте, имеется любопытный блог с описанием эффектных электронных поделок. Культура исполнения на высоте, приведены ссылки на open source прошивки.
Всего голосов 135: ↑130 и ↓5+125
Комментарии42

ARM аccемблер

Время на прочтение6 мин
Количество просмотров135K
Привет всем!
По роду деятельности я программист на Java. Последние месяцы работы заставили меня познакомиться с разработкой под Android NDK и соответственно написание нативных приложений на С. Тут я столкнулся с проблемой оптимизации Linux библиотек. Многие оказались абсолютно не оптимизированы под ARM и сильно нагружали процессор. Ранее я практически не программировал на ассемблере, поэтому сначала было сложно начать изучать этот язык, но все же я решил попробовать. Эта статья написана, так сказать, от новичка для новичков. Я постараюсь описать те основы, которые уже изучил, надеюсь кого-то это заинтересует. Кроме того, буду рад конструктивной критике со стороны профессионалов.
Читать дальше →
Всего голосов 66: ↑64 и ↓2+62
Комментарии27

Читаем QR код

Время на прочтение5 мин
Количество просмотров1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Всего голосов 621: ↑612 и ↓9+603
Комментарии109

Спам — как средство передачи шифровок?

Время на прочтение2 мин
Количество просмотров4.5K
Вчера пришло письмо, судя по всему — спам (гугловый фильтр, правда, не отловил его). Но спам не совсем обычный — нет ни рекламы, ни ссылок, ни аттачей.

При этом текст сообщения и ещё кое-какие детали заставили задуматься параноидальную часть моего мозга.
Вот что я увидел сначала...
Всего голосов 243: ↑208 и ↓35+173
Комментарии132

RGB лампа

Время на прочтение4 мин
Количество просмотров41K
image

Размышляя над подарком девушке на 8 марта, вспомнился проект светодиодной RGB лампы, который и было решено реализовать. Тем более что все необходимое для этого имелось под рукой. Но что бы сделать подарок интересней я добавил управление с помощью оптического ик датчика, что сделало оригинальным обращение с лампой и к тому же не портило дизайн кнопками.
Читать дальше →
Всего голосов 138: ↑124 и ↓14+110
Комментарии75

Перехват cookie в реальном времени в открытых WiFi-сетях

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


На видео показан угон сессии вконтакте.ру, который почему-то до сих пор не использует авторизацию с https и передает пароли открытым текстом.
Дамп трафика собирается программой kismac в формате libpcap и параллельно парсится grep-ом с использованием регулярных выражений, что позволяет в реальном времени выводить на экран все интересующие куки и пароли. При этом не используется никаких анализаторов пакетов.

regexp для перехвата вконтакте.ру:

tail -F pcap.файл | cat | grep -aEo «remixsid=[0-9a-f]+|l=[0-9]{3,12}|p=[0-9a-f]{36}|email=[^&]+&pass=[^ ]+»

для фейсбука:

c_user=[0-9]+|sid=[0-9]{1,5}|xs=[0-9a-f]{32}

Аналогичная конструкция будет работать и с дампом собранным с помощью airdump-ng.
Всего голосов 173: ↑158 и ↓15+143
Комментарии162

Ajenti — полгода спустя

Время на прочтение2 мин
Количество просмотров11K
Казалось бы, не так давно я представлял Хабру свой проект.
Откликнулось много людей, некоторые пришли и оставили свой след в исходниках и истории коммитов, некоторые исчезли, кто-то все еще с нами.
Я хочу выразить всем им свою благодарность, потому что без них у меня вряд ли что-нибудь получилось.
А сегодня я наконец выпускаю альфа-версию проекта.

Под катом вас ждет много интересного, а сейчас дохабракатный мотивационный скриншот:

image
Читать дальше →
Всего голосов 250: ↑244 и ↓6+238
Комментарии165
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность