Обновить
7
0
Роман Сергеев@Cupper

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

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

Backend без проблем. Чудо или будущее?

Время на прочтение4 мин
Охват и читатели25K
Всем привет!

Друзья, не мне вам рассказывать, да и сами вы знаете о том, как делается backend для серверных/клиент-серверных приложений. В нашем идеальном мире всё начинается с проектирования архитектуры, затем выбираем площадку, затем прикидываем нужное количество машин, как виртуальных, так и нет. Затем происходит сам процесс поднятия архитектуры для разработки/тестирования. Всё готово? Ну поехали писать код, делать первый коммит, обновлять код на сервере из репозитория. Открыли консоль/браузер проверили и поехало. Пока всё просто, а что дальше?
Читать дальше →

ZooKeeper в качестве системы гарантированной доставки для Яндекс.Почты

Время на прочтение8 мин
Охват и читатели36K
Ежедневно Яндекс обрабатывает входящий поток из миллионов писем и файлов. Их количество постоянно и непрерывно увеличивается. При этом уровень входящей нагрузки неравномерный, он сильно зависит от времени суток и дня недели. Кроме того, периодически случаются ботнет-атаки.

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

image

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

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

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

Язык Go для начинающих

Время на прочтение9 мин
Охват и читатели525K
Gopher

Цель этой статьи — рассказать о языке программирования Go (Golang) тем разработчикам, которые смотрят в сторону этого языка, но еще не решились взяться за его изучение. Рассказ будет вестись на примере реального приложения, которое представляет из себя RESTful API веб-сервис.
Читать дальше →

Как сделать MMORPG своими руками. Медленно, сложно, интересно

Время на прочтение4 мин
Охват и читатели33K
Привет, хабрахабр! Меня зовут Егор Курьянович и ты, возможно, помнишь меня по паре интернет-проектов: Кьюби и Идейнику. А быть может, ты даже слышал о других моих начинаниях. Сегодня я хочу рассказать тебе, чем занимался последние пару лет.



Ты ведь любишь игры, не так ли? То, что ты видишь на КДПВ, называется FAR7. Чтобы было немного понятнее, скажу, что молодежь сравнивает её с Космическими Рейнджерами, те кто постарше, вспоминают StarControl2, а совсем уже хардкорные геймеры постоянно твердят об Elite. Сойдемся на том, что это браузерный космосим. В игре вы можете путешествовать между звездными системами, торговать, воевать и выполнять различные миссии.

Вся игра написана мною с нуля в одиночку и может быть использована как демо, для демонстрации возможностей стека HTML5. Все подробности о технологиях и трудностях разработки инди-проектов ждут вас под катом.
Читать дальше →

Охотники на волков с Wall Street. Часть 1

Время на прочтение5 мин
Охват и читатели43K

Изображение: Chris Liverani — Unsplash

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

Интерпретация во время компиляции, или Альтернативное понимание лямбд в C++11

Время на прочтение22 мин
Охват и читатели33K
Yo dawg, I heard you like programming. So we put a language in you language, so you can program while you programНа Хабре недавно проскочила ещё одна статья про вычисления на шаблонах C++ от HurrTheDurr. В комментариях к ней лично я увидел вызов:

> С каждым новым релизом количество способов нетривиально вывихнуть себе мозг при помощи С++ продолжает увеличиваться)
> > Особенно, если не менять подход к реализации игрового поля и продолжать пытаться все вычисления выполнять не над константами, а над типами.


А так ли сложно будет написать универсальный вычислитель на типах, более удобный для программирования, чем клеточный автомат? Как оказалось, несложно; я в 30 раз больше времени потратил на эту статью, чем на написание и отладку собственно кода вычислителя.

Чуть раньше AveNat опубликовала введение в лямбда-исчисление в двух частях, так что вдохновение пришло мгновенно. Хотелось, чтобы можно было (образно) писать так:
#include <iostream>

#include <LC/kernel.h>
#include <LC/church_numerals.h>

