Archive

Posts Tagged ‘list’

A useful list of Mind-Mapping tools for college students

July 28th, 2009 bodom_lx No comments

It has been brought to my attention an  article containing a list of 50 Mind-Mapping tools for college students.

The list is categorized (free/open, collaboration, project management, multitasking, misc) to assist the reader in the decision. I know five of the programs reported and I have always used Freemind, therefore I find the post very interesting. Students should at least try to use Mind-Mapping tools as an alternative to summarize texts. Give it a try!

Related posts

Introduction To Software Testing

July 19th, 2009 bodom_lx No comments

Elements and Concepts – A brief overview


Download PDF version of the whole document. You can browse the article online but I encourage the download of the PDF since it is written with accuracy.


Introduction

This document contains some basic concepts and definitions about software testing. It has been written for studying a part of the Software Engineering Project course at my University. It is composed by a summary of the intersection of more than 10 different sources, all of which are cited. If you feel that some contents of this publication belong to your intellectual property and it is not cited, please contact the author who is willing to correct any mistake.

The first part of the paper focuses on the definition of the most important key aspects of software testing. Then some information about input partitioning are given. What follows is a research about code coverage and two useful and famous tools, Control-flow coverage and Data-flow analysis. A complete example on using those tools is then given. The second half of the document also contains the definition of the most important software testing practices.

The goal of this tiny document is to clarify key terms and therefore become a base start for the reader to go in deep with the interested topics. Another goal is to give a simple but clear example about data flow analysis, as I realized that not all the people understand the examples around the Net.

Software Testing

Software Testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the context in which it is intended to operate. Software Testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs. It can also be stated as the process of validating and verifying that a software program/application/product meets the business and technical requirements that guided its design and development, so that it works as expected and can be implemented with the same characteristics. 1

Read more…

Related posts

Heap vs. Stack in C++

March 20th, 2009 bodom_lx 4 comments

After the study of pointers versus references, the second natural question that comes in head of a ex Java developer turning to C++ is:

“What are the difference between static and dynamic memory allocation in C++?”

which can be translated as:

“When should I use the stack and when do I have to use the heap in C++?”

that can be further simplified to:

“When should I use the new operator in C++?”

I could simply summarize the answer to: “Use stack when possible”, but I think that this time there is the need of more explanations. Let’s have the following model for a process in the system:

A simplified model for a process

A simplified model for a process

I’m not really interested in an real representation of a process (see Modern Operating Systems by A. S. Tanenbaum for a very good explanation on processes), but focus on the stack and on the heap.
In reality the heap is a software abstraction but you can also imagine it like the stack.
In C++ programs there are also several other memory areas in which objects and non-object values may be stored (see this article on GotW for further details).

Why then choose between stack or heap? Quoting my publication on object-oriented memory management in Java:

Stack-based variables have their extent determined by their scope, so the former is constrained by the structure of the code at compile-time .

Sometimes there is a need for the variables with unconstrained extent in order to cope with
problems where lifetime of a variable can only be known at run-time.
In this case heap-based variables, whose extent is strictly under control of the programmer, are used. [..]

I promise that I will update my 17 pages about OO-memory management to cover also C++ by the end of June. By the way, following some forums, wikipedia, my publication and GotW, I also summarized pros and cons of stack and heap use in C++:

Stack Heap
Its size is determined at compile-time Size determined at run-time
Therefore, it is less expensive and quick Therefore, it is more expensive and slower than stack
The preferred way to store objects and variables if their size is limited. To be used only if needed: the amount of memory needed is variable and unknown, and may increase rapidly.
There is an AUTOMATIC CLEANUP of objects when they go out of their scope Objects STAY IN MEMORY even when you don’t use them anymore.
Programmers don’t have to bother to free resources Therefore, programmers HAVE TO CLEAN memory manually. However, all modern OS free the resources when the program exits.

