Pull to refresh
0
0
Михаил Привер @mpriver

User

Send message

Бенчмарки в Go

Reading time4 min
Views67K

Бенчмарки


Бенчмарки это тесты для производительности. Довольно полезно иметь их в проекте и сравнивать их результаты от коммита к коммиту. В Go есть очень хороший инструментарий для написания и запуска бенчмарков. В этой статье я покажу, как использовать пакет testing для написания бенчмарков.
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments2

Пулы потоков: ускоряем NGINX в 9 и более раз

Reading time15 min
Views88K
Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

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

Каждый процесс расходует память и каждое переключение между ними требует дополнительных циклов процессора, а также приводит к вымыванию L-кэшей

У медали есть и обратная сторона. Главной проблемой асинхронного подхода, а лучше даже сказать «врагом» — являются блокирующие операции. И, к сожалению, многие авторы сторонних модулей, не понимая принципов функционирования NGINX, пытаются выполнять блокирующие операции в своих модулях. Такие операции способны полностью убить производительность NGINX и их следует избегать любой ценой.

Но даже в текущей реализации NGINX не всегда возможно избежать блокировок. И для решения данной проблемы в NGINX версии 1.7.11 был представлен новый механизм «пулов потоков». Что это такое и как его применять разберем далее, а для начала познакомимся с нашим врагом в лицо.
Читать дальше →
Total votes 72: ↑71 and ↓1+70
Comments58

Быстрое знакомство с Docker-контейнерами для Django-разработчика

Reading time5 min
Views65K


Разработка такого проекта как кешбек-сервис подразумевает использование различных сервисов, нетипичных для обычного ноутбука, даже если это ноутбук разработчика. Postgresql, Redis, Celery и так далее. Желание создать комфортную среду разработки и тестирования привело нас к необходимости использование какой-то системы виртуализации/изоляции. Как вариант — некоторое время использовался Vagrant, но это всё-таки ovrerhead и наши поиски оптимального способа привели, на данный момент, к Docker.

Docker — платформа для запуска приложений в изолированных контейнерах. Использование контейнеров в Linux позволяет программному обеспечение быть изолированным от базовой системы. В отличии от Virtualbox, исключаются системные издержки (overhead), необходимые для виртуализации оборудования. Docker может помочь в разработке и развертывании веб-приложений и сервисов. Давайте посмотрим, как это происходит.
Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments19

Как мы делали каркас приложения на AngularJS и Django

Reading time5 min
Views32K
image

Весной нам в голову пришла идея сделать простой сервис для облачного бэкапа серверов. Поскольку в то время работа над проектом велась преимущественно по вечерам и по выходным, для ускорения процесса было решено использовать только те технологии, в которых у нас есть опыт. Для backend-части был выбран Django, а реализация клиентской части предполагалась в виде SPA на базе AngularJS. Задумка была в следующем: сделать продукт с минимальным функционалом, а затем постепенно добавлять новые возможности. Для этого необходимо было сделать достаточно гибкую и масштабируемую систему. Немного пораскинув мозгами, мы приступили.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments10

Основы фотографии: выдержка, диафрагма, ГРИП, светочувствительность

Reading time6 min
Views408K

Введение


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

В результате у кого-то возникает разочарование в камере и фотографии в целом, а другие проявляют терпение и пытаются освоить премудрости фотографии, чтобы раскрыть весь потенциал камеры с полноценным (или почти полноценным) сенсором.

Изначально я планировал написать одну статью, но по ходу дела понял, что объем получается слишком большой и решил разбить ее на несколько частей. В этой главе рассмотрю такие понятия как выдержка, диафрагма, ГРИП и светочувствительность, как эти параметры влияют на результат съемки. На очереди статья про типы и параметры объективов, работу со вспышками и советы по съемке в различных условиях.
Читать дальше →
Total votes 272: ↑232 and ↓40+192
Comments378

Отказоустойчивый узел передачи данных

Reading time12 min
Views27K
Каждый оператор ШПД думает о том, как выпускать пользователей в сеть интернет и грамотно ограничивать скорость работы в сети по имеющимся тарифным планам и иметь резерв на случай отказа оборудования или работ связанных с отключением оборудования. Попытаюсь рассказать и показать на примере то, как это реализовано у нас (к нам подключены более 3х тысяч пользователей и описанный мною вариант работает очень даже неплохо)
Читать дальше →
Total votes 53: ↑41 and ↓12+29
Comments78

