miercuri, 15 septembrie 2010

Concept setari generice - partea 1

In seria de post-uri care urmeaza as vrea sa descriu o posibila implementare pentru un mini framework de setari generice pentru o aplicatie. Aceasta idee a fost deja implementata intr-o aplicatie OSGi si functioneaza dar pe viitor se va putea extinde.

Ideea de baza consta in setari generate dinamic pe baza unor meta informatii (annotations) care sa descrie ceea ce trebuie sa se genereze.

In Use Case Diagram anterior puteti vedea toate use case-uri ce trebuie implementate in framework-ul de setari generice.

In continuare se gaseste lista de constrangeri pentru implementarea acestui framework:
  • Framework-ul va fi implementat in Java
  • GUI-ul va fi generat utilizand Swing
  • Se vor folosi anotari pentru furnizarea metadatelor
  • Se va implementa un serviciu web care va salva / incarca setarile
  • Se va folosi o baza de date MySQL pentru salvarea setarilor



luni, 31 mai 2010

Clonare os si restaurare pe alt hardware

In linux, acest lucru se poate face relativ usor desi spre surprinderea mea nu am vazut foarte multe posturi pe acest subiect. Clonarea os-ului este o chestie extrem de utila cand vreti sa va schimbati calculatorul. Primul pas este sa arhivati os-ul pe care vreti sa il mutati pe alt hardware.

tar czvf / > backup.tar.gz

Aceasta comanda poate sa dureze destul de mult deoarece arhiveaza tot harddisk-ul dumneavoastra. Pasul doi presupune obtinerea unui linux live cd (orice livecd ar trebui sa fie bun). Pana acum am incercat cu gentoo live cd 10.1 si Kubuntu 10.04. Ambele au mers fara probleme. Indiferent de distributia de linux pe care o clonati urmatorii pasi ar trebui sa fie identici:

  1. Creati sistemul de partitii (eu prefer /boot 32M, swap 4096 (posibil mai putin in functie de memoria de RAM instalata), si / (restul spatiului ramas)). Folositi cfdisk intrucat este extrem de simplu comparativ cu fdisk.
  2. mkfs.ext3 /dev/sda1
  3. mkswap /dev/sda2
  4. swapon /dev/sda2
  5. mkfs.ext3 /dev/sda3 (puteti incerca si ext4).
Pentru a determina numarul partitiei precum si device-ul in care este mapat de kernel puteti rula fdisk -l pentru a vedea ce partitii aveti disponibile.

Acum, ca sistemul de partitii este facut nu mai aveti decat sa faceti mount, sa dezarhivati backup-ul si sa faceti chroot pe noul sistem. Nu va speriati, este mai simplu decat pare.

  1. sudo mkdir /mnt/myclonedos
  2. sudo mount /dev/sda3 /mnt/myclonedos
  3. sudo mkdir /mnt/myclonedos/boot
  4. sudo mount /dev/sda1 /mnt/myclonedos/boot
  5. sudo mount -t proc none /mnt/myclonedos/proc
  6. sudo mount -o bind /dev /mnt/myclonedos/dev
  7. Copiati arhiva in /mnt/myclonedos
  8. cd /mnt/myclonedos
  9. tar xzvf backup.tar.gz
  10. chroot /mnt/myclonedos
  11. export PS1="(chroot) $PS1" # optional
Obs: /dev/sda3 = este partitia de root (/)

Bine ati venit in noul sistem de operare. In acest moment ati mutat cu succes clona si ati instalat-o pe noul hardware. Tot ce mai aveti de facut este sa reinstalati grub si sa faceti refaceti configuratia. Este necesar intrucat pe vechiul sistem se poate sa fi avut dual boot sau poate mai multe sisteme de operare.

  1. update-grub
  2. grub-install /dev/sda
In acest moment totul este gata. Mentionez faptul ca la executarea comenzii update-grub ar trebui sa vedeti afisate mesaje cu kernel-ul detectat (kernelele detectate).

Tot ce mai aveti de facut este sa restartati sistemul si totul ar trebui sa mearga.

vineri, 14 mai 2010

Gentoo Dell Studio 1558

Acesta este ultimul meu laptop cumparat. Este superb si sunt extrem de incantat de el. Am avut ceva emotii, trebuie sa recunosc, pana am reusit sa il configurez complet. In acest moment totul functioneaza:
  • placa grafica
  • placa de sunet
  • web cam
  • dvd writer
  • slot sd/mmc
Fata de postul pentru Sony Vaio am facut cate modificari (aplicatiile sunt asemanatoare). In primul rand am select profilul de desktop pentru gentoo: eselect profile set 2. Am modificat si flag-ul use in /etc/make.conf pentru a fi sigur ca nu vor aparea conflicte sau dependente instalate de mai multe ori.

