11 novembro 2012

Instalar o IIS 8 no Windows 8 [tutorial]


Neste tutorial vou mostrar como instalar rapidamente o IIS 8 no seu Windows 8 e deixá-lo pronto para servir páginas ASP.NET e PHP.

O Windows 8 vem com o IIS mas você deve instalá-lo e o processo é muito fácil.
Testado no IIS 8 com Windows 8 pro x64


1) Na busca do windows, procure por "Programas e Recursos"  e clique em "Adicionar Recursos do Winsows"




2) Marque a Caixa "Serviços de Informação da Internet" e em seus subitens "Recursos de Desenvolvimento de Aplicativos", Marque "CGI", "ASP.NET 3.5 e 4.5"

 


3) Clique em <OK> e aguarde a instalação.
4) Após a instalação, abra seu navegador e digite localhost. Se a tela abaixo aparecer sua instalação está concluída.


Pronto








26 setembro 2012

TMemoryStream: Resolva o problema para imagens grandes

Essa dica vai ajudar muita gente!
Já aconteceu com você de precisar transferir uma imagem (principalmente JPEG) ou qualquer outro Stream (seja via datasnap ou qualquer outro meio) e se deparar com vários erros gerados pelo Delphi? Um deles é o "Out of memory while expanding..."

Acontece que o TMemoryStream só aceita até 40kb, segundo o docwiki da embarcadero e isso é um problema sério pra nós programadores.

Mas vamos lá, sem mais, declare a função abaixo no seu código e quando for salvar ou carregar seu Stream, use-a. Vou dar exemplos abaixo.


 function CopyStream( const source: TStream ): TStream;  
 //resolve o problema de memory stream com mais de 40kb  
 var  
  BytesRead: Integer;  
  Buffer: PByte;  
 const  
  MaxBufSize = $F000;  
 begin  
  { ** Criando a instância do objeto TMemoryStream para retorno do método ** }  
  result := TMemoryStream.Create;  
  { ** Reposicionando o stream para o seu início ** }  
  source.Seek( 0, TSeekOrigin.soBeginning );  
  source.Position := 0;  
  GetMem( Buffer, MaxBufSize );  
  { ** Realizando a leitura do stream original, buffer a buffer ** }  
  repeat  
   BytesRead := Source.Read( Buffer^, MaxBufSize );  
   if BytesRead > 0 then  
    result.WriteBuffer( Buffer^, BytesRead );  
  until MaxBufSize > BytesRead;  
  { ** Reposicionando o stream de retorno para o seu início ** }  
  result.Seek( 0, TSeekOrigin.soBeginning );  
 end;  


Para usar:

  •     TempStream:= TMemoryStream.Create;  
        IMG.Graphic.SaveToStream(TempStream);  
        Result:= CopyStream(TempStream);  
    
  • TempStream = TMemoryStream
  • IMG = TPicture
  • A função retorna um TStream
Quando for dar um loadfromstream, use a função também:
  •  vFoto1.LoadFromStream(CopyStream(StreamRetorno))  
    

Desse modo, você pode enviar Streams de qualquer tamanho!

Abraço a todos!

21 agosto 2012

Bootar MS-DOS com Pendrive



Se você assim como eu precisa as vezes do velho e bom DOS para rodar um programa antigo ou que não roda no Windows como por exemplo, gravadores de EEPROM ou flasheadores de equipamentos mais antigos essa dica pode ajudar:


Criando um Pendrive com DOS bootável é relativamente simples. Antes no Win 98 ou anteriores, formatávamos um disco com a opção de gravar o MSDOS nele, hoje, isso não é possível com o formatador do windows. 

No entanto, existe uma ferramenta chamada Rufus, criado por Pete Batard, pode tornar esta tarefa simples. Rufus pode ser usado para criar uma versão USB inicializável de uma distribuição qualquer vinda a partir de um arquivo ISO ou do MSDOS ou FreeDOS embarcado. 

