Editorial. Editorial. Dúvidas Correspondência ou fax com dúvidas devem ser enviados ao - THE CLUB, indicando "Suporte".

Tamanho: px
Começar a partir da página:

Download "Editorial. Editorial. Dúvidas Correspondência ou fax com dúvidas devem ser enviados ao - THE CLUB, indicando "Suporte"."

Transcrição

1

2

3 Editorial Editorial THE CLUB Av. Profº Celso Ferreira da Silva, 190 Jd. Europa - Avaré - SP - CEP Informações: (14) Suporte: (14) Fax: (14) Internet Cadastro: Suporte: Informações: Dúvidas Correspondência ou fax com dúvidas devem ser enviados ao - THE CLUB, indicando "Suporte". Opinião Se você quer dar a sua opinião sobre o clube em geral, mande a sua correspondência para a seção "Tire sua dúvida". Reprodução A utilização, reprodução, apropriação, armazenamento em banco de dados, sob qualquer forma ou meio, de textos, fotos e outras criações intelectuais em cada publicação da revista The Club Megazine são terminantemente proibidos sem autorização escrita dos titulares dos direitos autorais. Impressão e acabamento: GRAFILAR Tel.: (14) Fax: (14) Rua Cel. Amando Simôes, 779 Cep São Manuel - SP Tiragem: exemplares Copyright The Club Megazine 2005 Diretor Técnico Mauro Sant Anna Colaboradores Mário Bohm, Márcio Alexandroni Delphi é marca registrada da Borland International, as demais marcas citadas são registradas pelos seus respectivos proprietários. Olá amigos, Estamos aqui com mais uma The Club Megazine! Começamos esta edição com algumas dicas que serão bem proveitosas no seu dia-a-dia, confira... Nosso consultor Claudinei Rodrigues preparou um artigo sobre um recurso muito utilizado no Windows, ou seja, arrastar e soltar, ou se preferir: Drag and Drop, veja como implementar em suas aplicações Delphi. Continuando, trataremos de um tema bastante interessante aos usuários de Firebird, onde demonstramos algumas configurações que podem garantir maior estabilidade a este ótimo banco de dados com ajustes no TCP/IP. E, dando continuidade na série de artigos sobre Visual Studio.NET e Oracle, o melhor de dois mundos, nosso amigo Mário Bohm demonstra como gerar código automaticamente com o Oracle e a Developer Tools For.NET. Atendendo um gama de solicitações, Márcio Alexandroni do ClubePDA explana sobre qual a melhor ferramenta para desenvolver para PalmOS e PocketPC, se você têm dúvida a respeito, não deixe de conferir este artigo. Nosso consultor Alessandro Ferreira preparou um artigo onde demonstra como efetuar tratamento de erros em aplicações que utilizam a dbexpress como camada de acesso a banco de dados, conheça alguns macetes bem legais a este respeito. Partindo para o mundo.net, publicamos 10 dicas bem quentes que irão lhe auxiliar a extrair o máximo de performance em aplicações ASP.NET. E finalizando, compartilhamos algumas das perguntas que chegaram até nossos consultores neste último mês através de nossa sessão Perguntas & Respostas. Abraço e sucesso à todos, Editorial Dicas & Truques Trabalhando com Drag in Drop no Delphi Usando KEEPALIVE-sockets para detectar e liberar conexões do InterBase e Firebird travadas, ou como prevenir o erro 10054/ Gerando Código Automaticamente com o Oracle Developer Tools for.net Qual a melhor ferramenta para desenvolver para PalmOS e PocketPC? dbexpress: Tratamento Centralizado de Erros ASP.NET 10 dicas para escrever aplicações Web de alta performance Perguntas & Respostas

4 Dicas & Truques Windows Como verificar quantidade de memória utilizada Nesta dica iremos demonstrar como verificar a quantidade de memória utilizada (em bytes) por sua aplicação Delphi, fazendo uso das APIs para controle de processos disponibilizadas na unit PsAPI. implementation uses psapi; {$R *.dfm} function GetProcessMemorySize(_sProcessName: string; var _nmemsize: Cardinal): Boolean; var l_nwndhandle, l_nprocid, l_ntmphandle: HWND; l_ppmc: PPROCESS_MEMORY_COUNTERS; l_ppmcsize: Cardinal; l_nwndhandle := FindWindow(nil, PChar(_sProcessName)); if l_nwndhandle = 0 then Result := False; Exit; l_ppmcsize := SizeOf(PROCESS_MEMORY_COUNTERS); GetMem(l_pPMC, l_ppmcsize); l_ppmc^.cb := l_ppmcsize; GetWindowThreadProcessId l_ntmphandle := OpenProcess (PROCESS_ALL_ACCESS,False, l_nprocid); if (GetProcessMemoryInfo (l_ntmphandle, l_ppmc, l_ppmcsize)) then _nmemsize := l_ppmc^.workingsetsize else _nmemsize := 0; FreeMem(l_pPMC); Result := True; // Exemplo de chamada: procedure TForm1.Button1Click(Sender: TObject); var l_nsize: Cardinal; if (GetProcessMemorySize(Application. Title, l_nsize)) then ShowMessage( Quantidade de memória utilizada: + 4

