Pull to refresh
0
0
Антон @fregate

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

Send message

Кластерный сервис на Эрланге: от идеи до deb-пакета

Reading time13 min
Views14K

Задача


Нужно написать настоящий сервис на эрланге, который будет работать в кластере. Кроме того, нужно максимально упростить жизнь тем, кто будет обслуживать сервис.
Требования:
  • У сервиса будет RESTful интерфейс (это модно и современно)
  • основные настройки сервиса должны быть вынесены в маленький файл с понятным синтаксисом
  • сервис должен писать опциональный access-лог
  • сервис должен запускаться через upstart

Для простоты сервис будет представлять собой счетчик, который каждому клиенту выдает увеличивающееся с каждым запросом на 1 целое число (уникальное до перезапуска счетчика).

Технологии


Выберем все самое модное и современное:

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

Полевые испытания астротрекера

Reading time4 min
Views100K
В предыдущем посте я рассказал как можно сделать астротрекер за два вечера. Настало время проверить его работу и сделать первые выводы.

Вот пример фото, сделанного с его помощью:


Ну а теперь подробности

Как мы перестали бояться Огра и начали делать на нем игру

Reading time7 min
Views27K

Как совершать ошибки. 2011г


Как следует из названия, в далеком 2011 году мы совершили третью ошибку, выбрав в качестве основы для игрового движка Ogre3D. Третью, потому что первой ошибкой было решение делать игру, а второй — делать ее на своем движке. К счастью, это были те самые ошибки, с которых начинается увлекательная история. Это приключение, в котором мы прошли почти весь путь развития игровых движков, как зародыш проходит все этапы эволюции.
Конечно же, как и все начинающие разработчики, мы слабо представляли себе, что и зачем мы собираемся делать. Нами двигало желание рассказать свою историю, создать свой вымышленный мир, свою вселенную, и на волне популярности ММО, естественным позывом было сделать свою ММО с блекджеком и всем причитающимся. Позыв случился еще в 2010, а к 2011 была готова первая версия диздока. Земля же была безвидна и пуста, и тьма над бездною, и Дух Фоллаута витал над нами.



Мы шли путем проб и ошибок, собирая по пути все косяки и грабли. Как и большинство проектов, мы начали с самого простого. В плане графики (а я буду рассказывать только о графической части) первая версия движка позволяла использовать только диффузную карту и стенсильные тени.
Читать дальше →

Как заработать денег на инди игре

Reading time14 min
Views107K
Перед тем как начать писать этот доклад я прочел больше 115 постмортемов и историй инди разработчиков. Что я понял? Во-первых, что мой английский отстой. Во-вторых что инди очень разные. Очень. И чтобы каталогизировать их понадобилась куча времени.

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


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

Астротрекер за два вечера

Reading time5 min
Views174K
После прочтения статьи про любительскую астрономию я загорелся идеей поснимать звезды с помощью обычной камеры без телескопа. Статья подсказала идею про астротрекеры — устройства для компенсации вращения звездного неба на длительных выдержках.



Погуглив, я обнаружил что их легко можно купить. Но вот цена кусалась. Например, самый дешевый Vixin Ploarie Star Tracker стоит от $400 + доставка. Да и грузоподъемность его вызывала сомнения. В перспективе я планировал от широкоугольного объектива перейти и к 70-200/2.8 который вместе с камерой весят под полтора кг.

В процессе поиска оказалось что люди делают себе так называемые Barn Door трекеры: раз, два и другие. Попросту говоря — дверь от сарая. Принцип действия прост — две доски соединенных дверным навесом. Одна из них поворачивается с такой же скоростью как и земля вокруг своей оси. Ось навеса направляетя на Полярную звезду. Нижняя доска ставится на штатив, а на подвижную половинку ставится штативная голова с камерой.

Под катом много картинок.
Читать дальше →

Шпаргалка по HTTP-библиотекам для С++

Reading time12 min
Views113K
К сожалению, в стандартной библиотеке языка С++ нет никаких средств для работы с протоколом HTTP. Возможно, в будущем появятся, но на данный момент каждый раз при необходимости дёрнуть какой-нибудь REST-сервис, пропарсить веб-страничку, написать простенького бота или краулера приходится задаваться вопросами «А какую же библиотеку взять, так чтобы побыстрее и попроще?». Иногда проект уже использует какой-то фреймворк (а иногда даже несколько) и тогда приходится вспоминать «А как же сделать HTTP-запрос имеющимися средствами?». Чтобы не путаться я решил написать для себя шпаргалку с примерами HTTP-запросов на С++ с применением разных библиотек. А самое удобное место для хранения подобных шпаргалок — Хабр: и сам не потеряешь, и другим может пригодиться.

Будут рассмотрены:
  • WinInet
  • WinHttp
  • Casablanca
  • Qt
  • POCO
  • wxWidgets
  • Boost.Asio
  • libcurl
  • neon
  • .NET (С++/CLI)
  • IXMLHTTPRequest
  • HappyHttp
  • cpp-netlib


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

