Как стать автором
Обновить
324
0
Николай Мациевский @sunnybear

СTO Айри.рф. CEdO ITtensive

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

Введение в парадигму blockDAG

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

Вопреки мнению, популярному в крипто-сообществе, применение направленного ациклического графа (directed acyclic graph, DAG) как основы для распределенного реестра не влечет ни отказа от майнинга с доказательством работы (proof of work, PoW), ни от блоков, ни от комиссий за транзакции. Использование DAG-а дает лишь возможность применить его структурные свойства для решения проблемы блоков-сирот, неустранимой в блокчейне. Но способность DAG-а справиться с ней и за счет этого улучшить масштабируемость конечного решения зависит еще и от ряда дополнительных правил, обеспечивающих согласованность набора транзакций и влияющих на выбор конструктивных решений, баланс между которыми приходится искать в ходе разработки системы.

Что за проблема блоков-сирот?
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Настоящее и будущее облачного стриминга

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

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

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 0

DDoS атака в обход Qrator. Как защититься?

Время на прочтение 4 мин
Количество просмотров 26K
Есть сервисы, защищающие нас от DDoS атак. Они работают по принципу прокси: в DNS прописывается их IP, они фильтруют трафик и проксируют на ваш сервер. Все они настоятельно рекомендуют прятать свой IP и в публичном доступе давать только IP прокси-защитника. Вполне здравый подход, достаточный для успешной защиты. А я расскажу на чем можно проколоться и как от этого защитится.
Читать дальше →
Всего голосов 43: ↑38 и ↓5 +33
Комментарии 10

Как реализовать конвертацию из растра в черно-белый вектор на сайте

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

image
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 5

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Время на прочтение 8 мин
Количество просмотров 85K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →
Всего голосов 113: ↑112 и ↓1 +111
Комментарии 77

LIVR — «независимые от языка правила валидации» или валидация данных без «проблем»

Время на прочтение 12 мин
Количество просмотров 22K
Каждый программист неоднократно сталкивался с необходимостью проверки пользовательского ввода. Занимаясь веб-разработкой уже более 10 лет, я перепробовал массу библиотек, но так и не нашел той единственной, которая решала бы поставленные мною задачи.

Основные проблемы, которые встречаются в библиотеках валидации данных

Проблема №1. Многие валидаторы проверяют только те данные, для которых описаны правила проверки. Для меня важно, чтобы любой пользовательский ввод, который явно не разрешен, был проигнорирован. То есть, валидатор должен вырезать все данные для которых не описаны правила валидации. Это просто фундаментально требование.

Проблема №2. Процедурное описание правил валидации. Я не хочу каждый раз думать про алгоритм валидации, я просто хочу описать декларативно, как должны выглядеть правильные данные. По сути, я хочу задать схему данных (почему не «JSON Schema» — в конце поста).

Проблема №3. Описание правил валидации в виде кода. Казалось бы, это не так страшно, но это сразу сводит на нет все попытки сериализации правил валидации и использования одних и тех же правил валидации на бекенде и фронтенде.

Проблема №4. Валидация останавливается на первом же поле с ошибкой. Такой подход не дает возможности подсветить сразу все ошибочные/обязательные поля в форме.

Проблема №5. Нестандартизированные сообщения об ошибках. Например, «Field name is required». Такую ошибку я не могу показать пользователю по ряду причин:
  • поле в интерфейсе может называться совсем по другому
  • интерфейс может быть не на английском
  • нужно различать тип ошибки. Например, ошибки на пустое значение показывать специальным образом

То есть, нужно возвращать не сообщение об ошибках, а стандартизированные коды ошибок.

Проблема №6. Числовые коды ошибок. Это просто неудобно в использовании. Я хочу, чтобы коды ошибок были интуитивно понятны. Согласитесь, что код ошибки «REQUIRED» понятней, чем код «27». Логика аналогична работе с классами исключений.

Проблема №7. Нет возможности проверять иерархические структуры данных. Сегодня, во времена разных JSON API, без этого просто не обойтись. Кроме самой валидации иерархических данных, нужно предусмотреть и возврат кодов ошибок для каждого поля.

Проблема №8. Ограниченный набор правил. Стандартных правил всегда не хватает. Валидатор должен быть расширяемый и позволять добавлять в него правила любой сложности.

Проблема №9. Слишком широкая сфера ответственности. Валидатор не должен генерировать формы, не должен генерировать код, не должен делать ничего, кроме валидации.

Проблема №10. Невозможность провести дополнительную обработку данных. Практически всегда, где есть валидация, есть необходимость в какой-то дополнительной (часто предварительной) обработке данных: вырезать запрещенные символы, привести в нижний регистр, удалить лишние пробелы. Особенно актуально — это удаление пробелов в начале и в конце строки. В 99% случаев они там не нужны. Я знаю, что я до этого говорил, что валидатор не должен делать ничего кроме валидации.

3 года назад, было решено написать валидатор, который не будет иметь всех вышеописанных проблем. Так появился LIVR (Language Independent Validation Rules). Есть реализации на Perl, PHP, JavaScript, Python (мы на python не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте.
Читать дальше →
Всего голосов 32: ↑30 и ↓2 +28
Комментарии 71

Как определить дубликаты картинок с помощью PHP

Время на прочтение 4 мин
Количество просмотров 45K
В любом проекте человеческий фактор никто не отменял, и если пользователи самостоятельно грузят картинки на сайт – появления дубликатов не избежать. Когда доходит до тысяч файлов, глазами всего не пересмотреть, а повторяющиеся картинки мало того, что никому не нужны, так еще и занимают место, тратят ресурс и в конце концов тормозят работу.



Потому рано или поздно встает вопрос автоматизации процесса поиска повторов, и тут мы рассмотрим основные, а также попробуем в деле.
Читать дальше →
Всего голосов 45: ↑37 и ↓8 +29
Комментарии 24

Бильярдный бот: история создания

Время на прочтение 21 мин
Количество просмотров 26K
Привет, хабрахабр! Эта статья посвящена подробному описанию процесса создания бильярдного бота, который без участия человека играет в игру pool billiard и принимает решения, зарабатывая очки. Статья будет полезна и интересна людям, увлекающимся созданием ботов и программированием.


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

Как мы открывали магазин в ТЦ МЕГА: история ошибок

Время на прочтение 17 мин
Количество просмотров 370K
Интерес к рознице был заметен изначально — с самых первых статей на хабре и на других сайтах мы начали получать запросы на франшизу. Запросы шли со всей страны — Питер, Новосибирск, Краснодар, Ростов-на-Дону, Пермь, Хабаровск, Сочи и так далее. Даже страной дело не ограничилось — люди из Украины, Беларуси и Казахстана тоже хотели открыть у себя магазин Madrobots. Но франшиза — это в первую очередь отлаженные процессы. Как мы могли объяснять, как открыть магазины в других городах, если сами этого толком не умели?

Мы решились открыть наш магазин в большом торговом центре, и теперь готовы рассказать вам о проблемах, косяках, процессах, решениях и выводах. Заходите, под катом интересно.
Читать дальше →
Всего голосов 175: ↑166 и ↓9 +157
Комментарии 81

Поиск решения для смс-уведомлений e-mail to sms в Windows или Linux

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

Поиск решения для смс-уведомлений e-mail to sms в Windows или Linux.

идеальная схема для меня схема: е-мейл на смc (e-mail to sms),
Используемое оборудование: Huawei E169G, Huawei E630 (PCMCIA) + PC (Windows \ Unix)
Оператор: МТС

image

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

Зарядка для глаз

Время на прочтение 1 мин
Количество просмотров 23K
Хотел я написать взывающий к разуму ИТ-шника пост о вреде долгосидения перед компьютером и важности зарядки для глаз, но не буду. Просто вот так:

Не будешь делать зарядку — потеряешь зрение через несколько лет!


Ниже написано то, что надо делать. Зарядка отнимает 5-7 минут ежедневной жизни, но зато существенно понижает вероятность нужды в очках.
Читать дальше →
Всего голосов 91: ↑80 и ↓11 +69
Комментарии 120

11 порталов для выбора Иконок

Время на прочтение 1 мин
Количество просмотров 5.4K
Коллекция ссылок больших порталов и поисковиков, для выбора всевозможных Иконок(Icons) разного типа. Практически на всех есть широкий выбор размеров.

В этой коллекции я уверен что вы найдете что вам нужно ;)