5 Dicas & Truques FormatFloat( ###,###,###,###, l_nsize) + bytes ) else ShowMessage( Não consegui obter a memória utilizada. ); Neste exemplo estamos verificando a quantidade de memória utilizada pela própria aplicação, ou seja, informamos como parâmetro no nome do processo Application.Title, contudo, caso necessite verificar outros processos bastará informar o nome do mesmo como parâmetro da função GetProcessMemorySize. Windows Verificar FAT32 ou NTFS Esta dica demonstra como verificar se uma partição (unidade de disco) está utilizando sistema de arquivos FAT32 ou NTFS. function GetHardDiskPartitionType(const DriveLetter: Char): string; // FAT // NTFS var NotUsed: DWORD; VolumeFlags: DWORD; VolumeInfo: array[0..max_path] of Char; VolumeSerialNumber: DWORD; PartitionType: array[0..32] of Char; GetVolumeInformation(PChar(DriveLetter + :\ ), nil, NotUsed, VolumeFlags, PartitionType, 32); Result := PartitionType; // Exemplo de chamada: procedure TForm1.Button1Click(Sender: TObject); ShowMessage(GetHardDiskPartitionType( c )); ShowMessage(GetHardDiskPartitionType( d )); DBExpress - Arredondamento de Valores Incorretos Quando atribuímos um cálculo para um campo reconhecido como TFMTBcdField na dbexpress (com várias casas decimais) ele pode arredondar incorretamente. Para resolver é necessário efetuar a atribuição como BCD assim: uses FMTBcd; var A,L,C,X : Extended; Sender.AsFloat := (StrToFloat(text)); A := (cdsembalagemm3_altura.asfloat/1000); L := (cdsembalagemm3_largura.asfloat/1000); C := (Sender.AsFloat/1000); cdsembalagemfatorm3.asbcd := DoubleToBCD(A * L * C); INNOSETUP Como Verificar se uma Chave Existe no Registro do Windows Aqui trazemos mais uma dica deste fantástico gerador de instalações, onde demonstramos como verificar se uma determinada chave existe no registro do Windows: [Setup] AppName=VerificaChave AppVerName=VerificaChave DefaultDirName={pf}\VerificaChave DisableStartupPrompt=true Uninstallable=false DisableDirPage=true OutputBaseFilename=VerificaChave [Code] function InitializeSetup(): Boolean; if RegKeyExists(HKEY_LOCAL_MACHINE, SOFTWARE\Firebird Project\Firebird Server ) then MsgBox( Não posso instalar!, mbinformation, MB_OK ); Result := false; end else Result := true; Isso é muito interessante, por exemplo, para verificar se uma determinada aplicação já existe no computador do cliente. 5

6 Delphi Trabalhando com Drag in Drop no Delphi Por Claudinei Rodrigues Devido à natureza gráfica de Windows a maioria das operações pode ser executada unicamente com o mouse. Uma operação que é frequentemente útil para o usuário é poder arrastar um objeto de uma posição a outra. No Delphi isto é algo muito fácil de se fazer. Vamos ver como fazer isto. Trabalhando com eventos Nós vamos trabalhar com dois eventos, são eles: OnDragDrop OnDragOver Agora vamos ver detalhadamente cada um deles: OnDragDrop Este evento é disparado sempre quando um item é solto sobre outro componente. A maioria do código necessário para implementar o Drag and Drop é implementado neste evento. Este evento recebe alguns parâmetros. Veja-os a seguir: Sender -> Este parâmetro é o objeto que recebeu o objeto que foi solto. Source -> Este é o ponteiro para o item atual que está sendo arrastado e solto. Por exemplo, se for um item de um ListBox que está sendo arrastado, este parâmetro aponta para o Listbox e não para o texto atual que está sendo arrastado. X,Y -> Estas são as coordenadas relativas de onde o objeto foi arrastado no objeto. OnDragOver Este evento é disparado sempre quando um item é arrastado sobre outro componente. Seu uso principal é decidir se o item pode ser solto sobre o componente e mudar o cursor para refletir se isto é ou não possível. Os parâmetros usados são os seguintes: Sender, Source -> Representam a mesma informação do evento OnDragDrop. X,Y -> Representam a mesma informação do evento OnDragDrop. Accept -> Este parâmetro deve ser ajustado para True se o controle que é o arrastado atualmente puder ser aceito. State -> Este parâmetro diz se a operação foi correta, movendo o objeto. Montando um exemplo Com base nestas informações vamos montar um exemplo. Neste exemplo nós teremos dois componentes Listbox em um formulário e vamos mostrar como é fácil permitir que o usuário arraste os itens de um componente Listbox para outro componente Listbox, e reposicione também os itens em cada Listbox arrastando e deixando cair os itens selecionados. 1 - Chame o seu Delphi e crie uma nova aplicação. 2 Inclua dois componentes Listbox neste form. O componente Listbox está disponível na palheta Standard 3 Em cada um dos componentes Listbox, vá até a propriedade DragMode e altere-a para dmautomatic. Fazendo isto nós estamos informando ao componente que não precisaremos iniciar a operação de arrasto manualmente. Agora nós vamos gerar os eventos OnDragOver e OnDragDrop de um componente ListBox e configurar os eventos correspondentes do outro Listbox. Para isto vamos trabalhar agora com o código fonte. 1 Clique no componente ListBox1, pressione a tecla F11. Fazendo isto o Object Inspector será ativado. Agora clique na aba Events e vá até evento OnDragOver e dê um duplo clique. Neste evento você deve incluir o código que está dentro do bloco... end mostrado a seguir: procedure TForm1.ListBox1DragOver (Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); if Source is TListBox then Accept := True; 2 Agora nós vamos configurar o objeto que foi solto para que seja atualizado no seu destino. Isto é feito no evento OnDragDrop. Para isto acesse o evento OnDragDrog e inclua o código abaixo: procedure TForm1.ListBox1DragDrop (Sender, Source: TObject; X, Y: Integer); var Temp : integer; Temp1 : TPoint; Temp2 : String; //Aqui estamos obtendo as coordenadas X e Y // do item Temp1.x := x; Temp1.y := y; 6

7 Delphi Temp := 0; //Aqui estamos montando um laço para permitir // que os itens possam ser movidos While Temp <= TListBox(Source). Items.Count-1 do // Aqui pegamos o item que desejamos mover, // ouseja, aquele que está selecionado. if TListBox(Source).selected[Temp] then With Sender as TListBox do // Neste ponto nós precisamos utilizar uma // variável temporária, pois quando o item // for removido o indice mudará. Temp2 := TListBox(Source).items[Temp]; TListBox(Source).items.Delete(Temp); items.insert(itematpos(temp1,true), Temp2); inc(temp); Agora vá até o componente ListBox2 e ligue os eventos OnDragOver e OnDragDrop aos mesmos eventos do componente ListBox1. E não esqueça de incluir alguns itens aos componentes Listbox. Feito isto basta compilar o projeto, clicar sobre os Listbox e arrastar os itens. Conclusão. Este foi um artigo direcionado a alguns sócios que estavam precisando deste recurso, então eu achei melhor publicar este artigo que com certeza irá auxiliar muito mais pessoas. Arquivo para download em: revista/download/dd0905.zip Sobre o autor Claudinei Rodrigues, Consultor Técnico do The Club 7

8 Firebird/Interbase Usando KEEPALIVE-sockets para detectar e liberar conexões do InterBase e Firebird travadas, ou como prevenir o erro 10054/104 Introdução Nos sistemas com banco de dados Interbase ou Firebird, os quais tem intenção de trabalhar em modo de tempo real ou próximo disso, há um problema com o status do rastreamento das conexões do cliente no lado do servidor, e isso força a desconexão quando no caso do cliente se tornar inacessível por causa de uma liberação da conexão. É importante liberar rapidamente os recursos ocupados com estas conexões fantasmas, especialmente quando se usa servidores com estrutura clássica. Se muitos usuários se conectam ao servidor através de conexões por modem instáveis, o de desconexão se torna extremamente alto. Por exemplo, um cliente salva um record set alterado, e após o UPDATE ser executado (enquanto o COMMIT ainda não foi) a conexão cai. Como regra, a aplicação cliente em tais situações se reconectará ao servidor, mas o cliente (como ele/ela ainda continua trabalhando com os dados, mesmo após salvar receberá uma mensagem de erro por causa da falha de conexão) não será capaz de salvar as mudanças, uma vez que ele/ela receberá uma mensagem de conflito de travamento ( lock conflict on update ). A conexão anterior, que abriu a transação (no contexto da qual o UPDATE foi executado, enquanto o COMMIT não foi), ainda guarda os registros. A falha de conexão talvez ocorra em redes locais também, se o hardware (placas de rede, hubs, comutadores) estão com problemas ou mal conectados, e/ou por causa de interferências na rede. Nos logs do Firebird e do Interbase, falhas de conexão com o protocolo TCP são mostradas com o erro no Windows e 104 no Unix, falhas do netbeui são mostradas como erros 108/109. Métodos de controle de travamento de conexões No Interbase e no Firebird, os mecanismos de DUMMYpackets ou KEEPALIVE-sockets são usados para rastrear e desabilitar tais conexões mortas. No Interbase 5.0 ou mais recente, o mecanismo de DUMMYpackets foi implementado como uma camada da aplicação entre o servidor Firebird/Interbase e o cliente gds/fbclient. Isto está incluído no ibconfig/firebird.conf e não será examinado neste artigo. Obs: Como sabemos por experiências anteriores, a estabilidade do mecanismo de dummy-packets (o que foi implementado no Interbase 5.0 e corrigido no Firebird 1.5x) depende fortemente dos sistemas operacionais do servidor e do cliente, versão do stack do tcp e muitas outras condições. Pode-se dizer que, a efetividade de tal sistema numa rede real tende a zero. O KEEPALIVES-packets é um mecanismo mais interessante. Implementado no Interbase 6.0 ou mais recente, tem como propósito rastrear falhas de conexão. O KEEPALIVE é habilitado ajustando a opção SO_KEEPALIVE na abertura. Não há necessidade de fazer isso manualmente se você está usando o Firebird 1.5x ou mais recente, já que ele foi implementado no código de programação do Firebird Server, para o Classic e Superserver. Para as versões do Interbase e Firebird mais antigas, há uma variação com a estrutura clássica, assim é necessário um ajuste adicional. Este ajuste é descrito abaixo. Neste caso, o tcp stack do sistema operacional (ao invés do 8

9 Firebird/Interbase Firebird Server) se torna responsável pelo status da conexão. No entanto, para habilitar este mecanismo, deve-se ajustar os parâmetros do KEEPALIVE. Descrição do KEEPALIVE. O comportamento do KEEPALIVE-sockets é controlado pelo parâmetro presente na tabela seguinte. O tcp stack rastreia o momento que os pacotes param de transmitir entre o cliente e o servidor, executando um timer do KEEPALIVE. Tão logo o timer chegue no ponto do KEEPALIVE_TIME, o servidor do tcp stack executará a primeira sonda do KEEPALIVE. A sonda é um pacote vazio com um flag ACK que é enviado para o usuário. Se estiver tudo bem no lado do cliente, então o tcp stack do lado do cliente envia um pacote de resposta com um flag ACK, e o servidor de tcp stack reajusta o timer do KEEPALIVE assim que ele recebe uma resposta. Se o cliente não responde à sonda, as sondagens do servidor continuam a ser enviadas. A quantidade delas é igual à do valor KEEPALIVE_PROBES, elas são executadas pelo intervalo definido no KEEPALIVE_INTERVAL. Se o cliente não responde à última sonda, então após outro período do KEEPALIVE_INTERVAL expirar, o tcp stack do sistema operacional fecha a conexão, e o servidor (neste caso, uma instância do Firebird ou Interbase) libera todos os recursos ocupados com esta conexão. Assim, uma conexão do cliente que falhou será fechada após o seguinte período de intervalo: KEEPALIVE_TIME+ (KEEPALIVE_PROBES+1) * KEEPALIVE_INTERVAL. Por padrão, os valores dos parâmetros são muito grandes, isso os torna ineficazes. Por exemplo, o valor padrão do parâmetro KEEPALIVE_TIME é 2 horas, tanto em Linux como em Windows. Certamente, 1 ou 2 minutos seria o suficiente para tomar uma decisão sobre uma desconexão forçada de um cliente inacessível. Por outro lado, o padrão do KEEPALIVE causa desconexões forçadas em redes Windows, que estão inativas durante estas duas horas. Abaixo estão os ajustes destes parâmetros para Windows e Linux. Ajustando o KEEPALIVE no Linux Os parâmetros do KEEPALIVE no Linux podem ser alterados diretamente por edição dos arquivos de sistema ou chamando o sysctl. Para o primeiro caso, as seguintes linhas devem ser editadas: /proc/sys/net/ipv4/tcp_keepalive_time /proc/sys/net/ipv4/tcp_keepalive_intvl /proc/sys/net/ipv4/tcp_keepalive_probes Para o segundo caso, os seguintes comandos devem ser executados: sysctl w net.ipv4.tcp_keepalive_time=value sysctl w net.ipv4.tcp_keepalive_intvl=value sysctl w net.ipv4.tcp_keepalive_probes=value O valor está expresso em segundos. Para o ajuste automático destes parâmetros no caso da reinicialização do servidor, adicione as seguintes linhas ao /etc/ sysctl.conf: net.ipv4.tcp_keepalive_intvl = value net.ipv4.tcp_keepalive_time = value net.ipv4.tcp_keepalive_probes = value Substitua <value> pelos valores apropriados. Se você está usando uma versão anterior do Firebird 1.5x, então deve-se adicionar o seguinte no /etc/xinet.d/firebird: FLAGS=REUSE KEEPALIVE Ajustando o KEEPALIVE no Windows 95/98 e ME Seção do registro HKEY_ LOCAL_ MACHINE\System\ CurrentControlSet\Services\VxD\MSTCP Tudo sobre os ajustes do TCP podem ser encontrados aqui: Parâmetros: * KeepAliveTime = milisegundos Tipo: DWORD 9

10 Firebird/Interbase Para Windows 98 tipo STRING. Define o tempo de inatividade da conexão em milisegundos. Quando ele expira, as sondas do KEEPALIVE começam a ser executadas. O valor padrão é 2 horas ( ). * KeepAliveInterval = valor de 32-digitos Tipo: DWORD Para Windows 98 tipo STRING. Define o tempo entre as sondas do KEEPALIVE em milisegundos. Tão logo o intervalo KeepAliveTime expire, após cada período do KeepAliveInterval (em milisegundos), as sondas do KEEPALIVE são enviadas até o número máximo de MaxDataRetries. Se não houver resposta, a conexão se fecha. O valor padrão é 1 segundo (1000). * MaxDataRetries = valor de 32 dígitos Tipo: STRING Define o número máximo de sondas do KEEPALIVE. O valor padrão é 5. Ajustando o KEEPALIVE no Windows NT/2000/XP Seção do registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters\. Tudo sobre os ajustes de TCP: 2000/ NT: XP: O parâmetro MaxDataRetries foi substituído por TCPMaxDataRetransmissions. Todos os outros parâmetros tem o mesmo nome do Windows 9x. Ajustando o KEEPALIVE nos clientes Windows Este ajuste é opcional, mas provavelmente reduzirá o número de mensagens de falhas de conexão se o usuário não tiver um canal de comunicação confiável. Insira nesta seção do registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters Parâmetro DisableDHCPMediaSense = 1. Veja uma descrição deste parâmetro aqui: Exemplo Vamos considerar o ajuste do Firebird para o sistema operacional Linux. * Tenha certeza que o mecanismo de DUMMY-packets estão desabilitados no firebird.conf.... # DummyPacketsInterval = 0... * Tenha certeza que é o arquivo de configuração /etc/sinet.d/ firebird Vamos manter tudo sem mudanças, como está desde a instalação. Nada será adicionado. * Mudança dos parâmetros do TCP stack sysctl w net.ipv4.tcp_keepalive_time = 15 sysctl w net.ipv4.tcp_keepalive_intvl = 10 sysctl w net.ipv4.tcp_keepalive_probes = 5 * Conecte-se à qualquer banco de dados no servidor de qualquer cliente de rede. * Cheque o tráfego no servidor usando um filtro de pacotes. Se o parâmetro estiver especificado como /proc/sys/net/ tcp_keepalive_*, com 15 segundos após tudo parar no canal, o servidor cria uma sonda. Se o cliente estiver vivo ( alive ), o servidor recebe um pacote de resposta. 15 segundos após isto, a checagem se repete, e assim por diante. * Se o cliente está fisicamente desligado (ou se o multiplexador ou o modem são desligados repentinamente tudo é possível), então o servidor não receberá uma resposta, e o servidor começará a enviar sondas com 10 segundos de intervalo. Se o cliente não responder à quinta sonda, então 10 segundos após isto, o servidor faz uma descarga, e libera os recursos que estão bloqueando os travamentos. Se o cliente der algum sinal e responder pelo menos à quinta sonda (se o que está ruim piorar), então, após outros 15 segundos de time-out, o servidor começará a enviar sondas. E assim por diante. Conclusões Concluindo, quero dar alguns conselhos sobre como os 10

11 Firebird/Interbase valores do KEEPALIVE devem ser usados. Primeiramente, determine o valor necessário do KEEPALIVE_TIME. Somente após este valor é que as sondas do KEEPALIVE serão lançadas. Se você ver constantemente erros 10054/104 no log do servidor, e você tiver que deletar isto manualmente, é recomendável que você aumente o valor de KEEPALIVE_TIME. Segundo, os valores de KEEPALIVE_INTERVAL e KEEPALIVE_PROBES devem ser suficientes para satisfazer suas necessidades antes de já existirem conexões travadas. Se os clientes se conectarem ao servidor através de conexões não confiáveis, então você deve aumentar o número de sondas o intervalo entre elas, para dar ao usuário uma chance de detectar o problema e se conectar ao servidor. No caso de clientes que usam conexões de banda larga à Internet, ou acessam o SQL através de uma rede local, é possível diminuir o valor de tempo entre as sondas. Recomendações gerais: Se você não tem razões particulares para receber muitas mensagens de erro dos clientes, a respeito dos resultados de gravação, por causa dos conflitos de travamento (não há conexões concorrentes trabalhando com os mesmos dados), então você precisa aumentar a reação do sistema para liberar as conexões travadas. Praticamente, o valor de KEEPALIVE_TIME deve ser acima ou igual a 1 minuto. Você mesmo deve determinar qual o maior tempo de uma transação, para que o tráfego não fique sobrecarregado por checagens do KEEPALIVE em conexões de trabalho normais, que lançam grandes transações. O valor de KEEPALIVE_INTERVAL deve ser maior ou igual a 10 segundos, e o de KEEPALIVE_PROBES igual ou maior que 5. Quando muitos usuários trabalham simultaneamente, lembre-se que se você ficar checando periodicamente, pode haver um aumento no tráfego de rede. Lembre-se também que, caso seus usuários mudem os mesmos dados frequentemente, erros de travamento acontecerão como resultado da situação. Neste caso, você precisa tratar este erro na aplicação. Ao mesmo tempo, a aplicação deve ser capaz de minimizar tais erros. Exemplos de configuração padrão Finalmente, aqui estão mais alguns exemplos de configuração. Downtime é o tempo que os usuários não são capazes de atualizar os dados (que é o momento da atualização da transação aberta até a conexão travada). Total time é o tempo de expiração que a conexão travada será fechada. KEEPALIVE_TIME 1 minutes KEEPALIVE_PROBES 3 KEEPALIVE_INTERVAL 30 seconds TOTAL 3 minutes * Clientes que usam conexão de rede; muitas das transações são curtas; downtime é limitado em 2 minutos KEEPALIVE_TIME 30 sec KEEPALIVE_PROBES 5 KEEPALIVE_INTERVAL 10 sec TOTAL 90 seconds * Clientes que usam qualquer conexão; downtime não é definido KEEPALIVE_TIME 15 minutes KEEPALIVE_PROBES 4 KEEPALIVE_INTERVAL 1 minutes TOTAL 20 minutes * Clientes que usam qualquer conexão, transações contínuas são possíveis no sistema, e o downtime limite é 15 minutos KEEPALIVE_TIME12 minutes KEEPALIVE_PROBES 7 KEEPALIVE_INTERVAL 15 sec TOTAL 14 minutes Espero que estes exemplos que mostrei sejam suficientes para um ajuste correto do TCP stack do mecanismo do KEEPALIVE. 11

12 Oracle Utiizando VS.NET com DATA PROVIDER Oracle... Parte 3 Gerando Código Automaticamente com o Oracle Developer Tools for.net por Mário Camilo Bohm Como foi apresentado nos últimos artigos, o ORACLE DEVELOPER TOOLS FOR VISUAL STUDIO.NET oferece diversas ferramentas para o dia-a-dia do desenvolvedor, trazendo para dentro do Visual Studio todo o poder do Oracle, e pode ser encontrado em: Dando continuidade ao assunto, veremos neste artigo como utilizar esta ferramenta para acessar o Oracle em um projeto simples em C#. Para criarmos o nosso exemplo, crie um novo projeto no Visual Studio.net (Menu File>New> Project) e escolha o tipo Visual C# Projects e o template Windows Application, adicionando o nome desejado. Utilizando o Oracle Exporer ( para maiores informações sobre o Oracle Explorer consulte a primeira e a segunda parte deste artigo, ou visite a url mencionada acima...) Selecione a tabela que deseja consultar e arraste-a para o formulário. Clique sim para salvar a senha da conexão: Note que após este passo, serão gerados automaticamente os objetos ADO.Net para manipulação da Tabela, estes objetos utilizam o que há de mais otimizado para acesso ao Oracle apartir do.net, o Oracle Data Provider for.net. Pressione F7 para acesar o código e note que foram criados os objetos ADO.Net especiais para acesso ao Oracle. 12

13 datagrid1.datasource = ds.tables[0]; Conforme figura : Oracle A partir da Aba Toolbox do Visual Studio.Net adicione um objeto DataGrid ao seu Form, arrastando-o e soltando no local desejado conforme figura: Pronto!, agora com apenas 3 linhas de código já conseguiremos popular o Grid com os Dados da Tabela. Escreveremos nosso código no construtor do formulário, ou seja o método de mesmo nome que o form (ou classe) em seu código, por exemplo, caso o form tenha o nome de Form1 o construtor será parecido com o seguinte : public Form1() { // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after //InitializeComponent call // } Adicione o seguinte código logo abaixo de InitializeComponent(); : DataSet ds= new DataSet(); nomedasuatabelaoracledataadapter1.fill(ds); A primeira linha cria um objeto do tipo DataSet que será carregado com os dados, a segunda linha usa o objeto OracleDataAdapter criado automaticamente quando arrastamos a tabela, para preencher o DataSet, note que este objeto terá o nome de sua tabela mais o complemento OracleDataAdapter1 por default portanto substitua nomedasuatabela do código pelo nome da tabela que está utilizando. A terceira linha diz que o DataGrid da página deve ser preenchido com a tabela que acabamos de carregar no objeto DataSet. Para maiores informações sobre estes objetos do ADO.Net consulte : Para testar o projeto pressione F5 : Pronto, com apenas 3 linhas de código acessamos uma tabela do Oracle a partir de uma aplicação Windows em C#.Net, isto porque boa parte dos códigos necessários para este acesso foram gerados automaticamente quando arrastamos a tabela para o formulários, existem muitas outras formas de acessarmos o Oracle usando os objetos fornecidos pelo Oracle Provider for.net, neste artigo apenas demonstramos uma forma simples e rápida de trabalhar com estes objetos usando o Visual Studio.net com o Oracle Explorer Installado. Para conhecer maiores detalhes sobre as ferramentas da Oracle para.net visite: 13

14 PocketPC Qual a melhor ferramenta para desenvolver para PalmOS e PocketPC? por Márcio Alexandroni Essa é sem dúvida a pergunta mais postada em todos os newsgroups que participo e por isso resolvi escrever esse artigo para expor minha opinião a respeito. Para começar, é preciso mencionar que as plataformas móveis até hoje não têm recursos excepcionais de processamento, armazenamento e sincronismo; eu costumo comparar as plataformas móveis nos cursos e palestras que ministro com os PCs que trabalhávamos no início da década de 90, ou seja, sem HD, com dois drives de 5 ¼ de densidade simples. Um aparte: não sou tão velho assim, comecei ainda no berço a trabalhar com a informática... Outro assunto muito comum em listas de discussão e nos cursos diz respeito à comparação entre as plataformas móveis, PalmOS x PocketPC. São duas plataformas distintas, PalmOS continua visando a simplicidade de operação e os equipamentos até o PalmOS 5 ainda são monousuários; o que promete ser diferente no Cobalt, mas a PalmSource também havia prometido esse recurso no PalmOS 5. Vamos esperar para ver os equipamentos que serão lançados mais para o final do ano. O PocketPC teve desde a sua concepção, um sistema operacional mais parecido com seu pai, o Windows para desktops, multitarefa, multimídia, processadores mais velozes, mais expansões, etc, mas na minha opinião, a Microsoft errou muito nas primeiras versões, pois tinham os mesmos problemas do sei pai para o desktop, problemas de gerenciamento de memória principalmente. Até o Windows CE 3.0, que equipava aqui no Brasil a série HP Jornada 7XX, os sistemas operacionais eram praticamente reescritos à cada versão e como as ferramentas disponíveis na época não tinham grandes recursos, era muito comum uma aplicação não funcionar mais na versão superior do sistema operacional, forçando o desenvolvedor a mudar a aplicação ou recompila-la para a nova versão do sistema operacional. Já na plataforma PalmOS, as novas versões sempre garantiam a total compatibilidade de executável, ou seja, uma aplicação desenvolvida para o PalmOS 4 não precisa ser recompilada, roda sem alterações no PalmOS 5 e também roda no Emulador do Cobalt (PalmOS 6). Isso garante que os investimentos feitos pelo desenvolvedor no aprendizado de uma ferramenta e também no desenvolvimento de uma aplicação sejam mantidos. O sistema operacional PocketPC hoje é muito mais robusto e teve uma grande reformulação e uma grande implementação: o.net Compact Framework. O.NET Framework foi uma grande revolução na maneira dos desenvolvedores escreverem aplicações para Windows e Web e agora também podem utilizar uma parte do conjunto de classes do.net Framework para o PocketPC. De imediato, isso garante que uma aplicação tenha portabilidade para qualquer tipo de máquina PocketPC, não importa o processador, pois o Framework compila a aplicação para o processador destino na primeira vez que ela é executada na máquina, garantindo a melhor performance para a aplicação e adaptação à máquina que está sendo executada. Também garante o funcionamento em versões futuras do PocketPC. Off-topic: como exemplo, há hoje uma implementação do.net Framework até para Linux, pelo projeto Mono, Depois dessa introdução, voltamos a falar sobre ferramentas. Costumo dizer que não existe a melhor ferramenta para desenvolver, mas existem opções e recursos que devem ser considerados: 1) Se as plataformas móveis ainda não têm poder de processamento, armazenamento e sincronismo, é importante que 14

15 PocketPC uma ferramenta possa tirar o maior e melhor proveito da plataforma, utilizando todos os recursos disponíveis pelo processador e sistema operacional. 2) É importante que a ferramenta possa gerar um código que garanta a sua utilização em versões futuras do sistema operacional, não tornando o código obsoleto quando uma nova versão do sistema operacional é liberada. Visando as importantes características acima, temos dois grandes grupos de ferramentas: - As que suportam todos os recursos do sistema operacional, portanto tem garantia de suportar os itens 1 e 2 acima; - As que têm runtime e geram executáveis interpretados e que dependem de atualização do fabricante para que possam funcionar plenamente na nova versão do sistema operacional. Para PalmOS, as ferramentas que suportam nativamente os recursos do sistema operacional e geram executáveis sem runtime são: CodeWarrior, PocketStudio, GCC (compilador free baseado em C/C++ que não tem IDE, mas existem IDEs para adquirir no mercado) e HB++. Destas ferramentas, eu utilizo CodeWarrior para construir bibliotecas como meus produtos SyncAnywhere, GraphLib, etc, e para desenvolver aplicações, uso PocketStudio, pois dá maior produtividade e gera código bem próximo ao código gerado pelo CodeWarrior. Já usei o GCC, mas achei o código um pouco maior e mais lento e nunca utilizei HB++ pelo fato da ferramenta ter preço em EUROS, o que a torna um pouco cara para os padrões brasileiros. No PalmOS, as ferramentas mais utilizadas que têm runtime são NSBasic, Satellite Forms, Java (J2ME e SuperWaba) e AppForge/MobileVB. Não há nada contra qualquer uma dessas ferramentas, desde que atenda às necessidades do desenvolvedor para seu projeto específico, principalmente no que diz ao suporte aos recursos do equipamento e necessidades dos clientes. Para PocketPC, há ferramentas como o MobileVB, Satellite Forms, NSBasic e o pacote Visual Studio.NET 2003 da Microsoft, que já liberou a versão Beta do Visual Studio.NET Neste segmento, a única ferramenta que realmente utiliza o.net Compact Framework é o pacote da Microsoft. Outras virão, o Delphi 9 por exemplo, promete gerar código.net Compact Framework, mas isso ainda não é oficial, depende do suporte da Borland ao produto da Microsoft. Na minha opinião, utilizar o.net Compact Framework hoje é o objetivo principal para qualquer ferramenta, pois somente os códigos gerados nesta plataforma terão total garantia de funcionamento em versões futuras do PocketPC. Existem ferramentas que geram código para ambas plataformas, PalmOS e PocketPC, são ferramentas com runtime. Eu não utilizo nenhuma ferramenta neste segmento, pois se dá suporte às duas plataformas, que são totalmente diferentes, dá suporte a apenas uma parte dos recursos de cada uma delas. O desenvolvedor deve fazer testes com essas ferramentas para garantir que elas realmente terão o suporte que o seu produto necessita. O exemplo mais comum para comparar ferramentas é: você desenvolveu um sistema de Automação de Força de Vendas e inicialmente seu sincronismo de dados é local (HotSync ou ActiveSync). Seu cliente solicita sincronismo via FTP, o que o obrigará a utilizar uma biblioteca externa para esse fim ou precisará utilizar a API ou classes do sistema operacional e desenvolver uma rotina específica. A ferramenta escolhida suporta essa necessidade? Vamos supor que mais adiante seu cliente precise que a aplicação acesse remotamente um banco de dados relacional ou trabalhe em um ambiente WiFi. A ferramenta escolhida suporta essa tecnologia? Conclusão: minha resposta à pergunta deste artigo é sempre a mesma: não existe a melhor ferramenta para desenvolver, há ferramentas mais poderosas e as que têm desenvolvimento mais rápido, mas a escolha final é sempre do desenvolvedor em função da sua necessidade e do seu cliente. Eu sempre sugiro ferramentas que possam tirar proveito de todos os recursos que as plataformas móveis dispõem, mas dependendo da aplicação e do tempo que o desenvolvedor tem para colocar uma aplicação no mercado, sua escolha pode variar dentro das opções disponíveis e da sua experiência em desenvolvimento. Aviso importante: O ClubePalm está comercializando apostilas/cd em português para desenvolvimento em PocketStudio. Você que é associado do The Club tem vantagem na aquisição deste kit. Ao adquirir o kit você ganhará 5% de desconto, basta informar o código THECLUB2005. Lembrando que teremos treinamento em PocketStudio de 18 a 20 de outubro no Rio de Janeiro, para maiores informações acesse: Sobre o autor Márcio Alexandroni ClubePDA A referência do desenvolvedor PDA. 15

