Oct 10 2012

Learning Spring, part II

Category: TechnicalIuliana @ 17:02

One of the reasons I haven’t taken SCJP yet was the stupidity of the grammar in the construction of some questions and answers on the exam.(I have given examples in the past on this blog, search a little if you are curious)  Currently I am to take the Spring Core Certification exam and  and I am terrified that I will find the same kind of questions and answers in it.  And the worst part is that there are not that many mock exam samples on the internet, so I have no chance to get used to the specific style.

For example:

In Spring Framework’s declarative transaction implementation , is it sufficient to annotate the classes with the @Transactional annotation ?
Select Your Answer :

  1. No
  2. Yes
  3. No . <tx:annotation -driven/> has to be added in configuration file

You might be inclined to say that the correct answer is 3, Continue reading “Learning Spring, part II”


Sep 15 2012

Learning Spring

Category: English posts,TechnicalIuliana @ 23:47

A few months ago the company where I am currently employed sent me to Belgrad to train me in Spring Core. The training lasted 4 days and at the end I was supposed to take the Spring Core certification exam and pass it.

I delayed that for a while, but because now I have some spare time I decided it was time for me to do this thing. So I went over the slides and the spring code samples again. But after doing some mock tests I concluded I will most likely fail the certification, because the official materials were not enough so I started reading Spring in Action. Still I noticed that in the tests there was still stuff that I hadn’t covered. So I started reading Spring Reference. And because I have some problems in retaining information just by reading it, I stared to test the recommended examples. And this is where I hit some walls.

But before telling you what is not clear for me I shall tell you what technologies I’m using for development: Maven 3.0.0, Jdk 1.7, Intellij Idea 11.1.3 and Spring 3.1.2 (I know the certification is for 3.0, but as the Spring reference manual has 840 pages, I might as well read about the new and useful stuff added in 3.1)

The first problem I had was with the compound property names. I tried using them. Idea does not recognize them and my test fails.

Continue reading “Learning Spring”

Tags: ,

Jul 17 2012

Brain overload

Category: TechnicalIuliana @ 12:32

If you are a developer and write error messages like these :

– Simple Error bla bla bla
– Small Malfunction bla bla bla

And I end up working with your code I have only this to say:

I don’t know who you are, I don’t know what you want, If you’re trying to be funny, I can tell you I don’t have a sense of humour, but what I do have are a very particular set of skills, skills that have acquired over a very long career. Skills that make me a nightmare for people like you. If you stop writing shit debug messages like these now, that will be the end of it. But if you don’t, I will look for you. I will find you and I will kill you.

Because when it comes to code, there is no such thing as a Simple ERROR, nor a Small MALFUNCTION.

Jun 19 2012

when you have an itch…

Category: English posts,TechnicalIuliana @ 10:34

… you gotta scratch it. And I had a serious itch cause by my Windows. Even if Windows has evolved so much, even if Windows 7 is the peak of greatness among all the Windowses before it, it still does not know how to manage 4 core processors. So I was seriously pissed about the fact that Windows 7 froze from time to time, making my super-laptop look like my first computer, an AMD K6, 500 MHz and 256 MB SRAM. Which was definitely not cool, considering the fact that my laptop’s configuration looks like this: Intel Quad Core i5-450M and 6 GB DDR3. The only reason I kept windows so far on my laptop was that my processor has a capability known as turbo boost, meaning that can over-clock itself when needed. But this won’t be needed that much if the tasks were efficiently distributed between the 4 cores, which were not.

So two days ago, I just snapped, decided to give up the possibility of playing games for a while and went on a search for the perfect Linux for my laptop. I am fond of Gentoo as you know, but compiling a full OS was not an option because it is a time-consuming operation and also because all that compiling would set my laptop on fire and it’s already hot in Romania right now (32 Celsius degrees). So I was left to choose between Archlinux and Mint. I did not even consider Ubuntu, it’s a Linux that looks and acts like Windows, the thing I was trying to get rid of. I had Archlinux before and I know in order to get the final result some time must be wasted on its configuration, so I went for Mint.

In less than 30 minutes I had a fully functional and compact Linux, oh well … fully for a normal user, not for me, a curios developer. So after this I went on and started installing the development software. The first one I wanted to install was the jdk. Mint uses open-jdk which Idea and STS refuse to go along with, so I went on a quest for installing the Oracle version. If on other Linux systems this was a piece of cake on Mint, it was not so, because Mint has all these symlinks pointing to open-jdk binaries, and even if you do everything right, set the JAVA_Home variable and add it to the path, when you will execute “java -version” in the console, the binary that will be executed will still be the one of the in the open-jdk. The only way to change this is to go to /usr/bin, see where the specific symlinks point to and change that. After that I installed Idea and STS and everything was flawless.

