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

User

Бенчмарки в Go

Reading time 4 min
Views 52K
Go *
Translation

Бенчмарки


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

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

Reading time 15 min
Views 83K
High performance *
Translation
Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

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

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

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

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

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

Reading time 5 min
Views 64K
Zavod It-стартапов corporate blog Website development *Programming *Django *
Translation


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

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

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

Reading time 5 min
Views 32K
BitCalm corporate blog Website development *Angular *
Tutorial
image

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

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

Reading time 6 min
Views 400K
Photographic equipment

Введение


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

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

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

Netgear WNR2000: восстановление работы VoIP в последних версиях прошивки

Reading time 2 min
Views 10K
Computer hardware

Рутер из ада


Да, собственно, рутер сам не плох, но у нас с ним не заладилось с самой покупки.
Сначала — это непонятная система установки и настройки рутера с диска. Вроде бы вставь и все должно работать, подключи и настрой, ан-нет, Netgear пошли дальше, Вам нужно иметь и интернет доступ и сетевое подключение к рутеру и подключенный диск, на eeeBox'е я намучился с этим (все представили утыканный со всех сторон маленький eeeBox: USB-интернет, мышь, клавиатура, USB-CDROM и наконец сетевой кабель, — вот что бывает иногда за желание перевести все на Wifi).
Первый раз в жизни столкнулся с такой бредовой системой, которая по умолчанию производит рефлеш образа на рутере.
Хотя все делалось строго по мануалу, в итоге рефлеш с диска не сработал, нет не брик — если бы, веб-интерфейс был полностью уничтожен неправильной установкой языка (а точнее походу его НЕ установкой, потому что последние версии прошивки работают иначе с языком, а на диске инсталлятор не был к этому готов), из-за чего ни одна функция не работала и не была прописана в js-скриптах веб-морды, а текста не было вообще. Учит же сетевая судьба делать все руками, но нет, поспешил…
Шаманством с гуглом, бубном и нажатием скрепкой на кнопку reset в течение 60 секунд и двух ребутов привело к режиму восстановления прошивки с нуля, которую я непременно восстановил через tftp на тайном порту (если не изменяет память 69-ый) этого железа.
Но напрасно я радовался, на этом танцы не закончились…
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Comments 7

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

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

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

Reading time 1 min
Views 14K
IT-companies
Эту новость вы узнаете первыми:)
Сегодня мы официально запускаем бесплатный антивирус 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
Comments 145

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

Reading time 3 min
Views 1.4K
Smartphones
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
Comments 46

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

Reading time 1 min
Views 1.2K
Smartphones
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
Comments 48

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

Reading time 1 min
Views 4.2K
Artificial Intelligence
Вчера на конференции 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
Comments 90

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

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

Получаем загранпаспорт через gosuslugi.ru (часть 2)

Reading time 2 min
Views 103K
Legislation in IT
Tutorial
Не так давно я написал топик, в котором описывал первую часть своего опыта по получению паспорта через инновационный портал госуслуг. На днях вожделенный документ был получен, и как и было обещано, я привожу остаток истории. Кроме того, под катом будут собраны наиболее полезные замечания и советы, которые хабрапользователи оставили в комментариях к прошлому топику. Прежде, чем продолжить чтение, настоятельно советую с тем самым прошлым топиком ознакомиться.
Читать дальше →
Total votes 93: ↑86 and ↓7 +79
Comments 95

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

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

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

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

ANGULARJS + REQUIREJS

Reading time 5 min
Views 55K
JavaScript *Angular *
Tutorial
Translation

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

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

Для чего?

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

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

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

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

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

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

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

Написание простого приложения для работы с RESTful API под Android

Reading time 6 min
Views 30K
Development for Android *
Sandbox
Работа с API различных порталов — одна из самых распространенных задач, возникающих при разработке под Android. Казалось бы, ничего сложного — асинхронно посылать HTTP-запросы и отображать ответы, но дьявол, как всегда, кроется в деталях.

Основные антипаттерны:
  • Отправка запроса прямо из кода Activity в основном треде — тут без комментариев, т.к. это приводит к заморозке UI, вследствие чего система может предложить убить приложением;
  • Отправка запроса из кода Activity при помощи AsyncTask — плохо, т.к. если пользователь, к примеру, повернет экран, Activity пересоздастся и запрос придется выполнять заново, что приводит увеличению времени ожидания и количества потребляемого трафика;
  • Отсутствие кэширования — после каждого действия пользователя ему придется ждать полной загрузки данных.

Читать дальше →
Total votes 46: ↑45 and ↓1 +44
Comments 16

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

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

non-ajax

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

Information

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

Specialization

Frontend Developer