16 Delphi dbexpress: Tratamento Centralizado de Erros por Alessandro Ferreira, Introdução Neste artigo irei abordar um tema muito solicitado aqui no suporte The Club, ou seja, como implementar um tratamento de erros trabalhando com o dbexpress e consequentemente com o ClientDataSet, onde demonstraremos como tratar erros no lado cliente e também erros providos pelo servidor de banco de dados. Tratando erros no cliente Quando menciono: tratamento de erros no cliente, refiro-me ao fato de efetuar validações antes mesmo do registro ser postado ao banco de dados, com isso, evita-se o tráfego em rede e conseqüentemente temos uma resposta mais rápida à repassar ao usuário. Um ótimo local para efetuarmos este tipo de validação é o evento OnPostError do componente ClientDataSet, visto o mesmo ser acionado automaticamente mediante qualquer violação verificável pelo ClientDataSet. A fim de economizar código, podemos implementar uma função genérica e chamar esta função dentro do OnPostError e com isso, caso haja necessidade de alguma alteração ou nova validação, bastará alterar esta função que o evento irá tratar os erros com base nas novas regras definidas. Na listagem 1, apresento um código simples que utilizo no evento OnPostError dos ClientDataSet de meus aplicativos: function CommonPostError(DataSet: TDataSet; E: EDatabaseError): TDataAction; var Msg: String; Msg := E.Message; if Pos( MUST HAVE A VALUE, UpperCase(E.Message)) > 0 then Msg := Copy(Copy(E.Message,Pos(,E.Message)+1, Length(E.Message)),1,Pos(,Copy(E.Message, Pos(,E.Message)+1,Length(E.Message)))-1); Msg := Format( O campo %s deve ser preenchido!, [Msg]); end else if Pos( KEY VIOLATION, UpperCase(E.Message)) > 0 then Msg := Format( Registro duplicado em %s, [DataSet.Name]); end else if Pos( FIELD VALUE REQUIRED, UpperCase(E.Message)) > 0 then Msg := Format( Existem campos obrigatórios não preenchidos, verifique!, [DataSet.Name]); ShowMessage(Msg); Result := daabort; Listagem 1 - Função CommonPostError Na listagem 2, demonstro como utilizar a função CommonPostError no evento OnPostError de um ClientDataSet: 16