A aparência do Rufus é similar em aparência e operação da ferramenta de formatação da HP "HPUSBFW.exe", e compartilha muitas das mesmas características. No entanto, Rufus é Open Source.

Então vamos ao que interessa: Carregando o DOS a partir da USB:


  1. Baixe o Rufus aqui (multiupload) ou aqui (oficial)
  2. Selecione seu dispositivo USB(1), Escolha FAT32 como sistema de arquivos (2), Marque a caixa "Create a DOS bootable disk" (3)




     3) Clique em Start para iniciar a formatação e transferência do sistema
     4) Reinicie o micro e configure o boot para buscar no pendrive...

Pronto

Até a próxima


[resolvido] USB To Serial Prolific no Windows 7 e 8x e 10


Pessoal,

Depois de muito brigar e procurar sem sucesso uma maneira do conversor de USB para Serial PL2303 da Prolific consegui um driver que rodou sem o "Erro 10" ao inicializar o dispositivo.
Acredito ser muito útil para várias pessoas!


Edit: Testei no Windows  7 e 8 e 10 64 Bits... Funcionou 100%. O driver neste tutorial é para p Prolific "genérico", ou seja, a maioria que se vende por ai.



ATENÇÃO: Antes de fazer o procedimento, DESABILITE as atualizações automáticas do windows: Clique em http://windows.microsoft.com/pt-br/windows-vista/turn-automatic-updating-on-or-off para saber como desabilitar.

Vamos lá:
  1. Desinstale seu driver atual
  2. Baixe no novo driver para Win7/8 32 e 64 bits (Links abaixo)
  3. Desplugue seu adaptador
  4. Instale o novo driver
  5. Plugue o adaptador e espere o windows instalar.
  6. Se mesmo assim ele continuar apresentanto o ponto de exclamação no gerenciador de dispositivos, clique com o botão direito do mouse e vá em "Atualizar Driver...". Escolha buscar automaticamente o driver e deixe ele instalar. Se aparecer 2 drivers, escolha o driver versão 3.3.2.102
  7. Pronto. Seu dispositivo estará funcionando 100%
Gerenciador de dispositivos do Win7 x64 rodando o Profilic PL2303
Grande abraço!


09 julho 2012

Mostrar erro PHP ao invés de Erro 500 no browser


Está tentando debugar uma aplicação PHP mas na hora do erro aparece Erro 500 (internal server error) e quer exibir a linha do erro ao invés desta mensagem?


Essa necessidade é comum em ambientes de desenvolvimento. A solução é simples.



  1. Abra seu PHP.ini
  2. Localize a cláusula " display_errors = Off "
  3. Troque a string para  " display_errors = On "
  4. Reinicie o servidor e pronto.
No ambiente de produção, deixe a cláusula em "off".


06 julho 2012

Primeiro cavalo de troia do iOS pode gerar enxurrada de malware na App Store



A descoberta do primeiro cavalo de troia de toda a existência da App Store traz uma ameaça muito mais forte do que simplesmente o roubo inicial de dados de alguns usuários: a perspectiva, por parte de outros desenvolvedores, de que a Apple afrouxou suas barreiras e a consequente enxurrada de outros programas maliciosos dentro do confiável ninho de aplicativos. O alerta é de Fabio Assolini, analista de malware da Kaspersky Lab.



A empresa detectou o app malicioso, chamado Find and Call, na última quinta-feira (05/07). Disponível também no Google Play, o app, gratuito, enviava, sem autorização, a agenda de contatos dos usuários para servidores. Os contatos recebiam SMS e e-mail em nome do próprio usuário contaminado, indicando o download do aplicativo.
O fato de haver malwares no Google Play não é de todo novidade, mas é uma surpresa em se tratando de App Store. “O que nos assustou foi exatamente isso: a Apple diz que tem um procedimento rígido para aprovar e não sabemos como ele foi aprovado, porque tem um comportamento totalmente malicioso”, revelou Assolini. “Imagine quantos desenvolvedores de códigos maliciosos não estão pensando: se esse conseguiu passar, vou tentar também”, alertou.
Segundo o executivo, é difícil prever o impacto que isso terá tanto sobre a marca quanto sobre o comportamento dos usuários de iOS, mas ele indica que pode haver uma enxurrada de malware na loja de aplicativos da empresa.
“O iPhone comemorou cinco anos. Na indústria de segurança, vários comentaram que a Apple tem sido sortuda e competente para evitar um grande ataque de malware nesse período. Isso porque ela é uma  plataforma mobile popular, presente em tablets e smartphone, com um gigantesco ecossistema de desenvolvedores criando apps”, comentou.
Saiba mais:

fonte: itweb

18 junho 2012

Verbose boot no MacOSX



O boot no Mac OS X é bem bacana, mas as vezes precisamos ver o que está acontecendo na hora do boot, principalmente para resolver problemas de inicialização.
Daí a necessidade do Verbose boot.


Tipicamente, se você quer o verbose boot, é so usar a combinação de teclas "Command"+"V" durante a inicialização para iniciar na tela de console.


Se você quiser que o boot inicialize permanentemente no verbose, vc pode usar o comando nvram na tela de terminal:



Para ligar o "Verbose booting", no Terminal digite:
sudo nvram boot-args="-v"
Desabilitar o "Verbose booting" é tão fácil quanto:
sudo nvram boot-args=

PS: O comando sudo precisa de uma senha de superusuário estabelecida, portanto se você não tem, é bom criar.

.

06 junho 2012

[resolva] Drop User no SQL Server: The database principal owns a schema in the database, and cannot be dropped

Tentou deletar um usuário no SQL Server e apareceu o erro: "Drop User: The database principal owns a schema in the database, and cannot be dropped" ? Saiba como resolver:



Tentar remover um usuário que é dono de um schema vai resultar nesta mensagem.
Para resolver isso, você deve atribuir o schema no qual o usuário a deletar é dono a outro usuário ou retornar ao dono à base principal com o comando  ALTER AUTHORIZATION.
Exemplo 1: Se o usuário Test1 é dono (owns) do schema  [db_owner] e você queira deletar o usuário/login Test1 mas não tem ou não quer mover para outro usuário você pode usar:
ALTER AUTHORIZATION ON SCHEMA::db_owner TO db_owner

Exemplo 2: Situação acima, com o schema [db_datawriter], mudando para o usuário Test2:
ALTER AUTHORIZATION ON SCHEMA::db_datawriter TO Test
Execute query and Enjoy!!

22 abril 2012

FOR SELECT no SQL Server

Pessoal,

Muita gente (assim como eu) usa um recurso muito útil do Fibrebird que é o FOR SELECT, onde criamos uma loop e a cada passada ele carrega as variáveis com o registro atual e dentro podemos colocar outras instruções usando essas variáveis.

Ao migrar para o SQL Server possivelmente você terá esse problema de "adaptação" se não tiver experiência na sintaxe do banco. Nesse caso temos que mudar algumas linhas no código para que o mesmo recurso funcione. Daí teremos que trabalhar com CURSORES... Veja como abaixo:


Utilizo um exemplo onde tenho uma tabela de perfil de acesso e configuração do perfil, onde tenho outra tabela com minhas configurações base para os perfis, assim que inseridos (Quando tiver tempo posto tudo aqui em um tutorial). Ao inserir o perfil base, eu tenho que lançar esse registro em todos os perfis de acesso já cadastrados (numa trigger), daí faço o seguinte (usando o FOR SELECT no Firebird)


NO FIREBIRD:



CREATE OR ALTER TRIGGER PERFILACESSO_BASE_AI0 FOR PERFILACESSO_BASE
ACTIVE AFTER INSERT POSITION 0
AS
declare variable vCodPerfilAcesso codigo_small;
declare variable vCodColaborador  codigo;


