Posts Tagged ‘ shell

BD-shell 1.0.0 beta 1

I’m very proud to announce that the first beta version of the final release of BD-shell is ready and available for download.
As always you can find it on the project page.
Remember that this has to be considered as a bug hunting release, every requirements has been successfully covered but I cannot test it so often as I would like to..
Grab the code while it’s hot!

Related posts

A simple, tiny, Unix Shell written in C language, opensource

BD-shell is a project I started about a month ago, which aims to implement a tiny, simple, clean unix shell written in C language. It’s an academic project. 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:

  1. Free software is better! Others can learn something from what I learned
  2. 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/

Related posts

BD-shell

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

Features

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.
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:

  1. 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);
  2. be able to redirect the standard input and output of commands by prefixing them with built-in commands in file and out file;
  3. be able to terminate (involuntarily) the foreground process when user presses ^C and return back to the mini-shell;
  4. be able to interrupt the foreground process temporarily, when user presses ^Z, returning to the mini-shell;
  5. 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;
  6. inform the user when the background process finishes or is
    waiting for an input from the terminal;
  7. 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);
  8. be able to terminate involuntarily a background processes by issuing the built-in command kill job-number.
  9. 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.

Download:

  • 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
  • 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

License:

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/>>.

Related posts

Projects

Pomodroid
A Java/Android application that interacts with a Trac
system, retrieves developer’s tasks and lets him work following the basic rules of the Pomodoro technique.

Pomotux
A task manager implementing the Pomodoro Technique

BD-review
A dynamic website to allow people to review releases (albums, demos, EPs, singles) of (young, unsigned) music bands. Written using a small subset of JavaEE technologies, without the use of web-frameworks.

BD-incollo
A dpaste/pastebin clone written using Django

BD-shell
A tiny C shell for Unix systems

BD-theme Zen
BD-blog minimalistic Wordress theme, available for free

BD-theme
Old BD-blog Wordress theme, available for free

Unipoli
A well-written Java implementation of the popular Monopoli game by Hasbro. It is a project I wrote with other 3 University mates following a software development cycle (Scrum). Unipoli was the project for our Programming Project course. Source code included, released under GPL. We also provide Javadoc, user stories, uml diagrams, binaries.

Computer Shop Warehouse IDA
A very simple, not really useful IDA (Individual Database Application) developed for the “Introduction to Database Systems” course. The documentation is really interesting


Do you think my projects are useful? Has one of my projects helped you at the University? Do you like to learn something from my experience? Are you happy to be able to download every source code?
Then, why don’t you consider a small donation? Donations are useful to maintain my domains and the infrastructures that host my Projects. I’m just a student, I’m not interested to earn profits from my projects, that will always remain free. But I would be delighted to don’t pay for them :-)

Related posts

Where to find Archlinux in a VPS hosting service

You can find your favourite linux distribution at linode.com, a great hosting service where I’m transferring my blog and all other services I need. They offer great cheap VPS solutions, and you can choose Archlinux from the available linux distributions.
Archlinux is currently in testing: for example, ssh will not work after a fresh install. Here I’m going to explain how to fix this and how to access your VPS.

After the installation of Archlinux, if you try to connect to ssh, you will receive this error:

ssh yourUsername@yourIP
ssh: connect to host yourIP port 22: Connection refused

That’s because Archlinux does not install the openssh server by default. Let’s install it!
Linode offers a workaround to connect to your machines, called Lish, the LInode SHell. From this shell, you will be able then to connect to your machines.

ssh yourLinodeUsername@yourLinodeHost.linode.com

