Txt to MP3

Dezembro 15, 2007

Boa tarde meus amigos,

Hoje eu vou mostar um utilitário realmente útil. Um conversor de txt para MP3. O programa é um executável que deve ser iniciado via Dos. Oba, é ai que entra o C#.

O primeiro passo é ter o Eloq 5.0. Faça download aqui. O segundo passo é ter o Testimp3. Faça download aqui.

Vá no Iniciar> Executar> cmd. Vá até a pasta onde está o executável TESTIMP3.EXE.  Digite no Dos ‘TESTIMP3 /ECISETUP=C:\Eloq5′ – Endereço onde você descompactou o Eloq.

No diretório que está o TESTIMP3.EXE crie um .txt com o texto que você deseja converter para MP3.  No cmd digite TESTIMP3 nomeDoArquivo.txt. No arquivo TESTIMP3.INI você pode definir o tom, tipo, idioma utilizado, entre outras coisas.

Se não acontecer nenhum erro será criado uma pasta com a MP3 dentro.

Ok, o TestiMp3 está funcionando.  Agora vamos usar o C# para chamar o executável TESTIMP3.EXE, criar o txt, passar os parametros necessários e pegar o endereco do arquivo MP3. Vamos lá:

string texto = “teste”;
const string PastaTESTIMP3 = @”C:\TESTIMP3\”;
const string arquivoTXT = PastaTESTIMP3 + “Texto.txt”;
const string arquivoTestiMP3 = PastaTESTIMP3 + “TESTIMP3.exe”;
StreamWriter sw = new StreamWriter(arquivoTXT);
sw.WriteLine(texto);
sw.Close();
Process.Start(arquivoTestiMP3, arquivoTXT);

Com essa função podemos tornar nossas páginas acessíveis a portadores de necessidades especiais, analfabetos ou para apredizagem de novos idiomas.  Falow Pessoal.


Criando uma trigger

Dezembro 12, 2007

Eae Pessoal,

Estou me preparando para fazer a prova 70-431 para me tornar MCTS em Sql Server. Lendo o livro MCTS 70-431 Self-Paced Training Kit eu encontrei um excelente exemplo de como criar uma trigger (gatilho) quando uma determinada tabela for alterada:

CREATE TRIGGER tu_employeepayaudit
ON dbo.Employee
FOR UPDATE
AS
DECLARE @now DATETIME
SET @now = getdate()
BEGIN TRY
INSERT INTO dbo.EmployeeAudit
(RowImage, PayRate, ChangeDate, ChangeUser)
SELECT ‘BEFORE’, INSERTED.PayRate, @now, suser_sname()
FROM DELETED
INSERT INTO dbo.EmployeeAudit
(RowImage, PayRate, ChangeDate, ChangeUser)
SELECT ‘AFTER’, INSERTED.PayRate, @now, suser_sname()
FROM INSERTED
END TRY
BEGIN CATCH
–Some error handling code
ROLLBACK TRANSACTION
END CATCH

att:

fonte: MCTS Self-Paced Training Kit (Exam 70-431): Microsoft® SQL Server™ 2005—Implementation and Maintenance


Método que verifica se o CPF é válido

Dezembro 6, 2007

Uma função muito útil no dia-a-dia do desenvolvedor é a verificação de CPF.

Segue um código que válida se a string passada é de fato um CPF válido.

public static bool IsCPF(string cpf)
{
int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 };
int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
string tempCpf;
string digito;
int soma;
int resto;
cpf = cpf.Trim();
cpf = cpf.Replace(
“.”, “”).Replace(“-”, “”);
if (cpf.Length != 11)
       return false;
tempCpf = cpf.Substring(0, 9);
soma = 0;
for (int i = 0; i < 9; i++)
       soma +=
int.Parse(tempCpf[i].ToString()) * multiplicador1[i];
resto = soma % 11;
if (resto < 2)
       resto = 0;
else
       resto = 11 – resto;
digito = resto.ToString();
tempCpf = tempCpf + digito;
soma = 0;

for (int i = 0; i < 10; i++)
       soma +=
int.Parse(tempCpf[i].ToString()) * multiplicador2[i];

resto = soma % 11;if (resto < 2)
       resto = 0;
else
       resto = 11 – resto;digito = digito + resto.ToString();
return cpf.EndsWith(digito);
}

flw


Como pegar o primeiro e o último dia do mes

Dezembro 6, 2007

Eae pessoal,

Vou mostrar para vocês como encontrar o primeiro e último dia do mês usando C#.