17 Delphi procedure TfmCadCanais.cdsCanaisPostError (DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); Action := CommonPostError(DataSet, E); Listagem 2. Observe que o evento OnPostError possui três parâmetros: DataSet = Representa o componente ClientDataSet em edição. E = Traz as informações a respeito do erro, como por exemplo, a mensagem de erro. Action = Qual a ação que será tomada mediante o erro ocasionado, podendo receber como valor: dafail : Aborta a operação e apresenta a mensagem de erro. daabort : Aborta a operação e não apresenta a mensagem de erro. daretry : Repere a operação. Em nossa função estamos utilizando como retorno daabort, pois iremos abortar a operação e apresentar uma mensagem personalizada e não a mensagem original de erro sugerida pelo EDatabaseError. Um outro aspecto importante, é que a classe EDatabaseError não retorna um código de erro e sim somente a mensagem de erro e, será com base na mensagem de erro que iremos personalizar a informação à ser repassada ao usuário, como exemplo: este método e algum erro de validação ocorrer no servidor, nenhuma exceção será levantada e os dados não serão efetivados no banco de dados. Você pode estar se perguntando o por que disso e achando até um pouco estranho. Na realidade, como é de conhecimento de todos, o ApplyUpdates recebe um parâmetro do tipo inteiro, o qual muita gente utiliza sem saber exatamente sua finalidade. Este parâmetro indica o número máximo de erros suportados durante o processo de atualização, visto que, devido ao mecanismo de cache, você pode ter N registros em memória e efetuar apenas um ApplyUpdates para confirmar todo o processamento. Dentro deste contexto, qual o valor correto à ser informado ao ApplyUpdates? Isso irá depender de suas necessidades! Vamos expor algumas situações: a. Supondo que você possua N registros em cache e no momento da atualização necessite que: todos os registros sejam gravados com sucesso ou do contrário, nenhum deles seja efetivado no banco de dados, o valor a ser informado será 0, ou seja, você não admite nenhum erro no processo de atualização. b. Supondo que você possua N registros em cache e estes registros não tenham nenhum tipo de integridade entre si e deseje gravar o que conseguir, ficando apenas os registros com problemas no cache, o valor a ser informado será -1. Como mencionei anteriormente, se alguma violação ocorrer durante o processo de atualização, nenhuma exceção será levantada, visto que o mecanismo Provider/Resolver permite o tratamento de falhas no processo de atualização registro a registro utilizando o evento OnReconcileError do ClientDataSet, dessa forma, qualquer erro que seja gerado neste processo, poderemos verificar através do evento OnReconcileError. Novamente, vamos implementar uma função genérica para tratamento dos erros, confira a listagem 3: Tratando erros retornados pelo Servidor Mesmo efetuando o tratamento de erros no evento OnPostError, existem muitas validações (como exemplo: Integridade Referencial) que são efetuadas no banco de dados e, dessa forma não passam pelo evento OnPostError, lembrando que estes erros serão apresentados apenas após a execução do método ApplyUpdates, visto que até então, os dados estão em cache local no Cliente. Ainda sobre o método ApplyUpdates, gostaria de ressaltar que o mesmo não gera uma exceção, isso mesmo, se você chamar function CustomReconcileError (DataSet: TDataSet; UpdateKind: TUpdateKind; E: EReconcileError): TReconcileAction; const Acao: array [TUpdateKind] of string = ( Alterar, Inserir, Excluir ); var Msg: string; i: Integer; if pos( PK_CLIENTES,E.Message)>0 then 17

