2011-10-29

Spring: how to send a mail

Spring has module for email sending. First one need to configure mail sender bean. Actually there are two mail sender implementations. The first one is MailSender that can be used for simple mails. For advanced mails (MIME support) JavaMailSender must be used. It is good practice to divide your configuration into several files, so we'll put mailing configuration into service-mail.xml (or you can choose your own name) and then include that file into main config file. Just for example we'll use gmail as SMTP server so configuration looks like this:



 
    
        
        
        
        
 
        
           
                  true
                  true
               
        
    
 


Spring needs two additional libraries: javax.mail and javax.activation. For maven users: simply add dependency for javax.mail (groupId: javax.mail, artifactId: mail) into your projects pom.xml.

Now we can implement our mailing service:

@Service("mailService")
public class MailServiceImpl implements MailService {
 
    @Autowired
    private JavaMailSender mailSender;
 
    public final void setMailSender(final JavaMailSender p_mailSender) {
        this.mailSender = p_mailSender;
    }
 
    public final JavaMailSender getMailSender() {
        return mailSender;
    }
 
    @Override
    public final void sendMail(final String p_from, final String p_to, final String p_subject, final String p_msg) {
        final MimeMessagePreparator preparator = new MimeMessagePreparator() {
            @Override
            public void prepare(final MimeMessage p_mimeMessage) throws Exception {
                final MimeMessageHelper message = new MimeMessageHelper(p_mimeMessage);
                message.setTo(p_to);
                message.setFrom(p_from);
                message.setSubject(p_subject);
                message.setText(p_msg, true); // true means that our text is actually HTML!!!
            }
        };
        mailSender.send(preparator);
    }
 
}

Now we can use our service like this:

mailService.sendMail(fromEmail, toEmail, subject, msg);

2011-09-21

Instalacija Arch Linux-a na LVM i obratno

U prošlom postu opisao sam šta je to LVM i kako se pravi. Ali da bi LVM radio na Arch Linux-u mora se izvršiti određeno podešavanje i o teme će biti reči u ovom tekstu.

Treba obratiti pažnju na 2 fajla.

U rc.conf treba postaviti
USELVM="yes"

U mkinitcpio.conf treba da stoji:
MODULES="dm_mod"
. . .
HOOKS="base udev autodetect pata scsi sata usb lvm2 filesystems usbinput"

Zatim traba ponovo naraviti initramfs:
cd /boot
mkinitcpion -p linux

Manuelno mountovanje LVM particije

Ponekad je nužno ručno mountovati particiju, sa običnim je to lako:
mount /dev/sda4 /mnt/arch

Ali to ne pali kod LVM particija.

sa
pvs

saznajemo ime VG i na koje PV su u VG

Recimo sa se VG zove VolGroup00, zatim sa:
lvdisplay /dev/VolGroup00

izlistamo LV na VG

Kad smo se odlučili koju LV (LogVol00 u primeru) ćemo mountovati radimo:
vgscan --mknodes
lvchange -a y /dev/VolGroup00/LogVol00
mount /dev/VolGroup00/LogVol00 /mnt/lvm

2011-09-18

Logical volume manager - LVM

LVM je način da linux dobije particije koje se mogu lako širiti i skupljati. Osim toga moguće je raditi apstrakciju diskova i particija, zgodno za sistem sa puno diskova. Nad LVM se često kombinuje sa softverskim RAID-om i enkripcijom.

Pre nego što nastavimo dalje moramo defisati osnovne pojmove.

Physical volume - PV
Disk ili particija diska koja je određena da se priključi u LVM. Particija treba da je tipa 8e Odnosno Linux/LVM. Pravi se npr. preko disk partition alata cfdisk ili fdisk.

Volume groupe - VG
VG je apstrakcija između PV i LV (niže opisano). VG je nešto kao disk van LVM rečnika. Razlika je što se VG može sastojati od više diskova/particija tj. phisical volume-a. VG se potom deli na logical volume-e.