USE="acpi alsa apm avi bluetooth bzlib cdr crypt cups dbus dvd dvdr encode foomaticdb gd gif gphoto2 gnome gtk hal icq jabber jpeg kde mmx mpeg msn multilib mysql opengl pam pcmcia pdflib png ppds qt3 qt4 qt3support quicktime readline samba scanner sdl spell tcpd tiff truetype usb v4l v4l2 wmf X xvid x86 yahoo zeroconf zlib"

Gentoo kernel

Am facut cateva modificari la nivel de kernel. Livecd-ul 10.1 de gentoo are probleme cu driverele de wireless asa ca va recomand sa urmati urmatorii pasi:
  1. emerge gentoo-sources
  2. emerge genkernel
  3. genkernel --menuconfig all
  4. Bifati v4l si v4l2 si toate driverele aferente
  5. Cautati Dell Extras si bifati-l ca modul (il recomand desi este experimental)
  6. Va trebui sa downloadati iwl6000-ucode si sa il copiati in /lib/firmware dupa ce se compileaza kernel-ul (daca nu faceti asta nu veti putea folosi placa wireless).
Dupa ce ati facut aceste lucruri totul ar trebui sa fie in regula.

Ce nu merge pe livecd 10.1?

Utilizand livecd-ul de gentoo nu veti putea folosi placa wireless si camera web. Nu am incercat inca driver-ul de bluetooth dar sunt destul de sigur ca nu merge. Daca urmati pasii descrisi mai sus acestea vor functiona dupa bootarea de pe hdd.

joi, 6 mai 2010

Gentoo si Sony Vaio

Recent, am instalat gentoo pentru un laptop cu destinatia multimedia / office use. Laptop-ul in cauza este de generatie mai veche, dispune de 1GB de ram si o placa integrata intel. Problemele aparute:

  1. Placa de retea wireless - iwl3945 kernel module. -Nu este suficient. Va trebui sa mai faceti emerge la iwl3945-ucode pentru a putea folosi aceasta placa.
  2. Reticenta prietenei in momentul in care a vazut: "Unde este My Computer"? "Cum instalez programe noi"(intretimp s-a obisnuit cu el)
Ce am instalat pe acest laptop:

  1. kde-4.3
  2. vlc
  3. k3b
  4. openoffice
  5. picasa
  6. google-earth
  7. adobe-reader
  8. adobe-flash
  9. chrome
  10. firefox
  11. kopete (messenger)
  12. gentoolkit
  13. amarok
Aceste programe ii permit sa isi desfasoare bine mersi activitatea pe linux in loc de windows. Greseli pe care le puteti evita (eu nu am facut-o asa ca au trebuit fixate dupa):

  1. Inainte de a instala kde-meta:4.3 salvati urmatorul flag use in make.conf: USE="alsa png mng jpeg tiff dbus hal svg". Daca in momentul in care faceti emerge kde-meta:4.3 veti primi un mesaj de genul: change USE to "+xxxx" unde xxx este numele unei dependente adaugati acea dependenta in make.conf.
  2. Daca nu procedati asa (eu nu am facut asta) veti ajunge sa aveti conflicte in momentul in care veti face update la system utilizand emerge.
  3. Inainte de a instala adobe-flash si sun-jre-bin instalati browserele pe care le vreti. Procedand asa plugin-urile de flash si java se vor configura automat.
Kopete

Pentru kopete veti dori sa configurati urmatorul USE flag in /etc/portage/package.use:

kde-base/kopete addbookmarks autoreplace contactnotes handbook highlight history jabber nowlistening pipes privacy ssl statistics texteffect translator urlpicpreview meanwhile msn skype v4l2 webpresence winpopup yahoo

In acest fel veti putea folosi kopete ca si messenger pentru: Yahoo, MSN, AOL si Google Talk. Pentru restul pachetelor am folosit flag-ul USE default.

Plug & Play

Pentru a evita editarea fisierului fstab in momentul in care vreti sa faceti mount la device-uri externe (stick-uri usb, hdd externe, etc) puteti sa urmati pasii de mai jos:

  1. emerge ivman
  2. rc-update add ivman default
Dupa ce ati efectuat acesti pasi fiecare disk extern va fi mountat automat. Exista posibiliatea sa primiti eroare in momentul in care apasati eject. Un fix rapid pentru aceasta problema este descris mai jos:

  • nano /etc/fstab
  • Adaugati liniile urmatoare:
/dev/sdc1 /mnt/usb1 auto umask=000,user,rw 0 0
/dev/sdc2 /mnt/usb2 auto umask=000,user,rw 0 0
/dev/sdc3 /mnt/usb3 auto umask=000,user,rw 0 0

sdc reprezinta device-ul in care se vor mounta usb-urile. Pentru a determina device-ul corect cel mai usor este sa introduceti un stick intr-unul din sloturile usb. Executati fdisk -l ca root si veti vedea device corect: /dev/sd.. .Repetati acest pas pentru fiecare slot usb.