18 Delphi Msg:=Format( Cliente já cadastrado!,[]); if pos( FK_PRODUTO_TRI,E.Message)>0 then Msg:=Format( Tributação está sendo usada por Produto!,[]); case UpdateKind of ukdelete: Result := racancel; ukinsert: Result := raabort; ukmodify: Result := raabort; if Msg= then Msg := Não foi possível completar esta operação, informe a mensagem abaixo ao suporte! #13+E.Message; ShowMessage(Format( Não foi possível %s o registro. +#13+Msg,[Acao[UpdateKind]])); Listagem 3 - Função CustomReconcileError Através da mensagem de erro poderemos personalizar a mensagem apresentada ao usuário, e para isso teremos que analisar a mensagem retornada pelo banco de dados, por isso, torna-se importante nomear as constraints, primary keys, foreign keys, etc existentes em seu banco de dados, pois dessa forma será fácil efetuar o tratamento via Delphi. Na listagem 4, demonstro a chamada da função CustomReconcileError dentro do evento OnReconcileError de um ClientDataSet: procedure TfmCadCanais. cdscanaisreconcileerror (DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); inherited; Action := CustomReconcileError (DataSet, UpdateKind, E); Listagem 4. O evento OnReconcileError possui quatro parâmetros: Parâmetros do evento OnReconcileError Garantindo atualizações de múltiplos ClientDataSets Os tratamentos de erros efetuados através do evento OnReconcileError geralmente atendem a maioria das necessidades neste contexto, contudo, existem situações peculiares onde não conseguimos garantir a integridade dos dados durante o processo de atualização apenas com base neste evento. Por exemplo, supondo que você possua três componentes ClientDataSet sem nenhum tipo de relacionamento entre eles e necessite que todos os três sejam efetivados no banco de dados com sucesso ou todo o processo seja revertido, em resumo: ou grava tudo ou não grava nada! Neste caso teremos que utilizar um controle de transação para garantir a integridade no processo de atualização, todavia vale lembrar que o método ApplyUpdates não levanta nenhuma exceção... assim sendo, como verificar se houve algum erro sem utilizar o evento OnReconcileError? Bem, o método ApplyUpdates é uma função que retorna o número de erros gerados no processo de atualização e dessa forma ficará fácil implementarmos um tratamento coeso dos dados, confira a listagem 5: procedure SetaTD(var TD: TTransactionDesc); Randomize; TD.TransactionID := Trunc(Random(65635)*Now); TD.IsolationLevel := xilreadcommitted; Var TD: TTransactionDesc; // Configura transação. SetaTD(TD); // Abre transação. 18

19 Delphi SQLConnection.StartTransaction(TD); // Inicia atualização dos ClientDataSets. Try if ClientDataSet1.ApplyUpdates(0) > 0 then raise Exception.Create ( Erro no 1º ClientDataSet ); if ClientDataSet2.ApplyUpdates(0) > 0 then raise Exception.Create ( Erro no 2º ClientDataSet ); if ClientDataSet3.ApplyUpdates(0) > 0 then raise Exception.Create ( Erro no 3º ClientDataSet ); // Confirma a transação. SQLConnection.Commit(TD); Except SQLConnection.RollBack(TD); ShowMessage ( Não foi possível atualizar! ); End; Listagem 5 - Atualização com controle de transação No caso de ClientDataSets relacionados via Máster/Detail não é necessário efetuar este tipo de tratamento, visto que por estarem relacionados será necessário chamar o método ApplyUpdates apenas do ClientDataSet Máster e dessa forma, se você utilizar como parâmetro 0 (ApplyUpdates(0)) o mecanismo Provider/Resolver irá se encarregar de garantir a integridade dos dados. Reconcile Error Dialog Caso você prefira deixar o tratatamento de erros por conta do usuário (particularmente, eu não arrisco!) o Delphi oferece um formulário padrão para tratamento de erros o qual você poderá estar chamando no evento OnReconcileError de seus ClientDataSets (utilizando a mesma abordagem que citei anteriormente). Para criá-lo, vá ao menu File New Other Dialogs, conforme demonstra a figura 1. Ao selecionar a opção apresentada na figura 1, teremos um formulário idêntifco ao apresentado na figura 2. Salve esta nova unit, com um nome sugestivo, como exemplo: unreconciledialog. Agora, acesse o código fonte deste nova unit e encontrará uma função chamada: HandleReconcileError a qual poderá ser utilizada da mesma forma que a função: CustomReconcileError apresentada anteriormente neste artigo, ou seja, bastará você declarar na lista de units (no uses) de sua unit e depois no evento OnReconcileError de seus ClientDataSets efetuar a chamada como demonstrado na listagem 6: procedure TfmCadCanais.cdsCanaisReconcileError( DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); inherited; Action := HandleReconcileError(DataSet, UpdateKind, E); Listagem 6. Figura 2 formulário ReconcileErrorDialog. Conclusão Demonstrei neste artigo uma abordagem bastante simples e funcional para tratamento de erros na dbexpress/clientdataset, onde com duas funções você poderá ter o controle centralizado de erros na atualização de dados em sua aplicação. Forte abraço e sucesso à todos. Sobre o autor Figura 1: Reconcile Error Dialog Alessandro Ferreira, Consultor Técnico do The Club 19

20 ASP.Net ASP.NET 10 dicas para escrever aplicações Web de alta performance Escrever uma aplicação Web com o ASP.NET é incrivelmente fácil. Tão fácil, que muitos desenvolvedores não tem tempo para estruturar suas aplicações para um grande performance. Neste artigo, vou apresentar 10 dicas para escrever aplicações Web de alta performance. Não vou limitar meus comentários às aplicações ASP.NET porque elas são apenas um subconjunto das aplicações Web. Este artigo não é um guia definitivo para um ajuste fino de performance de aplicações Web um livro inteiro poderia facilmente ser escrito sobre isto. Ao invés disso, este artigo é um bom lugar para começar. Se você quer fazer escaladas, deve antes ler um guia e ver os comentários e recomendações das pessoas que já visitaram o local antes. Mas, não importa o quão bom seja o guia, você precisa de experiência em escaladas antes de tentar um desafio particular. Similarmente, você só aprenderá como escrever aplicações Web de alta performance quando você encarar os problemas existentes com suas aplicações e consertar os problemas de performance ou executar um teste intensivo no web site. Você pode pensar em separar a aplicação em camadas lógicas. Você talvez tenha ouvido falar sobre o termo de arquitetura física 3-tier (ou n-tier). Eles são normalmente descritos como padrões que dividem fisicamente as funcionalidades através de processos e/ou hardware. Quando o sistema precisa ser escalável, mais hardware pode ser facilmente adicionado. Aí está, no entanto, um alvo de performance associando processo e máquinas poderosas, que deve ser evitado. Então, sempre que possível, execute as páginas ASP.NET e seus componentes associados juntos na mesma aplicação. Por causa da separação do código e dos limites entre as camadas, o uso de Web services ou remotamente irá diminuir a performance em 20% ou mais. A camada de dados é um animal um pouco diferente já que normalmente há um hardware melhor dedicado para o seu banco de dados. No entanto, o custo de processamento de dados ainda é alto, assim a performance na camada de dados será o primeiro lugar onde veremos como otimizar seu código. Antes de nos aprofundar em consertar os problemas de performance em suas aplicações, tenha certeza do perfil de suas aplicações para entender exatamente onde os problemas estão. Os contadores chave de performance (como os que indicam a porcentagem de tempo gasto com o garbage colection) também são muito úteis para encontrar onde as aplicações estão gastando a maior parte de seu tempo. Assim os lugares onde o tempo é gasto são bem intuitivos. Há dois tipos de aumento de performance descritos neste artigo: grandes otimizações, usando o Cache do ASP.NET por exemplo, e pequenas otimizações que são repetidas. Estas pequenas otimizações são muitas vezes mais interessantes. Você faz uma pequena mudança no código que é chamado milhares e milhares de vezes. Com uma grande otimização, você talvez veja a performance geral dar um grande salto. Com uma pequena, Com uma pequena, você talvez corte alguns milissegundos de cada requisição, mas quando combinando os resultados totais através do dia todo, este resultado por representar algo enorme. Performance na camada de dados Quando se volta ao ajuste fino de performance de uma aplicação, When it comes to performance-tuning an application, há um teste simples que você pode usar para priorizar o seu trabalho: o código acessa o banco de dados? Se sim, com que frequência? Observe que o mesmo teste pode ser aplicado também para o código que usa Web services, mas não vou falar disso neste artigo. 20