Logical volume - LV
Predstavlja ono što se u van LVM zove particijom. VG se izdeli na više LV. Pri tom se veličina LV odredi tako da se ne iskoristi čitava veličina VG, zato što se kasnije kad se ukaže potreba lako LV poveća ili smanji.

Pravljenje LVM PV, VG i LV

Ovde ću prikazati način na koji se LVM pravi na Arch Linux-u. Na drugim distribucijama ne bi trebalo da se postupak mnogo razlikuje, komande za LVM su svuda iste.

Pretpostavka je da smo prethodno napravili LVM particiju i da je ona na /dev/sda4

Prvo treba proveriti da li je modul za LVM učitan u kernel:
modprobe dm-mod

zatim na particiju koju smo napravili i koja je tipa 8e (LVM) napravimo PV:
pvcreate /dev/sda4
pvdisplay # prikazuje rezultat

Zatim pravimo VG:
vgcreate VolGroup00 /dev/sda4 # ime izabrati po želji

Da imamo još PV da dodajemo u VG (osim ovog jednog sa /dev/sda4) radili bi ovo:
vgextend VolGroup00 /dev/sdb1

A zatim na VG pravimo LV po izboru za sve particije koje nam trebaju:
lvcreate -L 10G VolGroup00 -n lvroot # veličina, pripadajuca VG, ime LV
..

Dalje ukoliko se instalira početi sa instalacijom i tamo stvoriti filesysteme, ako je linux već instaliran onda mora ručno da se prave FS i da se mount-uju. Particije se sad vide preko device mappera pa mesto uobičajenog pristupa sa /dev/sda[x] referišemo se na njih u obliku:
/dev/mapper/VG00-lvroot

Za file system na LV preporučujem EXT4 eventualno EXT3. Ta dva sistema se mogu povećavati a da ih nije potrebno umount-ovati nego je direktno - online moguće promeniti veličinu naviše. ReiserFS nije moguće smanjivati.

Napomena: na LVM je moguće staviti sve linux particije. Ali ukoliko se koristi Grub 1 nije moguće imati boot particiju na LVM, osim ako nije Grub patchovan da to podrži (takav je Red Hatov). Grub 2 trebalo bi da podržava boot particiju na LVM. Swap particija zahteva drugačiju komandu za kreiranje LV da se prostor tog LV-a ne bi raspršio po disku/diskovima već da bi bio iz jednog dela. Pri tom se mnogi žale da kad dođe do popunjavanja swap-a LVM se zaglavi pa se preporučuje da swap bude van LVM. Mada, kad se swap popuni i na običnoj particiji linux se zaglupi...

2011-09-02

IBM Lotus Notes on Ubuntu: invalid character in revision number

Few days ago I needed to upgrade Lotus Notes 8.5.1 to 8.5.2 fixpack 2. IBM provides .deb packages and .sh scripts for smart upgrade.

Upgrading to 8.5.2 version passed without any problem, but installing fixpack was problematic. I was getting:

error in Version string '8.5.2-20110323.0837_FP2': invalid character in revision number

I have found a solution reading this post at Lotus forum but that post is too much bare. So I am giving a full explanation on how to solve this problem.

The problem is in "_" character in control file that is part of .deb package. Also file paths with that character in .deb package makes a problem. So we need to unpack .deb file, edit control file, change file paths and pack it again in .deb file:

# make directory wiht same name as package but without extension
mkdir ibm_lotus_notes_fixpack-8.5.2.i586

# unpack .deb file in that directory
cp ibm_lotus_notes_fixpack-8.5.2.i586.deb ibm_lotus_notes_fixpack-8.5.2.i586
cd ibm_lotus_notes_fixpack-8.5.2.i586 
ar x ibm_lotus_notes_fixpack-8.5.2.i586.deb 
rm ibm_lotus_notes_fixpack-8.5.2.i586.deb
 
# we need to put content of control.tar.gz into DEBIAN directory which is subdirectory of ibm_lotus_notes_fixpack-8.5.2.i586
mkdir DEBIAN
mv control.tar.gz DEBIAN
cd DEBIAN
tar -xvf control.tar.gz
rm control.tar.gz