int main()
{
    // Представление натуральных чисел в виде лямбда-абстракций
    typedef ChurchEncode<2> Two;    // 2 = λfx.f (f x)
    typedef ChurchEncode<3> Three;  // 3 = λfx.f (f (f x))

    // * = λab.λf.a (b f)
    typedef Lambda<'a', Lambda<'b', Lambda<'f',
                Apply<Var<'a'>, Apply<Var<'b'>, Var<'f'> > >
        > > > Multiply;

    // Вычисление (* 2 3)
    typedef Eval<Apply<Apply<Multiply, Two>, Three>> Output;

    // Переход обратно от лямбда-абстракций к натуральным числам
    typedef ChurchDecode<Output> Result;

    std::cout << Result::value;
}

А на выходе получать такое:
ilammy@ferocity ~ $ gcc cpp.cpp
ilammy@ferocity ~ $ ./a.out
6

Статья получилась несколько великоватой, так как мне хотелось рассказать обо всех интересных штуках, которые здесь используются. И ещё она требует базового набора знаний о лямбда-исчислении. Приведённых выше обзоров, среднего знания C++ (с шаблонами), и здравого смысла должно быть достаточно для понимания содержимого.

Под катом находится очередное прокомментированное конструктивное доказательство Тьюринг-полноты шаблонов C++ в виде compile-time интерпретатора бестипового лямбда-исчисления (плюс печеньки в виде макросов и рекурсии).
Читать дальше →

Сравнительное тестирование SDHC карт памяти стандарта UHS-I объемом 32 ГБ

Время на прочтение11 мин
Охват и читатели241K
Покупка практически любого современного девайса, будь то смартфон, планшет, видеорегистратор, цифровой фотоаппарат или цифровая видеокамера автоматически влечет за собой приобретение карты памяти. Множество производителей предлагает широкий ассортимент карт различающихся по объему, классам, скоростям чтения/записи и цене. И тут пользователь сталкивается с муками выбора подходящей карты памяти. Особенно если в сферу интересов входит съемка видео в формате Full HD или высокоскоростная серийная съемка многопиксельной камерой. Заполучив в свое распоряжение 11 различных SDHC карт памяти стандарта UHS-I объемом 32 ГБ, я постараюсь пролить свет на расстановку сил и определить действительно лучшие карты памяти по результатам, как синтетических тестов, так и реальных задач.

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

Как «не программист» игру писал

Время на прочтение7 мин
Охват и читатели90K
Всем привет. Я хочу, чтобы этот пост послужил мотивацией для всех начинающих игроделов, да и не только для них. Статья не содержит сухой научной информации, которая так свойственна настоящим программистам. Хочу поделиться с вами своей историей, на мой взгляд, довольно увлекательной.

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

Веб-приложение на C++, или укрощение демона FastCGI

Время на прочтение8 мин
Охват и читатели27K
В настоящее время, благодаря таким инструментам как NodeJS, создание веб-приложения — сущий пустяк. Скачал бинарник, сваял js в 5 строчек кода и можно хвастаться. А если подключить express и добавить ещё 5 строчек, то получим полноценное веб-приложение с роутингом, шаблонами, сессиями и другими прелестями. Так просто, что даже скучно. И стало мне интересно: как обстоят дела у моего старого знакомого С++, с которым уже 5 лет не виделся. В своё время прельстил меня ActionScript и прочий JavaScript, а о добром друге, который не раз выручал, совсем позабыл. В свете недавних статей о Configurable Omnipotent Custom Applications Integrated Network Engine (сокращено Cocaine), попался мне на глаза проект под названием Fastcgi Daemon, на основе которого функционирует HTTP-интерфейс Cocaine. И так, знакомьтесь
Читать дальше →

Руководство новичка по эксплуатации компоновщика

Время на прочтение32 мин
Охват и читатели230K
David Drysdale, Beginner's guide to linkers (http://www.lurklurk.org/linkers/linkers.html).

