A partir de hoje vou dedicar um tempo para que o blog não passe por um longo tempo como esse sem postagens.
Quando saiu o beta do windows 7, eu instalei logo para testar e gostei bastante. Mas como a versão era liberada para uso por apenas um ano, já estava chegando o período que ia parar de funcionar, não tinha saído a versão para estudantes no MSDNAA ainda e eu não estava afim de desembolsar o valor para poder usá-lo, então eu resolvi partir para o linux. Fiquei em dúvida entre o ubuntu e o fedora. Instalei o fedora 12. Para um usuário que nunca tinha utilizado linux, eu tive dificuldades um pouco nas instalações de alguns programas que eu achava essenciais. Depois acabei descobrindo o yum. Que maravilha esse comando heim?
Agora, após pouco mais de um ano utilizando linux, eu não penso em voltar para o windows. Tenho tudo que eu preciso no linux e não preciso me preocupar tanto com a segurança. Atualmente estou utilizando o fedora 13.
24 setembro 2010
Voltando a ativa no blog
Postado por Jessé Cerqueira às 11:54 0 comentários
13 julho 2009
[SQL SERVER] Escrever valor por extenso em português
Essa é uma função que eu achei na net, e corrigi um pequeno erro com valores como entre 101 e 109, 201 e 209... Está funcionando perfeitamente agora
CREATE FUNCTION dbo.TrataGrupoExtenso(
@GRUPO DECIMAL(18, 5), @SINGULAR VARCHAR(50),
@PLURAL VARCHAR(50), @FLAG_E INT, @STR_EXT VARCHAR(255))
RETURNS @RESULTADO TABLE (FLAG_E INT, STR_EXT varchar(250))
AS
BEGIN
DECLARE
@RETORNO VARCHAR(255),
@FLAG INT
SET @RETORNO = @STR_EXT
SET @FLAG = @FLAG_E
IF (@GRUPO <> 0)
BEGIN
IF (@FLAG_E = 1) SET @RETORNO = @RETORNO + ' e'
SET @FLAG_E = 1
SET @RETORNO = @RETORNO + (SELECT dbo.GrupoExtenso(@grupo))
IF (@GRUPO = 1) SET @RETORNO = @RETORNO + @SINGULAR
ELSE SET @RETORNO = @RETORNO + @PLURAL
END
INSERT @RESULTADO
(FLAG_E, STR_EXT) VALUES (@FLAG, @RETORNO)
RETURN
END
GO
CREATE FUNCTION dbo.GrupoExtenso(@VALOR DECIMAL(18, 2))
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE
@STR_EXT VARCHAR(255),
@AUX INT,
@VALOR_T INT
SET @STR_EXT = ''
SET @AUX = 0
SET @VALOR_T = ROUND(@VALOR, 0)
SET @AUX = @VALOR_T - (@VALOR_T % 100)
IF (@VALOR_T = 100) SET @STR_EXT = ' Cem'
ELSE IF (@AUX = 100) SET @STR_EXT = ' Cento'
ELSE IF (@AUX = 200) SET @STR_EXT = ' Duzentos'
ELSE IF (@AUX = 300) SET @STR_EXT = ' Trezentos'
ELSE IF (@AUX = 400) SET @STR_EXT = ' Quatrocentos'
ELSE IF (@AUX = 500) SET @STR_EXT = ' Quinhentos'
ELSE IF (@AUX = 600) SET @STR_EXT = ' Seiscentos'
ELSE IF (@AUX = 700) SET @STR_EXT = ' Setecentos'
ELSE IF (@AUX = 800) SET @STR_EXT = ' Oitocentos'
ELSE IF (@AUX = 900) SET @STR_EXT = ' Novecentos'
IF (((@VALOR_T - @AUX) <> 0) AND(@AUX <> 0))
SET @STR_EXT = @STR_EXT+' e'
SET @AUX = (@VALOR_T % 100) - (@VALOR_T % 10)
IF (@AUX = 0)
BEGIN
SET @AUX = (@VALOR_T % 10)
IF (@AUX = 1) SET @STR_EXT = @STR_EXT+' Um'
ELSE IF (@AUX = 2) SET @STR_EXT = @STR_EXT+' Dois'
ELSE IF (@AUX = 3) SET @STR_EXT = @STR_EXT+' Tres'
ELSE IF (@AUX = 4) SET @STR_EXT = @STR_EXT+' Quatro'
ELSE IF (@AUX = 5) SET @STR_EXT = @STR_EXT+' Cinco'
ELSE IF (@AUX = 6) SET @STR_EXT = @STR_EXT+' Seis'
ELSE IF (@AUX = 7) SET @STR_EXT = @STR_EXT+' Sete'
ELSE IF (@AUX = 8) SET @STR_EXT = @STR_EXT+' Oito'
ELSE IF (@AUX = 9) SET @STR_EXT = @STR_EXT+' Nove'
END
SET @AUX = (@VALOR_T % 100) - (@VALOR_T % 10)
IF (@AUX = 10)
BEGIN
SET @AUX = (@VALOR_T % 10)
IF (@AUX = 0) SET @STR_EXT = @STR_EXT+' Dez'
ELSE IF (@AUX = 1) SET @STR_EXT = @STR_EXT+' Onze'
ELSE IF (@AUX = 2) SET @STR_EXT = @STR_EXT+' Doze'
ELSE IF (@AUX = 3) SET @STR_EXT = @STR_EXT+' Treze'
ELSE IF (@AUX = 4) SET @STR_EXT = @STR_EXT+' Quatorze'
ELSE IF (@AUX = 5) SET @STR_EXT = @STR_EXT+' Quinze'
ELSE IF (@AUX = 6) SET @STR_EXT = @STR_EXT+' Dezesseis'
ELSE IF (@AUX = 7) SET @STR_EXT = @STR_EXT+' Dezessete'
ELSE IF (@AUX = 8) SET @STR_EXT = @STR_EXT+' Dezoito'
ELSE IF (@AUX = 9) SET @STR_EXT = @STR_EXT+' Dezenove'
END
ELSE
BEGIN
IF (@AUX = 20) SET @STR_EXT = @STR_EXT+' Vinte'
ELSE IF (@AUX = 30) SET @STR_EXT = @STR_EXT+' Trinta'
ELSE IF (@AUX = 40) SET @STR_EXT = @STR_EXT+' Quarenta'
ELSE IF (@AUX = 50) SET @STR_EXT = @STR_EXT+' Cinquenta'
ELSE IF (@AUX = 60) SET @STR_EXT = @STR_EXT+' Sessenta'
ELSE IF (@AUX = 70) SET @STR_EXT = @STR_EXT+' Setenta'
ELSE IF (@AUX = 80) SET @STR_EXT = @STR_EXT+' Oitenta'
ELSE IF (@AUX = 90) SET @STR_EXT = @STR_EXT+' Noventa'
IF ((@AUX <> 0) and ((@VALOR_T % 10) <> 0))
BEGIN
SET @STR_EXT = @STR_EXT+' e'
SET @AUX = (@VALOR_T % 10)
IF (@AUX = 1) SET @STR_EXT = @STR_EXT+' Um'
ELSE IF (@AUX = 2) SET @STR_EXT = @STR_EXT+' Dois'
ELSE IF (@AUX = 3) SET @STR_EXT = @STR_EXT+' Tres'
ELSE IF (@AUX = 4) SET @STR_EXT = @STR_EXT+' Quatro'
ELSE IF (@AUX = 5) SET @STR_EXT = @STR_EXT+' Cinco'
ELSE IF (@AUX = 6) SET @STR_EXT = @STR_EXT+' Seis'
ELSE IF (@AUX = 7) SET @STR_EXT = @STR_EXT+' Sete'
ELSE IF (@AUX = 8) SET @STR_EXT = @STR_EXT+' Oito'
ELSE IF (@AUX = 9) SET @STR_EXT = @STR_EXT+' Nove'
END
END
RETURN(@STR_EXT);
END
GO
CREATE FUNCTION dbo.Extenso(@VALOR DECIMAL(18, 5))
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE
@STR_EXT VARCHAR(255),
@FLAG_E INT,
@GRUPO DECIMAL(10, 2),
@MOEDA VARCHAR(10),
@MOEDA_PLURAL VARCHAR(10),
@FLAG_CENTAVOS DECIMAL(18, 5)
-- Aqui vc podera configurar a descricao da Moeda
SET @MOEDA = 'Real'
SET @MOEDA_PLURAL = 'Reais'
SET @FLAG_CENTAVOS = 1 -- Exibir os centavos [ 0) Nao 1) Sim ]
SET @STR_EXT = ''
SET @FLAG_E = 0
SET @GRUPO = 0
IF ((CONVERT(INT, @VALOR) - (CONVERT(INT, @VALOR) % 1)) = 0)
BEGIN
SET @STR_EXT = ' Zero'
END
ELSE
BEGIN
DECLARE @TEMPINT BIGINT
-- SET @TEMPINT = (.000000001*((CONVERT(BIGINT, @VALOR) % 1000000000000)
-- - (CONVERT(BIGINT, @VALOR) % 1000000000)))
-- SELECT @FLAG_E = FLAG_E, @STR_EXT = STR_EXT FROM dbo.TrataGrupoExtenso(
-- @TEMPINT, ' Bilhão', ' Bilhões', @FLAG_E, @STR_EXT)
SET @TEMPINT = .000001*((CONVERT(INT, @VALOR) % 1000000000)
- (CONVERT(INT, @VALOR) % 1000000))
SELECT @FLAG_E = FLAG_E, @STR_EXT = STR_EXT
FROM dbo.TrataGrupoExtenso(
@TEMPINT, ' Milhão' , ' Milhões', @FLAG_E, @STR_EXT)
SET @TEMPINT = .001*((CONVERT(INT, @VALOR) % 1000000) -
(CONVERT(INT, @VALOR) % 1000))
SELECT @FLAG_E = FLAG_E, @STR_EXT = STR_EXT
FROM dbo.TrataGrupoExtenso(
@TEMPINT, ' Mil' , ' Mil', @FLAG_E, @STR_EXT)
SET @TEMPINT = (CONVERT(INT, @VALOR) % 1000)
SELECT @FLAG_E = FLAG_E, @STR_EXT = STR_EXT
FROM dbo.TrataGrupoExtenso(
@TEMPINT, '' , '', @FLAG_E, @STR_EXT)
END
IF (ROUND(@VALOR, 0) = 1)
BEGIN
SET @STR_EXT = @STR_EXT + ' '+RTRIM(@MOEDA)
END
ELSE
BEGIN
IF (ROUND(@VALOR, -6) <> 0) and
(ROUND(@VALOR, 0) - ROUND(@VALOR, -6) = 0)
SET @STR_EXT = @STR_EXT + ' de ' + RTRIM(@moeda_plural)
ELSE
SET @STR_EXT = @STR_EXT + ' ' + RTRIM(@moeda_plural)
END
IF (@FLAG_CENTAVOS = 1)
BEGIN
SET @FLAG_E = 1;
DECLARE @TEMPINT2 BIGINT
-- SET @TEMPINT2 = 100*(@VALOR - ROUND(@VALOR, 0))
set @TEMPINT2 = cast(right(cast(cast(@VALOR as numeric(10,2)) as varchar(15)),2) as BIGINT)
-- Aqui vc podera mudar a descricao dos centavos
SELECT @FLAG_E = FLAG_E, @STR_EXT = STR_EXT
FROM dbo.TrataGrupoExtenso(
@TEMPINT2, ' Centavo' , ' Centavos', @FLAG_E, @STR_EXT)
END
RETURN(@STR_EXT)
END
GO
Testando: select dbo.extenso()
206 - Duzentos e Seis Reais
9999.99 - Nove Mil Novecentos e Noventa e Nove Reais e Noventa e Nove Centavos
76543924.64 - Setenta e Seis Milhões Quinhentos e Quarenta e Tres Mil Novecentos e Vinte e Quatro Reais e Sessenta e Quatro Centavos
0.50 - Zero Real e Cinquenta Centavos
Postado por Jessé Cerqueira às 17:26 4 comentários
08 junho 2009
Alterar imagem de fundo e banner padrão do Webrun
Para alterar as imagens de fundo e o banner padrão do webrun, deve ser criado um novo parâmetro de configuração. Os parâmetros de configuração encontram-se em
>
Em parâmetro de Configuração, deve ser criado um grupo com nome Skin.
Deve ser criado então os parâmetros conforme a figura abaixo. São eles:
BackgroundImageOutApp
ConfigBannerImage
LoginBannerImage
As imagens devem estar na pasta Maker.Commons (Essa pasta deve ser ciada na pasta C:\Arquivos de programas\Softwell Solutions\...\systems caso não exista)
Após salvar e atualizar, o resultado é este
Postado por Jessé Cerqueira às 11:27 0 comentários
27 fevereiro 2009
[SQL SERVER] Deletando registros duplicados
Vamos supor que você está usando o SQL Server 2005 no seu atual projeto, e você achou que algumas linhas com os dados iguais em todas as colunas. Vamos considerar que você tenha uma tabela com nome "Exemplo" e as colunas ID e Nome.
Você pode ver que os registros com nome Jessé e Cerqueira estão duplicados. A consulta abaixo retorna apenas os registros duplicados
SELECT
[ID],[NOME],COUNT([ID])
FROM
[Exemplo]
GROUP BY
[ID],[NOME]
HAVING
COUNT([ID]) > 1
Vamos supor que você precise excluir o registro com valor (1, 'Jessé'), de modo que apenas uma linha continue.
DELETE TOP(1) FROM [Exemplo] WHERE [ID] = 1
Usando o Top(1) é possível excluir apenas o primeiro registro, em situações como no exemplo acima, que tem apenas um registro a mais. Se você tiver várias linhas com valores duplicados, você tem que usar TOP (n-1) para que apenas 1 linha permaneça após o delete. Para apagar todos os registros duplicados que você precisa para escrever um cursor como no exemplo abaixo.
DECLARE @ID int
DECLARE @NOME NVARCHAR(50)
DECLARE @CONT int
DECLARE CUR_DELETE CURSOR FOR
SELECT [ID],[NOME],COUNT([ID]) FROM [Exemplo] GROUP BY [ID],[NOME] HAVING COUNT([ID]) > 1
OPEN CUR_DELETE
FETCH NEXT FROM CUR_DELETE INTO @ID,@NOME,@CONT
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE TOP(@CONT -1) FROM [Exemplo] WHERE ID = @ID
FETCH NEXT FROM CUR_DELETE INTO @ID,@NOME,@CONT
END
CLOSE CUR_DELETE
DEALLOCATE CUR_DELETE
Postado por Jessé Cerqueira às 14:57 7 comentários
17 dezembro 2008
[Tomcat] Erro ao inicializar o serviço do apache tomcat
Aconteceu comigo uma vez, tentando iniciar o tomcat em um computador com windows xp service pack 2. Estava tudo instalado certinho, configurado, mas o tomcat não iniciava de jeito nenhum. Aparecia a mensagem: 'O Windows não pôde iniciar o Apache Tomcat em Computador local. Para obter mais informações, examine o log de eventos do sistema. Se este for um serviço não-Microsoft, contate o fornecedor do serviço e informe o código de erro específico do serviço.'
Descobri em um forum que ao copiar o arquivo JAVA_HOME/bin/msvcr71.dll para CATALINA_HOME/bin funciona. Então eu copiei C:\Arquivos de programas\Java\jre1.6.0_06\bin\msvcr71.dll
para C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0 e pronto.
Alguns dizem que copiando para o system32 também funciona.
Postado por Jessé Cerqueira às 12:28 10 comentários
05 dezembro 2008
[SQL SERVER] limpar database - truncate
Segue uma rotina para limpar a data base usando truncate table.
obs: Lembrando que truncate zera todos os identitys
IF EXISTS (Select [name] from sys.tables where [name] = 'TAB_FK_TRUNCATE' and type = 'U')
truncate table TAB_FK_TRUNCATE
go
IF NOT EXISTS (Select [name] from sys.tables where [name] = 'TAB_FK_TRUNCATE' and type = 'U')
Create table NomeDaDatabase.dbo.TAB_FK_TRUNCATE (
ID int identity (1,1),
NomeDaConstraint varchar (255),
TabelaPai varchar(255),
ColunaPaiPK varchar(255),
TabelaFilha varchar(255),
ColunaFilhaFK varchar(255),
FKOrder int
)
go
insert into NomeDaDatabase.dbo.TAB_FK_TRUNCATE(NomeDaConstraint,TabelaPai,ColunaPaiPK,TabelaFilha,ColunaFilhaFK,FKOrder)
SELECT object_name(constid) as NomeDaConstraint,object_name(rkeyid) TabelaPai
,sc2.name ColunaPaiPK
,object_name(fkeyid) TabelaFilha
,sc1.name ColunaFilhaFK
,cast (sf.keyno as int) FKOrder
FROM sysforeignkeys sf
INNER JOIN syscolumns sc1 ON sf.fkeyid = sc1.id AND sf.fkey = sc1.colid
INNER JOIN syscolumns sc2 ON sf.rkeyid = sc2.id AND sf.rkey = sc2.colid
ORDER BY rkeyid,fkeyid,keyno
declare @NomeDaConstraint varchar (max)
declare @TabelaFilha varchar (max)
declare @TabelaPai varchar (max)
declare @ColunaFilhaFK varchar (max)
declare @ColunaPaiPK varchar (max)
declare @FKOrder smallint
declare @sqlcmd varchar (max)
declare drop_constraints cursor
fast_forward
for
SELECT object_name(constid) as NomeDaConstraint,object_name(rkeyid) TabelaPai
,sc2.name ColunaPaiPK
,object_name(fkeyid) TabelaFilha
,sc1.name ColunaFilhaFK
,cast (sf.keyno as int) FKOrder
FROM sysforeignkeys sf
INNER JOIN syscolumns sc1 ON sf.fkeyid = sc1.id AND sf.fkey = sc1.colid
INNER JOIN syscolumns sc2 ON sf.rkeyid = sc2.id AND sf.rkey = sc2.colid
ORDER BY rkeyid,fkeyid,keyno
open drop_constraints
fetch next from drop_constraints
into
@NomeDaConstraint
,@TabelaPai
,@ColunaPaiPK
,@TabelaFilha
,@ColunaFilhaFK
,@FKOrder
while @@Fetch_status = 0
begin
select @sqlcmd = 'alter table '+@TabelaFilha+' drop constraint '+@NomeDaConstraint--+' foreign key '+'('+@ColunaFilhaFK+')'+' references '+@TabelaPai+' ('+@ColunaPaiPK+')'+' on delete no action on update no action'
If EXISTs (select object_name(constid) from sysforeignkeys where object_name(constid) = @NomeDaConstraint)
exec (@sqlcmd)
fetch next from drop_constraints
into
@NomeDaConstraint
,@TabelaPai
,@ColunaPaiPK
,@TabelaFilha
,@ColunaFilhaFK
,@FKOrder
end
close drop_constraints
deallocate drop_constraints
go
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
go
EXEC sp_MSForEachTable 'truncate TABLE ? '
print 'All tables truncated'
go
obs: Não utilizem em sistemas feitos em maker, pois essa rotina limpa todas as tabelas FR também
Fonte: databasejournal
Postado por Jessé Cerqueira às 16:31 0 comentários