Then I wanted to add a second monitor and this is where all blew up in my face. But not because there was something wrong with Mint, but because one of the cables was not plugged in correctly in my monitor and the system did not see it. I did not even consider that the problem might come from a cable and went on and tried to install nVidia drivers in order to convince the system to see my external monitor. After the first restart I was left without an interface, because the nVidia drivers were not stable, ofcourse. So I went old-school and installed lynx, a text based browser, and searched for a solution for my problem. I did so and tried different options for an hour, when finally it worked and I had my graphic interface back, but the external monitor still was invisible to Mint, so I considered the possibility of the monitor not actually being plugged in the laptop. I check the cables and … surprise. It detected it right away.

Conclusion: if you want to install a Linux on your laptop, I truly recommend Mint, it is small, smart, fast and it knows how to work the special buttons on your laptop, without any additional settings. And is also easy to install, if you are not an old-school developer who considers problems being caused by the software first :D , that is. :)

Tags: , , , ,

May 06 2012

[Updated]Swapping values

Category: English posts,TechnicalIuliana @ 13:29

While in high school and college when I was starting to learn what programming meant the fist example that my teacher gave was the swapping of two values. The typical solution was:

int swp = a;
a = b;
b = swp;

None of those teachers asked as if there is another solution to do this. We were just supposed to take the above solution as granted. But in some cases there is another one, which is also slightly more efficient as it does not use a temporary variable:

b += a;
a = b – a;
b = b – a;
// string version when a does not contain b and b does not contatin a
b += a;
a = b.replace(a,””);
b = b.replace(a,””);
// string version when a might contain b and b might not contain a and neither of them contains special regex characters
b = a+ b ;
a = b.replaceFirst(a,””);
b = b.replaceFirst(a,””);
// universal solution offered by bm
b = (a + b).substring(0, (a + b).length() – (a = (a + b).substring(a.length())).length());

I know this might seem totally useless to a lot of you, but this post is supposed to promote thinking out of the box, and never taking anything for granted. Use your own mind, find your own solutions, this is what actually helps you improve and keeps your brain alive. And also, when going to an interview as a developer for the first time, this problem has a big chance of being among the one presented to you. :)


May 05 2012

What does a passionate developer do…

Category: English posts,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.
– 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: , , ,

Mar 19 2012

Incapacitatea de a accepta critica

Category: TechnicalIuliana @ 10:09

Românii suferă patologic de înfumurare – ei sunt cei mai buni, cei mai tari, dușmanii mor că nu’s ca ei, suntem cei mai deștepți, femeile noastre sunt cele mai frumoase și tot așa. Cred că știți placa.

Lucrând în IT, clar ca și în IT suntem cei mai buni. Nu zic nu, dar n-ar strica să muncim mai mult și apoi să le lăudăm cu asta, nu de alta dar observ o tendință de delăsare în domeniul ăsta. Faptul că ai terminat o facultate de IT și că ai reușit să te angajezi nu înseamnă că ai un talent nativ pentru asta. Faptul că la firma la care te-ai angajat lucrezi cu oameni cunoscuți a fi guru în domeniu nu înseamnă că meriți să lucrezi alături de ei și că te apropii de nivelul lor înseamnă doar că firmele nu mai au de unde alege. Așa că dacă vrei să crești, vrei să fii apreciat trebuie să fii ca un burete să absorbi orice ți se dă să înveți și să muncești și de unul singur pentru a ajunge acolo unde vrei. Când lucrezi în IT la o firmă privată, nu vei prinde niciodată măriri date la grămadă că așa trebuie (numai bugetarii primesc așa ceva) măririle se dau pe măsură în funcție de evoluția ta și dedicarea de care dai dovadă.

Nu toți au capacitatea sau motivația de a învăța singuri, în afara serviciului pentru a crește în domeniul. Mulți, se dovedesc în timp a nu fi capabili să facă asta. Nu este nici o rușine să accepți faptul că te-ai înșelat și să ai curajul să găsești ce îți place cu adevărat să faci.

Din păcate la noi atitudinea asta o întâlnești foarte rar. Mulți dacă au diplomă de ingineri vor să fie ingineri (dau exemplu titlul ăsta pentru că e mai aproape de mine), mulți vor neapărat să lucreze în IT, pentru că au terminat o facultate în domeniu. Mulți fug după gradele de developer, deși nu au chemare pentru asta. Da știu se câștigă bine în IT și e o mândrie imensă să te prezinți ca senior developer, dar dacă titlul ăla este la fel de sec ca și diploma de la facultate și ți-a fost dat doar pe vechime nu înseamnă nimic.

