-
Notifications
You must be signed in to change notification settings - Fork 11
Basics
Robert Haschke edited this page Apr 28, 2020
·
1 revision
- organize your work in a project
- define tasks
- define milestones
- track bugs
- documentation: wiki
- specifications
- development history
- http://www.redmine.org
- https://projects.cit-ec.uni-bielefeld.de
- accessible from with Uni Bielefeld only
- use VPN (TechFak or HRZ) to connect from outside
- Overview: describe your project to the world
- Modules: choose redmine modules to be used
- Members: project members and their roles
- Versions: define target versions / milestones for your project issues can be associated to those milestones
- Issue categories and associated assignees
- Repositories: create git or subversion repo(s) hosted by redmine
permissions are derived from project permissions
- reporter can read
- developer can read + write
- manager can configure redmine
- coordinate can create sub projects
- Choose the type: bug, feature, meeting, task, to-do, etc.
- Specify the Subject
- Describe the issue
- Choose Status, Priority, Assignee
- Assign parent task
- Define deadline and estimated workload
- Activity: monitor project development history
- Roadmap: list issues sorted by associated version / milestone
- Issues: list issues in table view
- Gantt: list issues in calender view, grouped by milestones
- News: announce new, latest ones will show up on overview page
- Wiki
- Repository
- syntax highlighting
- code completion (context-sepcific)
- code navigation
- finding files
- finding definitions
- folding
- version control
- project config management
- compiling from editor
- navigation to errors
- online syntax checking
- integrated debugging
- set + visualize breakpoints
- evaluate expressions
- code coverage analysis
- profiling
- kate
- qtcreator
- Visual Studio code
- geany
- NetBeans
- eclipse
- emacs cedet+ecb
- vim / gvim
kate | qtcreator | geany | emacs | gvim | |
---|---|---|---|---|---|
highlighting | x | x | x | x | x |
completion | x | (x) | p | p | |
file browser | x | x | x | p | p |
methods browser | x | x | p | p | |
folding | x | x | x | p | p |
refactoring | x | p | |||
project mgmt | x | x | p | ? | |
version control | x | p | p | p | |
compilation | x | x | x | p | |
syntax check | x | p | |||
debugging | x | p | x | p |
- C/C++: Visual Studio code, qtcreator, or clion Code is highly customizable via a multitude of plugins. qtcreator is highly optimized for C++ development and natively supports Qt's signals+slots.
- python: pycharm
- Java: eclipse or IntelliJ IDEA
- accessing bad pointers or stack addresses
- leads to unpredictable behaviour
- often will crash your program
- check validity of pointer + stack addresses
- valgrind: external tool, monitoring all memory allocation + deallocation nicely integrated in QtCreator, but slow
-
AddressSanetizer
- augments code during compilation, much faster
- activate with:
-DCMAKE_CXX_FLAGS="-fsanitize=address -fno-omit-frame-pointer -O1"
- disable leak detection:
export ASAN_OPTIONS="detect_leaks=0"
- augment existing binaries:
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so
- meta-make system
- creates build config for make, Visual Studio, Eclipse, etc. (cross-plattform)
- CMakeLists.txt
$\rightarrow$ cmake$\rightarrow$ CMakeCache.txt + Makefiles - powerful scripting language
- to locate libraries,
- configure your project
- catkin (from ROS) builds on top
cmake_minimum_required (VERSION 3.2)
project (<name> VERSION 0.1 LANGUAGES CXX)
include_directories(src/include)
find_package(Qt5 REQUIRED COMPONENTS Widgets)
add_library(lib${PROJECT_NAME} foo1.cpp foo2.cpp)
add_executable(${PROJECT_NAME} main.cpp bar.cpp)
target_link_libraries(${PROJECT_NAME} lib${PROJECT_NAME})
enable_testing()
add_subdirectory(test)
add_test(testMaster toDo)
- start, stop, monitor, inspect processes ... in a multi-machine environment ... from a central place
- common interface to start / stop components
-
shell
+tcltk
based scripting - one
ssh
connection to each host machine- remote shell invocation
- launching X windows on local or remote machine
-
screen
to hide/show processes
function component {
# switch on lights
dmxGui $ON --no-gui
read
}
function on_stop {
# switch off lights
dmxGui -c M0 --no-gui
}
source "$VDEMO_root/vdemo_standard_component_suffix.sh"
-
component
: start a component stop_component
-
on_stop
: called after stopping -
on_check
alive test- return 0 (success)
export VDEMO_demoRoot="${BASH_SOURCE[0]%/*}"
...
export VDEMO_components="\
gefen_matrix,$basepc,-v CFG=$cfgdir/$DEMO_CFG/gefen.conf -L 0 -n:\
$(SPREAD_COMPONENTS $basepc $armpc $handpc $visionpc):\
$(XCF_COMPONENTS $MEDIATOR):\
$SPEECH_COMPONENTS:\
hardware:\
$ROSCORE_COMPONENTS:\
$MOTORHAND_COMPONENTS:"
folder layout of ni-system-start
- README.md
- generic
- vdemo
- components
- hsm
- python
- server
- postures
- vdemo
- demo
- vdemo
- components
- vdemo