Search
Write a publication
Pull to refresh
102
0
kyprizel @kyprizel

Пользователь

Send message

Заметки для построения эффективных Django-ORM запросов в нагруженных проектах

Reading time11 min
Views61K
Написано, т.к. возник очередной холивар в комментариях на тему SQL vs ORM в High-Load Project (HL)

Преамбула


В заметке Вы сможете найти, местами, банальные вещи. Большая часть из них доступна в документации, но человек современный часто любит хватать все поверхностно. Да и у многих просто не было возможности опробовать себя в HL проектах.
Читая статью, помните:
  • Никогда нельзя реализовать HL-проект на основе только одной манипуляции с ORM
  • Никогда не складывайте сложные вещи на плечи БД. Она нужна Вам чтобы хранить инфу, а не считать факториалы!
  • Если вы не можете реализовать интересующую Вас идею простыми средствами ORM — не используйте ORM для прямого решения задачи. И тем более не лезте в более низкий уровень, костыли сломаете. Найдите более элегантное решение.
  • Извините за издевательски-юмористический тон статьи. По другому скучно :)
  • Вся информация взята по мотивам Django версии 1.3.4
  • Будьте проще!

И-и-и да, в статье будут показаны ошибки понимания ORM, с которыми я столкнулся за три с лишним года работы с Django.
Читать дальше →

Безопасность приложения: это почти просто

Reading time18 min
Views39K
simple science

— Дай мне справку, что моя программа безопасна.

— Нет проблем! А что ты для этого делал?

— Э… Ну… Это… Ничего…

— А почему ты тогда думаешь, что она безопасна?

— Ну, ты проверь!

— Нет проблем! Все удовольствие будет стоить X0000 долларов.

— ?!

О статье


В этой статье я рассказываю о некоторых практиках создания безопасного программного обеспечения.

Первая ее часть посвящена безопасному программированию.

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

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

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

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

Внимание! Статья большая и подразумевает внимательное прочтение.

Подтверждаю свою готовность внимательно прочитать многабукаф

White-box cryptography в картинках

Reading time4 min
Views11K
Доброго времени суток!

Вы всегда хотели знать о принципах шифрования с открытым ключом, но боялись спросить? Нет? Все равно статья интересная (и даже понятная), а в конце лежит игрушка по мотивам исследовавшегося материала.
Итак, тема — шифрование с открытым ключом, а точнее, White-Box Encrypting. Разница в том, что у «коробки» вместо обычной шифровальной функции некая программа, в которой эта функция и спрятана. Но об этом я расскажу позже, а сначала…

Чтобы узнать, что было сначала, нажми сюда. Да-да, сюда.

Байесовский анализ в Python

Reading time8 min
Views58K
Этот пост является логическим продолжением моего первого поста о Байесовских методах, который можно найти тут.
Я бы хотел подробно рассказать о том, как проводить анализ на практике.
Читать дальше →

NIST SP 800: библиотека по информационной безопасности

Reading time5 min
Views66K
NIST Хочу познакомить хабрапользователей, касающихся прямо или косвенно вопросов защиты информации, с практически не упоминавшимся на Хабре замечательным методическим ресурсом: “NIST Special Publications 800 Series”.

NIST – National Institute of Standards and Technology – американский национальный институт стандартизации, аналог отечественного ГосСтандарта. В его составе функционирует компетентный и имеющий серьезный вес в США центр по компьютерной безопасности – CSRC, объединяющий специалистов федеральных служб, университетов, крупнейших ИТ-компаний США. Центр публикует с начала 1990-х годов Стандарты (FIPS) и более детальные разъяснения/рекомендации (Special Publications) в области информационной безопасности. Рекомендациям (Special Publications), созданным CSRC, присваивается код 800. О них я и предлагаю поговорить подробнее.
Читать дальше →

Классификация и регрессия с помощью деревьев принятия решений

Reading time5 min
Views76K

Введение


В данной статье сделан обзор деревьев принятия решений (Decision trees) и трех основных алгоритмов, использующих эти деревья для построение классификационных и регрессионных моделей. В свою очередь будет показано, как деревья принятия решения, изначально ориентированные на классификацию, используются для регрессии.

Деревья принятия решений


Дерево принятия решений — это дерево, в листьях которого стоят значения целевой функции, а в остальных узлах — условия перехода (к примеру “ПОЛ есть МУЖСКОЙ”), определяющие по какому из ребер идти. Если для данного наблюдения условие истина то осуществляется переход по левому ребру, если же ложь — по правому.
Читать дальше →

Master-key для замков Onity на Arduino в обычном маркере

Reading time1 min
Views37K


