biicode, reuse and play
DESCRIPTION
TRANSCRIPT
“Los programadores de C++ somos los peores en
reutilización de código”
Bjarne Stroustrup
➜ 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
Hay muchos usuarios de Windows
Hay muchos usuarios de Windows
SETUP
Tu ordenador
Tu sistema
Tus herramientas
SETUP
Talk is cheap. Show me the code.
Linus Tolvards
Hello Bii!!$ bii new hello
Hello Bii!!$ bii new hello
#include “hello.h” int main(){ hello(); }$ vim
void main();
#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 main();
#include “hello.h” void hello(){ cout<<“HelloBii!”<<endl; }
fran/helloblock/main.cpp
fran/helloblock/hello.h
fran/helloblock/hello.cpp$ bii cpp:run HelloBii!!
#include “hello.h” int main(){ hello(); }
void main();
#include “hello.h” void hello(){ cout<<“HelloBii!”<<endl; }
fran/helloblock/main.cpp
fran/helloblock/hello.h
fran/helloblock/hello.cpp
Grafo de dependencias
ADD_EXECUTABLE(fran_hello main.cpp hello.cpp)
CMakeLists.txt
Construcción automática
Publish
$ bii publish tag: STABLE msg: MyHello main.cpp
hello.h
hello.cpp
main.cpp
hello.h
hello.cpp
MacBook Fran
biicode
Solo necesitamos un comando
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:run
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
Construcción automática
Publish
$ bii publish tag: STABLE msg: MyRepeat main.cpp
hello.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
biicode way
#include “google/gtest/gtest.h”
bii find
sleep
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:run
Bii rocks!Bii rocks!
Se pueden definir políticas de resolución de dependencias
Tags y Versiones
Autores
Ramas
biicode garantiza compatibilidad entre ficheros
Otras features
Ficheros de datos
Build configuration
Configuration rules
Colaboración
Métricas reales de uso a nivel de fichero
main.cpp
hello.h
hello.cpp
biicode
main.cpp
repeat.h
¿Cómo?
PREMIUM USERS
OPEN SOURCE PROPRIETARY CODE
FREE USERS
€$
REVENUE SPLIT
$
Biicode gives back!
Roadmap
#biicontest2014
1000 € 500 € 300 €
https://www.biicode.com/biicontest2014-es
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse:
complexity sells better.
Edsger W. Dijkstra
¡GRACIAS!