Interface para Regras de Negócios em Multi-Banco

Interface para Regras de Negócios em Multi-Banco 1 Interface para Regras de Negócios em Multi-Banco MARCELO JALOTO (marcelo@jaloto.net) é graduado no curso superior Projetos e Gestão de Redes de Computadores e formado no curso Técnico em Processamento

Leia mais

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos TUTORIAL Memória Flash Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

Microsoft Visual Studio Express 2012 for Windows Desktop

Microsoft Visual Studio Express 2012 for Windows Desktop Microsoft Visual Studio Express 2012 for Windows Desktop Apresentação da ferramenta Professor: Danilo Giacobo Página pessoal: www.danilogiacobo.eti.br E-mail: danilogiacobo@gmail.com 1 Introdução Visual

Leia mais

Requisitos do Sistema

Requisitos do Sistema PJ8D - 017 ProJuris 8 Desktop Requisitos do Sistema PJ8D - 017 P á g i n a 1 Sumario Sumario... 1 Capítulo I - Introdução... 2 1.1 - Objetivo... 2 1.2 - Quem deve ler esse documento... 2 Capítulo II -

Leia mais

NETALARM GATEWAY. Manual do Usuário

NETALARM GATEWAY. Manual do Usuário Índice 1. Introdução...3 2. Requisitos Mínimos de Instalação...3 3. Instalação...3 4. Inicialização do Programa...5 5. Abas de Configuração...6 5.1 Aba Serial...6 5.2 Aba TCP...7 5.2.1 Opções Cliente /

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Nome Número: Série Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Proposta do projeto: Competências: Compreender a orientação a objetos e arquitetura cliente-servidor, aplicando-as

Leia mais

SUMÁRIO 1. AULA 7 INTRODUÇÃO À REDES PONTO A PONTO = PARTE 1:... 2

SUMÁRIO 1. AULA 7 INTRODUÇÃO À REDES PONTO A PONTO = PARTE 1:... 2 SUMÁRIO 1. AULA 7 INTRODUÇÃO À REDES PONTO A PONTO = PARTE 1:... 2 1.1 Introdução... 2 1.2 Montando Redes Ponto-a-Ponto... 3 1.2.1 Parte lógica... 3 1.2.2 Escolhendo o sistema operacional... 3 1.2.3 Instalação

Leia mais

Manual do Teclado de Satisfação Local Versão 1.4.1

Manual do Teclado de Satisfação Local Versão 1.4.1 Manual do Teclado de Satisfação Local Versão 1.4.1 26 de agosto de 2015 Departamento de Engenharia de Produto (DENP) SEAT Sistemas Eletrônicos de Atendimento 1. Introdução O Teclado de Satisfação é uma

Leia mais

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2009.

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2009. Guia de Instalação do SolidWorks 2009 INTRODUÇÃO A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2009. O SolidWorks pode ser instalado

Leia mais

FAT32 ou NTFS, qual o melhor?

FAT32 ou NTFS, qual o melhor? FAT32 ou NTFS, qual o melhor? Entenda quais as principais diferenças entre eles e qual a melhor escolha O que é um sistema de arquivos? O conceito mais importante sobre este assunto, sem sombra de dúvidas,

Leia mais

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador.

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador. - INTRODUÇÃO O Programa pode ser instalado em qualquer equipamento que utilize o sistema operacional Windows 95 ou superior, e seu banco de dados foi desenvolvido em MySQL, sendo necessário sua pré-instalação

Leia mais

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2010.

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2010. Guia de Instalação do SolidWorks 2010 INTRODUÇÃO A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2010. O SolidWorks pode ser instalado

Leia mais

CAPÍTULO IV Sistema Operacional Microsoft Windows XP

CAPÍTULO IV Sistema Operacional Microsoft Windows XP CAPÍTULO IV Sistema Operacional Microsoft Windows XP Sistemas Operacionais Sistemas Operacionais são programas que como o próprio nome diz tem a função de colocar o computador em operação. O sistema Operacional

Leia mais

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO DELPHI - UTILIZANDO OPENDIALOG PARA ARMAZENAR IMAGENS EM BANCO DE DADOS Criaremos uma solução simples para criar

Leia mais

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO 1 ÍNDICE 1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO... 3 1.1 REQUISITOS BASICOS DE SOFTWARE... 3 1.2 REQUISITOS BASICOS DE HARDWARE... 3 2 EXECUTANDO O INSTALADOR... 3 2.1 PASSO 01... 3 2.2 PASSO

Leia mais

Usando o evento OnFilterRecord para filtrar ClientDataSets

Usando o evento OnFilterRecord para filtrar ClientDataSets Usando o evento OnFilterRecord para filtrar ClientDataSets O objetivo mais importante no desenvolvimento de um programa é fornecer ao cliente maior liberdade para usar as interfaces e ao mesmo tempo tornar

Leia mais

Manual do Usuário. Sistema Financeiro e Caixa

Manual do Usuário. Sistema Financeiro e Caixa Manual do Usuário Sistema Financeiro e Caixa - Lançamento de receitas, despesas, gastos, depósitos. - Contas a pagar e receber. - Emissão de cheque e Autorização de pagamentos/recibos. - Controla um ou

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Para que o NSBASIC funcione corretamente em seu computador, você deve garantir que o mesmo tenha as seguintes características:

Para que o NSBASIC funcione corretamente em seu computador, você deve garantir que o mesmo tenha as seguintes características: Cerne Tecnologia www.cerne-tec.com.br Conhecendo o NSBASIC para Palm Vitor Amadeu Vitor@cerne-tec.com.br 1. Introdução Iremos neste artigo abordar a programação em BASIC para o Palm OS. Para isso, precisaremos

Leia mais

Dicas para usar melhor o Word 2007

Dicas para usar melhor o Word 2007 Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.

Leia mais

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador.

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador. INTRODUÇÃO O Programa pode ser instalado em qualquer equipamento que utilize o sistema operacional Windows 95 ou superior, e seu banco de dados foi desenvolvido em MySQL, sendo necessário sua pré-instalação

Leia mais

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS FORMULÁRIOS COM ABAS Trabalhar com abas (ou guias) é um recurso

Leia mais

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle Solução para Ambiente de Desenvolvimento Integrado Oracle PL/SQL Developer é um ambiente de desenvolvimento integrado (IDE) que foi especialmente destinado ao desenvolvimento de programas armazenados em

Leia mais

Centro Universitário do Triângulo Introdução ao Ambiente Delphi

Centro Universitário do Triângulo Introdução ao Ambiente Delphi Centro Universitário do Triângulo Introdução ao Ambiente Delphi A figura abaixo mostra a tela inicial do Delphi 7 e nos dá uma visão geral de seu ambiente de desenvolvimento, composto de múltiplas janelas

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Criando uma aplicação Web em C# usando o NHibernate

Criando uma aplicação Web em C# usando o NHibernate Criando uma aplicação Web em C# usando o NHibernate Apresento neste artigo como criar uma aplicação web totalmente orientada a objetos usando o framework NHibernate e a linguagem C#. Nossa meta é construir

Leia mais

Manual do Usuário SystemFarma AutoCred

Manual do Usuário SystemFarma AutoCred Manual do Usuário SystemFarma AutoCred Objetivo O SystemFarma AutoCred foi desenvolvido com o intuito de facilitar a comunicação entre a automação comercial e o Servidor Central do SystemFarma. Com este

Leia mais

Manual de Instalação e Configuração do SQL Express

Manual de Instalação e Configuração do SQL Express Manual de Instalação e Configuração do SQL Express Data alteração: 19/07/11 Pré Requisitos: Acesse o seguinte endereço e faça o download gratuito do SQL SRVER EXPRESS, conforme a sua plataforma x32 ou

Leia mais

Manual do Teclado de Satisfação Local Versão 1.2.2

Manual do Teclado de Satisfação Local Versão 1.2.2 Manual do Teclado de Satisfação Local Versão 1.2.2 18 de fevereiro de 2015 Departamento de Engenharia de Produto (DENP) SEAT Sistemas Eletrônicos de Atendimento 1. Introdução O Teclado de Satisfação é

Leia mais

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 1

Conhecendo o Visual FoxPro 8.0 Parte 1 AULA Conhecendo o Visual FoxPro 8.0 Parte 1 Em qualquer profissão é importante que se conheça bem as ferramentas que serão usadas para executar o trabalho proposto. No desenvolvimento de software não é

Leia mais

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 Í N D I C E Capítulo 1 - O Início de Tudo 1 Reunindo todas as informações necessárias 2 Instalando o Visual FoxPro 2 Configurando o Visual FoxPro 7 Capítulo

Leia mais

Tutorial: Instalando Linux Educacional em uma maquina virtual

Tutorial: Instalando Linux Educacional em uma maquina virtual Maria Augusta Sakis Tutorial: Instalando Linux Educacional em uma Máquina Virtual Máquinas virtuais são muito úteis no dia-a-dia, permitindo ao usuário rodar outros sistemas operacionais dentro de uma

Leia mais

