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

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

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

ОСРВ QNX: Межзадачное взаимодействие

Время на прочтение10 мин
Количество просмотров27K
Продолжение цикла заметок об операционной системе реального времени QNX. В этот раз я хотел бы рассказать о межзадачном взаимодействии в QNX Neutrino (мы будем рассматривать QNX 6.5.0). В ОСРВ существует широкий набор механизмов межзадачного взаимодействия — от специфичного для QNX обмена сообщениями до знакомых разработчикам UNIX и POSIX сигналов и разделяемой памяти. И хотя большая часть заметки будет посвящена обмену сообщениями, но особенности использования сигналов, сообщений POSIX и разделяемой памяти будут также описаны. А дочитавшие до конца получат две плюшки к чаю.

Понимание принципа обмена сообщениями является необходимым для системного программиста QNX, т.к. этот механизм играет фундаментальную роль в ОСРВ. Многие привычные и знакомые разработчикам функции операционной системы являются лишь надстройками и реализованы при помощи обмена сообщениями (например, read() и write()).
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии6

Это должен знать каждый

Время на прочтение3 мин
Количество просмотров83K
Спрос на Android-разработчиков весьма велик сейчас. Я решил подготовить список того, что нужно знать каждому разработчику под эту платформу. Это не только то, что вас могут спросить на собседовании, а весь спектр знаний, который скорее всего пригодится в работе. Бонусом идет пара интерсных вопросов про платформу.
Читать дальше →
Всего голосов 139: ↑124 и ↓15+109
Комментарии21

Разработка производительных приложений

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

Производительные приложения



Приложение для платформы Android будет запущено на мобильном устройстве с ограниченными вычислительными возможностями и памятью, и с недолгим временем работы батареи. А значит, приложение должно быть эффективным. Время работы батареи — одна из причин, по которой хочется оптимизировать ваше приложение, даже если оно работает достаточно быстро. Время работы батареи очень важно для пользователей, и платформа Android с легкостью покажет пользователю, если приложение его существенно уменьшает.

Несмотря на то, что здесь будут описаны микрооптимизации, они практически никогда не смогут повредить вашему приложению. Выбор правильных алгоритмов и структур данных всегда должны быть первыми приоритетами, но этот аспект рассматриваться не будет.
Читать дальше →
Всего голосов 71: ↑68 и ↓3+65
Комментарии9

Перехват PPPoE сессии

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


На видео показан практический способ угона сессии PPPoE с помощью врезки в кабель. При этом не происходит перехвата логина или пароля и не имеет значения используемый тип авторизации (CHAP/PAP).

Большинство ethernet-провайдеров, к сожалению не используют шифрование всей сессии, ограничиваясь только шифрованием этапа авторизации. Это позволяет представиться легитимным клиентом, перехватив реквизиты существующего подключения.

Читать дальше →
Всего голосов 89: ↑86 и ↓3+83
Комментарии63

Система мониторинга MongoDB (MMS)

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


Несколько часов назад ко мне в почту упало письмо с уведомлением о новом сервисе от компании 10gen, спонсоров MongoDB. Этот облачный сервис позволяет мониторить ваши сервера и слать алерты, если что-то пойдет не так.
Читать дальше →
Всего голосов 62: ↑62 и ↓0+62
Комментарии12

ОСРВ QNX: Планирование потоков

Время на прочтение10 мин
Количество просмотров24K
Продолжение цикла заметок об операционной системе реального времени QNX. В этот раз я хотел бы рассказать о планировании потоков в QNX6*. Как уже известно читателям (которые ознакомились с предыдущей заметкой цикла), микроядро QNX6 управляет потоками, а не процессами. И именно микроядро осуществляет загрузку контекста того потока, который должен получить управление в следующий момент. Выбор потока, который будет выполняться процессором (т.е. активно использовать процессорное время) и есть планирование потоков.

Когда происходит планирование потоков


Микроядро QNX Neutrino не работает постоянно, а получает управление только в случае системных вызовов, исключений и прерываний. Также микроядро во время своей работы выполняет планирование потоков. Отсюда можно сделать верный вывод, что операция планирования потоков происходит не сама по себе, а по какому-то событию.
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии13

ОСРВ QNX: Немного о микроядре, потоках и процессах

Время на прочтение6 мин
Количество просмотров28K
Поскольку мой первый небольшой обзор операционной системы реального времени QNX показал, что среди жителей Хабра есть к ней интерес, то я решил продолжить цикл заметок. Мне кажется, что стоит немного рассказать о системной архитектуре QNX6. Думаю, что нелишне дать определение тому, что такое микроядро, и какие задачи оно решает. По ходу повествования будут также развенчаны два мифа, связанные с QNX. Но сначала…

Немного о POSIX


