Как стать автором
Обновить
46
0
Владислав Раструсный @FractalizeR

CTO

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

Простыми словами о фильтре частиц

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


В этой статье я расскажу вам об одном из методов оптимальной фильтрации — Фильтре частиц — и покажу, что применить такой фильтр намного проще чем вы думаете.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии4

Symfony2 перехватчик исключений с помощью сервисов или как избежать использования Event Listener

Время на прочтение2 мин
Количество просмотров8K
Сегодня я хочу поделиться своим скромным опытом и показать, как можно сделать перехватчик исключений, не используя Event Listener. Но сначала пару слов о том, зачем это нужно.

Я считаю, что использование Event Listener'ов в обычном приложении делает код запутанным, к тому же многие неопытные разработчики злоупотребляют данным подходом (сам так делал). А вот использование сервисов делает код понятным, так как они вызываются в том месте, в котором объявлены. И как вы уже поняли, далее речь пойдет именно о сервисах.

Итак, начнем.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии20

Опасное видео: как я нашёл уязвимость в видеохостингах и не умер через 7 дней

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


Всем привет! Я Максим Андреев, программист бэкенда Облака Mail.Ru. В свободное время я люблю искать баги. В сегодняшнем посте я хочу рассказать об одной довольно интересной уязвимости, которую я нашёл и зарепортил в bug bounty нескольких крупных компаний, за что получил солидное вознаграждение. Уязвимость заключается в следующем: если сформировать специальный видеофайл и загрузить его на сервер, то:

  • можно получить на нём SSRF;
  • можно получить local file read;
  • если пользователь скачает этот файл, то автоматически будет подвержен уязвимостям, даже если его не откроет: можно будет получить доступ к данным на компьютере пользователя и узнать его имя.

Читать дальше →
Всего голосов 255: ↑250 и ↓5+245
Комментарии66

Что такое RESTful на самом деле

Время на прочтение8 мин
Количество просмотров223K
А ваше приложение — RESTful? Чтобы ответить на этот вопрос нужно сначала разобраться что такое RESTful. Бытует мнение, что отдавать правильные коды ответов в HTTP — это уже RESTful. Или делать правильные идемпотентные HTTP-запросы — это вообще очень RESTful. Мы в Хекслете сделали практический курс по протоколу HTTP (отличия версий, отправка форм, аутентификация, куки и пр.), и в нем мы стараемся рассказать о правильном использовании запросов, но нужно понимать, что RESTful это не про HTTP, это вообще не про протоколы интернета. Современный веб и взаимодействие между браузером и сервером с помощью HTTP и URI могут удовлетворять принципам RESTful, а могут и не удовлетворять.

В сегодняшнем переводе — простое и понятное описание RESTful, и какой должна быть система, чтобы ее можно было так называть.

Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии103

Развенчивание мифов про безопасные пароли

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


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

По счастливой случайности, оказалось, что почти каждый из нас склонен ставить заглавные буквы в начале пароля, а цифры – в конце. Такая закономерность была установлена группой экспертов по безопасности, которые работают во французском исследовательском институте Eurecom.

Результаты их исследования, представленные на последней конференции ACM по безопасности компьютеров и коммуникаций в Денвере, показали
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии39

Распарсить HTML в .NET и выжить: анализ и сравнение библиотек

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

В ходе работы над одним домашним проектом, столкнулся с необходимостью парсинга HTML. Поиск по гуглу выдал комментарий Athari и его микро-обзор актуальных парсеров HTML в .NET за что ему огромное спасибо.

К сожалению, никаких цифр и/или аргументов в пользу того или иного парсера найдено не было, что послужило поводом к написанию данной статьи.

Сегодня я протестирую популярные, на данный момент, библиотеки для работы с HTML, а именно: AngleSharp, CsQuery, Fizzler, HtmlAgilityPack и, конечно же, Regex-way. Сравню их по скорости работы и удобству использования.


TL;DR: Код всех бенчмарков можно найти на github. Там же лежат результаты тестирования. Самым актуальным парсером на данный момент является AngleSharp — удобный, быстрый, молодежный парсер с удобным API.

