terça-feira, 9 de fevereiro de 2010

F123.org

Olá, normalmente eu mostro algum método,facilidade ou ferramenta para usar linux. Mas hoje vou contar e encaminhar você para um projeto muito interessante, chamado f123.org

Trata-se de um sistema em pendrive com software livre, que tem em mente democratizar mais do que nossos olhos podem ver. O f123 esta organizado para ajudar pessoas com deficiência visual a usar Internet, editor de textos, e tudo mais que se pode fazer com um computador.

Ambicioso, o projeto esta se preparando para auxiliar pessoas com deficiência motora.

Divulguem e emitam suas opiniões!

sexta-feira, 5 de fevereiro de 2010

Campo com valor acumulado em SQL











Suponha que queira uma coluna calculada como no exemplo abaixo:


Que ele calcule o acumulado dos dias (datas) anteriores, além dele próprio:


+----------------------------+
| data  | valor | acumulado  |
+----------------------------+
|   1   |   5   |     5      |
|   2   |   7   |    12      |
|   2   |   7   |    19      |
+----------------------------+



Fazendo campo acumulado


-- criamos a tabela temporária
drop table #teste
create table #teste (
 data int,
 valor int,
 ac int,
)

-- carregamos o exemplo

insert into #teste values(1,9,null)
insert into #teste values(2,10,null)
insert into #teste values(3,11,null)
insert into #teste values(4,14,null)


-- atualizamos o campo "ac" com a soma com valores com a data anterior.


update #teste
set ac = (select sum(valor) from #teste where data <= a.data)
from #teste a


/*
O update acima diz o seguinte:


atualize o campo ac do primeiro registro, com o subselect, onde o subselect é a soma
de todos os valores que tenham a data (da tabela #teste so subselect) igual, ou menor que a data
da tabela #teste externa


*/


-- verificamos o resultado

select * from #teste

Dúvidas ou curiosidade, me perguntem!

quinta-feira, 4 de fevereiro de 2010

SELECT NOT EXISTS !

Olá pessoal,

talvez vocês já tenham visto isso em algumas SPs e Views em que aparece o recurso "coluna1 + coluna2 + coluna3 + ... + colunaN" selecionando-as como uma chave, combinando
com outra tabela e fazendo operações de conjuntos, por exemplo:


SELECT * FROM
#TESTE1 as A
WHERE
A.CAMPO1 + A.CAMPO2 -- <-- "chave" da tabela A
NOT IN
(SELECT B.CAMPO1 + B.CAMPO2 -- <-- "chave" da tabela B
FROM #TESTE2 as B)

Significa que quero todos os elementos da tabela A, com exceção dos que
são igual aos da tabela B ligados pela "chave" CAMPO1 + CAMPO2 iguais ou seja, é
equivalente à operação algebrica:
conjunto (A) - (B)

Esse artifício é comum e funciona, mas tem um problema sério de performance
pois o SQL terá que concatenar as colunas da primeira table, depois da segunda,
para só depois verificar se existe ou não. Quanto maiores forem as tabelas,
geometricos são os tempos de demora.

Bem, existe uma maneira melhor de fazer subtração de conjuntos no SQL onde
eu não preciso combinar as colunas para fazer um elemento que responda como
uma chave, veja os exemplos a seguir, execute-os em um banco e acompanhe os
resultados:

A vantagem é que o SQL encherga as colunas das duas tabelas e, com isso, pode fazer uma pesquisa muito mais rápida.

Exemplo mostrando a equivalencia


DROP TABLE #TESTE1
DROP TABLE #TESTE2


CREATE TABLE #TESTE1
(TIPO CHAR(10),ALIMENTO CHAR(10),VAL1 INT,VAL2 INT)


CREATE TABLE #TESTE2
(TIPO CHAR(10),ALIMENTO CHAR(10),VAL1 INT,VAL2 INT)


SET NOCOUNT ON

INSERT INTO #TESTE1 VALUES('FRUTA','BANANA',1,1)
INSERT INTO #TESTE1 VALUES('FRUTA','ABACAXI',1,1)
INSERT INTO #TESTE1 VALUES('LEGUME','FEIJÃO',1,1)
INSERT INTO #TESTE1 VALUES('LEGUME','AMENDOIM',1,1)

INSERT INTO #TESTE2 VALUES('FRUTA','CEREJA',1,1)
INSERT INTO #TESTE2 VALUES('FRUTA','ABACAXI',1,1)
INSERT INTO #TESTE2 VALUES('LEGUME','FEIJÃO',1,1)
INSERT INTO #TESTE2 VALUES('LEGUME','AMENDOIM',1,1)

/* aqui, selecionamos todos os alimentos de mesmo tipo
que tenham no primeiro, menos os que já existam no segundo.
isso da a idéia de incremento entre as tabelas A e B.
*/


SELECT * FROM #TESTE1
WHERE TIPO + ALIMENTO
NOT IN
(SELECT TIPO + ALIMENTO FROM #TESTE2)

/* o resultado é o mesmo, mas nesse exemplo o SQL vê as chaves
e com isso pode combinar de uma maneira mais inteligente para.
obter equivalencias entre as tabelas. O banco seleciona a coluna
com menos elementos e faz a combinação delas, em seguida, combina
os dados da segunda coluna (ou a coluna com mais elementos, consecutivamente)
assim, ele consegue uma busca muito mais rápida.
*/


SELECT * FROM #TESTE1 AS A
WHERE
NOT EXISTS
(SELECT TIPO,ALIMENTO
FROM #TESTE2 AS B
WHERE
A.TIPO = B.TIPO
AND A.ALIMENTO = B.ALIMENTO)

quarta-feira, 3 de fevereiro de 2010

Ouvindo Rádio FM no Ubuntu 9.10

Aqui ensinarei uma maneira simples de ouvir sua rádio favorita em uma aplicação que eu acho prática e fácil de usar. O Rhythmbox.

Dica rápida:

1) Vá em "Aplicativos" -> "Multimídia" -> "Reprodutor de músicas Rhythmbox";
2) No Rhythmbox, clique no menu "Música" -> "Nova estação de rádio na Internet...";
3) Abrirá uma caixa de diálogo escrito "URL da estação de rádio na Internet:";
4) Escolha uma das URLs da lista abaixo(veja "Lista de Rádios"), com alguma estação que lhe interesse;
5) No Rhythmbox, no menu lateral esquerdo, procure por "Rádio", clique nele;
6) Aparecerá uma lista com algumas rádios, a última é sua rádio escolhida;
7) Clique duas vezes no item da rádio ou , na parte superior do Rhytmbox, no "Reproduzir";
8) Aguarde um pouco até a rádio "sintonizar", e boa música!
*) Para mais detalhes sobre os botões ou localizações veja abaixo em "Detalhes";

