Delphi Uberaba
sábado, 25 de janeiro de 2014
A INFLUÊNCIA DA FORÇA FLUÍDICA DO “BIG BROTHER”
A Vida Extraterrestre Avançada Pode Estar Para Além da Compreensão Humana
O nosso Sistema Solar de 4,5 bilhões de anos de idade existe num Universo que se estima ter entre 13,5 e 14 bilhões de anos de existência. Os especialistas acreditam que poderá haver civilizações avançadas lá fora que possam existir desde há 1,8 bilhões de anos. Lord Martin Rees, cosmólogo e astrofísico que é o presidente da Sociedade Real Britânica e astrônomo da Rainha de Inglaterra, disse que acredita que a existência de vida extraterrestre pode estar além da compreensão humana. “Eles poderiam estar a observar-nos face a face e nós não os reconhecermos. O problema é que estamos à procura de algo parecido connosco, assumindo que eles tenham pelo menos algo como a mesma matemática e tecnologia.” “Eu suspeito que poderá existir vida e inteligência lá fora em formas que não conseguimos conceber. Tal como um chimpanzé não consegue compreender teoria quântica, poderá haver aspectos da realidade que estejam para lá da capacidade dos nossos cérebros.” Fonte: TheDailyGalaxy
quinta-feira, 13 de junho de 2013
Extra Terrestre em Uberaba???
sábado, 18 de fevereiro de 2012
domingo, 12 de junho de 2011
PROBLEMAS AO MONTAR UM SERVIDOR
OBS.: OS CRÉDITOS DESTE TEXTO NÃO SÃO MEUS E SIM DE JOÃO PAULO LIMA
Ola amigos tive varios problemas na montagem de um servidor e gostaria de compartilhar com todos para se alguem tiver o mesmo problema nao tiver as mesmas dificuldades que eu.
hardware utilizado
01 placa mae intel s5500hcvr
2 x processador Quad-Core Intel Xeon E5630 2.53Ghz
16 GB de memória DDR-3 corsair
10 hd sas 2tb
01 controladora raid adaptec 5805
01 fonte redundante hp Dl360
software
windows server 2008 64bits
1° problema
A placa mae intel s5500hcvr mede 33cm e não serve em qualquer gabinete tem que ser gabinete atx-e.
2° problema
fonte redundante hp Dl360 não e compatível com a placa mae intel s5500hcvr tive que trocar por uma atx xfx real de 700w.
3° problema
A controladora raid adaptec 5805 não reconhecia no computador voce precisa apertar ctrl + a para entrar na bios dela porem ela não reconhecia, descobri que ela so funciona no slot pci-e 1 que e o mais próximo do processador.
4° problema
Eu instalei o sistema operacional e quando ela aparecia mensagem que ia reiniciar não reiniciava e após reiniciar manualmente a maquina não carregava o desktop, somente se entrasse em modo seguro, após varias tentativas e formatações descobri que a placa mae intel s5500hcvr so instala o sistema operacional se tiver uma rede conectada em uma das 2 placas de rede dela, assim resolvi este problema.
5° problema
Após formatar descobri que o sistema criou uma partição de 2tb e o restante 5 tb em outra partição não alocada, e os outros 3 tb o raid 5 utilizou, estes 5 tb não consegui criar partição ele so dava mensagem de não alocada, após varias tentativas descobri que para resolver este problema voce cria um array com 1 hd 2tb para o sistema e o restante voce cria um segundo array na instalação do sistema operacional antes de criar as partições tem que pressionar as teclas shift + f10 dai vai abrir prompt de comando ai voce da o comando diskpart depois list disk depois select disk 1 que e o segundo disco (observe o numero do disco no meu caso era 1) depois convert gpt, dai ele converte o disco em gpt, após instalar o sistema normalmente na partição que não foi alterada de 2tb voce vai no manage de discos no sistema operacional e voce aloca a partição.
quinta-feira, 11 de novembro de 2010
Utilizando o FPDF
http://www.fpdf.org
Caso tenha alguma dúvida, faça veja o manual do FDPF no site dele:
http://www.fpdf.org/en/download.php
Tem inclusive uma versão em português.
Os métodos aqui utilizados estão todos explicados nos comentários do código.
Vamos lá:
SetFont('arial','',10);
//define o titulo
$pdf->SetTitle("Testando PDF com PHP !");
//assunto
$pdf->SetSubject("assunto deste artigo!");
// posicao vertical no caso -1.. e o limite da margem
$pdf->SetY("-1");
$titulo="Titulo do Artigo";
//escreve no pdf largura,altura,conteudo,borda,quebra de linha,alinhamento
$pdf->Cell(0,5,$titulo,0,0,'L');
$pdf->Cell(0,5,'http://www.seusite.com.br',0,1,'R');
$pdf->Cell(0,0,'',1,1,'L');
$pdf->Ln(8);
//hora do conteudo do artigo
$pdf->SetFont('arial','',8);
$novo="A Agência Nacional de Aviação Civil (Anac) informou, nesta segunda-feira (2), que vai investigar se as companhias áereas têm culpa pelos atrasos e cancelamentos registrados durante o fim de semana.
No sábado (30), o percentual de vôos com mais de uma hora de atrasos chegou a 45,2%. No domingo (1º), até as 19h30, 36% dos vôos tiveram atrasos.
";
//posiciona verticalmente 21mm
$pdf->SetY("21");
//posiciona horizontalmente 30mm
$pdf->SetX("30");
//escreve o conteudo de novo.. parametros posicao inicial,altura,conteudo(*texto),borda,quebra de linha,alinhamento
$pdf->MultiCell(0,5,$novo,0,1,'J');
$novo="
Nesta segunda-feira, a situação começou a se normalizar, mas ainda há registro de problemas. Até as 10h, dos 623 vôos previstos nos 13 principais aeroportos brasileiros, 126 tiveram atrasos de mais de uma hora, segundo balanço divulgado pela Infraero, a estatal que administra os terminais aéreos. O número equivale a 20,2% do total. Quarenta e seis decolagens foram canceladas (7,3%).
Os terminais que tiveram maiores percentuais de atrasos foram os do Recife (PE) e de Fortaleza (CE). Na Capital de Pernambuco, oito dos 24 vôos marcados até as 10h atrasaram mais de uma hora (33,3% do total). No terminal cearense, oito das 25 partidas ocorreram fora
O terminal que registrou maior índice de cancelamentos foi o de Curitiba (PR). Das 22 decolagens programadas, quatro foram canceladas (18,1%).
A assessoria de Infraero informa que os atrasos são conseqüência dos transtornos do fim de semana. Muitos vôos tiveram que ser remarcados para o início desta semana.
Previsão - O presidente da Infraero, brigadeiro José Carlos Pereira, também foi prejudicado pela crise aérea. Ele tinha uma viagem marcada de Brasília para o Rio às 7h desta segunda, mas o avião só decolou às 9h59.
Apesar do transtorno, ele disse que as operações estão ocorrendo normalmente nos principais aeroportos do país e a situação deve se normalizar até as 14h.
";
//posiciona verticalmente 41mm
$pdf->SetY("41");
//posiciona horizontalmente 10mm
$pdf->SetX("10");
//escreve o conteudo de novo.. parametros posicao inicial,altura,conteudo(*texto),borda,quebra de linha,alinhamento
$pdf->MultiCell(0,5,$novo,0,1,'J');
//endereco da imagem,posicao X(horizontal),posicao Y(vertical), tamanho altura, tamanho largura
$pdf->Image("teste.jpg", 8,20,20,20);
/*******definindo o rodapé*************************/
//posiciona verticalmente 270mm
$pdf->SetY("270");
//data atual
$data=date("d/m/Y");
$conteudo="criado em ".$data;
$texto="por Alexandre Oliveira";
//imprime uma celula... largura,altura, texto,borda,quebra de linha, alinhamento
$pdf->Cell(0,0,'',1,1,'L');
//imprime uma celula... largura,altura, texto,borda,quebra de linha, alinhamento
$pdf->Cell(0,5,$texto,0,0,'L');
//imprime uma celula... largura,altura, texto,borda,quebra de linha, alinhamento
$pdf->Cell(0,5,$conteudo,0,1,'R');
//imprime a saida do arquivo..
$pdf->Output("arquivo","I");
/*
agora imaginem que estes dados viessem do banco de dados ?
que maravilha hein ! seus artigos convertidos em pdf dinamicamente hein?
REFERENCIAS :
FPDF - >Esta é o construtor da classe. Ele permite que seja definido o formato da página, a orientação e a unidade de medida usada em todos os métodos (exeto para tamanhos de fonte).
utilizacao : FPDF([string orientation [, string unit [, mixed format]]])
SetFont -> Define a fonte que será usada para imprimir os caracteres de texto. É obrigatória a chamada, ao menos uma vez, deste método antes de imprimir o texto ou o documento resultante não será válido.
utilizacao : SetFont(string family [, string style [, float size]])
SetTitle - >Define o título do documento.
utilizacao : SetTitle(string title)
SetSubject -> Define o assunto do documento
utilizacao : SetSubject(string subject)
SetX - >Define a abscissa da posição corrente. Se o valor passado for negativo, ele será relativo à margem direita da página.
utilizacao : SetX(float x)
SetY - > Move a abscissa atual de volta para margem esquerda e define a ordenada. Se o valor passado for negativo, ele será relativo a margem inferior da página.
utilizacao : SetY(float y)
Cell - > Imprime uma célula (área retangular) com bordas opcionais, cor de fundo e texto. O canto superior-esquerdo da célula corresponde à posição atual. O texto pode ser alinhado ou centralizado. Depois de chamada, a posição atual se move para a direita ou para a linha seguinte. É possível pôr um link no texto.
Se a quebra de página automática está habilitada e a pilha for além do limite, uma quebra de página é feita antes da impressão.
utilizacao - >Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]])
Ln - > Faz uma quebra de linha. A abscissa corrente volta para a margem esquerda e a ordenada é somada ao valor passado como parâmetro.
utilizacao ->Ln([float h])
MultiCell - > Este método permite imprimir um texto com quebras de linha. Podem ser automática (assim que o texto alcança a margem direita da célula) ou explícita (através do caracter n). Serão geradas tantas células quantas forem necessárias, uma abaixo da outra.
O texto pode ser alinhado, centralizado ou justificado. O bloco de células podem ter borda e um fundo colorido.
utilizacao : MultiCell(float w, float h, string txt [, mixed border [, string align [, int fill]]])
Image ->Coloca uma imagem na página - tipos suportados JPG PNG
utilizacao : Image(string file, float x, float y [, float w [, float h [, string type [, mixed link]]]])
Bom mais uma vez.. agradeço se for útil..
*/
?>
sábado, 4 de setembro de 2010
TECNOLOGIAS APLICÁVEIS AO DELPHI 7
As questões que me surgiam eram: qual das tecnologias presentes no Delphi é adequada para que propósitos? Quais as relações entre as centenas de siglas existentes neste planeta interconectado e as maneiras de trabalhar, no Delphi, com os recursos que elas representam? Quais dessas tecnologias vão permanecer e quais estão em processo de mutação ou substituição, notadamente para integração às novas plataformas (.NET, por exemplo) e novas concepções do mundo digital (software livre, sistemas independentes de plataforma, etc.)?
O compêndio a seguir visa reunir alguns aspectos marcantes dessas tecnologias, e foi elaborado a partir do livro Dominando o Delphi 7, de Marco Cantù. Essa obra, bastante extensa, considerada “a Bíblia” do Delphi, assim mesmo não alcança toda a profundidade e extensão dos recursos oferecidos por esse ambiente de desenvolvimento, tal a sua abrangência.
Quando produzi este material, tinha em mente apenas a minha própria orientação, mas, ao finalizá-lo, percebi que se foi útil para esclarecer alguns dos meus questionamentos, também poderia (e deveria) ser disponibilizado para a comunidade de desenvolvedores Delphi e quem mais tivesse interesse no tema. Afinal, conhecimento não disseminado não produz energia.
Ao final do artigo, temos um diagrama que mostra visualmente essas relações.
· ODBC (Open DataBase Connectivity):
§ Conectividade de banco de dados aberta, da Microsoft.
§ A Microsoft começou a substituir o ODBC pelo OLE DB em meados dos anos 90, através do COM.
§ É grande, complexo, impõe maiores demandas sobre programador e exige um nível mais alto de conhecimento, em troca de uma produtividade menor.
§ É destinado a ser usado por programadores em nível de sistema operacional.
§ O ADO é a camada sobre o OLE DB e é referido como uma interface em nível de aplicativo, sendo mais simples que esse.
· IDAPI (Integrated DataBase Application Programming Interface): interface de programação de aplicativo de banco de dados integrada, da Borland, mais conhecida como BDE.
· SOAP (Simple Object Access Protocol – protocolo de acesso a objetos simples):
§ Integrante da estrutura de WebServices (vide WDSL).
§ Criado com base no HTTP-padrão para que um servidor Web pudesse manipular os pedidos SOAP e os pacotes de dados relacionados pudessem passar por firewalls.
§ Define uma notação baseada em XML para solicitar a execução de um método por um objeto no servidor, passando parâmetros para ele, e uma notação para definir o formato de uma resposta.
§ É uma pedra fundamental da arquitetura .NET DA Microsoft e também das plataformas atuais da Sun e da Oracle.
§ O SOAP substituirá as chamadas ao COM, pelo menos entre computadores diferentes.
· WDSL (WebServices Description Language – linguagem de descrição de serviços para a Web):
§ Integrante da estrutura de WebServices.
§ Substituirá a IDL e as bibliotecas de tipo usadas pelo COM/COM+.
§ Os documentos WDSL são outro tipo de documento XML que fornece a definição de metadados de uma requisição SOAP.
§ Um WebService normalmente está contido em um servidor Web que usa uma das tecnologias de extensão de servidor Web disponíveis (CGI, ISAPI, módulos Apache e outras).
§ Um módulo WebServices contém pelo menos três componentes básicos:
a) HTTPSoapDispatcher: recebe a requisição da Web, como qualquer outro distribuidor HTTP.
b) HTTPSoapPascalInvoker: realiza a operação inversa do componente HTTPRIO, pois ele pode transformar requisições SOAP em chamadas a interfaces Pascal (em vez de transformar chamadas a métodos de interfaces em requisições SOAP).
c) WSDLHTMLPublish: pode ser usado para extrair a definição WSDL do serviço das interfaces que ele suporta e executar o papel oposto do WebServices Import Wizard.
· Indy (Internet Direct):
§ A página Internet da paleta de componentes do Delphi contém os componentes TcpClient e TcpServer, desenvolvidos em substituição a ClientSocket e ServerSocket, disponíveis em versões anteriores do Delphi. A Borland sugere o uso dos componentes Indy correspondentes.
§ A paleta Indy tem mais de cem componentes. Esses componentes usam exclusivamente conexões com bloqueio (blocking).
§ A base do trabalho com soquetes é o protocolo TCP/IP. Cada conexão de soquete é composto por um endereço IP e a porta TCP. As portas mais comuns são: 80-HTTP; 21-FTP; 25-SMTP; 110-POP3; 23-TelNet. O arquivo services lista as portas padrão.
§ Existem três tipos de conexão:
a) de cliente: são iniciadas pelo cliente e conectam um soquete cliente local a um soquete servidor remoto.
b) de escuta (listening connections): são soquetes servidores passivos esperando por clientes. Quando um cliente faz uma requisição, o servidor gera um soquete dedicado a essa conexão específica e, em seguida, volta ao estado de escuta. Os servidores de escuta indicam a porta que representa o serviço que fornecem.
c) as conexões de servidor são conexões ativadas por servidores, pois elas aceitam uma requisição de um cliente.
§ Os componentes TCP do Indy são: IdTCPClient e IdTCPServer. Coloca-se um deles em um programa e o outro em um programa diferente, configurando-os para a mesma porta e deixa-se que o programa cliente consulte o programa servidor.
§ Os sockets também podem ser usados para operações em bancos de dados remotos, usando DataSnap e SOAP. São adequados para uso em correio eletrônico, protocolos HTTP.
§ Através dos componentes produtores de HTML do Delphi, presentes na paleta Internet, é possível gerar tabelas HTML a partir de tabelas de bancos de dados, usando a tecnologia WebBroker:
a) PageProducer: manipula arquivos HTML nos quais foram incorporadas tags especiais.
b) DataSetPageProducer: extensão do PageProducer, substituindo automaticamente as tags correspondentes aos nomes de campo de uma fonte de dados conectada.
c) DataSetTableProducer: útil para apresentar o conteúdo de uma tabela, consulta o outro conjunto de dados, com pré-visualização em tempo de projeto..
d) QueryTableProducer e SQLQueryTableProducer: são especificamente personalizados para a construção de consultas paramétricas (para o BDE ou dbExpress).
· DataSnap:
§ Arquitetura de multicamada (multitier) física:
a) servidor de dados: instalação e configuração de acesso ao banco de dados;
b) servidor de aplicativos: comunicam-se com o servidor de dados;
c) clientes magros: não se comunicam diretamente com o servidor de banco de dados, mas com o servidor de aplicativos).
§ A vantagem dessa arquitetura é que a configuração do acesso ao banco de dados precisa ser instalada apenas no servidor de aplicativos.
§ Essa arquitetura era chamada Midas.
§ Com o Delphi 7, não é preciso pagar taxa de distribuição para os aplicativos DataSnap.
§ Desenvolvimento cliente/servidor: o banco de dados e o mecanismo de acesso ficam no servidor, reduzindo a necessidade de processamento nos clientes.
§ Exige instalação de bibliotecas específicas na camada intermediária que fornece a seus computadores clientes os dados extraídos do servidor de banco de dados.
§ Não exige um servidor SQL para armazenamento dos dados. Pode servir dados de uma variedade de fontes, incluindo SQL, CORBA e outros servidores DataSnap.
§ Suporta os seguintes protocolos e conexões:
a) DCOM (COM Distribuído), e COM sem estados (MTS ou COM+): oferecem recursos como segurança, gerenciamento de componentes e transações de bancos de dados. Devido a problemas de passagem através de firewalls, até a Microsoft está abandonando o DCOM em favor de soluções baseadas em SOAP.
b) Soquetes TCP/IP: distribuição de clientes através da Web onde não se pode contar com DCOM. Para isso, o computador da camada intermediária deve executar o ScktSrvr.exe, fornecido pela Borland, como aplicativo ou serviço, que recebe os pedidos dos clientes e os encaminha para o módulo de dados remoto, usando COM. Os soquetes não fornecem proteção contra falhas no lado cliente, pois o servidor não é informado e pode não liberar recursos quando um cliente desligar inesperadamente. Apresenta problemas com firewalls.
c) HTTP e SOAP: HTTP simplifica conexões através de firewalls ou servidores proxy (que não gostam de soquetes TCP/IP personalizados). Nesse caso, usa-se um aplicativo servidor Web específico, httpsrvr.dll, que aceite requisições de clientes e cria-se os módulos de dados remotos apropriados, usando COM. Essas conexões Web podem usar segurança SSL. As conexões Web baseadas no transporte HTTP podem usar o suporte de pooling de objetos do DataSnap.
§ O transporte HTTP do DataSnap pode usar XML como formato de pacote de dados, permitindo que qualquer plataforma ou ferramenta que possa ler XML participe. O uso de XML sob HTTP também é a base do SOAP.
§ O componente DCOMConnection pode ser usado no lado cliente para se conectar a um servidor DCOM e MTS, localizado no computador atual ou em outro computador indicado pela propriedade ComputerName. A conexão se dá com um objeto registrado que tem determinado ServerGUID ou ServerName.
§ O componente SocketConnection pode ser usado para se conectar com o servidor por meio de TCP/IP. Deve-se indicar o endereço IP ou o nome do host, e o IntercepGUID do objeto servidor.
§ O componente WebConnection é usado para manipular uma conexão HTTP, que pode passar por um firewall facilmente. Deve ser indicada a URL na qual sua cópia do arquivo httpsrvr.dll está localizada e o nome ou GUID do objeto remoto no servidor.
§ O componente ConnectionBroker pode ser usado como um alias de um componente de conexão real, o que é útil quando se tem um único aplicativo com múltiplos conjuntos de dados-cliente. Para mudar a conexão física de cada um dos conjuntos de dados, basta mudar a propriedade Connection.
§ O componente SharedConnection permite que um aplicativo conecte-se a múltiplos módulos de dados do servidor, com uma única conexão compartilhada.
§ O componente LocalConnection pode ser usado para fazer com que um provedor de conjuntos de dados local atue como a fonte do pacote de dados, permitindo escrever um aplicativo local com o mesmo código de um aplicativo multicamada complexo.
§ Os componentes XMLTransform, XMLTransformProvider e XMLTransformClient se relacionam com a transformação do pacote de dados DataSnap em formatos XML personalizados.
§ O recurso de pooling permite que se compartilhe alguns objetos da camada intermediária entre um número muito maior de clientes, porque quando um cliente não está chamando um método do objeto camada intermediária, esse mesmo módulo remoto pode ser usado para um outro cliente.
· UDDI (Universal Description, Discovery and Integration – descrição, descoberta e integração universais):
§ Esforço para criar um catálogo de serviços Web oferecido por empresas de todo o planeta, objetivando criar uma estrutura aberta, global e independente de plataforma para que as entidades de negócios se encontrem, definam como interagem com a rede Internet e compartilhem de um registro global de negócios, agilizando a adoção do comércio eletrônico na forma de B2B (business to business).
§ Basicamente é um registro global de negócios, incluindo:
a) White Pages: informações de contato, endereços e outras informações.
b) Yellow Pages: registra a empresa em uma ou mais taxonomias, incluindo a categoria industrial, produtos vendidos, informações geográficas e outras.
c) Green Pages: relaciona os serviços Web oferecidos pelas empresas. Cada serviço é relacionado por tipo (chamado Tmodel).
§ A API UDDI se baseia no SOAP.
§ O Delphi 7 inclui um navegador UDDI que você pode usar para localizar um serviço Web ao importar um arquivo WSDL.
· IntraWeb: Desenvolvimento de aplicativos para Web (não sites Web).
§ Propõe-se a programadores que querem apenas criar aplicativos Web no Delphi da maneira como eles criavam aplicativos VCL ou CLX.
§ Os aplicativos criados podem ser usados em um programa WebBroker ou WebSnap.
§ Arquitetura relativamente aberta (o código fonte pode ser adquirido).
§ Disponível para Delphi, Kylix, C++ Builder, Java e .NET (esta última em andamento).
§ Aplicativos IntraWeb podem ser totalmente independentes de plataforma, dependendo de como são desenvolvidos.
§ Ao se trabalhar com WebBroker ou WebSnap, faz-se isso muito no nível de geração de HTML. Quando se trabalha com IntraWeb, faz-se isso em termos de componentes, de suas propriedades e de seus manipuladores de evento, como faz no desenvolvimento visual do Delphi.
§ Podem ser usadas diferentes arquiteturas para criar e implantar aplicativos: o modo application leva em conta todos os recursos da IntraWeb, e pode ser implantado como biblioteca ISAPI, módulos Apache ou modo standalone da IntraWeb. O modo page é uma versão simplificada que você pode ligar aos aplicativos Delphi WebBroker ou WebSnap existentes, e pode ser implantado como ISAPI, Apache, CGI, etc.
§ Incorpora gerenciamento de sessões pré-definido e simplifica o trabalho com elas.
§ Integra-se com WebBroker e WebSnap.
· ModelMaker: Ambiente de Projeto: UML (Unified Modeling Language): ferramenta CASE e de diagramação em UML de ciclo completo extensível, personalizável e específica do Delphi.
· Rave Reports: Geração de Relatórios.
· CLX (Component Library for Cross-Platform): Criação de Sistemas que funcionam em ambientes Windows e Linux (independente de plataforma)
· .NET
§ O Runtime Enviroment da estrutura .NET pode ser baixado gratuitamente no site Web MSDN da Microsoft. O .NET Framework SDK (Software Development Kit), que é mais completo e inclui documentação e ferramentas para desenvolvedores também pode ser baixado dali. Antes de rodar o Delphi for .NET Preview, uma dessas estruturas deve estar instalada.
§ Sob o ponto de vista do programador, o recurso básico da plataforma .NET é o seu ambiente gerenciado, que permite a execução de código intermediário compilado por várias linguagens de programação diferentes (desde que sejam compatíveis com uma definição comum para os tipos de dados básicos). Esse ambiente incorpora muitos recursos, que variam do gerenciamento de memória sofisticado à segurança integrada.
§ A biblioteca de classes cobre diversas áreas de desenvolvimento (formulários baseados no Windows, desenvolvimento para a Web, desenvolvimento de serviços Web, processamento XML, acesso a bancos de dados e muito mais).
§ CLI (Common Language Infrastructure – infra-estrutura de linguagens comum): compreende:
a) CTS (Common Type System – sistema de tipos comuns): cria a fundação para integrar linguagens de programação diferentes. Ela especifica como os tipos são declarados e usados, e os compiladores de linguagem devem ser compatíveis com essa especificação, para aproveitar a integração independente de linguagem da plataforma .NET.
b) Extensible Metadata (metadados extensíveis): Cada unidade (assembly) deve trazer com ela os dados que a identificam completamente (nome, versão, cultura e chave pública opcionais), os dados que descrevem os tipos definidos, os dados que relacionam os outros arquivos referenciados e todas as permissões especiais de segurança exigidas. Pode conter ainda outros elementos.
c) CIL (Common Intermediate Language – linguagem intermediária comum): é a linguagem de programação de um ambiente de execução virtual com um microprocessador abstrato. Os compiladores que têm como destino a plataforma .NET não geram instruções de CPU nativas, mas instruções na linguagem intermediária do processador abstrato. É semelhane aos bytecodes da Java.
d) P/Invoque (Platform Invocation Services – serviços de chamadas de plataforma): Os programas executados no ambiente em tempo de execução da .NET são reproduzidos em sua própria sandbox particular. Existe uma camada grande e complicada de software entre os programas e o sistema operacional. O embiente de execução da .NET não substitui completamente a API Win32, de modo que deve haver uma maneira de fazer a ponte entre os dois mundos.
e) FCL (Framework Class Library – bibliotecas de classe da estrutura): é uma hierarquia de classes semelhante à VCL. Todas as classes, numa aplicação Delphi .NET devem ser herdadas da .NET Fx.
f) PE (Extended Portable Executable – executável portátil extendido): formato usado pelos arquivos-padrão executáveis do Win32 – para dar suporte aos requisitos de metadados da CLI. Assim, o sistema operacional pode carregar um aplicativo .NET da mesma forma que carrega um aplicativo Win32 nativo.
§ CLR (Common Language Runtime – ambiente de tempo de execução de linguagens comum): a CLI é uma especificação e o CLR é a implementação daquela. É uma biblioteca runtime que unifica a grande variedade de serviços oferecidos pelo sistema Operacional Windows e os apresenta ao programador dentro de uma estrutura orientada a objetos. É responsável por todo o universo .NET: carregamento da imagem executável, verificação de sua identidade e segurança quanto a tipos de dados, compilação do código CIL em instruções nativas de CPU e gerenciamento do aplicativo durante sua vida útil. O código CIL que deve ser executado no CLR é chamado de código gerenciado, enquanto o código restante (como o código executável Intel produzido pelo Delphi 7) é não gerenciado.
§ CLS (Common Language Specification – especificação de linguagens comum): é um subconjunto da CTS, definindo regras que governam o modo como os tipos criados nas diferentes linguagens de programação podem interoperar.
· OLE/COM/COM+/DCOM (Distributed Component Object Model):
§ Tecnologia que define uma maneira-padrão para um módulo (aplicativo ou biblioteca) cliente e um servidor se comunicarem, por meio de uma interface específica. Ex.: geração de dados para Excel, Word, AutoCad, um webbrowser, etc.
§ A página Servers da paleta de componentes do Delphi tem os principais servidores de automação DCOM. Os controles ActiveX podem também ser desenvolvidos no Delphi.
· InterBase Express (IBX):
§ Não é um mecanismo de banco de dados independente de servidor, mas um conjunto de componentes para acessar um servidor de banco de dados específico.
§ Esse conjunto de componentes aplica-se a diferentes ambientes (Delphi, Oracle) e plataformas (Linux).
§ Oferecem melhor desempenho e controle, à custa de flexibilidade e portabilidade.
§ Transações: Cada operação de edição/postagem é considerada uma transação implícita, mas deve-se alterar esse comportamento manipulando as transações implicitamente. Deve-se evitar as transações que esperam entrada do usuário para serem concluídas, pois o usuário poderia ficar foram indefinidamente e a transação permaneceria ativa por um longo tempo, consumindo peformance do sistema. Deve-se isolar cada transação corretamente, por meio do nível de isolamento SnapShot para relatórios e ReadCommited para formulários interativos. Uma transação começa automaticamente quanto você edita qualquer conjunto de dados ligados a ela. O comando CommitRetaining não abre uma nova transação, mas permite que a transação atual permaneça aberta.
§ Componentes Ibx: IbSQL: executa instruções SQL que não retornam um conjunto de dados (instruções DDL ou instruções update e delete); IbDataBaseInfo: consultar estrutura e status do banco de dados; IbSqlMonitor: depurador do sistema (o SQL monitor do Delphi é específico para o BDE); IbEvents: recebe eventos enviados pelo servidor.
· Midas (Middle-tier Distributed Applications Services):
§ Serviços de aplicativos distribuídos de camada intermediária.
§ Vide DataSnap.
· WebBroker:
§ Permite a geração páginas HTML com relatórios dinâmicos, a partir de bancos de dados, incluindo contadores de acesso, pesquisas interativas, etc.
· WebSnap:
§ Complementa a base fornecida pelo WebBroker. A diferença básica é que, em vez de ter um único módulo de dados com múltiplas ações eventualmente conectadas aos componentes produtores, o WebSnap tem múltiplos módulos de dados, cada um corresondente a uma ação e tendo um componente produtor com um arquivo HTML anexado.
§ Um aplicativo WebSnap é técnicamente um programa CGI, um módulo ISAPI ou Apache.
§ As vantagens em relação ao WebBroker: permite que cada um de vários módulos Web corresponda a uma página, a integração de script no lado servidor, a XLS (Extensible Stylesheet Language – linguagem de folhas de estilo extensível) e a tecnologia Internet Express. Além disso, existem muitos outros componentes prontos para manipular tarefas comuns, como login de usuários, gerenciamento de sessões, permissões, etc.
§ Oferece um bom suporte à manipulação de conjuntos de dados: o DataSetAdapter conecta-se a um conjunto de dados, através de um ClientDataSet e exibe seus valores em um formulário ou tabela, por meio do editor visual do componente AdapterPageProducer.
§ Além de visualização, permite edição dos dados de formulários.
§ Permite relacionamentos mestre/detalhe.
· ActiveX:
§ Evolução da tecnologia VBX (16 Bits, Delphi 1): componentes da Microsoft para Visual Basic, quando passou a se chamar OLE, ou OCX (que é a extensão usada).
§ Os controles típicos Windows usam uma interface baseada em mensagens, enquanto os objetos de Automação e os controles ActiveX usam propriedades, métodos e eventos (como os objetos do Delphi).
§ Mesmos componentes ActiveX podem ser usados em vários ambientes de desenvolvimento, como Delphi, Borland C++ Builder, etc.
· dbExpress (DBX):
§ Tecnologia de Acesso a Banco de Dados, sem depender do BDE.
§ É chamada camada ‘magra’ de acesso a banco de dados, substituindo o BDE.
§ Baseia-se no componente ClientDataSet (paleta Data Access), o qual tem a capacidade de salvar tabelas em arquivos locais – algo que a Borland tenta vender com o nome de MyBase.
§ Disponível para as plataformas Windows e Linux.
§ Basicamente não exigem nenhuma configuração nas máquinas dos usuários finais.
§ Limitada em termos de recursos: pode acessar apenas servidores SQL (nada de arquivos locais, só se salvá-los localmente); não tem recursos de cache e oferece apenas acesso unidirecional (só para consultas, não inclui, altera, exclui, etc.)
§ Indicada para produção de relatórios em HTML (só consultas).
§ Para uso numa interface de edição de dados, deve ser usado juntamente com um componente Provider (cache e queries), que pode importar dados. É útil para arquiteturas cliente/servidor ou de múltiplas camadas.
§ Acessa muitos mecanismos de bancos de dados diferentes: Interbase, Oracle, MySql (Linux), Informix, Db2, Ms SQL Server, mas enfrenta alguns problemas de diferenças de dialeto SQL.
· ADO (ActiveX Data Objects):
§ Interface de alto nível da Microsoft para acesso a banco de dados.
§ Implementado na tecnologia de acesso a dados OLE DB da Microsoft.
§ Acessa banco de dados relacionais, não relacionais, sistemas de arquivos, e-mail e objetos corporativos personalizados.
§ Independe de servidor de banco de dados, com suporte a servidores locais e SQL.
§ Mecanismo pesado e configuração simplificada. O tamanho da instalação do MDAC (Microsoft Data Access Components) atualiza grandes partes do sistema operacional.
§ Compatibilidade limitada entre versões: obriga o usuário a atualizar os computadores para a mesma versão que utilizou para desenvolver o programa.
§ Apresenta vantagens para quem usa Access ou SQL Server, oferecendo melhor qualidade de drivers que os dos provedores de OLE DB normais.
§ Não serve para desenvolvimento independente de plataforma: não disponível no Linux ou em outros sistemas operacionais.
§ O pacote ADO foi denominado pela Borland de dbGo, e seus componentes principais são: ADOConnection (para conexão ao banco de dados), ADOCommand (para execução de comandos SQL) e ADODataSet (para execução de requisições que retornam um conjunto de resultados). Além desses, existem 3 componetes de compatibilidade: ADOTable, ADOQuery e ADOStoredProc, que podem ser usados para portar aplicativos baseados no BDE. E ainda há o componente RDSConnection, que permite acessar dados em aplicativos multicamadas (multitier) remotos.
§ A Microsoft está substituindo o ADO pela sua versão .NET, a qual se baseia nos mesmos conceitos básicos. Assim, o uso do ADO pode fornecer uma boa preparação para quem caminha na direção de aplicativos .NET nativos (embora a Borland também planeje portar o dbExpress para aquela plataforma).
· ADO .NET:
§ Evolução significativa da ADO, para a arquitetura .NET, voltada a desenvolvimento para a Web.
§ Supre as falhas do COM, que é a base da ADO como por exemplo:
a) o COM é inaceitável como mecanismo de transporte;
b) o COM só roda em ambiente Windows;
c) o COM não penetra firewalls corporativos.
§ A solução para os problemas da ADO veio com o uso de XML.
· ASP .NET:
§ Adoção da arquitetura .NET, voltada a desenvolvimento para a Web.
· MyBase (vide dbExpress):
§ Apropriado para aplicativo de banco de dados monousuário local.
§ Para executar qualquer aplicativo que use ClientDataSet, você precisa implementar a biblioteca midas.dll, (vide Midas) que pode apresentar conflitos de versões.
§ A partir do Delphi 6, a midas.dll pode ser ligada diretamente ao executável pela unidade MidasLib (vide Midas).
§ O componente ClientDataSet suporta os formatos CDS (padrão) e XML (Extended Markup Language).
· MDAC (Microsoft Data Access Components): componentes de acesso a dados da Microsoft
§ É um guarda-chuva para as tecnologias de bancos de dados da Microsoft e inclui ADO, OLE DB, ODBC e RDS (Remote Data Services – serviços de dados remotos).
§ O MDAC é lançado independentemente e disponível para download gratuito e distribuição praticamente gratuita.
§ O Delphi 7 vem com o MDAC 2.6.
§ O MDAC SDK faz parte do Platform SDK do Windows, que pode ser baixado gratuitamente.
§ Estão inclusos no MDAC os seguintes provedores: Drivers ODBC, Jet 3.5 (Access 97), Jet 4.0 (Access e outros DB), SQL Server, Oracle, Serviços OLAP (Online Analytical Processing – processamento analítico on-line), CSV e Texto Simples.
· XML (Extensible Markup Language – Linguagem de Marcação Extensível):
§ É uma versão simplificada da SGML.
§ É extensível porque permite marcas (tags) livres, em contraste com HTML, que tem tags prédefinidas.
§ Existem duas técnicas normais para gerenciar documentos XML em programas Delphi:
a) DOM (Document Object Model – modelo de objetos documento): carrega o documento inteiro em uma árvore hierárquica de nós, permitindo leitura e manipulação.
b) SAX (Simple API for XML – API simples para XML): analisa o ocumento, chamando um evento para cada elemento desse, sem construir qualquer estrutura na memória.
· BDE (Borland Database Engine):
§ Acesso a bancos de dados locais: Paradox, dBase e servidores SQL, bem como tudo o que possa ser acessado por meio de drivers ODBC.
§ A Borland a considera obsoleta, tende a sair do ambiente Delphi.
§ A paleta BDE do Delphi 7 ainda mantém os componentes Table, Query, StoredProc e outros do BDE.
· CORBA (Common Objects Request Broken Architecture): arquitetura de agente de requisições de objetos comuns.
§ Até o Delphi 6, era um mecanismo de transporte para os aplicativos DataSnap. Devido a questões de compatibilidade com as versões mais recentes da solução CORBA da Visibroker da Borland, esse recurso foi descontinuado no Delphi 7.
§ Essa arquitetura foi redirecionada através da transformação de pacotes de dados em XML e entrega dos mesmos a um navegador Web (cria-se uma camada extra: o servidor Web recebe os dados da camada intermediária e os distribui para o cliente). É a arquitetura Internet Express.
· Internet Express: é parte da plataforma WebSnap.
§ Contém um componente-cliente chamado XMLBroker, que pode ser usado em lugar de um conjunto de dados-cliente para recuperar dados de um programa DataSnap de camada intermediária e torná-los disponíveis para um tipo específico de produtor de página, denominado InetPageProducer.
§ É uma arquitetura de quatro camadas: servidor SQL, servidor de aplicativos (o servidor DataSnap), servidor Web com um aplicativo personalizado e o navegador Web.
§ É uma tecnologia para a construção de clientes baseados em navegador, a qual permite enviar o conjunto de dados inteiro para o computador cliente, com o código HTML e algum código JavaScript para manipular o arquivo XML e exibí-lo na interface com o usuário definida pelo código HTML. É o código JavaScript que permite ao navegador exibir os dados e manipulá-los.
· CGI (Common Gateway Interface):
§ Protocolo para a programação de servidores Web, permitindo a geração de páginas HTML dinâmicas.
§ É independente de plataforma, permitindo ao navegador enviar e requisitar dados. Quando o servidor detecta uma requisição de página do aplicativo CGI, ele lança o aplicativo, passa dados de linha de comando da requisição de página para o aplicativo e, em seguida, envia a saída-padrão do aplicativo de volta para o computador-cliente.
§ Os aplicativos CGI podem ser gerados através de várias ferramentas e linguagens, inclusive o Delphi.
§ É limitado aos sistemas baseados no processador Intel.
· APIs:
§ Alternativas ao CGI são o uso das APIs de servidor Web: ISAPI (Internet Server API, da Microsoft); NSAPI (Netscape Server API) ou API Apache. Essas APIs permitem escrever uma biblioteca que o servidor carrega em seu próprio espaço de endereçamento e mantém na memória. Após carregar a DLL, o servidor API pode executar requisições individuais por meios de linhas de execução dentro do processo principal, em vez de iniciar um novo arquivo EXE para cada requisição, como no caso de aplicativos CGI, sendo ainda mais rápidas que estes.
§ No Delphi, essas tecnologias são implementadas através do WebBroker.
Creio que esta síntese possa facilitar aos usuários do Delphi na tomada de decisões, no momento do planejamento de sistemas, auxiliando na escolha das tecnologias apropriadas para os objetivos dos softwares, assim como poderá auxiliar na adequação das aplicações aos recursos de hardware e software disponibilizados pelos clientes. Não tive a pretensão de alcançar toda a abrangência do ambiente Delphi, mas somente fornecer um ponto de partida para orientar a seleção do ferramental, considerando algumas circunstâncias atuais e tendências futuras do mundo do software.
O diagrama a seguir mostra visualmente as relações entre as tecnologias, pacotes de componentes Delphi, linguagens e protocolos de comunicação.