С выпуском каждой новой версии QNX (а надо отметить, что первая версия ОСРВ QNX появилась теперь уже в далёком 1981 году), разработчики использовали накопленный ранее опыт и делали систему лучше, в том числе и удобнее для разработчиков. Именно поэтому QNX Neutrino поддерживает стандарты POSIX 1003.1, например, управление потоками (threads), расширения реального времени (Realtime Extensions), дополнительные расширения реального времени (Additional Realtime Extensions) и профили прикладных окружений (Application Environment Profiles, AEP).

Зачем я об этом говорю?
Не знаю, но я действительно хочу узнать зачем.
Всего голосов 86: ↑85 и ↓1+84
Комментарии64

Операционная система реального времени QNX: Знакомство

Время на прочтение6 мин
Количество просмотров143K
Так сложилось, что моя деятельность связана с операционной системой реального времени (ОСРВ) QNX. Уже несколько лет занимаюсь разработкой как под эту ОС, так и некоторых частей самой системы. Обратил внимание на то, что поиск на хабре выводит немного результатов по запросу QNX, однако, мне кажется, что эта ОСРВ может быть интересна не только специалистам по встраиваемым и высоконадёжным системам, но и более широкой публике. Не секрет, что планшетный компьютер BlackBerry PlayBook производства компании RIM основан на QNX и имеет популярность и у нас.

Немного о QNX


ОСРВ QNX это не клон или дистрибутив Linux или ответвление какой-то другой UNIX-подобной системы. QNX самостоятельная UNIX-подобная операционная система реального времени, основанная на микроядре и передаче сообщений. Современные версии QNX имеют поддержку стандартов POSIX (и сертифицированны по ним). Первая версия QNX вышла в далёком 1981 году. С тех пор утекло достаточно много времени и поколения QNX сменяли друг друга: QNX2, QNX4 и, наконец, QNX 6 (или QNX Neutrino). Старичок QNX2 и сейчас ещё используется, хотя его расцвет пришёлся на 80-е годы прошлого столетия. Надёжная и более современная ОСРВ QNX4 могла конкурировать на десктопе с Windows в середине 90-х
Да, я хочу узнать больше о QNX.
Всего голосов 123: ↑117 и ↓6+111
Комментарии70

Секреты Meterpreter Payload

Время на прочтение6 мин
Количество просмотров92K
Что такое Meterpreter?

Meterpreter — расширенная многофункциональная начинка (Payload), которая может быть динамически расширена во время выполнения. В нормальных условиях, это означает, что это обеспечивает Вас основной оболочкой и позволяет Вам добавлять новые особенности к ней по мере необходимости.

Первым, наиболее частым действием является внедрение в процесс explorer'a. Эту возможность предоставляет команда migrate:

meterpreter > migrate 1888 #1888 — PID процесса, вывести список процессов - ps
[*] Migrating to 1888...
[*] Migration completed successfully.


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

meterpreter > getsystem
...got system (via technique 1).
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии29

Разбор атак на части: SYN-flood

Время на прочтение6 мин
Количество просмотров55K
Spoofed SYN — атака, при которой заголовки пакетов подделывается таким образом, что место реального отправителя занимает произвольный либо несуществующий IP-адрес.

Так как по сути SYN является частым инструментом "интенсивной конкурентной борьбы" и — в то же время — большинство решений DDoS mitigation показывают впечатляющую эффективность именно на этом виде атак, то и мы начнем c SYN-flood, рассмотрев spoofed-вид атаки, как самый грозный из них.
Читать дальше →
Всего голосов 62: ↑53 и ↓9+44
Комментарии32

Организация памяти

Время на прочтение7 мин
Количество просмотров239K
За последнюю неделю дважды объяснял людям как организована работа с памятью в х86, с целью чтобы не объяснять в третий раз написал эту статью.

И так, чтобы понять организацию памяти от вас потребуется знания некоторых базовых понятий, таких как регистры, стек и тд. Я по ходу попробую объяснить и это на пальцах, но очень кратко потому что это не тема для этой статьи. Итак начнем.
Читать дальше →
Всего голосов 178: ↑145 и ↓33+112
Комментарии141

Скромное руководство по прохождению интервью: часть 1

Время на прочтение5 мин
Количество просмотров30K
Пост подготовлен с целью помочь программистам при подготовке к собеседованиям по программированию. Здесь рассматриваются все основные темы, которые, как минимум, желательно знать перед собеседованием. Использован собственный опыт, опыт и рассказы коллег, специализированная литература.
Некоторые рассмотренные здесь темы могут вообще не пригодиться некоторым программистам, а могут и быть обязательными, решать вам. Мой совет – старайтесь как можно больше изучать темы/разделы/аспекты указанные здесь.
И так, в качестве обязательных знаний:
  • Структуры данных
  • Алгоритмы и «концепции»
  • Язык программирования