Тем, кому интересен подробный обзор — добро пожаловать под кат.
Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии36

Умножение по методу русских крестьян

Время на прочтение3 мин
Количество просмотров55K
Иногда этот метод называют «крестьянское умножение», иногда «древнеегипетское», иногда «эфиопское», иногда «умножение через удвоение и деление пополам». Некоторым он хорошо известен, некоторым – непонятен, но при этом он достаточно полезен и может использоваться не только для умножения, но и для возведения в степень и расчётов матриц.

Алгоритм


  13  x  19 ->     0
   6     38       19
   3     76 ->
   1    152 ->    95
   0    304      247
                 ^^^

Запишем два перемножаемых числа рядом – они станут заголовками двух столбцов. Третий столбец будет содержать нарастающую сумму.

Если число в левом столбце нечётное, мы добавляем число из правого столбца в нарастающую сумму. Изначально она будет равна нулю.

Затем в левом столбце ниже мы записываем число из заголовка, делённое пополам (с отбрасыванием остатка). 13 / 2 = 6. А во втором столбце мы пишем число, равное удвоению заголовка столбца, 19*2 = 38.

Поскольку число в левом столбце чётное, мы не увеличиваем нарастающую сумму.
Читать дальше →
Всего голосов 37: ↑31 и ↓6+25
Комментарии24

Применение машинного обучения для увеличения производительности PostgreSQL

Время на прочтение10 мин
Количество просмотров22K
image

Машинное обучение занимается поиском скрытых закономерностей в данных. Растущий рост интереса к этой теме в ИТ-сообществе связан с исключительными результатами, получаемыми благодаря ему. Распознавание речи и отсканированных документов, поисковые машины — всё это создано с использованием машинного обучения. В этой статье я расскажу о текущем проекте нашей компании: как применить методы машинного обучения для увеличения производительности СУБД.
В первой части этой статьи разбирается существующий механизм планировщика PostgreSQL, во второй части рассказывается о возможностях его улучшения с применением машинного обучения.

Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии6

Lean UX — мелочи для успешных проектов

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


Автор: Анастасия Режепп, глава дизайн-студии DataArt.

В этой статье я немного расскажу о методологии Lean UX-дизайна и дам несколько техник и упражнений, показывающих, как ее применять.

Часто у нас возникает следующая проблема: к нам приходит клиент со стартапом: у него есть некая общая идея, а конкретного он ничего сказать не может, т. к. не знает точно, какие функции хотел бы добавить в продукт, а какие убрать. Наша цель — помочь ему в этом разобраться. И в этом нам может помочь метод Lean UX-дизайна.

Что значит “lean”

Слово “lean” переводится на русский как «тощий», «худой», «постный». Если переводить этот термин более специальным образом, то — «бережливый», «экономный», «минималистический». Например, уже есть термин «бережливое производство» — перевод английского “lean production”. Бережливое производство подразумевает постоянное устранение всех видов потерь — это достигается, в том числе, максимальной ориентацией на потребителя. То же самое верно и для подхода бережливого (тощего) UX-дизайна.

Принципы бережливого UX-дизайна

Когда мы следуем методу тощего UX-дизайна, есть несколько моментов, на которые стоит обратить внимание:
  • Мы понимаем целевую аудиторию и ее проблемы.
  • Мы создаем MVP (Minimum Viable Product — минимально жизнеспособный продукт).
  • Мы работаем короткими итерациями.
  • Мы постоянно тестируем нововведения на пользователях и, если что-то не так, быстро откатываемся.
  • Мы работаем командой: UX-проектировщики, дизайнеры, разработчики и тестировщики работают вместе и постоянно обмениваются мнениями и задачами.

Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии1

Как мы внедряли GLPI

