May 05 2012

What does a passionate developer do…

Category: TechnicalIuliana @ 22:35

… when is stuck in a hotel room because of the rain, bored out of his mind and with no mood to work? Well when that happens to me I start to reed my java feed reader and depending on what I find there I might write my own articles. So… yes, this article is today’s consequence of boredom.

1. What is the flaw with the Stack class?
Actually, there are two of them all being caused by the fact that java.util.Stack extends java.util.Vector:
I. Extending Vector methods insertElementAt and removeElementAt can be called and they actually work, so the stack definition is not respected (that part with only the last inserted element being accessible, the LIFO principle)
II. Extending Vector, Stack is also synchronized which makes it slow and when synchronization is not necessary this  is quite inefficient. This is not exactly a flaw, it’s more of a personal observation observation.

Then again in the api it is written that “It extends class Vector with five operations that allow a vector to be treated as a stack “, so I guess these are not flaws, the Stack class just works as intended. (Recommendation: use ArrayDeque)

2. Can an interface extend multiple interfaces?
There is no right answer to this question, because it depends of the point of view of the interviewer.
I. Yes, because you can define an interface like this:
public interface MultipleIntf extends List, Serializable {
}
II. No, extending means actually inheriting all functionality of the super-entity and  perhaps adding new functionality, in the case of interfaces there is nothing to inherit and no functionality to add. Except for the obligation to implement all abstract methods that will be enforced on the implementing class.

3. What is lazy loading?
Lazy loading is a name to describe the process of not loading something (object/class) until needing it. This question will surely take you to a ClassLoader discussion, so it is better to know and understand the Java Class Loading mechanism.
So:
– the java source files are compiled into executable code for the JVM, called bytecode, stored into *.class files.
– at start-up JVM has no loaded classes. When the first class is loaded, the classes on which its execution depends are searched and loaded too. So if I have a class which has imports statement for ArrayList and Serializable, the JVM will load my class, then it will search and load ArrayList.class and Serializable.class. Let’s imagine we have a big application with a lot of class files and one of them is missing. The application will run just fine, until we try to access a functionality implemented by that class, when the JVM will let us know that the class was not found by throwing a java.lang.ClassNotFoundException.
And this my darlings is lazy loading. A class is not loaded until used and there would be no point in doing that for efficiency reasons. Right? Anyway, if you want to have a deep understanding of the Java Class Loader, I recommend this article.

Tags: , , ,


Jan 16 2012

VirtualBox with Gentoo(4)

Category: Miscellaneous,TechnicalIuliana @ 13:58

This post is the not about the virtual machine or Gentoo, is more about setting up the tools that you will use to develop your applications and other good practices.

First, let’s talk more about environment variables. I mentioned in my previous post the JAVA_HOME variable. Most development tools need their environment variables too and they are not set up by Gentoo, so we will have to do this the way I like it, by hand. Every user has in it’s home directory – in /home/[username] (on my machine /home/jules) a file named .bashrc.The good practice is to edit this file by adding the necessary environment variables required by the tool that user will use.

1. Apache Ant

Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications.

It is easy to use, quite practical and I recommend it for small scale applications. The installation of Ant consists in unpacking the a

rchive, setting the ANT_HOME and adding the bin directory to the environment PATH variable of Gentoo. Also, the bin directory for Java should be added too, we’ll do that too.

To download ant, go to http://ant.apache.org and under Download menu item, there is a Binary Distributions link, click on that. On the frame on the right you will have a set of links which point to current versions of Ant. Download the tar.bz2 archive, you can use Firefox to do that or you can use wget:

# wget http://mirrors.hostingromania.ro/apache.org/ant/binaries/apache-ant-1.8.2-bin.tar.bz2

Then you have to unpack it:

# tar xpf apache-ant-1.8.2-bin.tar.bz2

After unpacking you will have a directory named apache-ant-1.8.2, usually I rename it to ant, because the version is not that important when the update is made by copying the new version content over the old one. You can copy it where you want, I usually leave it in the home directory for the current user. Then we have to set the ANT_HOME environment variable.

# cd ~ (gets you in /home/[username])
# nano -w .bashrc

Add the following lines:

# export ANT_HOME=/home/[username]/ant
# export PATH=${PATH}:${JAVA_HOME}/bin:${ANT_HOME}/bin

Save. (Ctrl+X,Y) Test the new environment variables:

# echo $ANT_HOME
# echo $PATH

Continue reading “VirtualBox with Gentoo(4)”

Tags: , ,


Dec 24 2011

VirtualBox with Gentoo(3)

Category: TechnicalIuliana @ 3:35

Well, we have a VM with Gentoo and an interface. Let’s make the virtual machine more flexible and more cooperative with the operating system on your computer. For this we have to install VirtualBox drivers on your Gentoo. After restarting your system upon setting up the interface you can log on to your desktop interface. But for installing other tools you will still  need the console. For the purpose of this tutorial we will use the Kde terminal named konsole.

To open a terminal: click the button on the left corner of the screen (the “K” button) and in the menu that is displayed at the top there is a text field. Type konsole and click on one of the results returned. (print-screen) Or press Alt +F2 and the same text field will appear at the top of your desktop. You can use it to start any application you want. You will be logged in with the normal user so in order to install things you need root access. So, in the terminal you need to use the su command:

# su -

You will be asked for the root password which you will type and then you can start installing. (By the way if any emerge process happens to fail, you can force to continue by using: # emerge –resume)
Continue reading “VirtualBox with Gentoo(3)”

Tags: , , , , ,


Dec 16 2011

VirtualBox with Gentoo(2)

Category: TechnicalIuliana @ 18:18

Step6.Configuring the Compile Options – this is the next step. The compilation options are kept in the /mnt/gentoo/etc/make.conf  file. You can edit this file by executing:

# nano -w /mnt/gentoo/etc/make.conf

Navigate using arrow keys to the end of the file and add line: MAKEOPTS=”-j2″.

Then add mirrors by executing:

# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

A window will be displayed with a list of options. Navigate using up and down arrow keys and use to select a mirror you prefer (one in your country or next to your country). Then hit <Enter>.
Test the if the values have been added to make.conf: (Two new lines containing GENTOO_MIRRORS=”some link” and SYNC=”some link” should be added to the file)

# cat /mnt/gentoo/etc/make.conf 

Continue reading “VirtualBox with Gentoo(2)”

Tags: , ,


Dec 15 2011

VirtualBox with Gentoo(1)

Category: TechnicalIuliana @ 10:38

As I have no computer using Linux in my house right now and I kinda miss it I decided to create a virtual machine with a gentoo on it. And as I will have to write some posts about setting up a full java development  environment on Linux and Windows I will use it for that too. I will post all the steps I make, because I’m no guru, so If I can do it, anybody will be able to just by following my steps. So, good luck and you are welcome to use the comment section for any problems you might encounter or questions I might answer.

Step1. Download and install VirtualBox.

Step2. Create a virtual machine following the instructions on the site and select operating system Gentoo. Select at least 1,5 GB memory and aVDI hard drive  of minimum 20 GB.

Step3. Download a Gentoo image from here.  I recommend the x86 version because 64bit version is not stable and given the fact that we’re gonna do a lot of stuff by hand I recommend the minimal iso. (install-x86-minimal-<release>.iso)

Step4. Start your machine from the VirtualBox window and select your iso as a boot device. When the window with the black linux console is opened the actual work beggins.

Step5.  You will see written on your virtual machine screen  “boot: “. If nothing is written the default option will be used. I used the gentoo-nofb, which disables the framebuffer,which will make things go faster in text mode. You will also asked to press enter for some default option at some time. (If you want a complete installation guide with technical explanations look here, because this article just specifies the steps to execute simply and blindly). After a lot of text is scrolled on your window  and the last line just contains just the word livecd#, you start executing the following tasks in this order: (print the commands and insert required data)
Continue reading “VirtualBox with Gentoo(1)”

Tags: , ,


Feb 03 2011

Cronica unei năzbâtii târzii(X)

Category: MiscellaneousIuliana @ 11:52

Epilog

Acesta va fi ultimul episod din cronică având în vedere că mâna mea deja şi-a reluat aproape în totalitate funcţiile. Mai am ceva muşchi puţin atrofiaţi, dar după ce mă voi putea urca pe bicicletă sau voi putea reîncepe să joc baschet probabil se vor rezolva şi ei. Cum de s-a rezolvat aşa de repede? Ei bine, am făcut fizioterapie, exact aşa cum a recomandat domnul doctor Bogdan Zaharia. Ele recomandase de fapt doar kinetoterapie, dar dacă mi-am permis să achit pachetul complet, de ce să nu o fac? La o adică atunci când e vorba de sănătate, nu e bine să te zgârceşti la resurse. Hai să vă dau detalii în caz că vreodată, deşi nu vă doresc, poate veţi avea nevoie de aşa ceva.

Am aflat despre Centrul Medical Domenico, de la un coleg de suferinţă cunoscut în spital, care s-a întâmplat să fie şi student la facultatea Apollonia. De ce are acest lucru importanţă? Pentru că Centrul Medical Domenico are sediul la etajul doi al clădirii în care funcţionează facultatea respectivă. Totul m-a costat 120 lei (preţ redus pentru că aveam trimitere de la medicul de familie – da, acum am şi de ăsta) , din care 20 de lei a fost consultaţia, iar restul tratamentul care a constat în: masaj magnetic la nivel molecular, masaj al antebraţului, băi galvanice şi kinetoterapie. Totul durat 10 zile, iar recuperarea mobilităţii a fost în procent de 100%. Singurele mişcări pe care nu le pot face complet sunt cele care implică muşchii puţin atrofiaţi şi nu pot efectua cu mâna operaţii care implică forţarea osului radius, din motive evidente, acesta find cel care a fost rupt în trei locuri. Şedinţele de kinetoterapie le voi continua încă o vreme până când medicul care se ocupă de cazul meu va fi pe deplin mulţumit.

Timp de zece zile la ora 11:15 plecam din sediul Cenit, fugeam până în staţia de tramvai din baza 3, pentru că m-am prins eu că pe la şi 20 pleca un 7 de acolo, care mă ducea până în Piaţa Unirii, unde mă întâlneam cu Alex, colegul de suferinţă, împreună cu care mergeam apoi până la destinaţie. (Peste strada ce duce spre Păcurari de biblioteca Eminescu este sediul centrului Domenico şi al universităţii Apollonia) Urmau apoi trei sferturi de oră de relaxare, apoi un sfert de oră de chin, adică kinetoterapia, unde mâna mea era practic forţată să facă mişcări ce înainte de accident erau normale şi naturale. După care din nou fugit după tramvai, ajuns la muncă, băgat programare sau altele şi în final seara … somn. :)

