Biicode OpenExpoDay

Post on 15-Jan-2015

131 views 2 download

description

 

Transcript of Biicode OpenExpoDay

Francisco Fernández Castaño

@fcofdezc

www.biicode.com

Multiple Paradigms

Code Reuse

➜ node git:(master) ls -l deps total 0 drwxr-xr-x 13 fran staff 442 16 feb 17:22 cares drwxr-xr-x 15 fran staff 510 16 feb 17:22 http_parser drwxr-xr-x 7 fran staff 238 16 feb 17:22 mdb_v8 drwxr-xr-x 21 fran staff 714 16 feb 17:22 npm drwxr-xr-x 7 fran staff 238 16 feb 17:22 openssl drwxr-xr-x 25 fran staff 850 16 feb 17:22 uv drwxr-xr-x 23 fran staff 782 16 feb 17:22 v8 drwxr-xr-x 29 fran staff 986 16 feb 17:22 zlib ➜ node git:(master)

sudo apt-get install opencv

brew install opencv

????? opencv

There are Tons of Windows users

There are Tons of Windows users

SETUP

Your computer

Your system

Your tools

SETUP

biicode way

#include “google/gtest/gtest.h”

bii find

sleep

Talk is cheap. Show me the code.

Linus Tolvards

Biicode in action$ bii new hello

$ bii new hello

#include “google/gtest/gtest.h" !int sum(int a, int b) {return a+b;} TEST(Sum, Normal) { EXPECT_EQ(5, sum(2, 3)); } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }

$ vimfran/helloblock/main.cpp

Biicode in action

$ bii new test

$ vim

$ bii find

Biicode in action

$ bii new test

$ vim

$ bii find

$ bii cpp:build

Biicode in action

$ bii new test

$ vim

$ bii find

$ bii cpp:build

$ ./bin/test

Biicode in action

Biicode in action

[==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from Sum [ RUN ] Sum.Normal [ OK ] Sum.Normal (0 ms) [----------] 1 test from Sum (0 ms total) ![----------] Global test environment tear-down [==========] 1 test from 1 test case ran. [ PASSED ] 1 test.

Hello Bii!!$ bii new hello

Hello Bii!!$ bii new hello

#include “hello.h” int main(){ hello(); }$ vim

void hello();

#include “hello.h” void hello(){ cout<<“HelloBii!”<<endl; }

fran/helloblock/main.cpp

fran/helloblock/hello.h

fran/helloblock/hello.cpp

Hello Bii!!$ bii new hello

#include “hello.h” int main(){ hello(); }$ vim

void hello();

#include “hello.h” void hello(){ cout<<“HelloBii!”<<endl; }

fran/helloblock/main.cpp

fran/helloblock/hello.h

fran/helloblock/hello.cpp$ bii cpp:build HelloBii!!

#include “hello.h” int main(){ hello(); }

void hello();

#include “hello.h” void hello(){ cout<<“HelloBii!”<<endl; }

fran/helloblock/main.cpp

fran/helloblock/hello.h

fran/helloblock/hello.cpp

Dependency Graph

ADD_EXECUTABLE(fran_hello main.cpp hello.cpp)

CMakeLists.txt

Automatic building

Publish

$ bii publish tag: STABLE msg: MyHello main.cpp

hello.h

hello.cpp

main.cpp

hello.h

hello.cpp

MacBook Fran

biicode

Just one command is necessary

Reuse & Play(john) $ bii new hello

Reuse & Play$ bii new hello

#include “fran/helloblock/hello.h” void repeat(){ hello(); hello(); }$ vim

void repeat();#include “repeat.h” int main(){ repeat(); }

john/repeatblock/repeat.h

john/repeatblock/main.cpp

Reuse & Play$ bii new hello

#include “fran/helloblock/hello.h” void repeat(){ hello(); hello(); }$ vim

void repeat();#include “repeat.h” int main(){ repeat(); }

john/repeatblock/repeat.h

john/repeatblock/main.cpp

$ bii find

$ bii cpp:build

HelloBii!!HelloBii!!

Find

main.cpp

hello.h

hello.cpp

biicode

void repeat();

john/repeatblock/repeat.h

john/repeatblock/main.cpp

fran/helloblock/hello.h

fran/helloblock/hello.cpp

src dep

ADD_LIBRARY(fran_hello hello.cpp) ADD_EXECUTABLE(john_repeat main.cpp) TARGET_LINK_LIBRARIES(john_repeat fran_hello)

CMakeLists.txt

Automatic building

Publish

$ bii publish tag: STABLE msg: MyRepeat main.cpp

repeat.h

main.cpp

hello.h

hello.cpp

PC John

biicode

Publish

main.cpp

hello.h

main.cpp

hello.h

hello.cpp

PC John

biicode

main.cpp

repeat.h

Reuse & Play(carmack)$ bii new doom3

$ vim

void repeat();

#include “john/repeatblock/repeat.h” int main(){ repeat(); }

john/doom3/main.cpp

$ bii find

$ bii cpp:run

HelloBii!!HelloBii!!

main.cpp

hello.h

hello.cpp

biicode

main.cpp

repeat.h

Reuse & Play

Update

$ vim #include “hello.h” void hello(){ cout<<“Bii rocks!”<<endl; }

fran/helloblock/hello.cpp

$ bii publish tag: STABLE msg: 2 version

main.cpp

hello.h

hello.cpp

0

main.cpp

hello.h

hello.cpp

1

hello.cpp

Reuse & Play

#include “repeat.h” int main(){ repeat(); }

(john)$ bii find —-update

$ bii cpp:build

Bii rocks!Bii rocks!

dependency resolution policies can be defined

Tags and Versions

Authors

Branches

biicode guarantees compatibility between files

Other features

Data dependencies

Automatic build configuration

Collaboration

real file level usage metrics

main.cpp

hello.h

hello.cpp

biicode

main.cpp

repeat.h

How?

PREMIUM USERS

OPEN SOURCE PROPRIETARY CODE

FREE USERS

€$

REVENUE SPLIT

$

Biicode gives back!

Thanks!