Where yourLinodeUsername is the username you chose for Linode registration, and yourLinodeHost is the host address of the machine (you can see it in this page, after a login: https://www.linode.com/members/remote.cfm, it’s in the form hostNUMBER).

You will be then prompted to Archlinux console. Use your root access and install ssh:

pacman -Sy
pacman -S openssh

Add sshd to your deamons array in /etc/rc.conf

DAEMONS=(… sshd …)

If you try to connect to your account via ssh, you will get another error at this time, because you need to allow external internet connections to the ssh daemon.
Your /etc/hosts.allow should look like this:

sshd: ALL

Start opensshd (/etc/rc.d/sshd start) or reboot the machine, you’re finished!

Related posts

Curriculum

Download Curriculum formato PDF

Dati anagrafici

  • Daniel Graziotin
  • Nato a Bolzano il 23 Aprile 1987
  • Residente in Via San Giacomo n. 13,
 39055 Laives (BZ)
  • Patente: A,B
  • Telefono cellulare: +39 3400788910 - Telefono fisso: +39 0471251310
  • E-mail: bodom_lx email

Istruzione e Formazione

  • 2006 – Maturità scientifica 88/100 presso “Liceo Scientifico Europeo Rainerum”
di Bolzano
  • Studente di Informatica Applicata alla Libera Università di Bolzano 
(Bachelor of Science in Applied Computer Science)

Esperienze Professionali

Lingue Straniere

  • INGLESE: ottima conoscenza della lingua parlata e scritta (C1)
  • TEDESCO: buona conoscenza della lingua parlata e scritta
 (B2)

Certificazioni

  • Zertifikat Deutsch für den Beruf del Goethe Institut (Tedesco Orale e Scritto livello B2)
  • Certificate in International ESOL di City and Guilds (Inglese Scritto livello Expert-C1)
  • Certificate in International Spoken ESOL di City and Guilds (Inglese Orale livello Expert-C1)
  • Certificazione WebValley 2005
  • European Computer Driving License (ECDL)
  • Patentino Bilinguismo C

Pubblicazioni

Portfolio

Conoscenze informatiche

Sistemi Operativi:

  • Gnu/Linux, 8 anni ambiente Desktop, 6 anni Server, sviluppo applicazioni Web
  • Windows, 11 anni Desktop, 1 anno Server
  • Mac OS X ambiente Desktop

Linguaggi di Programmazione/Markup/Stile/Query

  • HTML/XHTML – CSS – Javascript/Ajax - PHP – SQL: livello ottimo
  • Java – C/C++ : livello ottimo
  • Python – ASP(VBscript) – LaTEX: livello buono
  • BasicX – NQC (linguaggi per programmazione microcontrollori): livello buono
  • Basi di molti altri linguaggi, nessuna difficoltà di apprendimento

Esperienze Formative

  • Sviluppo di una social network per il car-pooling in Italia, in Python Django
  • Sviluppo di un progetto opensource in C++ (QT) per la gestione di attività secondo la Tecnica del Pomodoro
  • Sviluppo di un portale dinamico a scopo accademico in Java EE5 (Servlets e JSP)
  • Sviluppo di una mini shell per sistemi Unix in C
  • Sviluppo di una versione opensource del popolare gioco Monopoli della Hasbro, in Java
  • Sviluppo di due CMS in PHP5 per Bizetaweb, uno per la gestione di Alberghi, l’altro per la gestione di Aziende (dettagli e immagini disponibili nel portfolio)
  • In Thun S.p.a,: Esperienza come sistemista, amministratore di rete in ambiente Windows 2003 e Windows 2000, basi di amministrazione Ibm Lotus Notes / Lotus Domino
  • Gestione di un server virtuale con Debian Gnu/Linux come sistema operativo
  • Pubblicazione di guide per configurare parti hardware sul wiki ufficiale di Ubuntu, e altri siti su Fedora e OpenSuSE.
  • Sviluppo e gestione di tracker BitTorrent in PHP (il maggiore da 150.000 utenti) negli anni 2004 e 2005; contatti con i grandi nomi di BitTorrent per eventuali progetti futuri
  • 1° posto Nord Italia per il concorso “Con computer ed Inglese conquisti il tuo futuro” (Acer, Trinity, Microsoft, English Town, Parlamento Europeo) nel 2004
  • Stage WebValley 2005, ITC, IRST, Iprase di Trento; sviluppo del sistema prototipo LUGORT per la raccolta, l’analisi e la visualizzazione interattiva di dati biologico-ambientali. (altre info: http://mpa.itc.it/webvalley/webvalley2005/ReportWebValley2005-PAT.pdf)
  • Stage formativo al Museo Civico di Rovereto per la programmazione di robot Lego Mindstorms nel 2005
  • Corso sull’uso di LabView nel 2003
  • Tre anni di frequenza laboratori pomeridiani orientati alla robotica ed organizzati dal Liceo Scientifico Europeo Rainerum. Contributi nelle realizzazioni dei robot apparsi spesso alla televisione locale
  • Tre viaggi studio della durata di tre settimane ciascuno in Germania
  • Un viaggio studio della durata di dieci giorni in Inghilterra

Download Curriculum formato PDF

Related posts