Per total, ce mi s-a întâmplat mie a reprezentat o uşoară (:P) ieşire din rutină. Deşi nimeni nu-şi doreşte să stea prin spitale, operaţii, fizioterapie, privind în urmă nu pot decât să remarc că a fost o experienţă interesantă. Am cunoscut o mulţime de oameni interesanţi, oameni inteligenţi, pasionaţi de meseria lor şi pentru care faptul că eu m-am făcut bine şi le-am mulţumit din toată inima a reprezentat o satisfacţie profesională, o mărturie a faptului că sunt cu adevărat buni şi talentaţi în meseria lor. Aşa că, ştiu că sună stupid, dar nu îmi pare rău că mi-am rupt mâna.

Aş vrea să mulţumesc încă o dată personalului spitalului Sf. Ioan din Iaşi, în special doctorilor Paul Ioan Sârbu şi Bogdan Zaharia, personalului spitalului Sf. Spiridon, în special doamnei/domnişoarei doctor Irina Ilieş (cea datorită căreia ochiul meu este bine şi doar cu o cicatrice simpatică şi foarte micuţă) şi personalului de la Centrul Medical Domenico, în special doctorului viitorului doctor (corectare la cerere:P) Andrei Zală.

Tags: , ,


Jan 20 2011

Cronica unei năzbâtii târzii(IX)

Category: MiscellaneousIuliana @ 0:20

Bye cyborg world, welcome back among humans!

cyborgAcum ceva vreme când am fost operată şi mi s-au implantat broşele un binevoitor a fost aşa de drăguţ încât să mă numească Robocop, Cyborg sau jumătate om – jumătate maşină. Acelaşi om m-a salutat astăzi cu  Welcome back among humans! cu ocazia  scoaterii şi ultimului gips.

De la instalarea ultimului gips şi până astăzi s-au întâmplat multe.