# now we need to edit control file end delete "_" character from Version: using favorite editor
nano control
 
# now we should extract data.tar.gz and remove "_" from file path
cd ..
tar xvf data.tar.gz
rm data.tar.gz
cd opt/ibm/lotus/notes
mv fixpack_20110323.0837_FP2/ fixpack_20110323.0837FP2/

# set root owner to the files and pack files into .deb package
cd ../../../../
sudo chown -R root.root .
cd ..
dpkg-deb -b ibm_lotus_notes_fixpack-8.5.2.i586/
IBM has tradition of braking fixpacks for Ubuntu. This explanation works on any fixpack you just need to adjust file names, but logic is the same.

2011-08-24

Учиться, учиться и еще раз учиться!

Stanford je objavio nekoliko programa učenja na koja se možete besplatno prijaviti.

Machine Learning:
http://www.ml-class.com/
Artificial intelligence:
http://www.ai-class.com/
DB:
http://www.db-class.com/

I za kraj par finih webinara za JPA i Spring:
http://javapassion.com/portal/webinar/webinar

2011-06-25

Besplatni časopisi

Izbor 10 besplatnih online časopisa koji zavređuju pažnju, ukoliko znate neki koji nije na spisku oplemenite me :)

JAX Magazine 



Java magazin sa aktuelnim tekstovima

http://jaxenter.com/jax-magazine

Libre




Domaći časopis o slobodnom softweru još uvek u povoji :)

Link: https://libre.lugons.org/


BSD magazine



za sve BSD-ovce uključujući i MAC OSX-ovce. Deluje zanimljivo jer se dosta tekstova može primeniti i na linux. Imaju i napredne tekstove npr. o GIS-ovima i Cloud computing-u.

Link: http://bsdmag.org/


PCLinuxOS Magazine




Magazin koji pokriva jednu od boljih i laganijih distribucija linux sistema. Ima tesktove o linux softveru.

Link: http://pclosmag.com/


FullCircle Magazine




Slično ko prethodni samo za najpolularnijji distro sadašnjice: Ubuntu

Link: http://fullcirclemagazine.org/


Open Source Journal


Žestoki softverski časopis za koji pišu svetske face, vrlo ozbiljan i kvalitetan

Link: http://opensource-central.com/downloads.php (za 3. broj treba ručno dodati .pdf)

FYI



Ovo je for your information domaći časopis koji izlazi 2 put godšnje. Ima šarene teme iz enterprise programiranja i sistema, novosti sa tržišta itd. Vezan je za kompaniju koja ga izdaje ali uglavnom ne zamara s tim previše pa je zgodan i za šire narodne mase.

Link: http://croz.net/index.php/hrv/download

Overload


Časopis koji je preporučio Vlada Stanković. Radi se o ozbiljnom časopisu za softverske inženjere i programere, najsličniji je Open Source Journal-u.

Link: http://accu.org/index.php/journals/c78/

Methods and Tools - Software development magazine


Programming, Software Testing, Project Management, Jobs. Časopis koji dosta piše o alatima koji pomažu razvoj kao i o metodologijama i testiranju. Vrlo je praktičan, izlazi na 3 meseca a postoji još od '99.

Link: http://www.methodsandtools.com/mt/download.php

PragPub


Časopis koji izlazi mesečno od The Pragmatic Bookshelf-a čije knjige obožavam jer su zabavne i sveže. Tako je i ovaj časopis namenjen cutting edge tehnologijama. Nema tu nekih starig i teških tema, nema tu nekog enterprise kenjanja, već Scala, Ruby, Clojure, Cloud... Savršen časopis za studente IT-a koji treba da gledaju u budućnost i sve one koji žele da ostanu na valu IT napretka.

Link: http://pragprog.com/magazines/

Java Magazine


Ozbiljan časopis koji izdaje Oracle a u kojem se obrađuje javin ekosistem.

Link: http://www.oracle.com/technetwork/java/javamagazine/index.html