3.16 MANUAL DE INSTALAÇÃO E SUPORTE

3.16 MANUAL DE INSTALAÇÃO E SUPORTE 3.16 MANUAL DE INSTALAÇÃO E SUPORTE PASSWORD INTERATIVA SISTEMAS LTDA. - www.pwi.com.br - pwi@pwi.com.br R. Prof. Carlos Reis, 39 - São Paulo SP 05424-020 Tel: - 2127-7676 - Fax: 11-3097-0042 1 Índice

Leia mais

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI CRIANDO UMA AUTENTICAÇÃO DE USUÁRIO UTILIZANDO O COMPONENTE QUERY A autenticação de usuários serve para

Leia mais

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no

Leia mais

Excel 2010 Modulo II

Excel 2010 Modulo II Excel 2010 Modulo II Sumário Nomeando intervalos de células... 1 Classificação e filtro de dados... 3 Subtotais... 6 Validação e auditoria de dados... 8 Validação e auditoria de dados... 9 Cenários...

Leia mais

Informática - Básico. Paulo Serrano GTTEC/CCUEC-Unicamp

Informática - Básico. Paulo Serrano GTTEC/CCUEC-Unicamp Informática - Básico Paulo Serrano GTTEC/CCUEC-Unicamp Índice Apresentação...06 Quais são as características do Windows?...07 Instalando o Windows...08 Aspectos Básicos...09 O que há na tela do Windows...10

Leia mais

Aula 1 - Introdução e configuração de ambiente de desenvolvimento

Aula 1 - Introdução e configuração de ambiente de desenvolvimento Aula 1 - Introdução e configuração de ambiente de desenvolvimento Olá, seja bem-vindo à primeira aula do curso para desenvolvedor de Android, neste curso você irá aprender a criar aplicativos para dispositivos

Leia mais

COMMANDedx. Guia de Instalação e Configuração 7/6/2012. Command Alkon Inc. 5168 Blazer Parkway Dublin, Ohio 43017 1.800.624.1872 Fax: 614.793.

COMMANDedx. Guia de Instalação e Configuração 7/6/2012. Command Alkon Inc. 5168 Blazer Parkway Dublin, Ohio 43017 1.800.624.1872 Fax: 614.793. COMMANDedx Guia de Instalação e Configuração 7/6/2012 Command Alkon Inc. 5168 Blazer Parkway Dublin, Ohio 43017 1.800.624.1872 Fax: 614.793.0608 2003-2012 Command Alkon Incorporated. Todos os direitos

Leia mais

Manual de Utilização

Manual de Utilização Se ainda tiver dúvidas entre em contato com a equipe de atendimento: Por telefone: 0800 642 3090 Por e-mail atendimento@oisolucoespraempresas.com.br Introdução... 3 1. O que é o programa Oi Backup Empresarial?...

Leia mais

GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V

GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V 1- Visão Geral Neste manual você aprenderá a instalar e fazer a configuração inicial do seu firewall Netdeep

Leia mais

Iniciando o MySQL Query Brower

Iniciando o MySQL Query Brower MySQL Query Brower O MySQL Query Browser é uma ferramenta gráfica fornecida pela MySQL AB para criar, executar e otimizar solicitações SQL em um ambiente gráfico. Assim como o MySQL Administrator foi criado

Leia mais

Manual do Teclado de Satisfação Online Web Opinião Versão 1.0.5

Manual do Teclado de Satisfação Online Web Opinião Versão 1.0.5 Manual do Teclado de Satisfação Online Web Opinião Versão 1.0.5 09 de julho de 2015 Departamento de Engenharia de Produto (DENP) SEAT Sistemas Eletrônicos de Atendimento 1. Introdução O Teclado de Satisfação

Leia mais

COMPONENTES DA BIBLIOTECA ZEOSLIB. Paleta Zeos Access no Lazarus. TZConnection

COMPONENTES DA BIBLIOTECA ZEOSLIB. Paleta Zeos Access no Lazarus. TZConnection COMPONENTES DA BIBLIOTECA ZEOSLIB Paleta Zeos Access no Lazarus TZConnection É o componente que estabelece a conexão com o banco de dados e possui a capacidade de manipular ou controlar transações. Todo

Leia mais

CA Nimsoft Monitor Snap

CA Nimsoft Monitor Snap CA Nimsoft Monitor Snap Guia de Configuração do Meu Monitor do SQL Server mysql série 1.4 Avisos legais Copyright 2013, CA. Todos os direitos reservados. Garantia O material contido neste documento é fornecido

Leia mais

Configurando o IIS no Server 2003

Configurando o IIS no Server 2003 2003 Ser ver Enterprise Objetivo Ao término, você será capaz de: 1. Instalar e configurar um site usando o IIS 6.0 Configurando o IIS no Server 2003 Instalando e configurando o IIS 6.0 O IIS 6 é o aplicativo

Leia mais

ADO.NET - Roteiro básico e Boas Práticas

ADO.NET - Roteiro básico e Boas Práticas ADO.NET - Roteiro básico e Boas Práticas Confuso com tantos conceitos novos, com tantas siglas e acrósticos? Qual provedor usar? Devo usar DataSet ou DataReader? Se essas e outras dúvidas te atormentam,

Leia mais

4 Criação de macros e introdução à linguagem VBA

4 Criação de macros e introdução à linguagem VBA 4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza va.vinicius@gmail.com São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação

Leia mais

O Primeiro Programa em Visual Studio.net

O Primeiro Programa em Visual Studio.net O Primeiro Programa em Visual Studio.net Já examinamos o primeiro programa escrito em C que servirá de ponto de partida para todos os demais exemplos e exercícios do curso. Agora, aprenderemos como utilizar

Leia mais

Criação de uma base de dados em MS SQL Server e acesso com VB 6. Professor Sérgio Furgeri

Criação de uma base de dados em MS SQL Server e acesso com VB 6. Professor Sérgio Furgeri OBJETIVOS DA AULA: Criação de uma base de dados em MS SQL Server e acesso com VB 6. Fazer uma breve introdução a respeito do MS SQL Server 7.0; Criar uma pequena base de dados no MS SQL Server 7.0; Elaborar

Leia mais

INSTALAÇÃO PRINTERTUX Tutorial

INSTALAÇÃO PRINTERTUX Tutorial INSTALAÇÃO PRINTERTUX Tutorial 2 1. O Sistema PrinterTux O Printertux é um sistema para gerenciamento e controle de impressões. O Produto consiste em uma interface web onde o administrador efetua o cadastro

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Atualizando do Windows XP para o Windows 7

Atualizando do Windows XP para o Windows 7 Atualizando do Windows XP para o Windows 7 Atualizar o seu PC do Windows XP para o Windows 7 requer uma instalação personalizada, que não preserva seus programas, arquivos ou configurações. Às vezes, ela

Leia mais

Atualização deixa Java mais seguro, mas ainda é melhor desativar

