Свои потоки ввода-вывода в C++ с помощью std::streambuf

Автор: admin от 15-04-2017, 21:00, посмотрело: 39

В статье на примерах объясняется, как реализовать поддержку потокового ввода-вывода из стандартной библиотеки () для своих классов.
В тексте статьи будет часто встречаться слово «поток», что означает именно поток ввода-вывода ((i/o)stream), но не поток выполнения (thread). Потоки выполнения в статье не рассматриваются.


Введение


Потоки из стандартной библиотеки — мощный инструмент. Аргументом функции можно указать поток, и это обеспечивает ее универсальность: она может работать как со стандартными файлами (fstream) и консолью (cin/cout), так и с сокетами и COM-портами, если найти соответствующую библиотеку.

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

Категория: Программирование

 

7 важнейших изменений в гейм-дизайне с эры Nintendo 64

Автор: admin от 15-04-2017, 20:00, посмотрело: 33


Старое снова становится модным. Достаточно посмотреть, например, на игру Yooka-Laylee компании Playtonic Games: ностальгический 3D-платформер в стиле Banjo-Kazooie и Donkey Kong 64. Playtonic была готова к этому проекту — многие сотрудники команды раньше работали в Rare, создававшую классику 1990-х.

С помощью Yooka-Laylee команда Platonic пытается показать, как 3D-платформер в классическом стиле может выглядеть на современном игровом рынке. После успешной кампании на Kickstarter Yooka-Laylee будет выпущена в апреле этого года.

Не нужно говорить, что со времён Nintendo 64 в играх изменилось многое. Мы попросили сотрудников Playtonic рассказать нам о том, как технологические усовершенствования повлияли на различные области разработки игр, и что они значили для дизайнеров, художников, композиторов и директоров, участвующих в процессе разработки.

Категория: Программирование » Веб-разработка

 

Генератор проектов

Автор: admin от 15-04-2017, 01:15, посмотрело: 99

В данной статье речь пойдет о специфическом программном продукте, предназначенном для разработки больших программно-информационных комплексов. Этот продукт называется «Генератор проектов», и в его основе лежит инструментальный подход к программированию, когда сам процесс разработки программных систем рассматривается как объект автоматизации. Эта тема была довольно модной где-то в 70-80-х годах прошлого века, но на наш взгляд, такой подход не устарел и сегодня. По крайней мере, нашему творческому коллективу долгие годы удавалось разрабатывать промышленные автоматизированные системы различного назначения с помощью собственного инструментария.

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

Категория: Программирование

 

Похоже, я не предприниматель

Автор: admin от 14-04-2017, 23:25, посмотрело: 43

Для того, чтобы это понять, мне потребовалось четыре миллиона рублей (половина из которых — мои) и четыре года.

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

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

Похоже, я не предприниматель

Категория: Программирование » Веб-разработка

 

Отчет и материалы SPA meetup'а 8 апреля 2017

Автор: admin от 14-04-2017, 20:40, посмотрело: 39

Отчет и материалы SPA meetup'а 8 апреля 2017

В прошедшую субботу в офисе Avito прошел SPA Meetup. Это митап-сателит Moscow.js, ориентированный на фронтенд-разработчиков, которым интересна тема веб-приложений (Single Page Application), и сочувствующих им. Это уже третья встреча, которая получилась весьма насыщенной: 3 доклада, 2 блица, свободный микрофон, панельная дискуссия и, конечно же, живое общение. В этом посте мы немного расскажем о том, как это было, и поделимся видеозаписями докладов.

Категория: Программирование » Веб-разработка

 

Flow + tcomb = типизированный JavaScript

Автор: admin от 14-04-2017, 17:20, посмотрело: 34

Рано или поздно, все приходят к выводу, что нам нужна строгая типизация. Почему? Потому что проект разрастается, обрастает if-ами; функциональное программирование — всё функция — неправда, мне только что консоль сказала "undefined is not a function". Вот эти проблемы появляются всё чаще-чаще, становится сложнее отслеживать, возникает вопрос — давайте строго типизировать, хотя бы на этапе написания кода будет подсказывать.


