Not only developing

Novembre 24, 2009

Fedora 12 : NVIDIA Driver + Kde

Archiviato in: Fedora, Linux, nvidia — Tag:, , — teox78 @ 11:47 am

Ho appena installato Fedora 12 64 bit sul desktop di casa.

L’installazione è andata bene e a mio avviso è stata anche più rapida rispetto a quella di Fedora 11.

Aggiungo i repository Rpm Fusion , installo gli ultimi driver nvidia e riavvio.

Mi accorgo subito che il desktop risulta lento in alcune operazioni semplicissime come l’apertura del menu principale (Alt + F1) o di “Run Command” (Alt + F2). Dopo aver fatto alcune ricerche in google e aver provato varie configurazioni di  xorg.conf, l’unica soluzione valida è stata quella di fare un downgrade di xorg-x11-server-Xorg e xorg-x11-server-common alla versione 1.7.1.3 che potete trovare qui.

Per il resto funziona tutto bene e tutte le periferiche sono state riconosciute senze problemi o interventi manuali.

Settembre 29, 2009

Eclipse Galileo (3.5) + Subversion

Archiviato in: Eclipse, Java — Tag:, — teox78 @ 8:36 am

Ecco come installare il plugin subversion sull’ultima versione di eclipse :

Help -> Install New Software

Come sito di aggiornamento selezionare Galileo, andare sotto la sezione Collaboration e spuntare Subversive SVN Team Provider (incubation), quindi cliccare next, accettare la licenza e fare Finish

Help -> Install New Software

Questa volta dobbiamo aggiungere il sito di aggiornamento , quindi scriviamo http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ nella edit in alto “Work with” , clicchiamo su add e inseriamo una descrizione

Sotto Subversive SVN Connectors, spuntare SVNKit 1.3.0 Implementation (optional), fare Next e poi Finish

Mi sembra strano che questo plugin non sia ancora integrato in Eclipse in quanto la maggior parte,o comunque una grande fetta,  degli utenti di questo IDE utilizza subversion.

Settembre 9, 2009

Riavvio pulito a sistema bloccato

Archiviato in: Linux — Tag:, , — teox78 @ 8:45 am

Da quando uso linux, devo ammettere che mi è capitato raramente che il sistema non rispondesse completamente.

Se però dovesse capitarvi che anche la combinazione Ctrl-Alt-Del non riavvii la macchina allora potrete ricorrere alla seguente combinazione per evitare il tasto reset : tenere premuti Alt(destro) e SysRq e digitare R E I S U B

Ecco l’azione associata ad ogni lettera :

R : mette la tastiera in modalità XLATE

E : invia SIGTERM a tutti i processi tranne init

I : invia SIGKILL a tutti i processi tranne init

S : sincronizza tutti i filesystem montati

U : rimonta tutti i filesystem in sola lettura

B : riavvio immediato del sistema senza smontare i dischi

Perchè questa procedura funzioni bisogna assicurarsi che /proc/sys/kernel/sysrq contenga 1

Agosto 22, 2009

Fedora 11 : Problemi audio con il plugin flash

Archiviato in: Fedora, Linux — Tag:, , — teox78 @ 1:18 pm

Era ormai da settimane che convivevo con un problema molto fastidioso : mentre guardavo un video su YouTube all’improvviso l’audio cominciava a saltare per poi scomparire del tutto, l’unico modo per ripristinarlo era riavviare Firefox. Facendo un po’ di prove ho capito che il problema era esclusivamente delle applicazioni flash : ho provato a reinstallare il plugin flash , Firefox … ma niente. Dopo aver girato parecchi forum ho finalmente trovato la banalissima soluzione : disinstallare il pacchetto alsa-plugins-pulseaudio.

Luglio 27, 2009

/bin/rm : Argument list too long

Archiviato in: Linux — Tag: — teox78 @ 9:49 am

Se incappate in questo errore ecco alcune soluzioni :

1.
for x in *.trc
do
rm $x
done

2.
find . -name  '*.txt' -print0 | xargs -0 rm

3.
find . -name  '*.txt' -exec rm {} \; -print

4.
find . -name  '*.txt' -delete (presente dalla versione 4.2 di find)

Luglio 20, 2009

Utilizzo delle collezioni in Oracle-PL/SQL

Archiviato in: Oracle — Tag:, — teox78 @ 12:56 pm

Le collezioni di Oracle semplificano sicuramente la programmazione in PL/SQL e sono in grado di velocizzare notevolmente alcuni processi.

Mostrerò come utilizzarle e includerò qualche esempio di impieghi particolari.

Innanzitutto creiamo il tipo

Create or replace type t_varchar2_table as table of varchar2(4000);

Operazioni base :

