Tags:
code,
free software,
gpl,
java,
layout,
monopoli,
php,
Programming,
programming project,
project,
release,
scrum,
scrum method,
site,
software development process,
software engineering,
standard,
Unibz,
version Categories:
Activism?,
Programming
We finally finished our university project, Unipoli. The Java implementation of the famous Monopoly game by Hasbro has been released under GPLv3 (yes it’s free software) . You can have a look at the source code, simple but elegant, written using coding standards, following xP practices and Scrum software development process (at least we tried to follow them).
On the project site you will find useful documentation, too: Vision Statement, User Stories, Noun Extraction, Product Backlog, UML Classes, Hierarchy and Relations, UML class diagram, Javadoc.
The game has been written for Programming Project course.
Read the rest of this entry »
I’m very proud of this, after so many problems encountered during the first two months of development, our product backlog begins to turn green and yellow!

Anyway, I think that Scrum Method is not the best software development process that we could have adopted, I will espress my thoughts during the exam and I will publish them
Tags:
bd,
BD-shell,
bodom_lx free software,
C language,
code,
Download,
free software,
gpl,
language,
opensource,
page,
php,
project,
release,
shell,
Unibz,
unix,
unix shell Categories:
Programming,
Unibz
BD-shell is a project I started about a month ago, which aims to implement a tiny, simple, clean unix shell written in C. The Operating Systems Course at my University requires this project as part of the assesment.
I decided to publish the source code and to release it under the GPL, for two reasons:
- Free software is better! Others can learn something from what I learned
- Free software is better! I can learn something from what others learned
As always, I accept every kind of suggestions!
Learn more about the project and download the code at this page:
http://bd-things.net/projects/bd-shell/
Tags:
academic,
background command,
bd,
BD-shell,
Blog,
bugs,
candidate,
change,
code,
data structures,
Download,
free software,
gpl,
job,
layout,
linux,
mac os x,
page,
personal,
php,
project,
release,
release candidate,
set,
shell,
signal handlers,
Signals,
standard,
System Calls,
Unibz,
unix,
unix shell,
version Categories:
My Life
BD-shell (a.k.a. bdsh) is a tiny Unix shell written in C. It’s a project required for the Operating System Course at my University.
It is written using a clean coding style, following xP coding standard philosophy.
Version 1.0 is the release that satisfies all the course requirements!
Quick Jump:
Features
Download
License
Cool Features
- Lightweight
- Implements real Job Control
- Clear and understandable code, ideal for Academic (and personal) studies
- Makes use of various system calls, signals, signal handlers, user input handling, data structures implementation
- Free Software!
Cool Features NOT present (but may be in future)
- No command history present
- No command/filename auto completion
- No wildcars
- No command piping, just a single command can be launched at a time
- Put everything else here.
Requirements for 1.0.0 (click the arrow)
These are the requirements asked by the teaching professor. The complete project description page is located at
http://www.inf.unibz.it/~david/os/project.html
The shell must be able to do the following:
- to read commands from standard input and execute them in a loop until a
built-in command exit is issued (we call these processes the foreground processes; there is always at most one of these at any particular time);
- be able to redirect the standard input and output of commands by prefixing them with built-in commands in file and out file;
- be able to terminate (involuntarily) the foreground process when user presses ^C and return back to the mini-shell;
- be able to interrupt the foreground process temporarily, when user presses ^Z, returning to the mini-shell;
- be able to execute any number of processes in background (i.e., in parallel with the foreground process), including in particular, the ability to start another process while a process has been temporarily suspended;
- inform the user when the background process finishes or is
waiting for an input from the terminal;
- be able to inform the user what commands are executing in the background by issuing the built-in command jobs, this should include information about the state of the process (i.e., suspended, background, waiting for input, etc.) and about what file(s) is the background process using for standard input and output);
- be able to terminate involuntarily a background processes by issuing the built-in command kill job-number.
- to be able to resume a process or to make a background process into the foreground process (i.e., the one that currently interacts with the terminal) by issuing the fg job-number command.
- 2008-09-14 - version 1.0.0.
- fixed synchronization bug in putJobBackground() that made not notify background processes requesting input (in some situations)
Known Bugs:
- Lots of! I consider bdsh-1.0.0 stable because it covers ALL requirements of the course and does them whell on various Unix systems. So it works, but commands like “in non_existent_file cat” won’t work and will crash it!
What will be next?
- I don’t know. I may consider a 1.0.1 release to fix future bugs. I may also think to add cool features to make the shell complete. I hope I will have the time for it. You can also do it by yourself and send me the code
Old Releases (click the arrow)
- 2008-09-13 - version 1.0.0 Release Candidate 2.
Changes from beta 1 / release candidate 1
- removed gcc O3 flag from makefile
- lots of bugs fixed in functions operating on the list of jobs
- improvements in launchJob() when dealing with background commands
- bug in putJobBackground() that made the shell crash has been fixed
- killJob() now sends a SIGKILL
- bugs fixed in signalHandler_child()
- Code formatted using astyle (linux style)
- A couple of variables renamed
- Various usleep() removed
Known Bugs:
- So many =) This is a shell made for Academic purposes, not for production use!
- 2008-07-30 - version 1.0.0 beta1.
Characteristics:
- First beta release of the final version
- Every requirement has been covered
- Real Job-Control implemented
- About every function of bdsh.c has been rewritten
- New source directory layout, very clean
- Some documentation and makefile
- IMPORTANT! this has to be considered a bug hunting release! Please report me any bugs
-
2008-06-05 - version 0.7.1, corrects the linked list bug of version 0.7.0
- 2008-05-09 - version 0.7.0.
UPDATE 2008-06-05: there is a bug in the list handling, the shell crashes when using the standard input redirection. Please download version 0.7.1, which corrects the problem.
Characteristics:
- Cleaner code!
- Lots of bugs fixed!
- reads commands from standard input and executes them in a loop until a built-in command exit is issued
- redirects STDIN and STDOUT of commands by prefixing them with built-in commands in file and out file
- terminates (involuntarily) the foreground process when user presses ^C and return back to the shell
- executes any number of processes in background (i.e., in parallel with the foreground process)
- informs the user when the background process finishes
- informs the user what commands are executing in the background by issuing the built-in command jobs
- terminates involuntarily a background processes by issuing the built-in command kill job-number.
- Due to a lots of compatibility issues with Gnu/Linux (the shell has been developed under Mac Os X), the final released has been delayed to mid-September. Sorry for this, I encountered so many problems the day before project presentation, that I decided to present it during the next exam session. I switched back to Gnu/Linux, too
-
Final release is scheduled on 2008-06-26, as the project deadline is 2008-06-25. The release will
satisfy all the requirements, and as addition:
- Execution system totally rewritten (e.g. one single short function that handles everything)
- A Job Control will be implemented
- Processes in foreground will really be in foreground, there are a lot of things that we did not learn during the course, like tcsetpgrp()
- Some functions in utils.h will be deleted and optimized
- Cleaner and clearer code!
- 2008-04-21 - version 0.0.1
Characteristics:
-
Modular code, divided in 3 files: bdsh.c, utils.h, headers.h
-
Clean user input from a char buffer to an array of strings
-
Built-in commands: exit (exits from the shell), cd (changes directory), in <filename> command (redirects STDIN of command from <filename>), out <filename> command (redirects STDOUT of command to <filename>)
-
Makes use of fork() to read commands from standard input and execute them
BD-shell is released under The Gnu GPL version 3! This is different from the license of the contents of the blog
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http ://www.gnu.org/licenses/>>.
Tags:
msn,
sito,
Unibz Categories:
Misc
Conversazione su msn tra me e un’amica che usa il pc solo per scrivere documenti e archiviare foto (parole sue :D). Assolutamente fantastica!
15:27:18 Valeria: DANIEL AIUTO
15:27:18 Daniel: (Risposta automatica)Ciao, sono in pomodoro, scrivi pure, entro massimo 25 minuti risponderò. Se non sai cosa voglia dire, visita il sito http://www.tecnicadelpomodoro.it e informati, magari torna utile anche a te!
15:27:24 Valeria: NN MI SCARICA AZERUS
15:27:32 Valeria: *AZUREUS
15:27:34 Valeria: xk?!?!?!?!?!
15:27:57 Daniel: non ti scarica AUNUS oppure ACENTUM?
15:28:13 Daniel: proprio AZERUS scarica?
15:28:31 Valeria: sto cercando di installarlo
15:28:35 Valeria: ma nn me lo installa
15:28:45 Valeria: THE BUNDLED JRE IS CORRUPTED
15:28:48 Valeria: K CAZZO E’!?!?!?
15:29:20 Daniel: ti dice che la tua connessione ha dei problemi di criptatura,e molto probabilmente è perchè la telecom ti tiene sotto controllo :S
15:29:39 Valeria: COSA!??!?!?!
15:29:40 Daniel: dovresti regolare il minimo dalla centralina di carburazione del router.o del modem
15:29:43 Valeria: O GESU CRISTO
15:29:46 Valeria: STAI SKERZANDO?
15:29:50 Valeria: cmq io ho infostrada
15:29:59 Valeria: come faccio a regolarlo?
15:30:00 Valeria: oddio
15:30:47 Daniel: va beh,il tuo provider insomma..beh di solito,almeno nei computer vecchi,la centralina di carburazione è sotto la sedia,prova ad alzarti e guardare se puoi infilarci un cacciavite
15:31:06 Valeria: ho un portatile..
15:31:09 Valeria: asus…
15:31:11 Valeria: nuovo…
15:31:20 Valeria: da 3 giorni
15:31:31 Valeria: nn quello k hai visto in unibiblio
15:31:32 Daniel: allora è sotto al portatile!alzalo subito
15:31:40 Valeria: cosa devo fare?!!?
15:31:50 Daniel: alzarlo,il portatile.abbassarlo,il minimo
15:32:38 Valeria: ??????? EEEEH
15:32:44 Valeria: MA DOVE?
15:32:50 Daniel: ALZA IL PORTATILE
15:32:53 Daniel: sotto cosa c’è?
15:32:57 Valeria: la batteria
15:33:05 Daniel: ma come,ce l’hai staccata dal portatile???
15:33:17 Valeria: NO è SOTTO OVVIAMENTE
15:33:28 Daniel: ma sotto al portatile che cosa c’è?
15:33:38 Valeria: il tavolo!!!!!!!!!!!! k domande fai
15:33:48 Daniel: aaaah ma allora è tutto a posto,devi solo scaricarlo di nuovo
15:33:54 Valeria: AMMAZZATIIIIIIIIIII
15:33:58 Daniel: ahahahahahhaah
15:34:00 Valeria: IO K PENSAVO MALISSIMO
15:34:05 Valeria: OOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOO
15:34:09 Daniel: ahhahahahahahahahhhahahahahhahahahah
ahahhahahahhaahahahahahhahahahahahahahahaaha
15:34:12 Valeria: hahahahha
15:34:13 Valeria: hahahaha
15:34:17 Valeria: hahahaha bella cmq, bella
Grazie Valli per aver alzato di 1000 punti il troppo basso umore degli studenti di Informatica dell’Unibz per questo pomeriggio <3
Ti vogliamo come mascotte di facoltà
Tags:
code,
Download,
java,
language,
layout,
php,
Programming,
programming project,
project,
Unibz Categories:
Activism?,
Programming
Updated on 18th April 2008, a complete example on stack and heap
Updated on 15th April 2008, new contents and new layout!
Updated on 6th April 2008, new contents!
At Programming Project course we study project-oriented approaches to Java-based software development. Don’t ask me why, the syllabus covers the topic “Modeling program execution with memory models”, even if we use Java, the programming language known for letting the developer to write programs without caring about memory.
Anyway, here is a briefly summary of the slides and the explanation of the professor about a simple object oriented memory model (Java as example).
Download the PDF of the summary
Topics covered:
- Memory portions assigned to a program (code area, heap / dynamic memory area), execution stack
- How code is loaded in Java
- The Activation Record (AR) and function calls
- Abbrevations (AR, RV, RA, SP, N/E, @, ??, arb)
- Examples on method calls and activation records usage
- Declaraion vs. Definition of a variable, the scope of a variable, blocks
- Scope Activation Record (SAR), Static Link (SL), the role of SL
- The extent/lifetime of a variable
- Dynamic memory allocation and handling
- Dynamic vs. Static memory allocation
- Dynamic memory scope and extent
- Accessing dynamic memory
- Classes and Objects in detail, object instantiation
- Memory Management issues
- Objects vs. Variables (definitions)
- Methods of Objects
- Class Attributes
- The null value
- Parameters (formal, actual), parameters passing (by reference, by value)
- Constructors and Inline Initialization
- Constructor’s call
- Class attributes (static variables)
- Class methods (static methods)
- Complete Example of Stack/Heap Diagrams
Everything is integrated with simple examples.
Download the PDF of the summary