Читать дальше →
Всего голосов 124: ↑109 и ↓15+94
Комментарии125

Скромное руководство по прохождению интервью: часть 2

Время на прочтение5 мин
Количество просмотров20K
Во второй части поста будут рассматриваться “Алгоритмы и концепции”, если вы не читали предыдущий пост или хотите “вспомнить” список тем, то загляните сюда.

Алгоритмы и концепции

Сортировка и поиск

Понимание/знание известных алгоритмов сортировки очень важно, поскольку многие решения связанные с сортировкой или поиском, мягко говоря, требуют владения этими алгоритмами. Хороший способ показать свои знания перед интервьюером, когда дана здача на сортировку – это «пробежать» по известным алгоритмам и увидеть/выяснить какой из них лучше всего подходит для решения данной задачи. Вы получите и решение и то, что интервьюер будет довольным вашими «разными» способов решения одной и той же задачи.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Комментарии43

Простой способ обойти ограничения локального прокси

Время на прочтение3 мин
Количество просмотров51K
Начнем с того, что однажды мне понадобилось зайти в вконтакте.
В то время я работал в одной крупной компании. Локальный прокси-сервер блокировал все запросы в содержании, которого присутствовали признаки данного ресурса, и не только его. О существовании анонимайзеров, я, конечно же, знал. Но опробовав быстродействие и возможности подобного сервиса, крайне огорчился.
Кроме того, из нынешнее устройства Сети следует, что любой узел через, который проходит трафик, может его просмотреть, а HTTP-трафик вообще передается в открытом виде.
И за это еще нужно платить деньги, имея в распоряжении внешний IP и собственный веб-сервер.
Так родилась идея создания простого скрипта перенаправления трафика и удаления фильтруемой (прокси) информации.
Читать дальше →
Всего голосов 19: ↑12 и ↓7+5
Комментарии15

Как устроен GIL в Python

Время на прочтение6 мин
Количество просмотров125K
Почему после распараллеливания выполнение вашей программы может замедлиться вдвое?
Почему после создания потока перестает работать Ctrl-C?
Представляю вашему вниманию перевод статьи David Beazley «Inside the Python GIL». В ней рассматриваются некоторые тонкости работы потоков и обработки сигналов в Python.

GIL
Читать дальше →
Всего голосов 67: ↑65 и ↓2+63
Комментарии28

Не совсем обычный XMPP-бот на Python: туннелирование

Время на прочтение5 мин
Количество просмотров7.3K
Не так давно была опубликована статья про ICQ на Python, которая меня подтолкнула развить тему, правда в несколько другом направлении. Несколько лет назад у меня были трудности с домашним интернетом: доступ только в локальную сеть, из связи с внешним миром только ICQ и локальный Jabber сервер; никакой другой возможности попасть наружу не было. В результате чего родилась идея туннелировать HTTP трафик в XMPP.

Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии33

ICQ бот на Python

Время на прочтение5 мин
Количество просмотров13K
Привет %habrauser%! Это мой первый хабротопик. В котором я расскажу как можно сделать ICQ бот на pythone. Бот у нас будет сидеть в сети и отправлять, по запросу пользователя, список последних статей хабра.
Для реализации бота мы будем использовать библиотеку Twisted. Конечно же есть уже специализированные библиотеки для работы с ICQ на python. Такие как py-icq или nanoicq. Но так как с Twisted я был уже знаком, то выбор пал именно на него.
Читать дальше →
Всего голосов 64: ↑56 и ↓8+48
Комментарии21

Профилирование python приложений

Время на прочтение2 мин
Количество просмотров16K
Краткая заметка с линками и примерами о профайлинге:
  1. производительности: hotshot или python profile/cProfile + визуализатор логов kcachegrind (есть порт под windows, аналог WinCacheGrind)
  2. использование памяти: dowser с web-интерфейсом

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

pdb – Интерактивный отладчик

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

pdb – Интерактивный отладчик


Версии Python: 1.4 и выше

pdb является интерактивной средой отладки для программ на Python. Он включает возможности приостановки выполнения программы, просмотра значений переменных, построчного выполнения кода так, что вы можете понять, чем ваша программа на самом деле занимается, и найти логические ошибки.
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии21

Сравнение нагрузки — PyCurl vs HTTPClientFactory+Deferred

Время на прочтение1 мин
Количество просмотров2.1K
В процессе разработки одного проекта на Python+Twisted (распределителя СМС запросов) пришлось переписать вызов URL различных сервисов с разных серверов c блокирующего вызова через PyCurl на неблокирующий (client.HTTPClientFactory + deferred). Чтобы иметь перед глазами реальные данные, решил дать нагрузку и посмотреть на результаты

Читать дальше →
Всего голосов 33: ↑23 и ↓10+13
Комментарии19

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность