Pull to refresh
323
0.1
Николай Мациевский @sunnybear

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

Send message

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

Reading time7 min
Views3K

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

Что за проблема блоков-сирот?
Total votes 9: ↑9 and ↓0+9
Comments0

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

Reading time8 min
Views3.1K

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

Читать далее
Total votes 10: ↑8 and ↓2+7
Comments0

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

Reading time4 min
Views26K
Есть сервисы, защищающие нас от DDoS атак. Они работают по принципу прокси: в DNS прописывается их IP, они фильтруют трафик и проксируют на ваш сервер. Все они настоятельно рекомендуют прятать свой IP и в публичном доступе давать только IP прокси-защитника. Вполне здравый подход, достаточный для успешной защиты. А я расскажу на чем можно проколоться и как от этого защитится.
Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments10

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

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

image
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments5

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

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



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

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

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

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

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

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

Reading time12 min
Views22K
Каждый программист неоднократно сталкивался с необходимостью проверки пользовательского ввода. Занимаясь веб-разработкой уже более 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 не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments71

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

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



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

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

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


Читать дальше →
Total votes 67: ↑65 and ↓2+63
Comments43

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

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

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

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

Reading time5 min
Views6.5K

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

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

image

Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments17

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

Reading time1 min
Views23K
Хотел я написать взывающий к разуму ИТ-шника пост о вреде долгосидения перед компьютером и важности зарядки для глаз, но не буду. Просто вот так:

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


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

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

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

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

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

1. http://www.iconspedia.com
Читать дальше →
Total votes 100: ↑99 and ↓1+98
Comments32

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

Reading time1 min
Views7.6K
Вашему вниманию предлагаю мой маленький проект — Генератор названий, имен. Это не стартап, а скорее проект для стартапов, который сделал и решил довести до ума когда думал над именем.
Читать дальше →
Total votes 19: ↑12 and ↓7+5
Comments40

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

Reading time3 min
Views3.3K

Что такое Gobby?


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

Made in Gobby
Total votes 44: ↑42 and ↓2+40
Comments53

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

Reading time1 min
Views478
Столкнулся с проблемой определения наличия плагина. Гуглёж дал результаты не сразу. Основная проблема была в пятой строке.
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');
    // ну или что-то другое
}
Total votes 8: ↑8 and ↓0+8
Comments4

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

Reading time2 min
Views56K

Введение


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

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

Reading time1 min
Views1.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. Пора заводить отдельный блог для хабратвиков :)
Total votes 36: ↑29 and ↓7+22
Comments84

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

Reading time6 min
Views12K

Предисловие

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



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

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

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

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

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

Думаю над продолжением статьи, уже есть наработки :)
Читать дальше →
Total votes 179: ↑154 and ↓25+129
Comments235

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

Reading time8 min
Views26K
Всем привет!

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

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

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

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

Reading time2 min
Views373K

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


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

Information

Rating
2,642-nd
Location
Калининградская обл., Россия
Date of birth
Registered
Activity