Бесплатный антивирус от Microsoft теперь и в России: Microsoft Security Essentials

Reading time1 min
Views14K
Эту новость вы узнаете первыми:)
Сегодня мы официально запускаем бесплатный антивирус Microsoft Security Essentials в России! Скачать его можно с сайта www.microsoft.com/security_essentials/default.aspx?mkt=ru-ruimage

Что нужно для установки:
— Иметь лицензионную версию ОС Windows
— Иметь желание защитить свой домашний компьютер от вирусов и другой “пакости” :)

Хочу отдельно отметить, что данный продукт предназначен для домашнего использования, для защиты компьютеров в корпоративной среде у нас есть другой замечательный продукт: семейство продуктов Forefront.

Со всеми вопросами/пожеланиями и т.д. можно писать в комменты

update
Забыл добавить, что теперь оболочка (интерфейс) тоже на русском.

update 2
Изменил ссылку на ту, которая точно работает: www.microsoft.com/security_essentials/default.aspx?mkt=ru-ru и добавил скриншот
Total votes 108: ↑81 and ↓27+54
Comments145

Утекший роадмап HTC раскрывает тайны гигагерцевого Android'а

Reading time3 min
Views1.5K
HTC BravoСовсем недавно на презентации, которую организовала HTC для представителей T-Mobile, произошла утечка информации о планах HTC на следующий год.

Итак, вся продуктовая линейка HTC будет разделена на несколько категорий:
  • Design / Lifestyle — смартфоны, ориентированные на молодежный сегмент рынка: HTC Legend, HTC Salsa.
  • Social — молодежные смартфоны, ориентированные на тесную интеграцию с социальными сетями (Twitter, Facebook, Flickr): HTC Tide, HTC Buzz.
  • Performance — смартфоны, у которых тысячи лошадей под капотом: HTC Bravo.
  • Productivity — смартфоны на Windows Mobile, расчитанные на бизнес-сегмент: HTC Photon, HTC Trophy, HTC Tera (римейк Touch Pro2).


По словам Эльдара Муртазина, в данном роадмапе отсутствует пара ключевых аппаратов HTC, как, например, HTC Espresso, или 10 дюймовый Tablet HTC Halo под управлением Android'а.

Перейдем к описанию самого ожидаемого смартфона на Хабрахабре.
Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments46

Новый бюджетный Android-phone HTC Touch B

Reading time1 min
Views1.3K
imageПохоже, компания HTC всерьез принялась реализовывать свой план по выпуску Android-смартфонов. WinMo-коммуникаторам отводится верхний сегмент рынка, а нижний — освобождается для Android. Средний сегмент будет разделен между Android и WinMo аппаратами. К сожалению, HTC Tattoo не стал бюджетным, как это планировалось заранее: стоимость на официальные телефоны в России стартует на отметке 13500 р.

Как стало известно mobifrance.com, компания HTC готовит еще одну новинку — смартфон HTC Touch B. По-сути, это версия HTC Touch2, но для платформы Android. По дизайну Touch B напоминает звено эволюции Touch2 в Droid Eris. В общем, дизайн получился на любителя. Также можно сделать вывод о спецификациях будущего Android-phone: процессор Qualcomm MSM7225 @ 528 Мгц, 2.8" QVGA сенсорный экран, 512 Мб ROM, 256 Мб RAM, 3.2 мегапиксельная камера. Судя по всему, HTC Touch B будет обладать резистивным тач-скрином, как и HTC Tattoo. Новинка будет представлена официально в ближайшее пару месяцев.

Update: Как оказалось, Touch B будет работать не под управлением Android, а под ОС Qualcomm BrewMP:


Follow HTC On Twitter: twitter.com/HTC_Ru
Несколько фотографий под катом
Total votes 33: ↑26 and ↓7+19
Comments48

IBM выпускает кота из мешка

Reading time1 min
Views4.4K
Вчера на конференции Supercomputing 2009 сотрудники компании IBM представили результаты моделирования мозга, состоящего из более чем одного миллиарда нейронов (и 8.8 триллионов (!) синапсов).
Это больше, чем мозг кошки (отсюда и название статьи «The Cat is Out of the Bag: Cortical Simulations with 109 Neurons, 1013 Synapses») и составляет примерно 4% человеческого мозга.
Для моделирования использовался Blue Gene/P DAWN с 147,456 процессорами и 144 TB оперативной памяти, но даже он не позволяет проводить вычисления в реальном времени, поэтому для моделирования одной секунды физического времени требовалось примерно 1.5 минуты расчетов.
Тем мне менее, как прогнозируют авторы этой модели, к 2019 году самый быстрый компьютер на Земле сможет моделировать работу человеческого мозга в реальном времени. Для этого потребуется около 10 Петабайт оперативной памяти и производительность свыше 1 EFLOPS.
Предполагается, что такое моделирование «снизу-вверх» (от простейших элементов к общей системе) позволит разобраться в том, как работает человеческий мозг, что же такое мышление и разум и как они возникают.