Вряд ли в офисном здании или отеле будут с пониманием относиться к человеку, который носит с собой подозрительные устройства, из которых торчат разного рода провода и датчики. Но понятно, что профессиональные взломщики на то и профессионалы, чтобы не попадаться. К примеру, вскрыватель замков Onity был встроен одним из умельцев в обычный маркер. Более обычную вещь сложно себе представить. Этот девайс работает как master key для всех замков.

Читать дальше →

Наивный Байесовский классификатор в 25 строк кода

Reading time3 min
Views90K
Наивный Байесовский классификатор один из самых простых из алгоритмов классификации. Тем не менее, очень часто он работает не хуже, а то и лучше более сложных алгоритмов. Здесь я хочу поделиться кодом и описанием того, как это все работает.

И так, для примера возьму задачу определения пола по имени. Конечно, чтобы определить пол можно создать большой список имен с метками пола. Но этот список в любом случае будет неполон. Для того чтобы решить эту проблему, можно «натренировать» модель по маркированным именам.
Если интересует, прошу
под кат

Использование сайтов типа Pastebin для сбора информации о цели пентеста

Reading time2 min
Views6K
Сайты для общего использования текста типа «Pastebin» (Pastebin, Pastie и т.п.) являются популярными хранилищами скомпрометированных данных. Наблюдение за ними может помочь обнаружить утечку данных компании. Кроме того, такие сервисы могут помочь пентестеру на этапе сбора информации о цели.

Сайты, на которые я ссылаюсь: Pastebin, Pastie, FrubarPaste, YourPaste, Codepad, Slexy и LodgeIt. Здесь можно найти информацию, оставленную не только злоумышленником, но и неосторожным сотрудником.

Под катом немного текста и описание инструментов для автоматизированного поиска

PyBrain работаем с нейронными сетями на Python

Reading time8 min
Views166K

В рамках одного проекта столкнулся необходимостью работать с нейронными сетями, рассмотрел несколько вариантов, больше всего понравилась PyBrain. Надеюсь её описание будет многим интересно почитать.

PyBrain — одна из лучших Python библиотек для изучения и реализации большого количества разнообразных алгоритмов связанных с нейронными сетями. Являет собой удачный пример совмещения компактного синтаксиса Python с хорошей реализацией большого набора различных алгоритмов из области машинного интеллекта.

Предназначен для:

  • Исследователей — предоставляет единообразную среду для реализации различных алгоритмов, избавляя от потребности в использовании десятков различных библиотек. Позволяет сосредоточится на самом алгоритме а не особенностях его реализации.
  • Студентов — с использованием PyBrain удобно реализовать домашнее задание, курсовой проект или вычисления в дипломной работе. Гибкость архитектуры позволяет удобно реализовывать разнообразные сложные методы, структуры и топологии.
  • Лекторов — обучение методам Machine Learning было одной из основных целей при создании библиотеки. Авторы будут рады, если результаты их труда помогут в подготовке грамотных студентов и специалистов.
  • Разработчиков — проект Open Source, поэтому новым разработчикам всегда рады.

Читать дальше →

Префиксные деревья в Python

Reading time6 min
Views13K
Доделал на днях питонью библиотеку datrie, реализующую префиксное дерево (см. википедию или хабр), спешу поделиться.

Если вкратце, то можно считать, что datrie.Trie — это замена стандартному питоньему dict, которая при определенных условиях (ключи — строки) занимает меньше памяти, имеет сравнимую скорость получения отдельного элемента и поддерживает дополнительные операции (получение всех префиксов данной строки, получение всех строк, начинающихся с данной строки и др.), которые работают примерно так же быстро, как и «словарные» операции.

Работает под Python 2.6-3.3, поддерживает юникод, лицензия LGPL.

Читать дальше →

Не бойтесь маленького бизнеса

Reading time3 min
Views2.8K
Маленький бизнес
В последнее время мне часто стали попадаться статьи, где ставится знак равенства между малым бизнесом и неудачниками. Пример одной из последних подобных статей: "Сергей Белоусов о зомби-стартапах от которых никакого толку, а избавиться жалко". Краткий смысл: если компания живет, но не развивается, то значит это провальный проект и пора переходить к новому. Я не согласен с таким направлением мысли. Не могут все компании расти и быть грандиозно успешными. И в этом нет ничего плохо. Если компания живет, это уже хорошо. Они не зомби, а просто нашедшие свою нишу компании. Малый бизнес это замечательно.
Читать дальше →

Я не могу написать бинарный поиск

Reading time11 min
Views208K
Недавно (буквально два года назад) тут пробегала статья Только 10% программистов способны написать двоичный поиск. Двоичный поиск — это классический алгоритм поиска. Мало того, это еще чрезвычайно простой алгоритм, который можно очень легко описать: берем отсортированный массив, смотрим в середину, если не нашли там число, в зависимости от того, что в середине — ищем это число этим же методом либо в левой части, либо в правой, откидывая средний элемент. Для функций также, просто берем не массив, а функцию. Все очень и очень просто, алгоритм описан почти везде, все баги словлены и описаны.

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