Lista de Rádios:


BandNews: (Notícias)
  • Curitiba:    http://servidor25.crossdigital.com.br:8000/bandnewscuritiba
  • São Paulo: http://servidor25.crossdigital.com.br:8000/bandnewssp
CBN: (Notícias)
  • Curitiba:    mms://wms2.netpoint.com.br/cbncuritiba
91 Rock: (Pop/Rock)
  • Curitiba:    mms://media1.broadneeds.com.br/91rock
BandFM:(Pop/Rock/Eclética)

  • Curitiba:    http://servidor24.crossdigital.com.br:8000/bandfm

JovemPan: (Pop/Rock)

  • Curitiba:    ??

ps.: estou fazendo uma lista das rádios, algumas são fáceis de obter, mas outras são mais difíceis, caso tenham ou saibam onde tem mais URLs de rádio, me avisem!
só adicionarei os links de rádio *originais* e direto das próprias, obrigado!


Detalhes:

1) 
Aqui o Rhytmbox na barra de programas ativos;





2) O menu "Música" e o botão "Reproduzir"  encontram-se aqui;






3)



Para entrar na lista de rádios clique 
em "Rádio", como indicado na figura;













4) Aqui tem-se a lista as rádios adicionadas,
é possível editar o Gênero e o Título clicando com o botão direito, entrando em "propriedades", sobrescreva o título e gênero de acordo com o que você quer, basta clicar em "Fechar";

Para tocar a música, também pode-se clicar duas vezes na rádio, e aguardar o carregamento (demora uns 2 a 5 segundos, dependendo da velocidade da sua Internet;