Стоит ли говорить, что финансируется проект все той же DARPA, которая, в частности, платит деньги Boston Dynamics.

via
Total votes 83: ↑77 and ↓6+71
Comments90

Skype переходит на SIP?

Reading time1 min
Views784
В ноябре случилось важное событие в мире коммуникаций: Джонатан Розенберг перешел из Cisco в Skype на должность Chief Technology Strategist. Джонатан является соавтором протокола SIP, автоом и соавтором некоторых других телекоммуникационных протоколов, таких как STUN и ICE. Джонатан являлся основной движущей силой в Cisco по продвижению SIP в корпоративный и операторский сектор. Изменит ли Cisco свою стратегию, адаптировав другой протокол, такой как H.325, который активно продвигается Полом Джонсом? И что более интересно: изменит ли Skype свой существующий закрытый протокол на открытый SIP и последствия данного события?
Total votes 20: ↑10 and ↓100
Comments13

Tips and Tricks по программированию на Android

Reading time5 min
Views7.2K
Tips and Tricks
Летом друг подкинул пару заказов по разработке для Android. Первое это streaming проигрыватель видео для одного французского телевидения, второе — простенькая игрушка.
Во время разработки (мой первый опыт разработки на Android и на Java), я уяснил несколько правил, которые нужно соблюдать для корректной и устойчивой работы программ, которыми хочу поделится…
Читать дальше →
Total votes 91: ↑75 and ↓16+59
Comments44

Много Андроидов новых и разных от HTC…

Reading time1 min
Views627
Не так давно проскакивала новость о названиях новых телефонов на базе OS Android, которые нашли в исходном коде прошивки 2.0 Elcair
И вот, уже через несколько дней в сеть утекли фотографии и спецификации новых телефонов от HTC, а именно их модельный ряд 2010 года:HTC Legend,HTC Bravo,HTC Salsa,HTC Tide и HTC Buzz
Новые форм факторы, приятный дизайн…
Под катом- фотографии и описания этих телефонов. Надеюсь, переводить технические спецификации нет нужнды ;-):
Читать дальше →
Total votes 55: ↑47 and ↓8+39
Comments71

ANGULARJS + REQUIREJS

Reading time5 min
Views55K

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

Итак, опишем наш взгляд на решение проблемы.

Для чего?

Работая с AngularJs вы обязательно задумаетесь о правильной организации кода. Конечно уже существуют отличные примеры решения проблемы. Например можно изучить теоретический пост Брайана Форда или практическое руководство Клиффа Мейерса. Я же поделюсь способом организации кода в приложениях AngularJs с использованием RequireJs.

Данный подход будет полезен, если вы хотите:

  • перестать беспокоиться о подключении скриптов в правильном порядке;
  • загружать javascript код асинхронно;
  • иметь возможность скомпилировать код в один минифицированный JS-файл;
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments66

Пути более эффективного использования PostgreSQL

Reading time5 min
Views59K
Прочитав статью Базы данных в онлайн играх и особенно комменты к ней, я в очередной расстроился от мысли, что многие разработчики меняют БД в своём проекте, пытаясь этой сменой решить свои проблемы, не исчерпав, однако, всех возможностей, предоставляемой заменяемой БД. Я принимаю участие в работе над проектом, БД которого характеризуется:
  • Количеством транзакций порядка 5'000 — 10'000 в секунду
  • Объемом примерно в 100ГБ (который бодро растёт)
  • Примерно равным количеством операций на чтение/запись
  • Преимущественно мелкими транзакциями

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

Я опишу некоторые проблемы, с которыми мы сталкиваемся, и применённые решения. Если кто-то сочтёт это полезным — ради Бога. Если кто-то поправит — я буду только рад обнаружить уязвимость в используемых подходах и увеличить эффективность работы БД. Описанное может быть применено без вмешательства в логику приложения, исключительно путём модификации схемы БД.
Читать дальше →
Total votes 44: ↑40 and ↓4+36
Comments55