Ну интересное так точно!!!

1. http://www.iconspedia.com
Читать дальше →
Всего голосов 100: ↑99 и ↓1 +98
Комментарии 32

Генератор названий, имен

Время на прочтение 1 мин
Количество просмотров 7.5K
Вашему вниманию предлагаю мой маленький проект — Генератор названий, имен. Это не стартап, а скорее проект для стартапов, который сделал и решил довести до ума когда думал над именем.
Читать дальше →
Всего голосов 19: ↑12 и ↓7 +5
Комментарии 40

Gobby — сделаем вместе

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

Что такое Gobby?


Gobby — свободный совместный (коллаборативный) редактор, поддерживающий множество открытых документов для одной сессии и многопользовательский чат.
Он может работать в Windows, Mac OSX, Linux. Редактор позволяет нескольким пользователям одновременно редактировать один и тот же документ.
С помощью Gobby можно быстро обсудить или вместе отредактировать какой-либо текстовый материал (например, как это делаем мы ;) ).

Made in Gobby
Всего голосов 44: ↑42 и ↓2 +40
Комментарии 53

Определение наличия Acrobat-плагина в броузере

Время на прочтение 1 мин
Количество просмотров 463
Столкнулся с проблемой определения наличия плагина. Гуглёж дал результаты не сразу. Основная проблема была в пятой строке.
var isPDFInstalled = false;
if (window.ActiveXObject) {
    var control;
    try {
        control = new ActiveXObject('AcroPDF.PDF');
    } catch (e) { }
    if (!control) {
        try {
            control = new ActiveXObject('PDF.PdfCtrl');
        } catch (e) { }
    }
    if (control) {
        isPDFInstalled = true;
    }
} else {
    isPDFInstalled = navigator.mimeTypes && navigator.mimeTypes["application/pdf"];
}

if (isPDFInstalled) {
    document.write('okay');
    // ну или что-то другое
} else {
    document.write('shit');
    // ну или что-то другое
}
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 4

Альтернативные потоки данных в NTFS или как спрятать блокнот

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

Введение


Поддержка альтернативных потоков данных (AltDS) была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Использование AltDS скрыто от пользователя и не доступно обычными средствами. Проводник и другие приложения работают со стандартным потоком и не могут читать данные из альтернативных. С помощью AltDS можно легко скрывать данные, которые не могут быть обнаружены стандартными проверками системы. Эта статья даст основную информацию о работе и определении AltDS.
продолжение
Всего голосов 97: ↑93 и ↓4 +89
Комментарии 53

Продолжаем твикать Висту

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

1. Отключение System Restore (восстановление системы). Вещь конечно хорошая, но как и в случае с файрволом, лучше пользоваться сторонними программами, а встроенную отключить — она ест очень много ресурсов.
Правый клик по ярлыку «Компьютер» → Свойства → Дополнительные параметры системы → закладка «Защита системы» → убираем все галки.

2. Отключение мониторинга производительности. В Висте (равно как и в предыдущих 2000/ХР) есть встроенный механизм журналирования всевозможных параметров системы, который тратит ресурсы, а используется очень маленьким процентом пользователей. К сожалению, стандартными средствами его не отключить, но у MS есть специальная утилитка для этого. Результат после отключения заметен невооруженным взглядом.
Качаем утилиту, устанавливаем, запускаем. Выбираем поочередно каждый счетчик в списке «Extensible Performance Counters» и убираем галку «Performance Counters Enabled». Перезагружаемся.