Create or replace procedure pr_base_test AS
--inizializzo la lista con zero elementi
x_Varchar2_Table t_varchar2_table := t_varchar2_table();
n_Step NUMBER;
BEGIN
--mettiamo 10 elementi nella lista
FOR n_Step IN 1..10 LOOP
x_Varchar2_Table.EXTEND;
x_Varchar2_Table(x_Varchar2_Table.LAST) := 'Row '||n_Step;
END LOOP;
--visualizzo quanti elementi ho nella lista
Dbms_Output.put_Line('Count = '||x_Varchar2_Table.COUNT);
--visualizzo ogni elemento in lista
FOR n_Step IN x_Varchar2_Table.FIRST..x_Varchar2_Table.LAST LOOP
Dbms_Output.put_Line(x_Varchar2_Table(n_Step);
END LOOP;
--controllo se un elemento è presente nella lista
IF 'Row 7' MEMBER OF x_Varchar2_Table THEN
Dbms_output.put_Line('OK');
END IF;
--Controllo se la lista è univoca, ovvero non ho duplicati
IF x_Varchar2_Table IS A SET THEN
Dbms_output.put_Line('IS A SET);
END IF;
--svuoto la lista
x_Varchar2_Table.DELETE;
END;
/

A partire da Oracle 10g sono presenti una serie di operatori multiset che permettono operazioni sulle liste. Eccone una lista con accanto l’equivalente operatore SQL :

MULTISET UNION DISTINCT UNION
MULTISET UNION UNION ALL
MULTISET UNION ALL UNION ALL
MULTISET INTERSECT INTERSECT
MULTISET INTERSECT DISTINCT N/A
MULTISET EXCEPT MINUS
MULTISET EXCEPT DISTINCT N/A

Per riempire una lista con dei valori provenienti da una query è semplicissimo :

declare
x_table_list t_varchar2_table := t_varchar2_table();
begin
select table_name BULK COLLECT INTO x_table_list
from user_tables
where table_name like 'A%';
--la lista ora contiene l'elenco delle tabelle che iniziano con A
end;

Naturalmente non bisogna abusare dell’uso delle liste in quanto consumano parecchia memoria. Gli utilizzi principali che ho riscontrato sono :

  • creo una lista di dati che poi andrò ad utilizzare parecchie volte : è inutile fare la join con la medesima tabella (magari di grandi dimensioni) molte volte quando è possibile caricare in memoria la lista di ID di cui necessito e unitilizzarla n volte.
  • sono molto utili per trasferire dati da una procedura all’altra : ad esempio, se ho un package che mi gestisce gli utenti e all’interno di questo una procedure che mi restituisce la lista degli utenti è inutile implementare tale logica in un altro package. Quindi il package che avrà bisogno dell’elenco degli utenti invocherà tale procedura e ne utilizzerà la lista ottenuta.
  • Ottimizzazione di insert/update/delete di tante righe grazie all’operatore FORALL

Ecco alcuni esempi :

Esempio 1

declare
x_table_list t_varchar2_table := t_varchar2_table();
n_count Number;
begin
select table_name bulk collect into x_table_list
from user_tables
where table_name like 'A%';
--use the list as a table
select count(*) into n_count
from user_tab_columns a, TABLE(x_table_list) b
where a.table_name = b.column_value;
dbms_output.put_line(n_count);
end;

Esempio 2

create table temp
as select * from user_tables
where 1 = 2;

declare
type t_user_tables is table of user_tables%ROWTYPE;
x_user_tables t_user_tables := t_user_tables();
n Number;
begin
select * bulk collect into x_user_tables
from user_tables;
FORALL n IN x_user_tables.FIRST..x_user_tables.LAST
Insert into temp values x_user_tables(n);
COMMIT;
End;

E se invece avessi bisogno di utilizzare una collezione all’interno di una query dinamica ?? In questo caso è obbligatorio utilizzare collezioni basate su tipi creati all’interno dello schema tramite il comando Create Type. Nell’esempio utlizzerò il tipo t_varchar2_table creato all’inizio del post.


create or replace PACKAGE pk_Test AS
PROCEDURE pr_Load;
PROCEDURE pr_ExecuteQuery;

FUNCTION fn_List RETURN T_Varchar2_Table;

END  pk_Test;

create or replace PACKAGE BODY pk_Test AS
kx_List T_Varchar2_Table := T_Varchar2_Table();

PROCEDURE pr_Load IS
BEGIN
SELECT Table_Name BULK COLLECT INTO kx_List
FROM User_Tables
WHERE Table_Name LIKE ‘A%’;

END pr_Test;

PROCEDURE pr_ExecuteQuery IS
v_Sql VARCHAR2(1000);
n_Count NUMBER;
BEGIN
v_Sql := ‘SELECT COUNT(*)
FROM User_Tables
WHERE Table_Name IN (
SELECT Column_Value FROM
TABLE ( pk_Test.fn_List )
)’;

EXECUTE IMMEDIATE v_Sql INTO n_Count;
Dbms_Output.put_line(n_Count);
END pr_ExecuteQuery;

FUNCTION fn_List RETURN T_Varchar2_Table IS
BEGIN
Return kx_List;
END fn_List;

END pk_Test;

Nella procedura pr_Load non faccio altro che caricare in una collezione tutte le tabelle che iniziano con A.

Nella procedura pr_ExecuteQuery  eseguo una query dinamica tramite il comando Execute Immediate  utilizzando la lista appena caricata che mi viene restituita dalla funzione fn_List.

t_user_tables

Giugno 24, 2009

Fedora 11 : problemi con driver NVIDIA

Archiviato in: Fedora, Linux — Tag:, , — teox78 @ 9:54 am

Ho fatto l’upgrade da Fedora 10 a Fedora 11 sul mio portatile attraverso lo strumento preupgrade che ti permette di passare alla nuova distribuzione senza alcun DVD o CD ma tramite yum.

Il processo di upgrade è andato benissimo!!

Al primo boot entro in run level 3 per compilare i driver NVidia sul nuovo kernel e faccio reboot.

L’interfaccia grafica non parte, guardo nei log e vedo che ci sono problemi nel caricare il driver NVidia.

Facendo lsmod mi accorgo che anche il nouveau (driver opensource nvidia) è stato caricato. Per evitare il suo caricamento ecco la procedura che ho seguito :

vi /etc/modprobe.d/blacklist.conf

aggiungo le seguenti righe :

# Video drivers
blacklist nouveau

Faccio il backup dell’initrd e lo ricreo (dall’utente root) :

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.backup
mkinitrd -v /boot/initrd-`uname -r`.img `uname -r`

Reboot e tutto funziona alla perfezione !!

Maggio 13, 2009

Oracle : allocation and deallocation of a Clob

Archiviato in: Oracle — Tag:, — teox78 @ 2:38 pm

In a platform based on Oracle, I’m currently developing at work, there is a massive use of clobs so I must make sure to free all the resources allocated by clobs. To do this I created two procedures : one created a temporary clob, the other one frees the clob.

PROCEDURE pr_Open_CLOB(pc_Clob IN OUT NOCOPY CLOB) AS
BEGIN
pc_Clob:=EMPTY_CLOB;
DBMS_LOB.CREATETEMPORARY(pc_Clob, TRUE);
DBMS_LOB.OPEN(pc_Clob, DBMS_LOB.LOB_READWRITE);
END pr_Open_CLOB;


PROCEDURE pr_Close_CLOB(pc_Clob IN OUT NOCOPY CLOB) AS
BEGIN
IF DBMS_LOB.ISOPEN(pc_Clob)=1 THEN
DBMS_LOB.CLOSE(pc_Clob);
END IF;
IF DBMS_LOB.ISTEMPORARY(pc_Clob)=1 THEN
DBMS_LOB.FREETEMPORARY(pc_Clob);
END IF;
END pr_Close_CLOB;

This is how the 2 procedures should be used :

PROCEDURE pr_Test AS
c_Temp CLOB;
BEGIN
pr_Open_Clob(c_Temp);
--use clob
pr_Close_Clob(c_Temp);
EXCEPTION
WHEN OTHERS THEN
pr_Close_Clob(c_Temp);
END pr_Test;

In this way I make sure resources allocated by clobs are always released, even in case of exceptions.

Settembre 7, 2008

Fedora 9 : applicazioni flash senza audio

Archiviato in: Linux — Tag:, , , — teox78 @ 5:54 pm

Oggi mi sono accorto guardando un trailer su internet che l’audio non si sentiva. Dopo un po’ di test arrivo alla conclusione che l’audio funzionava perfettamente eccetto per le applicazioni flash come il player di YouTube. Dopo poche ricerche si google trovo la soluzione :

yum remove libflashsupport

yum remove flash-plugin

yum install libflashsupport

yum install flash-plugin

Non so se la causa sia stata un update o altro ma la reinstallazione sopra descritta ha comunque risolto il mio caso.

Agosto 26, 2008

Alcuni repository per Fedora 9

Archiviato in: Linux — Tag:, , , — teox78 @ 8:52 am

Dopo aver provato varie distribuzioni linux , ho deciso di installare e tenere Fedora Core 9. Per renderla ancora più completa ecco alcuni repository già disponibili per l’ultima versione di Fedora :

LIVNA

[livna]
name=Livna for Fedora Core $releasever – $basearch – Base
baseurl=http://rpm.livna.org/fedora/$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://livna-dl.reloumirrors.net/RPM-LIVNA-GPG-KEY

FRESHRPMS

[freshrpms]
name=Fedora Core $releasever – $basearch – Freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms/
enabled=0
gpgkey=http://freshrpms.net/RPM-GPG-KEY-freshrpms
gpgcheck=1

ADOBE

[adobe-linux]
name=Adobe Systems Incorporated
baseurl=http://linuxdownload.adobe.com/linux/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux

ATRPMS

[atrpms]
name=Fedora Core $releasever – $basearch – ATrpms
baseurl=http://dl.atrpms.net/f$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
enabled=0
gpgcheck=1

Articoli precedenti »

Blog su WordPress.com.