Atualização deixa Java mais seguro, mas ainda é melhor desativar Atualização deixa Java mais seguro, mas ainda é melhor desativar seg, 21/01/13 por Altieres Rohr Segurança Digital Se você tem alguma dúvida sobre segurança da informação (antivírus, invasões, cibercrime,

Leia mais

Capítulo 7 O Gerenciador de Arquivos

Capítulo 7 O Gerenciador de Arquivos Capítulo 7 O Gerenciador de Arquivos Neste capítulo nós iremos examinar as características da interface do gerenciador de arquivos Konqueror. Através dele realizaremos as principais operações com arquivos

Leia mais

G-Bar IGV. Instalação Versão 4.0

G-Bar IGV. Instalação Versão 4.0 G-Bar Software para Gerenciamento de Centrais de Corte e Dobra de Aço IGV Software Interpretador/ Gerenciador/ Visualizador de dados digitais de projetos CAD-TQS Instalação Versão 4.0 Manual do Usuário

Leia mais

Automatização de Aplicativos Windows usando o AutoHotKey

Automatização de Aplicativos Windows usando o AutoHotKey Automatização de Aplicativos Windows usando o AutoHotKey Muitos processos de negócio dependem de aplicativos de terceiros que assumem a presença de um operador humano para executar determinadas rotinas.

Leia mais

SIGEP WEB - Gerenciador de Postagens dos Correios Manual do Usuário

SIGEP WEB - Gerenciador de Postagens dos Correios Manual do Usuário MANUAL DO USUÁRIO 2 ÍNDICE 1. PRÉ REQUISITOS PARA UTILIZAÇÃO DO SIGEP WEB 04 2. PROCEDIMENTOS PARA DOWNLOAD DO SISTEMA 04 3. INSTALANDO O SIGEP WEB 07 4. CONFIGURAÇÕES DO SISTEMA 09 COMPARTILHANDO O BANCO

Leia mais

Especificações Técnicas

Especificações Técnicas Visual COBOL é a solução líder da indústria para o desenvolvimento de aplicações COBOL e implantação em sistemas Windows, Unix e Linux. Ele combina as melhores ferramentas de desenvolvimento de sua classe

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

Professor: Macêdo Firmino Introdução ao Windows 7

Professor: Macêdo Firmino Introdução ao Windows 7 Professor: Macêdo Firmino Introdução ao Windows 7 O hardware não consegue executar qualquer ação sem receber instrução. Essas instruções são chamadas de software ou programas de computador. O software

Leia mais

Manual de Instalação ProJuris8

Manual de Instalação ProJuris8 Manual de Instalação ProJuris8 Sumário 1 - Requisitos para a Instalação... 3 2 - Instalação do Firebird.... 4 3 - Instalação do Aplicativo ProJuris 8.... 8 4 - Conexão com o banco de dados.... 12 5 - Ativação

Leia mais

Tutorial de TCP/IP Parte 21 Roteiro Para Resolução de Problemas

Tutorial de TCP/IP Parte 21 Roteiro Para Resolução de Problemas Introdução: Tutorial de TCP/IP Parte 21 Roteiro Para Resolução de Problemas Prezados leitores, esta é a primeira parte, desta segunda etapa dos tutoriais de TCP/IP. As partes de 01 a 20, constituem o módulo

Leia mais

MANUAL DO USUÁRIO SUMÁRIO

MANUAL DO USUÁRIO SUMÁRIO SUMÁRIO 1. Home -------------------------------------------------------------------------------------------------------- 7 2. Cadastros -------------------------------------------------------------------------------------------------

Leia mais

Seu manual do usuário HP COMPAQ EVO D310 DESKTOP http://pt.yourpdfguides.com/dref/870005

Seu manual do usuário HP COMPAQ EVO D310 DESKTOP http://pt.yourpdfguides.com/dref/870005 Você pode ler as recomendações contidas no guia do usuário, no guia de técnico ou no guia de instalação para HP COMPAQ EVO D310 DESKTOP. Você vai encontrar as respostas a todas suas perguntas sobre a no

Leia mais

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário Sumário Conceitos Microsoft Access 97... 01 Inicialização do Access... 02 Convertendo um Banco de Dados... 03 Criando uma Tabela... 06 Estrutura da Tabela... 07 Propriedades do Campo... 08 Chave Primária...

Leia mais

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS Servidor: O servidor é todo computador no qual um banco de dados ou um programa (aplicação) está instalado e será COMPARTILHADO para outros computadores,

Leia mais

Firewalls. Prática de Laboratório. Maxwell Anderson INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA PARAÍBA

Firewalls. Prática de Laboratório. Maxwell Anderson INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA PARAÍBA Firewalls Prática de Laboratório Maxwell Anderson INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA PARAÍBA Sumário Firewall do Windows... 2 O que é um firewall?... 2 Ativar ou desativar o Firewall

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

Coleção de Dicas sobre programação Delphi. Retiradas do E-Zine Grandes Dicas em Delphi

Coleção de Dicas sobre programação Delphi. Retiradas do E-Zine Grandes Dicas em Delphi Coleção de Dicas sobre programação Delphi. Retiradas do E-Zine Grandes Dicas em Delphi Por Ramos de Souza Janones www.ramosdainformatica.com.br 1 Índice 1 Índice... 2 Descobrindo o código ASCII de uma

Leia mais

Software e Serviços MANUAL DE HOMOLOGAÇÃO WEB SERVICE X SISTEMA DE AUTOMAÇÃO COMERCIAL

Software e Serviços MANUAL DE HOMOLOGAÇÃO WEB SERVICE X SISTEMA DE AUTOMAÇÃO COMERCIAL MANUAL DE HOMOLOGAÇÃO WEB SERVICE X SISTEMA DE AUTOMAÇÃO COMERCIAL CONSIDERAÇÕES INICIAIS Este manual tem como objetivo propiciar a integração do SISTEMA DE AUTOMAÇÃO COMERCIAL junto as ADMINISTRADORAS

Leia mais

Manual TED1000 modelo TC100 c/ comunicação Ethernet

Manual TED1000 modelo TC100 c/ comunicação Ethernet Manual TED1000 modelo TC100 c/ comunicação Ethernet Prezado cliente, Parabéns por adquirir um Terminal modelo TC-100 / TC-200 padrão Ethernet TCP/IP Colleter. Este manual irá ajudá-lo a compreender mais

Leia mais

Elementos do IDE do Delphi

Elementos do IDE do Delphi Capítulo 2 Um Tour pelo Ambiente de Programação do Delphi Ao final deste capítulo, você estará apto a: Identificar os elementos do IDE do Delphi Identificar os elementos essenciais que formam uma aplicação

Leia mais

ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães

ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães O ASP.NET que é a camada de desenvolvimento de aplicações web da plataforma.net vem agradando em muito os desenvolvedores de todo o mundo desde o

Leia mais

Guia passo a passo de introdução ao Microsoft Windows Server Update Services

Guia passo a passo de introdução ao Microsoft Windows Server Update Services Guia passo a passo de introdução ao Microsoft Windows Server Update Services Microsoft Corporation Publicação: 14 de março de 2005 Autor: Tim Elhajj Editor: Sean Bentley Resumo Este documento fornece instruções

Leia mais

Guia de Utilização do Microsoft Dynamics CRM (Gestão de Relacionamento com Clientes)

Guia de Utilização do Microsoft Dynamics CRM (Gestão de Relacionamento com Clientes) Guia de Utilização do Microsoft Dynamics CRM (Gestão de Relacionamento com Clientes) 1. Sobre o Microsoft Dynamics CRM - O Microsoft Dynamics CRM permite criar e manter facilmente uma visão clara dos clientes,

Leia mais

SCPIWeb. SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 )

SCPIWeb. SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 ) 2010 SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 ) SCPIWebCotacao Aplicação Web para Cotação de Preços via Internet Resumo de Instruções

Leia mais

DIGISAT ERRO MIDAS.DLL

DIGISAT ERRO MIDAS.DLL DIGISAT ERRO MIDAS.DLL Para resolver esta questão, faça o download do "Registra Midas" e "midas.dll" que estão disponíveis nos links abaixo e salve-os dentro da pasta de instalação do sistema. Em seguida,

Leia mais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso): TRANSAÇÕES 1. Visão Geral Uma transação é uma unidade lógica de trabalho (processamento) formada por um conjunto de comandos SQL cujo objetivo é preservar a integridade e a consistência dos dados. Ao final

Leia mais

Equipe de Treinamentos BIG SISTEMAS. Certificação em Comunicador Processo de Comunicação Entre Filiais Matriz/Filial Filial/Matriz

Equipe de Treinamentos BIG SISTEMAS. Certificação em Comunicador Processo de Comunicação Entre Filiais Matriz/Filial Filial/Matriz Equipe de Treinamentos BIG SISTEMAS Certificação em Comunicador Processo de Comunicação Entre Filiais Matriz/Filial Filial/Matriz Sumário Certificação em Comunicador Índice de Figuras... 3 Histórico de

Leia mais

Índice. Atualizado em: 01/04/2015 Página: 1

Índice. Atualizado em: 01/04/2015 Página: 1 MANUAL DO USUÁRIO Índice 1. Introdução... 3 2. Acesso ao Sistema... 4 2.1. Instalação... 4 2.1.1. Servidor - Computador Principal... 4 2.1.2. Estação - Computador na Rede... 6 2.1.3. Estação - Mapeamento

Leia mais

Data Transformation Services (DTS) por Anderson Ferreira Souza

Data Transformation Services (DTS) por Anderson Ferreira Souza Data Transformation Services (DTS) por Anderson Ferreira Souza O Sql Server possui um recurso extremamente poderoso que é muito pouco utilizado pelos administradores e programadores. Com certeza, sendo

Leia mais

Manual de Configuração e Utilização TabFisc Versão Mobile 09/2013 Pag. 1 MANUAL DE UTILIZAÇÃO TABLET VERSÃO MOBILE

Manual de Configuração e Utilização TabFisc Versão Mobile 09/2013 Pag. 1 MANUAL DE UTILIZAÇÃO TABLET VERSÃO MOBILE Pag. 1 MANUAL DE UTILIZAÇÃO TABLET VERSÃO MOBILE Pag. 2 INTRODUÇÃO Esse documento contém as instruções básicas para a utilização do TabFisc Versão Mobile (que permite ao fiscal a realização do seu trabalho

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

STK VPN TEF IP Daruma (Configuração e Instalação) Ambiente ONLINE

STK VPN TEF IP Daruma (Configuração e Instalação) Ambiente ONLINE STK VPN TEF IP Daruma (Configuração e Instalação) Ambiente ONLINE Versão 1.0.0.6 Data: 23/05/2011 Pag. 1-20 Premissas: 1. Possuir um dos sistemas operacionais Windows a seguir: Windows XP, Vista, Windows

Leia mais

Manual de configurações do Conectividade Social Empregador

Manual de configurações do Conectividade Social Empregador Manual de configurações do Conectividade Social Empregador Índice 1. Condições para acesso 2 2. Requisitos para conexão 2 3. Pré-requisitos para utilização do Applet Java com Internet Explorer versão 5.01

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

ITALC - Intelligent Teaching and Learning with Computers

ITALC - Intelligent Teaching and Learning with Computers ITALC - Intelligent Teaching and Learning with Computers Italc Ensino e aprendizado inteligente em computadores Antônio Ricardo Leocádio Gomes, Prof. Centro Universitário de Belo Horizonte UNI-BH Manual

Leia mais

Inserindo Dados no Banco de Dados Paradox.

Inserindo Dados no Banco de Dados Paradox. Inserindo Dados no Banco de Dados Paradox. - Construção do Banco de Dados: Para podermos inserir algo em um banco precisaremos de um Banco de Dados, para isto iremos montar um utilizando o Programa Database

Leia mais

Introdução ao X3. Exercício 1: Criando um registro de Contato

Introdução ao X3. Exercício 1: Criando um registro de Contato Introdução ao X3 Exercício 1: Criando um registro de Contato Inicie por adicionar um novo registro de Contato. Navegue para a tabela de Contato clicando na aba de Contato no alto da página. Existem duas

Leia mais

Introdução... 1. Instalação... 2

Introdução... 1. Instalação... 2 ONTE DO Introdução... 1 O que é IPP?... 1 Qual é a função de um software Samsung IPP?... 1 Instalação... 2 Requisitos do sistema... 2 Instalar o software Samsung IPP... 2 Desinstalar o software Samsung

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais

Laplink PCmover Express A Maneira Mais Fácil de Migrar para um Novo PC Windows. Guia do Usuário

Laplink PCmover Express A Maneira Mais Fácil de Migrar para um Novo PC Windows. Guia do Usuário Laplink PCmover Express A Maneira Mais Fácil de Migrar para um Novo PC Windows Guia do Usuário Serviço de Atendimento ao Cliente/ Suporte Técnico Site: http://www.laplink.com/index.php/por/contact E-mail:

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 3

Conhecendo o Visual FoxPro 8.0 Parte 3 AULA Conhecendo o Visual FoxPro 8.0 Parte 3 Continuando nossa saga pelas ferramentas do Visual FoxPro 8.0, hoje vamos conhecer mais algumas. A Ferramenta Class Designer A Class Designer é a ferramenta

Leia mais