Incheiere

Desi gentoo nu este o distributie linux pentru incepatori (cel putin nu din punct de vedere al instalarii) este stabil pe termen lung. Nu veti avea probleme cu update-urile si nu veti avea nevoie sa il reinstalati pentru a trece la o versiune noua de Gentoo. Cateva comenzi care sunt utile.

  • emerge --update --newuse world (update al pachetelor explicit instalate)
  • emerge --update --deep --newuse world (update al tuturor pachetelor din sistem)
  • emerge --unmerge nume_pachet (dezinstalare pachet)
  • revdep-rebuild (va ajuta sa asigurati integritatea pachetelor si a dependentelor)

duminică, 25 aprilie 2010

Gentoo evolution

Recent, am avut o problema cu clientul de mail evolution pentru Gentoo. Modul in care il instalasem initial nu ma lasa sa instalez evolution-exchange (nu corect oricum). Pe mai multe forumuri a fost semnalata aceasta problema. Practic, evolution-exchange nu ma lasa sa configurez corect un cont de exchange. OWA URL nu este afisat in timpul configurarii. Problema provine din modul in care s-a facut emerge la evolution. Cel mai usor de rezolvat aceasta problema este sa urmat pasii de mai jos:
  1. export USE="exchange kerberos ldap"
  2. emerge evolution evolution-data-server evolution-exchange.
Asta va rezolva problema.

marți, 20 aprilie 2010

Gentoo part 1 - Instalare handbook

Gentoo este o distributie de linux "exotica" pentru multi dintre utilizatorii de linux. In general, instalarea Gentoo dureaza mai mult decat o distributie normala de linux deoarece pachetele sunt compilate in momentul instalarii. Aceasta trasatura Gentoo reprezinta si un avantaj si un dezavantaj. Avantajul este ca orice pachet instalat pe Gentoo (prin emerge) va fi optimizat pentru hardware pe care ruleaza. Ghidul oficial este suficient de detaliat pentru a reusi instalarea. Am urmat pasii descrisi in Gentoo handbook. La momentul scrierii acestui post am intampinat o singura problema: la capitolul 7 din partea 1 a handbook-ului, compilarea kernel-ului, am ales folosirea genkernel. La prima incercare de compilare a esuat cu: lzma command not found. Pentru a rezolva aceasta problema inainte de compilarea kernel-ului instalati lzma-utils: emerge lzma-utils.

Exceptand problema descrisa mai sus totul a mers cum trebuie. Recomand inainte de instalarea gentoo sa incercati livecd-ul (10.1 sau ultima versiune disponibila). Eu am gasit livecd-ul convingator.

Comentariu final: pentru utilizatorii din romania recomand schimbarea repository-ului de emerge catre unul local: http://mirrors.evolva.ro/gentoo/gentoo-distfiles/. Aceasta cale se trece in /etc/make.conf: GENTOO_MIRRORS = <evolva mirror>. Asta va va ajuta sa downloadati pachetele mai repede. Daca doriti sa setati si o sursa rsync o puteti face. Trebuie sa adaugati in make.conf: SYNC=rsync://mirrors.evolva.ro/gentoo/gentoo-distfiles/"

In cursul zilei de azi voi incerca o altfel de instalare: Trecerea unui os gentoo instalat in masina virtuala pe un hdd dedicat. Voi posta rezultatele.

joi, 18 martie 2010

Cum instalam PIL pe Mac OS X Snow Leopard

Recent a trebuit sa lucrez la un proiect în care s-a folosit django 1.1. Totul a mers foarte bine până în momentul în care am folosit într-un model django ImageField. Acest tip folosește în implementarea internă PIL(Python Image Library). Sistemul de operare pe care lucrez este Snow Leopard care este pe 64 de biti. Problema este ca a trebuit sa trec compilatorul de python să ruleze pe 32 de biti pentru ca am folosit un backend PostgreSQL. Driver-ul de psycopg2 se compilează pe 32 de biti (din pacate). Dependentele de PIL scrise in C++ sunt compilate pe 64 de biti. Din acest motiv nu reuseam sa folosesc această librărie și primeam eroare la fiecare încercare de folosire a modelului cu ImageField în el. Dupa multe, multe încercări am găsit și cauza și mult mai important rezolvarea: libjpeg și libpng compilate atat pe 32 cât și 64 biti. Le puteti downloada de aici: http://ethan.tira-thompson.org/Mac_OS_X_Ports.html.
După ce instalați librăriile totul ar trebui să meargă fără probleme. Pentru a verifica acest lucru încercați:

  1. python
  2. import _imaging
Dacă nu primiți nici o eroare totul funcționează.

Pentru instalarea PIL este suficient să executați din terminal:

easy_install PIL