În primul rând m-am reîntors la serviciu pentru finalizarea proiectului ce trebuia să fie gata pe 20 decembrie 2010. Sunt şanse mari să îl termin până pe 4 februarie 2011, ultima mea zi alături de echipa Cenit. Pe 7 februarie încep colaborarea cu o altă companie mai mare și diferită de Cenit, despre care am spus pe aici, că dacă vreodată voi fi nevoită să plec de la Cenit, va fi prima opţiune pe lista mea. Nu am fost nevoită să plec şi nici nu s-a întâmplat nimic rău, doar că … mi-au făcut o ofertă de nerefuzat. :)

Doctorul rezident ce se ocupa de cazul meu mi-a găsit blogul, de acum trebuie să am grijă ce scriu. (Deamn… fără descrieri incendiare de acum…)

Am învăţat să fac vreo trei feluri de prăjituri absolut delicioase. Ce face plictiseala dintr-un om cu o mână stângă!

În luna ianuarie am avut un chiriaş, fratele lui Rpx, care m-a servit în fiecare seară cu vin fiert. Incredibil, acest tratament nu mi-a afectat capacitatea de vindecare. ;)

Revenind… astăzi mi-am scos gipsul. Proces scurt şi relaxant. Doctoraşul minune a fost şi el destul de relaxat azi, fără operaţii, fără prea mulţi pacienţi la control, fără cazuri dificile aşa că totul a durat aproape o oră. A durat atât de mult pentru că a trebuit să aştept procesarea ultimei radiografii. În tipul acela mort m-am apucat de curăţat mâna care după scoaterea gipsului arăta ca dracu – piele moartă, betadină şi păr crescut aiurea care a cauzat o iritaţie urâtă. (Şi Hartzz mai voia poze … sigur că da…) După care m-am dus ca tot angajatul model la serviciu unde m-am jucat puţin cu JAXB.(nu vă chinuiţi să căutaţi pe Gogu ce e aia, simţeam eu nevoia să menţionez acest detaliu doar pentru că în ultima vreme totul merge uns la proiectul ăsta.)

În concluzie, începând de astăzi am o mână … nouă şi aproximativ funcţională. Ca să o fac funcţională complet voi vizita zilnic timp de de vreo două săptămâni un fizioterapeut recomandat de un coleg de suferinţă cunoscut în spital.

Şi acum hai să lămuresc ceva legat de aşteptatul prin spitale, pentru că am avut impresia că doctoraşul minune s-a simţit puţin deranjat de postarea anterioară în care am menţionat timpul petrecut aşteptând în spital şi ultimul lucru pe care aş vrea să-l fac este să supăr acest minunat om cu lipsa mea de tact.

Am aşteptat destul de mult la fiecare control, dar nu m-am agitat şi enervat niciodată şi nici n-am reproşat nimic nimănui. Am înţeles nişte chestii pe care orice posibil viitor pacient trebuie să le înţeleagă şi anume:

  • doctorul ştie mai bine, a făcut o facultate foarte anevoioasă pentru asta.
  • dacă eşti conştient şi gândeşti logic şi nici nu ai o hemoragie de la o arteră principală, nu eşti o urgenţă, deci nu te supăra că eşti lăsat să aştepţi. Când se întâmplă asta motivul este sigur un caz mai grav decât al tău.
  • spitalul Sf. Ioan din Iaşi probabil deserveşte pacienţii cu oase rupte din toate judeţele dimprejur (am auzit oameni spunând că sunt din Vaslui şi Botoşani cât am bântuit pe acolo) deci iarăşi, cine se aşteaptă să nu aştepte pe acolo este puţin cam … naiv.
  • eşti în România, iar Dr. House şi Spitalul de urgenţă sunt doar filme. Spitalele nu sunt făcute să îţi facă plăcere să fii pacient, sunt făcute să te motiveze să te faci bine cât mai repede ca să scapi de acolo.
  • spitalul Sf. Ioan are dotări vechi de 20 de ani, cu toate astea oamenii aceştia salvează vieţi cu ele. (Făcând o comparaţie, nu îmi închipui cum ar fi să lucrez eu la proiectul curent pe un k6 la 500MHz…) Să nu vă mire dacă o să vi se spună să cumpăraţi un câmp sau un halat. Puteţi să nu, dar pentru sănătatea voastră ar fi recomandat să da.
  • majoritatea spitalelor din România funcţionează cu personal insuficient.

Pentru toate aceste motive nu trebuie să vă enervaţi când aşteptaţi. Tot pentru aceste motive nu se cuvine să privaţi personalul medical de respectul dumneavoastră.

Tags: , , ,