Pull to refresh
32
0
Send message

select / poll / epoll: практическая разница

Reading time 10 min
Views 69K
При проектировании высокопроизводительных сетевых приложения с неблокирующими сокетами важно решить, какой именно метод мониторинга сетевых событий мы будем использовать. Их есть несколько и каждый хорош и плох по-своему. Выбор правильного метода может быть критически важной вещью для архитектуры вашего приложения.

В этой статье мы рассмотрим:

  • select()
  • poll()
  • epoll()
  • libevent
Читать дальше →
Total votes 60: ↑55 and ↓5 +50
Comments 66

История одного маленького реверс-инжиниринга или как мы BREED для Beeline Smartbox FLASH/GIGA расковыряли

Reading time 11 min
Views 14K

Благодарности


Коллективными усилиями участников тематического tg чата особенно UnameOne, M, Karim, Nicky F. с форума 4pda, удалось разобраться в запутанных хитросплетениях исходного кода прошивок, архитектуре смартбоксов, чипа MT7621, технологиях пайки микросхем. Все эти модные софт скилы "командная работа", "межличностное взаимодействие", "креативность", "проактивность", "самостоятельность", "дисциплина" все еще слабоваты, но что-то точно улучшилось. Сотни часов с дымящимся паяльником и перед монитором, но я не бросил. Спасибо за это товарищам!

Читать дальше →
Total votes 30: ↑28 and ↓2 +26
Comments 16

На-click-ать известность, или как взбудоражить робота и … остальных

Reading time 22 min
Views 6.3K


Давным-давно, у фасада далекого-далекого магазина состоялся подслушанный разговор:
NB: - А как привести много посетителей на свой новый сайт?

GURU: - Ну можно ссылок «раскидать» на разных форумах и в соц. сетях. Поисковая оптимизация поможет и контент. Можно тизерные сети привлечь, а можно много раз посетить сайт через разные прокси ...

NB: - И чем же помогут такие посещения, ведь это иллюзия живых людей?

GURU: - Счетчик статистики от google или от yandex объяснит поисковикам, что сайт становится популярным. Да еще и реферер можно связать с посещаемыми сайтами по запросам. Подрастет позиция в поисковиках, а значит и подрастет поисковый трафик.

NB: - А где же взять такое количество прокси?

GURU: - Где?… Ну в интернете поищи...
NB перестал спрашивать, видимо, опасаясь раздражать явно более опытного собеседника.
GURU закатил глаза, как бы подчеркивая исчерпанность темы про прокси и замолчал…
Читать дальше →
Total votes 28: ↑20 and ↓8 +12
Comments 41

Как сделать расширение на PHP7 сложнее, чем «hello, world», и не стать красноглазиком. Часть 2

Reading time 8 min
Views 5K

Краткое содержание первой части


В первой части я сделал болванку расширения, заставил ее правильно работать в IDE Clion, написал функцию-аналог my_array_fill() и проверил ее работоспособность в php.

Что теперь?


Теперь я запилю код библиотеки libtrie в наше расширение.

Немного расскажу как можно заставить работать старые php5 расширения в php7.
Дальше я сделаю несколько основных функций из этой библиотеки в php и проверю, что получилось.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 8

Как сделать расширение на PHP7 сложнее, чем «hello, world», и не стать красноглазиком. Часть 1

Reading time 9 min
Views 12K

Зачем?


Я пишу эту статью для того, чтобы путь, который у меня занял в общей сложности не меньше года, читатель смог пройти за пару часов. Как показал мой личный опыт, просто программировать на Си несколько легче, чем заставить работать серьезное расширение для PHP. Здесь я максимально подробно расскажу вам о том, как сделать расширение на примере библиотеки libtrie, реализующей префиксное дерево, более известное как trie. Я буду писать и параллельно выполнять описываемые действия на свежеустановленной системе Lubuntu 18.04.

Начнем.
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 11

Загрузка ядра Linux. Часть 1

Reading time 12 min
Views 61K
От загрузчика к ядру

Если вы читали предыдущие статьи, то знаете о моём новом увлечении низкоуровневым программированием. Я написал несколько статей о программировании на ассемблере для x86_64 Linux и в то же время начал погружаться в исходный код ядра Linux.

Мне очень интересно разобраться, как работают низкоуровневые штуки: как программы запускаются на моём компьютере, как они расположены в памяти, как ядро управляет процессами и памятью, как работает сетевой стек на низком уровне и многое другое. Итак, я решил написать еще одну серию статей о ядре Linux для архитектуры x86_64.

Обратите внимание, что я не профессиональный разработчик ядра и не пишу код ядра на работе. Это всего лишь хобби. Мне просто нравятся низкоуровневые вещи и интересно в них копаться. Поэтому если заметите какую-то путаницу или появилятся вопросы/замечания, свяжитесь со мной в твиттере, по почте или просто создайте тикет. Буду благодарен.
Читать дальше →
Total votes 69: ↑67 and ↓2 +65
Comments 40

Хитрое префиксное дерево Си реализация

Reading time 5 min
Views 8.9K
image

Введение


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

Многие тогда мне говорили: «Не изобретай велосипед, который уже изобрели! Используй готовое решение». Сложность в том, что мне не удавалось использовать что-то, что я не понимаю хотя бы в общих очертаниях.

Префиксное дерево я кажется понял, и вот чего удалось добиться.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Comments 16

Курс MIT «Безопасность компьютерных систем». Лекция 14: «SSL и HTTPS», часть 2

Reading time 16 min
Views 5.5K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Total votes 20: ↑18 and ↓2 +16
Comments 0

Низкоуровневая реализация префиксного дерева trie на PHP

Reading time 4 min
Views 5.8K

Предисловие


Описанная здесь реализация trie на PHP делает пока слишком жирный словарь, который соответственно довольно долго загружается в память, что нивелирует довольно неплохую скорость её работы. Скорость поиска составляет ~80 тыс. слов в секунду. Словарь сделан из списка лемм словаря opencorpora.org и включает в себя 389844 слова. В несжатом виде словарь весит ~150мб, а сжатый gzip ~6мб. Однако довольно неплохие результаты быстродействия доказывают, что на чистом PHP можно сделать вполне работоспособное префиксное дерево trie.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 26

Information

Rating
Does not participate
Registered
Activity