HTML5/AngularJS/Nginx приложение с правильным с google-индексированием

Reading time3 min
Views38K
Большинство web-приложений и web-фреймворков используют архитектуру, не позволяющую разделить ui и backend разработку. Тем самым нет возможности разделить команду на узкоспециализированных frontend и backend разработчиков. Вне зависимости от предпочтений разработчика ему приходится иметь понимание как о слое представления, так и о слое логики. Если ui-разработчик знает только о том, как запустить сервер, и о модели данных — это огромная удача. В плохих случаях ui-разработчику необходимо провести полную сборку проекта чтобы увидеть изменения строчки в javascript файле, или знать о языке jsp файлов чтобы поменять стиль элемента. Формирование и передача на сервер обработанных html файлов так-же пагубно влияет на производительность сервера и сети.

non-ajax

Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments7

Мониторинг коммутаторов Cisco, D-Link, 3Com, Zyxel в системе Zabbix

Reading time5 min
Views281K
Мониторинг — это один из столпов обеспечения высокой доступности ИТ-систем.
Как правило, системные администраторы при установке системы мониторинга в первую очередь настраивают ее на проверку параметров серверов и обнаружение недоступности сервисов, запущенных на этих серверах. Безусловно это приоритетная задача, но не стоит забывать и о другом оборудовании: ИБП, системах кондиционирования, сетевом оборудовании.

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

модная карта сети
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments35

WebSocket-чат на Tornado для вашего Django-проекта

Reading time28 min
Views68K
TornadoНедавно я запустил сайт backgrounddating.com и написал об этом здесь, на Хабрахабре. Разумеется, я уже тогда рассказал о некоторых технических деталях реализации этого проекта, но об одной из возможностей сайта я бы хотел написать отдельно, тем более, что документации (как на русском, так и на английском) на эту тему в Интернете пока что довольно мало. Итак, речь пойдёт о чате в реальном времени между двумя пользователями. Задача состоит в том, чтобы любой пользователь мог отправлять другим пользователям сообщения, и, если у получателя сообщения открыт чат с этим пользователям, то он сразу же видел входящие сообщения (а в ином случае он мог прочитать сообщения позже: то есть при открытии чата загружается история последних сообщений).

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

Сразу уточню, что это не единственный способ реализовать подобное. Вы можете использовать другой асинхронный веб-сервер (например node.js), можете использовать другую очередь сообщений (или вообще её не использовать, если вам подходят особенности такого варианта: с пользователями одного канала обязательно общается один и тот же worker веб-сервера). Я даже не утверждаю, что этот вариант самый лучший (но в данном случае он подошёл лучше всех). В конце концов, мы здесь вообще не будем рассматривать костыли (long polling, Flash) для старых браузеров (а это почти все версии IE, например), не поддерживающих веб-сокеты, и даже не будем рассматривать возможность подключаться из тех браузеров, которые уже поддерживают протокол WebSocket, но не стандартизированную версию (RFC 6455), а одну из устаревших. О том, как можно включить поддержку устаревшей версии «draft 76» (она же «hixie-76»), смотрите в документации Tornado.
Читать дальше →
Total votes 56: ↑43 and ↓13+30
Comments17

Django + Sphinx = django-sphinx (?)

Reading time5 min
Views17K


Когда мы подготавливали для Хабра свою последнюю статью о Django-батарейках, выяснилось, что про django-sphinx мы таки имеем что рассказать и наш рассказ тянет на отдельный пост. Собственно, вот он, как и обещали.

На сегодняшний день, существует несколько хороших решений для организации поиска в Django. Несколько — это два: Haystack и django-sphinx. Haystack работает с бэкендами-движками solr, whoosh и хapian и, увы, не работает со Sphinx`ом по каким-то абстрактным лицензионным причинам. django-sphinx же, как можно догадаться, работает со Sphinx`ом и только. Haystack это качественный, хорошо документированный и активно развиваемый продукт и мы, вне всяких сомнений, использовали бы именно его, если бы он хоть в какой-нибудь форме поддерживал Sphinx. Но этого, увы, пока не произошло. А Sphinx — наше всё, благодаря его скорости, гибкости и, что очень важно в наших географических широтах, способности учитывать особенности русской морфологии, чего не скажешь о его ближайших конкурентах. «Большие, но по 5… или маленькие, но по 3?»

Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments50

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Frontend Developer