Цель данной статьи — помочь C и C++ программистам понять сущность того, чем занимается компоновщик. За последние несколько лет я объяснил это большому количеству коллег и наконец решил, что настало время перенести этот материал на бумагу, чтоб он стал более доступным (и чтоб мне не пришлось объяснять его снова). [Обновление в марте 2009: добавлена дополнительная информация об особенностях компоновки в Windows, а также более подробно расписано правило одного определения (one-definition rule).

Типичным примером того, почему ко мне обращались за помощью, служит следующая ошибка компоновки:
g++ -o test1 test1a.o test1b.o
test1a.o(.text+0x18): In function `main':
: undefined reference to `findmax(int, int)'
collect2: ld returned 1 exit status

Если Ваша реакция — 'наверняка забыл extern «C»', то Вы скорее всего знаете всё, что приведено в этой статье.
Читать дальше →

Bitcoin: Децентрализованная электронная денежная система

Время на прочтение12 мин
Охват и читатели50K
Предлагаю вниманию сообщества вольный перевод оригинальной статьи Сатоси Накамото «Bitcoin: A Peer-to-Peer Electronic Cash System».

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

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

Как мы делали домашнего робота

Время на прочтение4 мин
Охват и читатели55K
Человечество давно мечтает о домашних роботах. За последние сто лет образ домашнего робота сформирован в фантастических фильмах и книгах: чаще всего это антропоморфное устройство с головой, руками и ногами. Такой робот всегда готов приготовить и принести хозяину чашечку кофе, подмести пол, протереть окно и выполнить другую домашнюю работу. А еще домашние роботы из фантастики всегда могут поговорить с хозяином. Не просто выполнять команды, а быть секретарем, помощником, партнером или даже другом!

image

Когда мы с друзьями решили сделать своего домашнего робота, то тоже сначала смотрели на андроидов. Хотелось построить этакого дворецкого, чтобы и завтрак мог приготовить, и ковер пропылесосить, и гостей встретить. К сожалению, изучив рынок, мы поняли, что сегодня такого робота сделать нельзя. Вернее сделать-то можно, но он будет стоить как новая иномарка и требовать регулярного сервисного обслуживания, при этом адаптация такого робота под каждую конкретную кухню будет не проще, чем пересобрать Ubuntu на Z80. Понятно, что желающих купить такого робота будет не очень много.

И тогда пришло понимание, что домашнему роботу на первых порах совсем не обязательно ходить по дому. Вдохновением для нас стал Jarvis (Джарвис) — герой фильма «Железный человек». Это дворецкий, искусственный интеллект, не имеющий тела, но способный управлять различными устройствами в доме главного героя. В результате у нас получился Cubic — домашний робот, который живет дома и может полноценно (более или менее) разговаривать с его обитателями, а также управлять различными системами типа «умный дом».

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

Разбираем внешние аккумуляторы Gmini

Время на прочтение5 мин
Охват и читатели77K
Месяц назад мне написали из компании Gmini с предложением попробовать новые модели внешних аккумуляторов. Я сначала отказался, потому что не было понятно – о чем, собственно, писать? Если не покупать китайские безымянные шедевры на eBay, столкнуться с чем-то заведомо некачественным трудно. По крайней мере мне за три года эксплуатации разных моделей внешних батарей сделать это не удалось. А в остальном надо просто исходить из собственных потребностей по емкости батареи, силе тока при зарядке и дополнительным возможностям. Последних может быть довольно много – от батарейки и ридера для флэш-карт до встроенного мобильного роутера.



Но в Gmini заявили, что их внешние аккумуляторы отличаются от аналогов не только дизайном, но и особо надежными промышленными батареями Samsung внутри. Услышав слово «внутри», я тут же подумал, что, наверное, здорово будет не только попробовать продукцию марки в работе, но и разобрать на предмет выявления подлинной емкости аккумуляторов и надежности конструкции. Сказано – сделано. И три модели Gmini были подвергнуты разбору до основания.
Читать дальше →

Python Meetup: январская встреча

Время на прочтение1 мин
Охват и читатели7.1K
image

Великий и могучий Python, неформальная обстановка, интересные доклады и куча единомышленников вокруг – все это происходит в Минске традиционно в последнюю пятницу каждого месяца. В этой публикации можно найти видео докладов январской встречи: "Python для анализа данных" от Романа Иманкулова и "Очередной скучный доклад про логгирование" от Стаса Рудакова. Видео и ссылки на slideshare смотрите под катом.
Читать дальше →

CRTP. Static polymorphism. MixIn. Размышления на тему

Время на прочтение9 мин
Охват и читатели43K
В этом посте я поразмышляю на тему статического полиморфизма в С++, архитектурных решениях, строящихся на его основе. Рассмотрю интересную идиому — CRTP. Приведу несколько примеров ее использования. В частности, рассмотрю концепцию MixIn классов. Пишу, чтобы систематизировать собственные знания, но может быть и вы сможете найти что-то интересное для себя.
Читать дальше →

Тонкости анализа исходного кода C/C++ с помощью cppcheck

Время на прочтение27 мин
Охват и читатели70K
В предыдущем посте были рассмотрены основные возможности статического анализатора с открытым исходным кодом cppcheck. Он показывает себя не с худшей стороны даже при базовых настройках, но сегодня речь пойдёт о том, как выжать из этого анализатора максимум полезного.

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

Пишем, собираем и запускаем HelloWorld для Android в блокноте

Время на прочтение10 мин
Охват и читатели133K


Когда я начал изучать Android, захотелось полностью написать и скомпилировать Android-приложение вручную — без использования IDE. Однако эта задача оказалась непростой и заняла у меня довольно много времени. Но как оказалось — такой подход принёс большую пользу и прояснил многие тонкости, которые скрывают IDE.

По-сути эта статья является переводом и переработкой статьи Building Android programs on the command line под современные на данный момент JDK (7) и Android SDK (API level 19). Кроме того, я многое упростил и добавил кое-что от себя.

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.
Читать дальше →

Испытания boost::lockfree на скорость и задержку передачи сообщения

Время на прочтение11 мин
Охват и читатели24K
Не так давно в boost-1.53 появился целый новый раздел — lockfree реализующий неблокирующие очереди и стек.
Я последние несколько лет работал с так называемыми неблокируюшими алгоритмами (lock-free data structures), мы их сами писали, сами тестировали, сами использовали и втайне ими гордились. Естественно, у нас немедленно встал вопрос, переходить ли с самодельных библиотек на boost, и если переходить, то когда?
Вот тогда у меня и возникла в первый раз идея применить к boost::lockfree кое-какие из методик которыми мы испытывали собственный код. К счастью, сам алгоритм нам тестировать не придется и можно сосредоточиться на измерении производительности.
Я постараюсь сделать статью интересной для всех. Тем кто еще не сталкивался с подобными задачами будет полезно посмотреть на то что такие алгоритмы способны, а главное, где и как их стоит или не стоит использовать. Для тех кто имеет опыт разработки неблокирующих очередей возможно будет интересно сравнить данные количественных измерений. Я сам по крайней мере таких публикаций еще не видел.
Читать дальше →

Отказываемся от шаблонных шаблонных параметров

Время на прочтение2 мин
Охват и читатели17K
Использовать шаблонные шаблонные параметры С++ довольно сложно. Хочу продемонстрировать силу boost::mpl и показать трюк, позволяющий описывать шаблоны, полностью отказавшись от шаблонных шаблонных параметров.
Продемонстрирую проблему. Есть класс, принимающий тип объекта и тип контейнера для этого объекта.
template <typename T, typename Container>
struct A
{
  typedef Container<T> type;
};

Так писать нельзя, вы должны использовать шаблонные шаблонные параметры, чтобы указать, что Container сам по себе является шаблоном.
Читать дальше →

Модели акторов 40 лет

Время на прочтение9 мин
Охват и читатели23K
Высоконагруженные системы, построенные по модели акторов – это тренд сегодняшнего времени. Вот далеко неполный перечень статей на хабре, в которых, в той или иной степени, упоминается данная модель или одна из ее реализаций, например,1, 2, 3, 3, 4, 5, 6, 7. Есть хорошая статья в википедии, рассказывающая про акторы. К сожалению, после ее прочтения, у меня осталось много вопросов, ответы на которые я смог найти только в первоисточниках. Результаты этого обзора я и хочу представить Вашему вниманию.
Читать дальше →

Информация

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