3. Повышение приоритета активных процессов над фоновыми. В реестре есть важный ключ, который определяет насколько активным приложениям выделяется процессорного времени больше, чем фоновым. По умолчанию он равен 2, я бы советовал поставить 6, хотя можно и поиграться. Результат существенен.
regedit → HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl → увеличиваем значение ключа Win32PrioritySeparation.

Да, и кстати, UAC отключается намного проще и без мсконфига: Панель управления → Учетные записи → Отключить контроль учетных записей

P.S. Пора заводить отдельный блог для хабратвиков :)
Всего голосов 36: ↑29 и ↓7 +22
Комментарии 84

Оптимизируем Vista

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

Предисловие

Сколько сотен раз слышал, как Windows Vista ругают за ее медлительность, «глючность», несовместимость, неудобство и прочее. Признаться честно, я и сам до недавнего времени был, мягко говоря, не в восторге от Vista, пытался ее использовать но потом от нее отказался.



Но два месяца назад по работе пришлось вплотную столкнуться с Vista, и я заинтересовался » а как можно заставить ее работать хорошо? И вот, по прошествии двух месяцев, хочу поделится с вами своим опытом и надеюсь получить и от вас полезные советы. Если вы

Уверен, многие из вас уже столкнулись или еще столкнутся с необходимостью использовать Vista, поэтому данная статья будет интересна и тем, кто эту ОС не используют. Кстати, далее будет совет, как использовать Windows Vista легально в течении 120 дней!

Надеюсь, вы оцените мою статью — я потратил на ее написание почти половину своего выходного :) Понятно, что для кого-то ниже написанное покажется «детским лепетом», кто-то всё это уже знает, но почему-то не делает. А кто-то почерпнет полезную для себя информацию.

Сразу отмечу, что не хочу никого убедить использовать Vista или вызвать холивар — если кому-то данная тема не интересна, просто пройдите мимо, пожалуйста. Спасибо.

UPD спустя час: удивительно, как любят ставить минусы топикам про Vista, где ее не «опускают»! А то что это полезная многим статья про все более широко распространяющуюся ОС — видно некоторым начхать :(
UPD спустя четыре часа: спасибо за позитивную оценку статьи, жду большего количество полезных дополнений к ней :)
UPD спустя почти неделю :) ускоряем копирование в Висте! Наконец-то однокилобайтный ярлык не удаляется по 30 секунд :) Пуск->Панель управления (не классическая)->Программы->Включение или отключение компонентов Windows. Снимаем галку «Удаленное разностное сжатие». Ура.

Думаю над продолжением статьи, уже есть наработки :)
Читать дальше →
Всего голосов 179: ↑154 и ↓25 +129
Комментарии 235

ООО и ведение валютных операций

Время на прочтение 8 мин
Количество просмотров 25K
Всем привет!

Моей компании уже три года и в этом году мы попали в план проверок валютного контроля РосФинНадзора по ведению валютных операций.

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

Эта информация будет полезна как тем кто кто уже ведет свою деятельность, так и тем, кто только собирается открывать валютный счет или вообще регистрировать ООО. Не знаю, насколько это относится к ИП, но в любом случае, будьте осторожны.
Читать дальше →
Всего голосов 118: ↑115 и ↓3 +112
Комментарии 70

Обходим запрет Yota раздавать интернет с телефона

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

Вместо введения.


Я пользуюсь Samsung Note 3 LTE (N9005). Оператор, с недавних времен, Yota. LTE на этом аппарате пока не поддерживается официально, по этому я решил сегодня сделать root на телефоне и вручную включить LTE.
Хочу интернет!
Всего голосов 201: ↑196 и ↓5 +191
Комментарии 135

Информация

В рейтинге
3 519-й
Откуда
Калининградская обл., Россия
Дата рождения
Зарегистрирован
Активность