Update 2009-07-03
After 4 months of heavy GUI and Database C++ programming, here are my thoughts: if you are planning to write a program with something more than a couple of objects interacting, using associations and therefore, objects as attributes, use the heap. Every serious program, even if not really big, uses heap for object allocation. Just take care to delete the objects when you don’t need them anymore. Objects on the heap are dynamically allocated and it is more comfortable to pass them through other objects using pointers. The use of the heap assures the live of objects even if the method that generated them runs out of scope ( =dies ). If you also plan to write GUIs, solid toolkits like QT recommend the use of heap to create graphical objects.

In some Operating Systems, stack is also very limited while heap is usually not.

Here are listed the sources I used for writing this article:

  • http://www.velocityreviews.com/forums/t278261-stack-vs-heap.html
  • http://www.computing.net/answers/programming/stackheap-c/2293.html
  • http://www.codeguru.com/forum/showthread.php?p=1186307#post1186307
  • http://www.codeguru.com/forum/showthread.php?t=350945
  • http://www.gotw.ca/gotw/009.htm
  • http://en.wikipedia.org/wiki/Process_(computing)#Representation
  • http://task3.cc/object-oriented-memory-management/

Hope that this article helped you to clearly understand the differences between stack and heap allocation in C++, write me if there are other issues or you need more explanations!

Related posts

How to have both Mac Os X and Linux installed and share the same home directory files

February 27th, 2009 bodom_lx 2 comments

So much time since my last post! I’m sure that the best way to come back to blog posting is a nice tutorial.
I’m going to write how to have the same home directory shared between Mac Os X and Gnu/Linux. Let me call Gnu/Linux just Linux from now on.

A unique place for your working directory on both Mac Os X and Linux!

The configuration I’m proposing should be very confortable, as it works with symbolic links.
It lets you to boot either Mac Os X or Linux and have the same directories and files for your everyday use. Meanwhile, the important configuration files and directories (e.g. ~/Library for Mac Os X, ~/.config for Linux) are kept separately on their corresponding partitions.
Another advantage of this configuration is that you can have a small partition dedicated to Linux – let’s say 10GB but could be even less – just for installing the programs you need, while your videos, documents, music files are kept inside the biggest partition, the one for Mac Os X.

Disclaimer, assumptions

Basically, you will mount your Mac Os X root partition in Linux, and soft-link your important directories to your Linux home directory.
You will then use them as there were real directories in your Linux home directory. For this how to, there are a couple of things I assume that:

  • You have Linux installed and running natively on your Mac(Book). I’m going to give commands with sudo, so configure it if you’re not using Ubuntu-based distros!
  • You know your partition layout. The following is mine. I’m going to use it as example:

    disk0s2 /dev/sda2 MacOsx /
    disk0s3 /dev/sda3 Linux /
    disk0s4 /dev/sda4 Swap

  • You have a clean Linux home directory. This means that you don’t have directories whose names are in conflict with those on your Mac Os X home directory
  • You are going to disable file system journaling on your Mac Os X root partition! Please read carefully this Wikipedia page about journaling and this Apple page about HFS+ journaling if you need more information.

Boot Mac Os X

Follow these instructions under Mac Os X:

Open a Terminal.

Identify your Mac Os X root partition:

$ sudo diskutil list

/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *111.8 Gi disk0
1: EFI 200.0 Mi disk0s1
2: Apple_HFS MacOsX 99.9 Gi disk0s2
3: EFI 10.7 Gi disk0s3
4: Linux Swap 1.0 Gi disk0s4

Disable file system journaling for the partition:

$ sudo diskutil disablejournal disk0s2

Do a ls -n of your home directory to discover your user id uid:

$ ls -n

total 0
drwx——+ 11 501 20 374 25 Feb 17:43 Desktop
drwxrwxrwx+ 32 501 20 1088 26 Feb 18:19 Documents
drwxrwxrwx+ 8 501 20 272 26 Feb 18:06 Downloads
[Few Others ...]

