What a nice project!
http://www.mtoussaint.de/tobb/index.html
Popular Posts
-
Today I tried to compile and install the WFDB tools from the PhysioToolkit ( PhysioNet ) on my Debian Squeeze system. I am documen...
-
http://blog.akkaya.de/blojsom/blog/jpabel/
-
Biomedical Engineering make extensive use of software. Signal processing algorithms and other aspects of the biomedical engineering needs ex...
-
I was very disappointed by the poor sound capabilities of the GNU Ocatve project compared to MATLAB. The playaudio() function was inconveni...
-
Bugzilla is a great project. Yet, customizing it to your needs is an overwhelming task! I was assigned a task that our Bugzilla server shoul...
Sunday, January 25, 2009
Thursday, December 25, 2008
union, struct, and bit fields in C and C++
It took me some long time to comprehend the issues involved in using unions, structs, and bit fields in C and C++.
First, for the definition of unions and structs, take a look at this link:
http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/strct.htm
Unions could be used together with structs to reinterpret the same location in memory with different interpretations (similar in spirit to the C++ reinterpret_cast). For examples on this see:
http://www.anyexample.com/programming/cplusplus/example_of_using_union_in_cplusplus.xml
C++ extends the unions and structs, for example see:
http://www.yolinux.com/TUTORIALS/LinuxTutorialC++Structures.html
Bit fields are used to define special-sized integers. This is useful for packing data (e.g. flags) together into one memory location. This, however, is a bad habit and should be avoided as the compiler-generated code to access bit fields is usually inefficient! For more examples on this, see:
http://en.wikipedia.org/wiki/Bit_field
http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=/com.ibm.vacpp6m.doc/language/ref/clrc03defbitf.htm
http://www.cs.cf.ac.uk/Dave/C/node13.html
http://www.daniweb.com/forums/thread55765.html
http://blogs.msdn.com/oldnewthing/archive/2008/11/26/9143050.aspx
http://osr507doc.sco.com/en/tools/ANSI_F.3.9_Structs.unions.html
Finally, unions and structs could be anonymous! You do not have to give a name to a union. In this case its members become directly accessible within the same scope. Wikipedia calls this "untagged union". For an example see:
http://www.velocityreviews.com/forums/t286529-union-with-anonymous-struct.html
First, for the definition of unions and structs, take a look at this link:
http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/strct.htm
Unions could be used together with structs to reinterpret the same location in memory with different interpretations (similar in spirit to the C++ reinterpret_cast). For examples on this see:
http://www.anyexample.com/programming/cplusplus/example_of_using_union_in_cplusplus.xml
C++ extends the unions and structs, for example see:
http://www.yolinux.com/TUTORIALS/LinuxTutorialC++Structures.html
Bit fields are used to define special-sized integers. This is useful for packing data (e.g. flags) together into one memory location. This, however, is a bad habit and should be avoided as the compiler-generated code to access bit fields is usually inefficient! For more examples on this, see:
http://en.wikipedia.org/wiki/Bit_field
http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=/com.ibm.vacpp6m.doc/language/ref/clrc03defbitf.htm
http://www.cs.cf.ac.uk/Dave/C/node13.html
http://www.daniweb.com/forums/thread55765.html
http://blogs.msdn.com/oldnewthing/archive/2008/11/26/9143050.aspx
http://osr507doc.sco.com/en/tools/ANSI_F.3.9_Structs.unions.html
Finally, unions and structs could be anonymous! You do not have to give a name to a union. In this case its members become directly accessible within the same scope. Wikipedia calls this "untagged union". For an example see:
http://www.velocityreviews.com/forums/t286529-union-with-anonymous-struct.html
Tuesday, December 23, 2008
Debugging, Profiling, Memory Leaks and more!
I have been searching for open source tools to assist in detecting memory leaks and application profiling. Also, static code analysis was another goal.
For static code analysis I found:
CppCheck (http://en.wikipedia.org/wiki/Cppcheck)
I used it to its full power by invoking (at the top level of the project):
cppcheck --recursive --all --errorsonly --style
Also, SPlint (http://en.wikipedia.org/wiki/SPlint) seems promising, though it is for C code only (no C++).
A comprehensive list of static code analysis could be found in Wikipedia:
http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
About application profiling, the GNU Profiler (gprof) does a good job. It is light-weight and has support in GCC. This is an excellent article about using gprof:
Memory leak detection has many options. Of the best is using Valgrind(http://valgrind.org/). However, I found an interesting and promising feature that has been added to the gcc. This feature is called Mudflap. It is easy to use as a compiler flag and adds memory debugging support directly into your application using libmudflap. More interesting information could be found here:
http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
http://gcc.fyxm.net/summit/2003/mudflap.pdf
It is so promising that it will be integrated into the QNX IDE:
http://qnxdevtools.blogspot.com/2008/02/mudflap.html
It can print the memory leaks on program exit via the (-print-leaks) option
Memory debugging tools are so many. There is a list on Wikipedia article:
http://en.wikipedia.org/wiki/Memory_debugger
The task of memory leak detection is achievable using lightwieght tools. These tools basically replaces the default C library malloc() and free() with special debugging implementations. Notable is mtrace(), the memory debugger built in the GNU C library:
http://en.wikipedia.org/wiki/Mtrace
A good article about memory leak detection in C++:
http://www.linuxjournal.com/article/6556
And finally, all what you can dream of are collected in one article, in the GRASS wiki here:
http://josef.fsv.cvut.cz/WIKI/grass-osgeo/index.php/GRASS_Debugging
Hope you find this useful!
For static code analysis I found:
CppCheck (http://en.wikipedia.org/wiki/Cppcheck)
I used it to its full power by invoking (at the top level of the project):
cppcheck --recursive --all --errorsonly --style
Also, SPlint (http://en.wikipedia.org/wiki/SPlint) seems promising, though it is for C code only (no C++).
A comprehensive list of static code analysis could be found in Wikipedia:
http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
About application profiling, the GNU Profiler (gprof) does a good job. It is light-weight and has support in GCC. This is an excellent article about using gprof:
- Programmer's Toolkit: Profiling programs using gprof(http://linuxgazette.net/100/vinayak.html)
Memory leak detection has many options. Of the best is using Valgrind(http://valgrind.org/). However, I found an interesting and promising feature that has been added to the gcc. This feature is called Mudflap. It is easy to use as a compiler flag and adds memory debugging support directly into your application using libmudflap. More interesting information could be found here:
http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
http://gcc.fyxm.net/summit/2003/mudflap.pdf
It is so promising that it will be integrated into the QNX IDE:
http://qnxdevtools.blogspot.com/2008/02/mudflap.html
It can print the memory leaks on program exit via the (-print-leaks) option
Memory debugging tools are so many. There is a list on Wikipedia article:
http://en.wikipedia.org/wiki/Memory_debugger
The task of memory leak detection is achievable using lightwieght tools. These tools basically replaces the default C library malloc() and free() with special debugging implementations. Notable is mtrace(), the memory debugger built in the GNU C library:
http://en.wikipedia.org/wiki/Mtrace
A good article about memory leak detection in C++:
http://www.linuxjournal.com/article/6556
And finally, all what you can dream of are collected in one article, in the GRASS wiki here:
http://josef.fsv.cvut.cz/WIKI/grass-osgeo/index.php/GRASS_Debugging
Hope you find this useful!
Monday, December 22, 2008
Guide to start using Linux in ARABIC
This an excellent piece of work. This book, written in ARABIC, will get you started with using Ubuntu Linux in no time! Get started now:
http://ia310803.us.archive.org/2/items/Practical_Guide_to_use_ubuntu_linux_Arabic_344/Practical_Guide_to_use_ubuntu_linux_arabic.pdf
http://ia310803.us.archive.org/2/items/Practical_Guide_to_use_ubuntu_linux_Arabic_344/Practical_Guide_to_use_ubuntu_linux_arabic.pdf
Wednesday, November 12, 2008
Thursday, October 16, 2008
Monday, October 13, 2008
Some stuff about finance and investment
This post may seem a bit strange. I had an opportunity to read some articles about some weird stuff of the financial world! Those guys of finance are crazy, and we are to blame that we leave our destiny in the hands of such a bunch of crazy financial people! Here are some links about possible ways of investment:
Saturday, October 4, 2008
Comics about SW Development
I saw this link posted by a friend, and I followed it. I'm posting it here because it is very realistic and happens to anyone working in the SW industry.
http://contikistrip.kjempekjekt.com/index.php?p=1
http://contikistrip.kjempekjekt.com/index.php?p=1
Saturday, September 27, 2008
Buffer Overflow Exploits
I have recently read the news about Google Chrome Buffer Overflow vulnerability (see this link). Admittedly, I was ignorant enough not to understand how a buffer overflow can cause severe security breaches! Wikipedia came to the rescue, as well as some research into the topic of Assembly-language programming. At last I can understand how SEVERE such an attack could be!
You can dig for it too ;-)
check the Wikipedia article,
http://en.wikipedia.org/wiki/Buffer_overflow
and the excellent book of Programming from the Ground Up, for much better understanding of Assembly:
http://savannah.nongnu.org/projects/pgubook/
Enjoy!
You can dig for it too ;-)
check the Wikipedia article,
http://en.wikipedia.org/wiki/Buffer_overflow
and the excellent book of Programming from the Ground Up, for much better understanding of Assembly:
http://savannah.nongnu.org/projects/pgubook/
Enjoy!
Wednesday, September 3, 2008
Thursday, August 21, 2008
GNU/Linux from eight miles high
This an excellent article released recently by embedded.com:
http://www.embedded.com/design/opensource/208404045?pgno=1
The article is a bit advanced. But anyone with good understanding of computer architecture should be able to go through it!
http://www.embedded.com/design/opensource/208404045?pgno=1
The article is a bit advanced. But anyone with good understanding of computer architecture should be able to go through it!
Wednesday, August 13, 2008
A Good article about ECG Signal Processing from LabVIEW
At the time I visited this article it was rated 4 out of 5 which is very good!
http://zone.ni.com/devzone/cda/tut/p/id/6349
http://zone.ni.com/devzone/cda/tut/p/id/6349
Friday, August 1, 2008
GUC Students' Blogs
Here are some blogs by students of the GUC. Currently they are all in Germany for their bachelor projects. I am really proud that I had a chance to work with such amazing and wonderful people! Enjoy:
http://husfahmy.blogspot.com/
http://thoughtsandtips.blogspot.com/
http://lewjee.blogspot.com/
http://husfahmy.blogspot.com/
http://thoughtsandtips.blogspot.com/
http://lewjee.blogspot.com/
Wednesday, July 16, 2008
Sunday, July 6, 2008
Add Circular Scrolling (and more!) to your laptop touchpad
From the Chinese Linux University!
http://www.chineselinuxuniversity.net/articles/13049.shtml
Add to /etc/X11/xorg.conf (or whatever your xorg.conf is at)
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "CircularScrolling" "on"
Option "CircScrollTrigger" "3"
EndSection
Be sure to have Synaptics added to the Server Layout
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Synaptics Touchpad"
EndSection
http://www.chineselinuxuniversity.net/articles/13049.shtml
Add to /etc/X11/xorg.conf (or whatever your xorg.conf is at)
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "CircularScrolling" "on"
Option "CircScrollTrigger" "3"
EndSection
Be sure to have Synaptics added to the Server Layout
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Synaptics Touchpad"
EndSection
Tuesday, July 1, 2008
Dealing with Debian source packages
I found this interesting post, quoting:
The dpkg-source utility is found in dpkg-dev package.apt-get build-dep glibc
apt-get source -b glibc
should work
or, if you already have the build-dependencies and source files
downloaded (.orig.tar.gz, .diff.gz, and .dsc):
dpkg-source -x glibc*.dsc
cd glibc-*
make -f debian/rules build
randolph
--
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/
Sunday, June 29, 2008
Compiling over NFS
Ever needed to compile over exported NFS system in Linux. I needed it to compile some programs on my PC using a compiler in a virtual box ;-)
On the NFS server
add the following line to /etc/exports (Debian/Ubuntu systems)
On the client machine (the one that will compile)
add the following line to /etc/fstab
Note: replace 10.0.2.2 with the server IP or hostname
Warning: this setup is TOTALLY INSECURE!!
but who cares ;-)
On the NFS server
add the following line to /etc/exports (Debian/Ubuntu systems)
/path/to/exported/directory *(rw,no_subtree_check,insecure,no_root_squash)
On the client machine (the one that will compile)
add the following line to /etc/fstab
10.0.2.2:/path/to/exported/directory /path/to/mnt/point nfs user,rw,exec 0 0
Note: replace 10.0.2.2 with the server IP or hostname
Warning: this setup is TOTALLY INSECURE!!
but who cares ;-)
Thursday, June 26, 2008
Monday, June 23, 2008
Contributors Needed!
Please contribute to this new emerging WikiBook
Biomedical Engineering: A Roadmap
Don't forget to add your name to the authors list ;-)
Biomedical Engineering: A Roadmap
Don't forget to add your name to the authors list ;-)
Subscribe to:
Posts (Atom)