Время на прочтение11 мин
Количество просмотров47K
Действие происходит в одной из стран Центральной Азии, называть страну, компанию и область ее деятельности я не буду. Надеюсь, заинтриговал. Хотя, на самом деле это несущественно. Мне хотелось бы рассказать как мы начали с пустого места и выстроили достаточно адекватную и управляемую структуру, в которой все разложено по полочкам. Так что это рассказ не столько о возможностях платформы, сколько об опыте ее использования в качестве системы управления департаментом в реальных условиях.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии4

Легко ли распознать информацию на банковской карточке?

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


Когда мы общаемся с нашими заказчиками, то, будучи специалистами в этой области, активно используем соответствующую терминологию, в частности слово «распознавание». При этом слушающая аудитория, воспитанная на Cuneiform и FineReader, часто вкладывает в этот термин именно задачу сопоставления вырезанного участка изображения некоторому числу (коду символа), которая в наши дни решается нейросетевым подходом и является далеко не первым этапом в задаче распознавания информации. В начале необходимо локализовать карточку на изображении, найти информационные поля, выполнить сегментацию на символы. Каждая перечисленная подзадача с формальной точки зрения является самостоятельной задачей распознавания. И если для обучения нейронных сетей существуют зарекомендовавшие себя подходы и инструменты, то в задачах ориентации и сегментации каждый раз требуется индивидуальный подход. Если вам интересно узнать про подходы, которые мы использовали при решении задачи распознавания банковской карточки, тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии11

Поиск четырёхугольников документов на мобильных устройствах

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


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

Постановка задачи

Для начала определим, какую информацию мы можем использовать в своих целях.
В приложениях достаточно жёстко заданы предполагаемые типы документов. Будем считать, что никто всерьёз не пытается распознать паспорт приложением для банковских карт или наоборот, а значит нам известны, как минимум, пропорции искомого объекта. Также заметим, что абсолютное большинство мобильных девайсов имеет камеры с фиксированным фокусным расстоянием.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии4

Что делать, если программировать становится скучно

Время на прочтение10 мин
Количество просмотров52K
imageСлучалось ли c вами, долго работая в одной компании над одним и тем же проектом, начинаешь задумываться о смене обстановки, используемых технологий и самого проекта. Раньше я был уверен, что из этой ситуации один выход — найти новую работу. Эта статья, перевод которой мы публикуем, поменяла мое мнение. В ней описывается подход, благодаря которому можно сделать работу программиста нескучной и помогающей ему расти и развиваться. Мы, сервис для организации приема платежей PayOnline, предлагаем вам ознакомиться с этой методикой и поделиться ею со своим работодателем, в случае, если вы испытываете подобные, описанные автором проблемы. Ниже идет, непосредственно, перевод.

В мою бытность разработчиком я никогда не задерживался на одной и той же работе более двух лет. В моем случае каждая новая работа была для меня хорошим ходом с точки зрения карьерного роста. И даже несмотря на то, что высокая “текучка” — обычное дело в нашей профессиональной сфере, я не могу сказать, что мои предыдущие работодатели спокойно относились к моему уходу. Некоторые из них упорно пытались сделать так чтобы я остался, но работа становилась для меня настолько скучной, что оставаться я уже не мог. Сразу поясню: мне посчастливилось жить в таких местах, где работы для программистов было больше чем самих программистов. Я понимаю, что вариант со сменой работы доступен не всем.
Читать дальше →
Всего голосов 57: ↑45 и ↓12+33
Комментарии56

Под капотом Redis: Хеш таблица (часть 2) и Список

Время на прочтение10 мин
Количество просмотров17K
В первой части я сказал, что хеш таблица это немного LIST, SET и SORTED SET. Судите сами — LIST состоит из ziplist/linkedlist, SET состоит из dict/intset, а SORTED SET это ziplist/skiplist. Мы уже рассмотрели словарь (dict), а во второй части статьи будем рассматривать структуру ziplist — вторую наиболее часто применимую структуру под капотом Redis. Посмотрим на LIST — вторая часть его «кухни» это простая реализация связного списка. Это пригодится нам, чтобы внимательно рассмотреть часто упоминаемый совет об оптимизацию хеш таблиц через их замену на списки. Посчитаем сколько памяти требуется на накладные расходы при использовании этих структур, какую цену вы платите за экономию памяти. Подведём итоги при работе с хеш таблицами, при использовании кодировки в ziplist.