10 главных выводов, которые я сделал за Год Изучения Продуктивности

Reading time9 min
Views193K
Предисловие переводчика: В мире написано столько книг по личной эффективности и тайм-менеджменту, что берясь за этот перевод я безусловно задавал себе вопрос: «А есть ли здесь вообще что-то новое, ради чего эту статью стоит переводить, и главное читать»? Сначала мне казалось, что я ответил на этот вопрос «да», однако реальность оказалась несколько сложнее. 

Сейчас я думаю, что сказать что-то новое человеку, который прочитал хотя бы 2-3 книги по тайм-менеджменту и личной эффективности практически невозможно. Однако существует огромная пропасть между тему, что люди знают, и тем, что люди делают. Поэтому если у вас уже есть какой-то багаж знаний по личной эффективности, я советую вместо вопроса «это что-то, чего я не знаю?» задавать другие вопросы:

1. Согласен ли я с написанным?
2. Если да, поступаю ли я так?
3. Если нет, почему и что я могу сделать чтобы начать поступать правильно? 

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

Должен сказать, что я с огромным удовольствиям ходил по ссылкам в этой статье, особенно по тем, которые описывают эксперименты Криса (такие как переключение между 90-часовой и 20-часовой рабочими неделями). Поэтому я принял решение сохранить все эти ссылки в переведенной статье.

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

В качестве последнего пожелания – это довольно длинная статья, поэтому читайте продуктивно: не переключайтесь между задачами в процессе чтения; делайте перерывы если ощущаете усталость и потерю концентрации; записывайте полезные мысли, не надеясь на память.

Приятного чтения!
Читать дальше →

Делаем многопользовательскую игрy на Go и WebSocket'ах

Reading time9 min
Views49K
golang gopher
Продолжаем знакомство с языком программирования Go (golang). В прошлый раз мы посмотрели основные конструкции языка. В этой статье я хочу показать использование горутин и каналов. И, конечно, продемонстрировать все это на реальном приложении, в данноcм случае многопользовательской игре. Рассматривать будем не всю игру, а только ту часть бэкэнда, которая отвечает за сетевое взаимодействие между игроками посредством WebSoket.

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

Логирование сообщений с Easylogging++

Reading time7 min
Views22K

Система логирования — незаменимый инструмент для протоколирования работы приложений. Для тех, кто не хочет реализовывать его самостоятельно, на C++ уже существует бессчётное количество готовых библиотек (Log4cplus, Apache log4cxx, Boost.Log и тд.), однако Easylogging++ отличается простотой использования и компактностью, не требует сторонних библиотек или инсталляции. Весь её код содержится в одном единственном заголовочном файле, который просто необходимо включить в код приложения.

Данная статья предлагает краткий обзор функционала Easylogging++ и примеры использования этой библиотеки.
Читать дальше →

Стековые языки программирования

Reading time6 min
Views18K
concatenative
Функциональное программирование снова в моде. В зависимости от того, предпочитаете ли вы классику или хардкор, страдаете от навязанных промышленных стандартов или вы просто хипстер, вашим любимым предпочтением может быть Scala, Haskell, F# или даже старый добрый Lisp. Такие сочетания слов, как функция высшего порядка, отсутствие побочных эффектов, и даже монады, ласкают слух всех «неокрепших юных умов», будь-то ребят из JetBrains или студента, впервые увидевшего SICP.

Но существует и другое программирование, в буквальном смысле даже ещё более функциональное, в основе своей имеющее скорее не лямбда-исчисление, а композицию функций. И я хочу о нём немного рассказать.
О конкатентивном программировании и стековых языках

DIY: Универсальный Ambilight для домашней мультимедиа системы — Атмосвет

Reading time8 min
Views99K
Добрый день.

Для своей первой статьи я выбрал одну из самых успешных своих поделок: HDMI-passthrough аналог Ambilight от Philips, далее я будут называть эту композицию «Атмосвет».

Введение

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

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

Алгоритм решения задачи о рюкзаке ( версия 2, исправленная)

Reading time5 min
Views136K
Ниже приведен алгоритм точного решения целочисленной задачи о рюкзаке. Предлагаемый алгоритм требует меньше вычислительных ресурсов и возможно несколько проще алгоритма динамического программирования (ДП).

Причина побудившая автора к публикации


Первая версия описания алгоритма было послана мною в институт математики им. С. Л. Соболева Сибирского отделения РАН, откуда был прислан ответ что указанный алгоритм известен давно. Цитирую:
Одно из его первых упоминаний в книге Кереллера Nemhauser, Ullman, Discrete dynamic programming and capital allocation, Management Science, 15 p. 494-505, 1969.
Тем не менее я решил ознакомить сообщество с алгоритмом, т.к. в известных мне учебниках по дискретной математике я его не обнаружил (возможно плохо искал). В первой версии алгоритма была ошибка, указанная мне пользователем wataru. За это ему большое спасибо. Я постарался эту ошибку устранить. До алгоритма я дошел самостоятельно, так что надеюсь ничьих прав не нарушаю. Возможно кому нибудь описание будет интересно и пригодится.
Читать дальше →