А в чем, собственно, проблема?

Система управления проектами вроде Jira, только чтобы «облачная» и до 5 пользователей бесплатно

Reading time1 min
Views48K

Коллеги, на правах публикации в хабе компании, разрешите поделиться новостью, к которой мы шли примерно год. Мы официально выпустили бесплатную версию TargetProcess в «облаке» aka SaaS aka On-Demand.

TargetProcess – система управления проектами с фокусом на методологии Agile (XP, Scrum, Kanban). Систему начали разрабатывать в 2004 году четыре белорусских программиста. Теперь ей пользуется больше тысячи компаний по всему миру (Orange, Sony, Intel, Microsoft, Paralles, Kaplan и др.). Основные преимущества: скорость, гибкая настройка и удобство использования.

Дальше я расскажу, как она наша система может вам пригодиться.
Читать дальше →

Pynba — pinba for python

Reading time2 min
Views2.6K
Примечание переводчика:
Тихо и незаметно вышла pynba. Странно, что на хабре об этом еще не писали :)


Что это:


Pynba — это WSGI прослойка для pinba. С ее помощью вы можете собирать статистику / производить мониторинг сервера, используя интерфейс MySQL для чтения данных.

Она аккумулирует данные от Python процессов, отправляет их по UDP прототоколу и показывает статистику в красивом человекопонятном виде простых отчетов. Так же она предоставляет доступ только для чтения к сырым данным, что позволяет, например, создавать более детализированные отчеты.

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

Почему не другой обработчик статистики?


Потому что Pinba — это круто!
Читать дальше →

Обзор DDoS-атак Рунета: 9:1 в пользу примитива

Reading time6 min
Views33K
Отчетная статья по семинару «DDoS-атаки и защита от них» (RIGF, 14 мая 2012, Москва)

Спикер: Артем Гавриченков, ведущий разработчик сети фильтрации трафика Qrator
Тема доклада: DDoS-атаки в 2011-2012 гг.: характер и тенденции

Приведем обзор DDoS-атак за последние полтора года и поговорим о том, чего следует бояться, а чего нет. Начнем с тривиальной статистики, данные которой основаны на клиентской базе HLL: к сожалению, ни одна компания не имеет универсального всевидящего ока. Итак, за 2011-2012 гг. мы стали очевидцами более 2 500 DDoS-атак.



Go!

Использование отладчика GDB по максимуму

Reading time4 min
Views40K
В нашей повседневной работе, как и всем, требуется много пользоваться отладчиком. В силу специфики работы: (разработка ОС, использование технологий виртуализации наподобие Intel-VT, ит.д.) нам часто требуется использовать отладчик для работы со специфическими случаями: отладка кода загрузчика ядра, отладка загрузчиков виртуальных машин, а так же в принципе обеспечение возможности отлаживать ОС собственной разработки. Именно эти особые случаи так пафосно названы в заголовке ”по максимуму”.

Для решения всех этих задач (и конечно, многих других) мы используем gdb. Возможно использование и таких оболочек как DDD, но лично я предпочитаю использовать cgdb как оптимальный выбор, особенно для случая работы с отладчиком по ssh.
В этой статье мы расскажем о том, как можно использовать gdb для отладки кода загрузочных секторов и загрузчиков.
Читать дальше →

Азбука NoSQL-инъекций

Reading time13 min
Views65K
Бывают SQL-инъекции! А возможны ли NoSQL-инъекции? Да! Redis, MongoDB, memcached — все эти программные продукты относятся к классу нереляционных СУБД, противоположному популярным MySQL, Oracle Database и MSSQL. Так как интерес к перечисленным базам данных в последнее время значительно возрос, хакеры всех мастей просто не могли пройти мимо них.


Читать дальше →

Взломать Wi-Fi за 10 часов

Reading time12 min
Views1.5M
Еще не так давно казалось, что беспроводная сеть, защищенная с помощью технологии WPA2, вполне безопасна. Подобрать простой ключ для подключения действительно возможно. Но если установить по-настоящему длинный ключ, то сбрутить его не помогут ни радужные таблицы, ни даже ускорения за счет GPU. Но, как оказалось, подключиться к беспроводной сети можно и без этого — воспользовавшись недавно найденной уязвимостью в протоколе WPS.


Читать дальше →

Испытание яблочного радиометра

Reading time5 min
Views12K
image
Измерение радиационного фона под Медным всадником

Я решил проверить, как работает ДО-РА в путешествии.

ДО-РА это компактный прибор для измерения радиации. Втыкается в аудио-вход iPhone и телефон начинает работать, как бытовой дозиметр. Разумеется, Вам становятся доступны красивые экраны, качественные шрифты и куча дополнительной информации и сервисов iOS.

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

Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Registered
Activity