В прошлый раз мы закончили на том, что сохранённые с использованием ziplist 1,000,000 ключей заняли 16 мб оперативной памяти, тогда как в dict эти же данные потребовали 104 мб (ziplist в 6 раз меньше!). Давайте разбираться какой ценой:

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

Основные законы создания команд разработчиков

Время на прочтение9 мин
Количество просмотров71K
В EDISON часто обращаются инженеры, желающие добавить сотрудников в команду. Хочется «по-быстрому склепать задачку», воспользовавшись десятком дополнительных разработчиков. Работает ли подобный подход? К сожалению, не всегда. В программировании, как в физике, есть законы.


Собрать толковую команду — настоящее искусство
Читать дальше →
Всего голосов 60: ↑43 и ↓17+26
Комментарии17

Контрольная цифра методом Дамма

Время на прочтение3 мин
Количество просмотров18K
КДПВКонтрольную цифру часто добавляют к идентификаторам, которые люди могут записывать или передавать с ошибками, чтобы эти ошибки потом обнаруживать.

Примерами могут служить последняя цифра номера кредитной карты, девятая цифра VIN автомобилей, продаваемых в в США, или последняя цифра ISBN.

Алгоритм контрольной цифры ван Дамма — относительно новый и потому малоизвестный. Он опубликован 2004 году.

Алгоритм обнаруживает все ошибки в одной цифре и все одиночные перестановки соседних цифр. Он заметно проще, чем сравнимый по возможностям алгоритм Верхуффа, и не требует использования специальных символов (таких как X в 10-значном ISBN).
Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии31

Сравнительный анализ покупательских корзин

Время на прочтение5 мин
Количество просмотров8.5K
Покупки каждого клиента в магазине только на первый взгляд кажутся уникальными. У покупателей вырабатываются одинаковые модели поведения на основе потребностей, например, покупка молока и хлеба через день, пачки сигарет каждый вечер, шоколадки к чаю, йогурта и круассана к обеду и т.п. А поскольку, так или иначе, потребности людей совпадают, мы можем говорить о типичном покупательском поведении в определенных условиях.



Анализ покупательских корзин предполагает изучение связей и закономерностей в поведении клиентов торговой сети. Результаты анализа помогают формировать целевую маркетинговую активность, создавать персонализированные предложения и планировать промо для увеличения среднего чека и прибыли.

Анализ покупательских корзин мы уже описали тут, а в данной статье, мы рассмотрим сравнение типичных корзин и возможности использования результатов в бизнес-процессах ритейла. Возможность визуализации и сравнения корзин со схожими товарами помогает ритейлеру быстро выделить закономерности в покупательском поведении и принять нужные решения для оптимизации своей деятельности.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии7

Как решить проблемы с платежным шлюзом: Кейс Airbnb

Время на прочтение2 мин
Количество просмотров9.6K
Сегодня мы решили проанализировать опыт ИТ-специалистов компании Airbnb, которая столкнулась с проблемами в работе платежного шлюза.

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

Создание подсказок для сайта с помощью EnjoyHint

Время на прочтение6 мин
Количество просмотров37K
Друзья мои! Время от времени каждый из нас сталкивается с ситуацией, когда, попав на новый для себя сайт, приходится хорошенько поразмыслить минуту-другую, чтобы понять, как там все устроено. Примерно в таком же положении можно оказаться, обнаружив радикальные (или не очень) перемены во внешнем облике любимых сайтов, будь то last.fm или Кинопоиск. Существуют разные способы примирить пользователей с новым дизайном: от постепенного знакомства с привнесенными новшествами («Попробуйте бета-версию обновленного сайта прямо сейчас!») до создания пошагового гайда по новым возможностям. О последнем варианте мы сегодня и поговорим.

finding a way
Читать дальше
Всего голосов 20: ↑19 и ↓1+18
Комментарии9

Информация

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

Специализация

Chief Technology Officer (CTO)