Привет, Хабр! Меня зовут Максим Шаланкин, я вместе со своими коллегами — преподавателями в Школе аналитиков данных от МТС — подготовил семь каверзных вопросов, с которыми могут столкнуться начинающие специалисты в области Data Science, ML и Big Data. Ну что, поехали!
СTO Айри.рф. CEdO ITtensive
Введение в парадигму blockDAG
Вопреки мнению, популярному в крипто-сообществе, применение направленного ациклического графа (directed acyclic graph, DAG) как основы для распределенного реестра не влечет ни отказа от майнинга с доказательством работы (proof of work, PoW), ни от блоков, ни от комиссий за транзакции. Использование DAG-а дает лишь возможность применить его структурные свойства для решения проблемы блоков-сирот, неустранимой в блокчейне. Но способность DAG-а справиться с ней и за счет этого улучшить масштабируемость конечного решения зависит еще и от ряда дополнительных правил, обеспечивающих согласованность набора транзакций и влияющих на выбор конструктивных решений, баланс между которыми приходится искать в ходе разработки системы.
Настоящее и будущее облачного стриминга
Стриминг сейчас активно применяется в онлайн-образовании и эвент-индустрии, потоковое видео широко используется для трансляции в интернете спортивных состязаний, концертов и выступлений экспертов. Завоевав первоначальную популярность на игровом рынке, стриминг постепенно превратился из развлечения и хобби для геймеров в серьезный бизнес, приносящий неплохой доход. До недавнего времени организация онлайн-видеотрансляций требовала внушительных затрат на оборудование, программное обеспечение и быстрый канал подключения к интернету. Появление облачных сервисов свело эти затраты к минимуму, благодаря чему запустить стрим теперь может каждый желающий. Сегодня мы поговорим об используемых в стриминге облачных технологиях и обсудим, как этот бизнес будет развиваться в ближайшем будущем — в общих чертах, без конкретных примеров кода и подробного описания реализации.
DDoS атака в обход Qrator. Как защититься?
Как реализовать конвертацию из растра в черно-белый вектор на сайте
Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек
Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.
Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.
Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.
Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.
Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
LIVR — «независимые от языка правила валидации» или валидация данных без «проблем»
Основные проблемы, которые встречаются в библиотеках валидации данных
Проблема №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 не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте.
Как определить дубликаты картинок с помощью PHP
Потому рано или поздно встает вопрос автоматизации процесса поиска повторов, и тут мы рассмотрим основные, а также попробуем в деле.
Бильярдный бот: история создания
Как мы открывали магазин в ТЦ МЕГА: история ошибок
Мы решились открыть наш магазин в большом торговом центре, и теперь готовы рассказать вам о проблемах, косяках, процессах, решениях и выводах. Заходите, под катом интересно.
Поиск решения для смс-уведомлений e-mail to sms в Windows или Linux
Поиск решения для смс-уведомлений e-mail to sms в Windows или Linux.
идеальная схема для меня схема: е-мейл на смc (e-mail to sms), Используемое оборудование: Huawei E169G, Huawei E630 (PCMCIA) + PC (Windows \ Unix)
Оператор: МТС
Зарядка для глаз
Не будешь делать зарядку — потеряешь зрение через несколько лет!
Ниже написано то, что надо делать. Зарядка отнимает 5-7 минут ежедневной жизни, но зато существенно понижает вероятность нужды в очках.
11 порталов для выбора Иконок
В этой коллекции я уверен что вы найдете что вам нужно ;)
Ну интересное так точно!!!
1. http://www.iconspedia.com
Генератор названий, имен
Gobby — сделаем вместе
Что такое Gobby?
Gobby — свободный совместный (коллаборативный) редактор, поддерживающий множество открытых документов для одной сессии и многопользовательский чат.
Он может работать в Windows, Mac OSX, Linux. Редактор позволяет нескольким пользователям одновременно редактировать один и тот же документ.
С помощью Gobby можно быстро обсудить или вместе отредактировать какой-либо текстовый материал (например, как это делаем мы ;) ).
Определение наличия Acrobat-плагина в броузере
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');
// ну или что-то другое
}
Альтернативные потоки данных в NTFS или как спрятать блокнот
Введение
Поддержка альтернативных потоков данных (AltDS) была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Использование AltDS скрыто от пользователя и не доступно обычными средствами. Проводник и другие приложения работают со стандартным потоком и не могут читать данные из альтернативных. С помощью AltDS можно легко скрывать данные, которые не могут быть обнаружены стандартными проверками системы. Эта статья даст основную информацию о работе и определении AltDS.
Продолжаем твикать Висту
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. Пора заводить отдельный блог для хабратвиков :)
Оптимизируем Vista
Предисловие
Сколько сотен раз слышал, как Windows Vista ругают за ее медлительность, «глючность», несовместимость, неудобство и прочее. Признаться честно, я и сам до недавнего времени был, мягко говоря, не в восторге от Vista, пытался ее использовать но потом от нее отказался.Но два месяца назад по работе пришлось вплотную столкнуться с Vista, и я заинтересовался » а как можно заставить ее работать хорошо? И вот, по прошествии двух месяцев, хочу поделится с вами своим опытом и надеюсь получить и от вас полезные советы. Если вы
Уверен, многие из вас уже столкнулись или еще столкнутся с необходимостью использовать Vista, поэтому данная статья будет интересна и тем, кто эту ОС не используют. Кстати, далее будет совет, как использовать Windows Vista легально в течении 120 дней!
Надеюсь, вы оцените мою статью — я потратил на ее написание почти половину своего выходного :) Понятно, что для кого-то ниже написанное покажется «детским лепетом», кто-то всё это уже знает, но почему-то не делает. А кто-то почерпнет полезную для себя информацию.
Сразу отмечу, что не хочу никого убедить использовать Vista или вызвать холивар — если кому-то данная тема не интересна, просто пройдите мимо, пожалуйста. Спасибо.
UPD спустя час: удивительно, как любят ставить минусы топикам про Vista, где ее не «опускают»! А то что это полезная многим статья про все более широко распространяющуюся ОС — видно некоторым начхать :(
UPD спустя четыре часа: спасибо за позитивную оценку статьи, жду большего количество полезных дополнений к ней :)
UPD спустя почти неделю :) ускоряем копирование в Висте! Наконец-то однокилобайтный ярлык не удаляется по 30 секунд :) Пуск->Панель управления (не классическая)->Программы->Включение или отключение компонентов Windows. Снимаем галку «Удаленное разностное сжатие». Ура.
Думаю над продолжением статьи, уже есть наработки :)
ООО и ведение валютных операций
Моей компании уже три года и в этом году мы попали в план проверок валютного контроля РосФинНадзора по ведению валютных операций.
Проверка продолжается, но уже сейчас хотелось бы рассказать о некоторых тонкостях ведения расчетов в валюте, о которых мы, к сожалению, узнали только в процессе проведения проверки и, которые по чистой случайности мы не нарушили (очень на это надеюсь, результаты проверки будут позже).
Эта информация будет полезна как тем кто кто уже ведет свою деятельность, так и тем, кто только собирается открывать валютный счет или вообще регистрировать ООО. Не знаю, насколько это относится к ИП, но в любом случае, будьте осторожны.
Information
- Rating
- 2,460-th
- Location
- Калининградская обл., Россия
- Date of birth
- Registered
- Activity