Бесплатный софт для проектирования — авторам инновационных и полезных проектов

Reading time2 min
Views14K


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

Перевод учебника по алгоритмам

Reading time1 min
Views167K


Рад сообщить, что вышел перевод отличнейшего учебника Дасгупты, Пападимитриу, Вазирани «Алгоритмы», над которым я работал последние несколько лет. В книге многие алгоритмы объяснены гораздо короче и проще, чем в других учебниках: с одной стороны, без излишнего формализа, с другой — без потери математической строгости. Откройте книгу на каком-нибудь известном вам алгоритме и убедитесь в этом. =)

В общем, угощайтесь: печатный вариант перевода, электронный вариант перевода (PDF), печатный вариант оригинала, электронный вариант оригинала (PDF).
Читать дальше →

Бесплатная книга «Game Programming Patterns» от программиста Electronic Arts Боба Найстрома

Reading time1 min
Views85K
Боб Найстром, программист, проработавший восемь лет в компании Electronic Arts, закончил работу над книгой «Game Programming Patterns». Она доступна бесплатно на сайте gameprogrammingpatterns.com. Писать книгу Боб Найстром начал четыре года назад. Большинство книг, посвящённых программированию игр, говорит он во введении, либо подробно раскрывают какой-то из аспектов создания игры — физический движок, графику, искусственный интеллект, либо описывают процесс создания игры в определённом жанре от начала до конца. Ему очень не хватало книги, рассказывающей о решении типовых задач, возникающих перед программистом, книги достаточно универсальной, не привязанной к жанрам или конкретным подсистемам игр. И поэтому он решил написать такую книгу сам.
Читать дальше →

Игра про безумных учёных-гиков и немного фееричная история локализации

Reading time6 min
Views61K
Это самая офигенная и позитивная игра про учёных, которую мы видели. Этот процесс будет интересен как тем, кого радует айтишный Game Development, так и тем, кто любит истории длинных проектов с сюрпризами.



Итак, на входе были правила на английском, написанные в духе математического минимализма, тексты карт и прототипы. Всё это появилось ещё в 2011-м от автора Дональда Вакарино. Прототипы выглядели вот так: он надёргал клипартов, чтобы пояснить свою мысль, и прописал параметры.


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

Signed Distance Field или как сделать из растра вектор

Reading time12 min
Views61K
Речь сегодня пойдёт о генерации изображений с картой расстояний (Signed Distance Field). Данный вид изображений примечателен тем, что фактически позволяет получить «векторную» графику на видеоускорителе, причём даром. Одной из первых данный метод растеризации предложила компания Valve в игре Team Fortress 2 для масштабируемых декалей в 2007 году, но до сих пор он не пользуется особой популярностью, хотя позволяет рендерить прекрасного качества шрифты, используя текстуру всего 256х256 точек. Данный метод прекрасно подходит для современных экранов высокой чёткости и позволяет серьёзно сэкономить на текстурах в играх, он не требователен к железу и прекрасно работает на смартфонах.



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

Как же создавать такие изображения? Очень просто, ImageMagick позволяет сделать это одной командой:

convert in.png -filter Jinc -resize 400% -threshold 30% \( +clone -negate -morphology Distance Euclidean -level 50%,-50% \) -morphology Distance Euclidean -compose Plus -composite -level 45%,55% -resize 25% out.png

На этом можно было бы поставить точку, но так полноценного топика не получится. Что ж, под катом — описание быстрого алгоритма расчёта SDF, пример на C++ и немного шейдеров для OpenGL.
Читать дальше →

Git и Visual Studio: как правильно приготовить

Reading time3 min
Views161K
Некоторое время назад мы анонсировали поддержку Git в Visual Studio и TFS. Для того, чтобы научиться правильно готовить все это, я сам прошел весь путь и хочу рассказать вам о нем. Ниже — о том, как использовать Git в VS.
Читать дальше →

C++11 и 64-битные ошибки

Reading time11 min
Views35K
CryEngine 3 SDK and PVS-Studio
Мы решили сделать небольшую паузу в тематике статического анализа кода. Ведь блог C++ читают и те, кто пока еще не использует эту технологию. А между тем в мире C++ происходят явления, которые оказывают влияния на такую «устоявщуюся» тему, как 64-битный мир. Речь идет о том как стандарт C++11 влияет и помогает (если есть чем) в разработке корректных 64-битных программ. Сегодняшняя статья как раз об этом.
Читать дальше →

Information

Rating
Does not participate
Location
Новосибирская обл., Россия
Registered
Activity