My UID is 501. Keep your UID in mind, you will need it under Linux. You obtain the same results by using the command “id”.
Reboot your Mac.

Boot Linux

Follow these instructions in a linux shell.

Change your Linux user id (UID). To correctly share the same home directory between both OS, you need to have on Linux the same UID of your Mac Os X user.

sudo usermod -u <uid> <username>

(sudo usermod -u 501 bodom_lx in my case)

To have your new UID applied, either reboot or logout from every shell you opened, even from your desktop environment. Login again.

Create a directory in which you are going to mount Mac Os X root partition:

sudo mkdir /media/</strong>MacOsX</strong
sudo chmod 775 /media/</strong>MacOsX</strong>

put this line at the end of /etc/fstab, as root, with your favourite editor:

/dev/sda2 /media/MacOsX hfsplus rw,nosuid,nodev,uhelper=hal 0 0

Remember to change sda2 and MacOsX

Either reboot the system or type:

sudo mount /media/MacOsX

To mount your Mac Os X root directory in your mount point directory.

Now cd to your Linux home directory and begin to soft-link all of your important Mac Os X directories. Here are some of those I needed:

ln -s /media/MacOsX/Users/bodom_lx/Documents/ .
ln -s /media/MacOsX/Users/bodom_lx/Pictures/ .
ln -s /media/MacOsX/Users/bodom_lx/Projects/ .
[…and many more]
 

Don’t soft-link the Library directory.

Conclusions

Now you have the same important files shared on both Mac Os X and Linux, while the important hidden configuration files are kept in separate phyisical places.
You can listen to your Itunes mp3 collection on both operating systems. You can now develop programs under Gnu/Linux. You can reboot your machine to Mac Os X and take notes during the lectures, and so on! Hope you liked this how to, and comment it as well. Contact me if you find some mistakes or you’re in trouble!

Related posts

2009 is a Zen year! Announcing BD-theme Zen

January 5th, 2009 bodom_lx No comments

2008 has been a

chaotic, beautiful, uncertain, loving, annoying, sad, inciting, exciting, claustrophobic, happy, insecure, agoraphobic, free, ugly, closed, wild, lonely, impetuous, serene, safe

year for me. It has been a year of changes.

I would like to enter this new year in a Zen way. I would like 2009 to be a year of tranquillity and serenity.
I want to free me from heavy, non-important details. I want to be more minimalist.

I want to focus on essence rather than on appearence.

While I’m preparing to act in this way, you can enjoy mi first step, the most easy one: a new Wordpress theme.
You can see BD-theme Zen working on my blog, but you can also download it and modify it under the Gnu GPL license (v.3)

Enjoy.

Related posts

BD-theme-zen

January 5th, 2009 bodom_lx No comments

BD-theme Zen is a minimalistic, imageless, 2-columns, orange Wordpress theme.
Its clean design was inspired by the great style of Dean Lee blog. The theme was quite written from scratch, using Chris Nolan’s modified version of the default WordPress theme as codebase, that is optimized for viewing at 1024 pixels and adds sidebars on pages and posts.
BD-theme Zen is thought for focusing on the content of your posts while maintaining a delicious but clean aspect.

BD-theme Zen Screenshot

BD-theme Zen Screenshot

Features:

  • Minimalistic, clean, zen design. Following Plaintxt principles
  • Imageless, lightweight, fast
  • Content separated from funcionalities: big menu on top and classical menu on right side
  • Wide space for content: thought for developers who post code snippets
  • Ready for Wordpress sidebar, but also uses custom widgets (called BD-widgets)
  • BD-widgets are just blocks which integrates default wordpress functions and html
  • Tested with every famous browser: IE7, IE8, FF3, Chrome, Opera 10

Download:

License:

BD-theme-zen is released under the GNU GPL v3. See the source code or http ://www.gnu.org/licenses/ for details.

Related posts