Знаете рекламу: TypeScript — это надмножество javascript-а. Маркетинговый BS. Мы честно попытались, грубо говоря, переименовать проект из JS в TS — оно не заработало. Оно не компилируется, потому что некоторые вещи, с точки зрения TypeScript-а являются некорректными. Это не означает, что TypeScript — плохой язык, но продвигаться на идее надмножества, и подводить меня так, TypeScript — я не ожидал.


Как только вы вычеркиваете TypeScript, остаётся ровно одна альтернатива — Flow. Что я могу сказать про Flow? Flow мегакрутой тем, что заставит вас выучить систему типов OCaml, хотите вы того, или нет. Flow написан на OCaml. У него гораздо строже и гораздо мощнее вывод типов, чем у TypeScript-а. Вы можете переписывать проект на Flow частично. Количество бонусов, которые вам приносит Flow, сложно описать. Но, как всегда, есть парочка "но".

Категория: Программирование » Веб-разработка

 

Статический анализ -> уязвимость -> профит

Автор: admin от 14-04-2017, 11:35, посмотрело: 30

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

Категория: Программирование

 

11 фокусов с Ruby, о которых вы не подозревали

Автор: admin от 14-04-2017, 07:50, посмотрело: 23

— Оригинал: Jesus Castello

1. Глубокое копирование


Когда вы копируете объект, который содержит другие объекты, например Array, в копии оказываются ссылки на оригинальные объекты.


Вот, смотрите:


food = %w( bread milk orange )
food.map(&:object_id)       # [35401044, 35401020, 35400996]
food.clone.map(&:object_id) # [35401044, 35401020, 35400996]

Используя же класс Marshal, который в обычной жизни предназначен для сериализации, можно сделать «глубокую копию», то есть скопировать и внутренние объекты тоже.


def deep_copy(obj)
  Marshal.load(Marshal.dump(obj))
end
deep_copy(food).map(&:object_id) # [42975648, 42975624, 42975612]

Категория: Программирование » Веб-разработка

 

Архитектура модульных React + Redux приложений

Автор: admin от 14-04-2017, 07:45, посмотрело: 32

Архитектура модульных React + Redux приложений
Большинство разработчиков начинает знакомство с Redux с Todo List Project. Это приложение имеет следующую структуру:
actions/
  todos.js
components/
  todos/
    TodoItem.js
    ...
constants/
  actionTypes.js
reducers/
  todos.js
index.js
rootReducer.js

На первый взгляд такая организация кода кажется логичной, ведь она напоминает стандартные соглашения многих backend MVC-фреймворков:
app/
  controllers/
  models/
  views/

На самом деле, это неудачный выбор как для MVC, так и для React+Redux приложений по следующим причинам:

  • С ростом приложения следить за взаимосвязью между компонентами, экшнами и редюсерами становится крайне сложно

  • При изменении экшна или компонента с большой вероятностью потребуется внести изменения и в редюсер. Если количество файлов велико, скролить IDE вверх/вниз не удобно

  • Такая структура потворствует копипасте в редюсерах


  • Не удивительно, что многие авторы(раз, два, три) советуют структурировать приложение по «функциональности» (by feature).

    Категория: Программирование » Веб-разработка

     

    Методология VR-разработки

    Автор: admin от 14-04-2017, 07:45, посмотрело: 40

    Данная статья является последней в цикле про качественную разработку VR-проектов. Ранее мы уже изучили принципы подбора контента для наших проектов в статье «VR Design: содержимое сцен». Ссылки на другие материалы можно найти в обзорной статье.

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

    Как соответствовать таким требованиям, чтобы разрабатывать хорошие VR-проекты, мы узнаем в этой статье.

    После того, как мы пробежались по основным особенностям VR-разработки в этой серии статей, рассмотрим последнее, самое важное для тебя, как для разработчика, средство: итеративный процесс разработки.

    Также мы разберем, почему ты не всегда можешь доверять себе и что означает понятие «VR legs».

    You have to be super experimental and be willing to accept that a lot of the old ways of doing things just do not work at all anymore.

    Joel Green из Cloudhead Games, Группа разработки The Gallery


    Итеративный процесс разработки



    Методология VR-разработки

    Категория: Программирование » Веб-разработка