begin
  /* Insere na tabela de configuracao de acesso e perfis personalizados as novas configuracoes */
  for select idPERFILACESSO
      from perfilacesso
      into :vcodperfilacesso do
  begin
    insert into perfilacesso_config
    values (null, :vcodperfilacesso, new.tag_form,new.grupo,new.descricaofuncao, new.acessar, new.incluir,
            new.editar,new.deletar,new.localizar,new.imprimir,new.acessar_visivel,
            new.incluir_visivel,new.editar_visivel,new.deletar_visivel,new.localizar_visivel,new.imprimir_visivel);
  end
end



NO SQL SERVER


Esse exemplo agora no SQL Server, preciso "traduzí-lo" para que a coisa funcione, buscando o registro na tabela temporária INSERTED para fazer os inserts

CREATE TRIGGER trInsereConfigNovoPerfil

   ON  PERFILACESSO_BASE
   AFTER INSERT
AS 
BEGIN
SET NOCOUNT ON;

DECLARE @IDPERFIL SMALLINT;


--INSTANCIA O CURSOR COM O CONTEUDO DA TABELA (=FOR SELECT FB)
DECLARE CADPERFIL CURSOR FOR SELECT IDPERFILACESSO  FROM PERFILACESSO (NOLOCK);
 
--ABRE O CURSOR CHAMADO CADPERFIL (Instancia do Cadastro de Perfis de Acesso)
OPEN CADPERFIL; 

--PEGA O VALOR DO PRIMEIRO REGISTRO E ATRIBUI À VARIAVEL
FETCH CADPERFIL INTO @IDPERFIL;

--FAZ LOOP NO CURSOR PARA GRAVAR AS CONFIGURAÇÕES DE ACESSO EM CADA PERFIL
WHILE (@@FETCH_STATUS=0)
BEGIN
   INSERT INTO PERFILACESSO_CONFIG
   SELECT NULL,@IDPERFIL,I.TAG_FORM,I.GRUPO,I.DESCRICAOFUNCAO, I.ACESSAR, I.INCLUIR,
I.EDITAR,I.DELETAR,I.LOCALIZAR,I.IMPRIMIR,I.ACESSAR_VISIVEL,
I.INCLUIR_VISIVEL,I.EDITAR_VISIVEL,I.DELETAR_VISIVEL,I.LOCALIZAR_VISIVEL,I.IMPRIMIR_VISIVEL
   FROM INSERTED I
   
   --PEGA PROXIMO REGISTRO
FETCH NEXT FROM CADPERFIL INTO @IDPERFIL;

END


--FECHA O CURSOR
CLOSE CADPERFIL;
DEALLOCATE CADPERFIL; --DESTROI A INSTÂNCIA

END
GO


Abraços e até a próxima!

20 abril 2012

Limpar todas as tabelas do seu banco SQL Server


Para limpar todos os registros de suas tabelas no SQL Server de uma vez só, proceda com esses 3 simples comandos abaixo.


1) Pela Query 

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'DELETE FROM ?'
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'



2) Criando uma Stored Procedure


CREATE PROCEDURE sp_EmplyAllTable
AS
   EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
   EXEC sp_MSForEachTable 'DELETE FROM ?'
   EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO


Mágico não?

Até a próxima!

19 abril 2012

Limpar/Deletar todos os elementos (Tables/FK´s,etc) de um Banco no SQL Server

O código abaixo limpa todas as tables, fk´s, sp´s, etc no SQL Server...

Bom proveito!!

Abra uma nova query no SQL Server Management Studio

Cole o script abaixo e execute


/* EN: Drop allnon-system stored procs */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name])
WHILE @name is not null
BEGIN
    SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Procedure: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO
/* Drop all views */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name])
WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped View: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO
/* Drop all functions */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 ORDER BY [name])
WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Function: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 AND [name] > @name ORDER BY [name])
END
GO
/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
WHILE @name is not null
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint IS NOT NULL
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
        EXEC (@SQL)
        PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
WHILE @name IS NOT NULL
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint is not null
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
        EXEC (@SQL)
        PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])
WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Table: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO