Giter Site home page Giter Site logo

ricejasonf / cppnow17_nbdl Goto Github PK

View Code? Open in Web Editor NEW
4.0 0.0 1.0 520 KB

Presentation Media for Nbdl using Nbdl

Home Page: https://ricejasonf.github.io/cppnow17_nbdl/

CMake 0.53% Makefile 0.12% C++ 6.36% JavaScript 86.08% CSS 0.40% HTML 6.52%

cppnow17_nbdl's Introduction

Nbdl Presentation for CppNow2017

Below is an outline sort of correlating to slides Provide code samples in slides to show purpose

Build the Web App

make image_web_develop && make web_develop

... then in the docker container

root@f2b146e7bad9:/opt/build# make code_snips && make hot_dev

This will run a local http server on port 8080 with the built web app. (It takes about a minute to compile right now)

The bundled html file is in /bundle.html

Thanks for checking it out!

Purpose of Talk

  • Metaprogramming with Boost.Hana (with a focus on Nbdl)
  • Topics
    • Empty Interface
    • Purpose of Nbdl
    • Concepts
    • Abstraction
    • Store
    • Promises
    • Rendering
    • Deployment

Purpose of Nbdl

  • Manage state
  • Communicate changes in state
    • UI Components
    • Server
    • Other Clients
  • Provide implementations for common use cases

Concepts

  • Producer
    • send_upstream_message
  • Consumer
    • send_downstream_message
  • Store
    • Holds state for immediate access
    • match
    • apply_action
  • Entity
    • Implements reflection on struct members as a sequence
  • BindableSequence
    • bind_sequence
  • BindableMap
    • bind_map
    • Keys must be convertible to char const*
  • BindableVariant
    • bind_variant
    • Allows for serialization of variant types

Boost.Hana's Facilities for Abstraction

  • hana::tag_of
  • Template specialization
    • store_impl<hana::map_tag>
    • store_impl<nbdl::variant_tag>
  • Concept Implementation
    • hana::default_ with nbdl::match_impl
    • nbdl::Store
  • Hana Concepts
    • Foldable
      • unpack_impl<nbdl::entity_tag>
    • Iterable
      • at_impl<nbdl::entity_tag>

Store

  • match
    • key
    • identity
  • match_path

Promises

  • run_async
  • detail::promise_join
  • run_sync
  • path_promise

Rendering

  • Html Dom
    • Components
    • Sample of Immutable TextNode
  • Metaprogrammatically Generate UIViews (hopefully)
  • Generic Document Structure

Deployment

  • Building with Docker
  • Deploying with Docker

Conclusion

  • ??

cppnow17_nbdl's People

Contributors

clysmy avatar ricejasonf avatar

Stargazers

 avatar  avatar  avatar  avatar

Forkers

clysmy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.