Firmele serioase au evaluări periodice, la aceste evaluări ți se spune ce-i de capul tău, ce progrese ai făcut, dacă ai făcut. Ești sfătuit ce să mai studiezi și cât, dacă ai dovedit aptitudini pentru altceva ești sfătuit să încerci să dezvolți talentul acela, pentru că un angajat care face ceva la care este foarte bun este mult mai valoros și este remunerat pe măsură decât unul care face ceva la nivel mediocru. Mulți nu fac fața primei evaluări negative, da sunt și dintr-astea, pentru că suferă de boala patologică menționată la început. Pe mulți evaluările negative îi revoltă, pleacă din firmă sau își manifestă frustrările trăgând mâța de coadă la serviciu, după. Foarte puțini analizează ce li s-a spus și se mobilizează în direcția dorită sau recomandată. Mulți nu realizează cât ar avea de câștigat dacă ar face-o și pentru asta educația primită de la părinți ce au lucrat în sistemul comunist este de vină. E așa de greu de priceput că o firmă vrea să te poată vinde la adevărata ta valoare și că și tu ai avea de câștigat din asta?

Eu am o prietenă care a terminat AC-ul. La AC nu este nici o materie care să te pregătească să devii tester. De asta toți ce termină se așteaptă să devină developeri. Ea și-a dat seama că nu are talent de developer și s-a băgat pe testare, și-a dat certificări și câștigă foarte bine făcând ceva ce îi place și ce înțelege și este foarte apreciată pentru asta. Nu a bocit ore întregi că vrea să fie developer, nu s-a îndopat cu lecitină și și-a pierdut nopțile ca să ajungă un developer mediocru. S-a reorientat și a devenit un tester foarte capabil.

Dacă mie mâine mi s-ar spune că sunt mai bună pe asta, mi-aș da măcar o șansă, aș încerca să văd dacă e adevărat. Pentru că bani/carieră faci atunci când excelezi într-un domeniu, nu ești mediocru în el.

Iar critica negativă, când vine de la cineva capabil și a cărui intenție nu este să te jignească, ci să te ajute trebuie luată în considerare și învățat din ea. Da este greu, știu, dar trebuie să ne schimbăm mentalitatea astfel nu vom evolua niciodată. Și nu mă refer numai la IT, am dat exemple din IT pentru că ăsta este domeniul meu, mă refer la orice domeniu.

Mi-am adus aminte să scriu articolul ăsta după ce am citit la Arhi despre proasta de la Antene, care este directoare de marketing (deci o poziție de conducere în care a ajuns numai ea știe cum, că dacă se făceau evaluări serioase nu ajunge acolo) care mănâncă în continuare căcat pe facebook și pe unde apucă, după ce un reportaj apărut la tv a fost aspru criticat, deoarece era un fake în care intervievata trebuia să fie o bugetară amărâtă care nu își permitea decât două roșii, iar aceasta câteva de secunde mai târziu se transforma în vânzătoare de roșii. Dacă vreți să vedeți toată tărășenia, aruncați un ochi aici. Doamna directoare de atunci tot aruncă cu injurii și citate ce conțin cuvinte învățate la facultatea de jurnalistică încercând să… nu prea pricep eu ce… pentru că gafa e atât de evidentă încât ce dracu ai mai putea să spui???

Conducerea Antenei 1 ar fi trebuit de mult să-i dea liber madamei dacă și-ar angaja oamenii pe bază de cât îi duce capul în domeniu, din păcate Antena 1 probabil e un fel de instituție comunistă care funcționează ca un sistem bugetar în care nimeni nu este concediat, nimeni nu este penalizat, doar ascundem gunoiul sub preș și mergem înainte. Mergeți voi înainte acum când există internetul și toată lumea poate afla ușor ce incapabili angajați voi acolo!

Poate unii oameni încă nu realizează cât de puternic este internetul… este foarte puternic, este Big-Brother, este ca un ziar mare în care se scrie despre oricine și despre orice, orice om este vedetă, orice întâmplare este eveniment. De ce credeți că se dau vedetele peste cap să fie aprobate SOPA, ACTA și alte nebunii asemenea? Fix pentru că celebritatea nu mai e ce era odată, nu mai este ceva al lor. Dar despre asta altă dată…

Tags: , , ,