SlideShare a Scribd company logo
1 of 55
Download to read offline
www.biicode.com

Francisco Fernández Castaño
@fcofdezc
“Los programadores de C++
somos los peores en
reutilización de código”
Bjarne Stroustrup
➜ node git:(master)
total 0
drwxr-xr-x 13 fran
drwxr-xr-x 15 fran
drwxr-xr-x
7 fran
drwxr-xr-x 21 fran
drwxr-xr-x
7 fran
drwxr-xr-x 25 fran
drwxr-xr-x 23 fran
drwxr-xr-x 29 fran
➜ node git:(master)

ls -l deps
staff
staff
staff
staff
staff
staff
staff
staff

442
510
238
714
238
850
782
986

16
16
16
16
16
16
16
16

feb
feb
feb
feb
feb
feb
feb
feb

17:22
17:22
17:22
17:22
17:22
17:22
17:22
17:22

cares
http_parser
mdb_v8
npm
openssl
uv
v8
zlib
sudo apt-get install opencv
brew install opencv
?????

opencv
Hay muchos
usuarios de Windows
Hay muchos
usuarios de Windows
SETUP
SETUP
Tu ordenador
Tu sistema
Tus herramientas
Talk is cheap.
Show me the code.
Linus Tolvards
Hello Bii!!
$ bii new hello
Hello Bii!!
$ bii new hello
$ vim

fran/helloblock/main.cpp
#include “hello.h”
int main(){
hello();
}
fran/helloblock/hello.h
void main();

fran/helloblock/hello.cpp
#include “hello.h”
void hello(){
cout<<“HelloBii!”<<endl;
}
Hello Bii!!
$ bii new hello
$ vim

fran/helloblock/main.cpp
#include “hello.h”
int main(){
hello();
}
fran/helloblock/hello.h
void main();

$ bii cpp:run
HelloBii!!

fran/helloblock/hello.cpp
#include “hello.h”
void hello(){
cout<<“HelloBii!”<<endl;
}
Grafo de dependencias
fran/helloblock/hello.h
void main();

#include “hello.h”
int main(){
hello();
}
fran/helloblock/main.cpp

#include “hello.h”
void hello(){
cout<<“HelloBii!”<<endl;
}
fran/helloblock/hello.cpp
Construcción automática

CMakeLists.txt
ADD_EXECUTABLE(fran_hello
main.cpp
hello.cpp)
Publish

biicode
hello.h

main.cpp

hello.cpp

MacBook Fran
hello.h

main.cpp

hello.cpp

$ bii publish
tag: STABLE
msg: MyHello
Solo necesitamos un comando
Reuse & Play
(john) $ bii new hello
Reuse & Play
$ bii new hello
$ vim

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

john/repeatblock/main.cpp
void repeat();
#include “repeat.h”
int main(){
repeat();
}
Reuse & Play
$ bii new hello
$ vim

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

john/repeatblock/main.cpp

$ bii find
$ bii cpp:run
HelloBii!!
HelloBii!!

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

biicode
hello.h

main.cpp

src
john/repeatblock/repeat.h

hello.cpp

dep
fran/helloblock/hello.h

void repeat();

john/repeatblock/main.cpp

fran/helloblock/hello.cpp
Construcción automática
CMakeLists.txt
ADD_LIBRARY(fran_hello hello.cpp)
ADD_EXECUTABLE(john_repeat
main.cpp)
TARGET_LINK_LIBRARIES(john_repeat fran_hello)
Publish

biicode
hello.h

main.cpp

hello.cpp

PC John
hello.h

main.cpp

$ bii publish
tag: STABLE
msg: MyRepeat
Publish

biicode
hello.h

main.cpp

hello.cpp

repeat.h
PC John
hello.h
main.cpp

main.cpp
Reuse & Play
$ bii new doom3

(carmack)

$ vim

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

$ bii find
$ bii cpp:run
HelloBii!!
HelloBii!!
Reuse & Play
biicode
hello.h

main.cpp

hello.cpp

repeat.h

main.cpp
biicode way
#include “google/gtest/gtest.h”

bii find
sleep
Update
fran/helloblock/hello.cpp

$ vim

$ bii publish
tag: STABLE
msg: 2 version

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

1
hello.h

hello.h

main.cpp

hello.cpp

main.cpp

hello.cpp

hello.cpp
Reuse & Play
(john)$

bii find —-update

$ bii cpp:run
Bii rocks!
Bii rocks!

#include “repeat.h”
int main(){
repeat();
}
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
biicode
hello.h

main.cpp

hello.cpp

repeat.h

main.cpp
¿Cómo?
Biicode gives back!
REVENUE SPLIT

$
FREE USERS
OPEN SOURCE

€
$
PREMIUM USERS
PROPRIETARY CODE
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!

More Related Content

More from fcofdezc

Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14fcofdezc
 
Knowing your Python Garbage Collector
Knowing your Python Garbage CollectorKnowing your Python Garbage Collector
Knowing your Python Garbage Collectorfcofdezc
 
Graph databases - EuroPython 2014
Graph databases - EuroPython 2014Graph databases - EuroPython 2014
Graph databases - EuroPython 2014fcofdezc
 
Extending Python - EuroPython 2014
Extending Python - EuroPython 2014Extending Python - EuroPython 2014
Extending Python - EuroPython 2014fcofdezc
 
Biicode OpenExpoDay
Biicode OpenExpoDayBiicode OpenExpoDay
Biicode OpenExpoDayfcofdezc
 
Graph Databases, a little connected tour (Codemotion Rome)
Graph Databases, a little connected tour (Codemotion Rome)Graph Databases, a little connected tour (Codemotion Rome)
Graph Databases, a little connected tour (Codemotion Rome)fcofdezc
 
Graph databases, a little connected tour
Graph databases, a little connected tourGraph databases, a little connected tour
Graph databases, a little connected tourfcofdezc
 

More from fcofdezc (7)

Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14
 
Knowing your Python Garbage Collector
Knowing your Python Garbage CollectorKnowing your Python Garbage Collector
Knowing your Python Garbage Collector
 
Graph databases - EuroPython 2014
Graph databases - EuroPython 2014Graph databases - EuroPython 2014
Graph databases - EuroPython 2014
 
Extending Python - EuroPython 2014
Extending Python - EuroPython 2014Extending Python - EuroPython 2014
Extending Python - EuroPython 2014
 
Biicode OpenExpoDay
Biicode OpenExpoDayBiicode OpenExpoDay
Biicode OpenExpoDay
 
Graph Databases, a little connected tour (Codemotion Rome)
Graph Databases, a little connected tour (Codemotion Rome)Graph Databases, a little connected tour (Codemotion Rome)
Graph Databases, a little connected tour (Codemotion Rome)
 
Graph databases, a little connected tour
Graph databases, a little connected tourGraph databases, a little connected tour
Graph databases, a little connected tour
 

biicode, reuse and play