DateTime mes = DateTime.Now;
DateTime primeiroDia = Convert.ToDateTime(“01/” + mes.ToString(“MM/yyyy”));
DateTime ultimoDia = primeiroDia.AddMonths(1).AddDays(-1);

abraços.


Webcast: Fábio Vázquez falando sobre Linq

Dezembro 6, 2007

Coloquei na minha pasta compartilhada um webcast do MVP Fábio Vazquez falando sobre Linq. Vale a pena assistir.

bom dia a todos.


Inserir dados no Sql Server com bastante velocidade

Dezembro 6, 2007

bom dia leitores,

Semana passada eu tive a necessidade de fazer uma programa que pegasse dados de aproximadamente 5000 txts e jogasse as informações no Sql Server. Cada txt é referente a uma tabela no banco, os arquivos juntos chegam a 50 gigas. Antes de me passarem a tarefa, o processamento que estavam fazendo era de insert normal e isso demorava duas semanas para completar todo o processamento.

Foi quando sugerir que fizessemos a importação via .net usando o objeto SqlBulkCopy. Esse objeto pega um datatable e insere “abruptamente” no SqlServer pois não grava nenhum log durante esse processo. Abaixo segue parte do codigo que usei para fazer essa importação que demorou 3 horas e 12 minutos, um tempo bastante viável levando em consideração a quantidade de dados.

Abaixo está o método main que cria duas threads, uma para o processamento e outra para a visualização do status do processamento.

        static void Main(string[] args)
        {
            long tamanhoDiretorio = ObterTamanhoDoDiretorio(“E:\\basetxt\\”);
            AtualizarStatus(0, tamanhoDiretorio, 0, tamanhoDiretorio, “”);
            EscreveLog(DateTime.Now + “: Obtendo Lista de Tabelas”);
            List<Tabela> listaDeTabelas = ObterEstruturaDeTabelasEColunas();
            EscreveLog(DateTime.Now + “: Lista de Tabelas Obtida”);
            EscreveLog(“TAREFA: Importar ” + listaDeTabelas.Count + ” Tabelas “);

            ThreadStart status = new ThreadStart(Status);
            Thread threadStatus = new Thread(status);
            threadStatus.Priority = ThreadPriority.Lowest;
            threadStatus.Start();

            ParameterizedThreadStart persistir = new ParameterizedThreadStart(PersistirDados);
            Thread threadPersistir = new Thread(persistir);
            threadStatus.Priority = ThreadPriority.Highest;
            threadPersistir.Start(listaDeTabelas);
        }

Agora está o pulo do gato:

bool persistido = false;
while (!persistido)
{
    try
    {
        SqlConnection conn = new SqlConnection(BANCODEDESTINO);
        conn.Open();
        SqlTransaction transaction = conn.BeginTransaction();

        SqlBulkCopy bulk = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, transaction);
        bulk.DestinationTableName = “dbo.” + tabela.NomeTabela.ToUpper();
        SqlBulkCopyColumnMappingCollection mapeamentoColunas = bulk.ColumnMappings;
        bulk.BatchSize = 1000000;
        bulk.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
        bulk.NotifyAfter = 10000;

        mapeamentoColunas.Clear();
        foreach (Coluna coluna in tabela.ListaDeColunas)
        {
            mapeamentoColunas.Add(new SqlBulkCopyColumnMapping(coluna.NomeColuna, coluna.NomeColuna));
        }

        bulk.BulkCopyTimeout = 180;
        try
        {
            EscreveLog(DateTime.Now + “: Gravando no banco”);
            bulk.WriteToServer(dt);
            transaction.Commit();
            EscreveLog(DateTime.Now + “: Inserindo: Linha Inseridas ” + h);
            persistido = true;
            tabela.Processado = “s”;
        }
        catch (Exception erro)
        {
            transaction.Rollback();
            EscreveLog(DateTime.Now + “: Ocorreu um erro ao persistir no banco – Erro: ” + erro.Message);
            tentativa = tentativa + 1;
            tabela.Processado = “e”;
        }
        finally
        {
            conn.Close();
        }
    }
    catch (Exception erro)
    {
        EscreveLog(DateTime.Now + “: Ocorreu um erro ao persistir no banco – Erro: ” + erro.Message);
        tentativa = tentativa + 1;
    }

    if (tentativa > 2)
    {
        persistido = true;
        EscreveLog(DateTime.Now + “: Apos 3 tentativas a inclusao dos dados foi cancelada.”);
    }
}

flw pessoal,

Até breve


Criando consultas usando critérios

Dezembro 5, 2007

Boa tarde leitores,

Hoje eu vou mostrar como fazer uma consulta sql usando critérios:

SELECT
Nome,
Funcao,
CASE TipoSalario
WHEN 1  THEN HorasTrabalhadas * ValorHora
ELSE SalarioLiquido
END AS Salario
FROM Funcionario  

Bom final de semana a todos.


Inclusão Digital: Desafio do século XXI

Dezembro 4, 2007

 Amigos,

No dia 26 de novembro apresentei a palestra “Inclusão Digital: Desafio do século XXI” na faculdade Fabrai.
Clique aqui e faça download dos slides da apresentação.

abraços para o Cláudio, Helém e Isabela que me ajudaram na elaboração da apresentação.

Até a próxima


Quer ficar rico? Pergunte-me como.

Dezembro 4, 2007

Um tempo atrás um amigo meu queria um sistema que gerasse 100 cartelas com 5 números a partir de 20 números pré-definidos para jogar na quina. O sistema, feito em C#, iria gerar um txt com as 100 cartelas.  Depois, quando saísse o resultado ele poderia conferir quantos números ele acertou.

O sistema foi feito, como vocês podem ver clicando aqui. Porém está com erro, já que ele não acertou nenhum número. E olha que nem deu problema de compilação. Visual Studio FDP =D.


Instalando e configurando o IIS para rodar páginas Asp.Net

Dezembro 4, 2007

Hoje eu vou  mostrar uma configuração básica para que um sistema feito na framework 2.0 32-bits seja acessado em uma rede interna, intranet, usando o IIS 6.0.

Antes de tudo você deve ter instalado a framework 2.0 no seu servidor. Caso ainda não tenha feito isso, clique aqui, faça download e instale a framework.

Vamos instalar o IIS 6.0.

1. Vá no Painel de Controle » Adicionar e remover programas

2. Clique em Adicionar e Remover Componentes do Windows;

3. Selecione Application Server, caso esteja usando o Windows 2003 server ou o Internet Information Services(IIS), caso esteja usando o Windows XP.
 

imag1.jpg

4. Se estiver usando o Widnows 2003 Server, clique em ‘Details’ para que os sub-itens de ‘Application Server’ apareçam;

5. Selecione o item ‘Internet Information Services (IIS) e clique em ‘Details…’; 
imag2.jpg

Ao selecionar o item ‘Internet Information Services(IIS), todos os componentes necessários para uma instalação básica do IIS serão selecionados automaticamente. 

imag3.jpg

Você notará que somente 3 itens dos Sub-componentes do IIS estarão selecionados. Ainda, se selecionarmos o item ‘World Wide Web Service’, veremos que somente o serviço World Wide Web está assinalado. Todos os outros sub-componentes, necessários para desenvolvimento de sites dinâmicos estão desabilitados por padrão.

imag4.jpg

Bom, agora que você visualizou todos os sub-componentes disponíveis para o IIS, clique em ‘OK’ quantas vezes for necessário para voltar à tela do ‘Application Server’ e clique em ‘Next’. A caixa ‘Configuring Components’ aparecerá e solicitará para que você insira o disco do Windows Server 2003 que, no nosso caso, é a versão Standard. Esse procedimento é o mesmo para todas as versões do Windows Server 2003, inclusive para a Web Edition.   Ao inserir o CD do Sistema Operacional, ele continuará a instalação e a finalizará com a tela já conhecida do ‘Finish’.  

imag5.jpg

Clique em Finish e abra o Gerenciador do IIS através do Iniciar» Executar » Digite inetmgr » Clique OK. Pronto! Seu IIS está ativo e pronto para atender requisições de páginas. Porém, nessa configuração padrão ele somente atenderá requisição de páginas estáticas.

Via: http://www.juliobattisti.com.br/tutoriais/gersonkonnus/iis6001.asp

Caso use Windows 2003 server, vá no IIS na opção “Web Service Extensions”, selecione a extensão “Asp.Net 2.0″ e clique em “Allow”.

Agora adicione o seu site em “Web Sites”.

Você pode acessar seu site pelo endereço http://localhost.

Para ser visto em outros computadores da rede desabilite o firewall. Caso use o Windows Firewall crie uma exceção na porta 80.

Vá no Painel de Controle >> Windows Firewall. Na aba Exceptions adicione uma nova porta clicando em Add Port. Dê um nome e informe a porta 80.

Agora seu site pode ser visto em qualquer lugar da rede. Para isso os outros computadores acessam o site digitando o IP, ou DNS, do seu servidor em algum navegador.

Para saber qual o IP do seu servidor

Vá em Inicial>> Executar>> digite cmd.

Digite ipconfig e dê enter. O ip da máquina será apresentado junto com outras informações.

Falou pessoal.


Seguir

Get every new post delivered to your Inbox.