Arquivo da categoria ‘JavaScript’

O jQuery é uma biblioteca livre de código aberto e que possui uma licença dual, fazendo uso da Licença MIT ou da GNU. A sintaxe do jQuery foi desenvolvida para tornar mais simples a navegação do documento HTML, a seleção de elementos DOM, criar animações, manipular eventos e desenvolver aplicações AJAX. A biblioteca também oferece a possibilidade de criação de plug-ins. Fazendo uso de tais facilidades, os desenvolvedores podem criar camadas de abstração para interações de mais baixo nível, simplificando o desenvolvimento de aplicações web dinâmicas de grande complexidade.

JQuery: http://jquery.com/

Sendo uma biblioteca JavaScript rápida, pequena e rica em recursos. O JQuery mudou a maneira que milhões de pessoas passaram a escrever JavaScript. Grandes empresas como a IBM, Mozilla, Adobe entre outras se tornaram-se parceiras do JQuery e prestam suporte tornando possível a Fundação JQuery. Fundada com parcerias da IBM e WordPress, está parceria visa melhorar a web aberta, tornando-a acessível a todos, através do desenvolvimento e suporte de software de fonte aberto, e colaboração com a comunidade de desenvolvimento.

JQuery Fundation: https://jquery.org/

Instalando o JQuery

O JQuery é um arquivo de tamanho muito pequeno e simples de instalar, você pode utiliza-lo localmente baixando o arquivo no seu computador e fazendo referencia ao script jquery.js ou pode utiliza-lo diretamente da web.

Hello World - JQuery

Hello World – JQuery

Sintaxe JQuery

A sintaxe do JQuery possui basicamente a proposta de selecionar elementos e executar ações sobre eles. O sinal $ (dólar) define o acesso ao JQuery e suas funções e assim manipular os elementos através de eventos.

Ready

O Ready é um evento do JQuery que ao contrario do JavaScript que utiliza o evento LOAD quando a página é processada e o LOAD não é acionado até que todos os ativos, como as imagens tenham sido completamente carregadas. O READY pode ser executado logo que a hierarquia de DOM possa ser totalmente construída, de modo que este geralmente é o melhor lugar para anexar todos os outros manipuladores de eventos e executar outro código jQuery

Exemplo:

Neste exemplo básico acessamos o JQuery através da web e o utilizamos para manipular um evento de clique sobre um link e o CSS da pagina HTML.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<meta charset="utf-8" />
	<title>Desenvolvimento Aberto</title>

	<!-- Está é uma instalação do JQuery, você apenas precisa apontar
	     o para o respectivo script da versão que você deseja utilizar -->

   <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"> </script>

   <!-- Este é um script JQuery básico que manipula o CSS e um evento de clique.
        Todo o script roda no evento equivalente ao Load da pagina html-->     

   <script>
   $( document ).ready(function() {

          $("body").css("background-color", "#363636");
          $("body").css("color", "#ffffff");
          $("h1").css("background-color", "#483D8B");
          $("h1").css("padding", "20px");
          $("h2").css("background-color", "#4682B4");
          $("h2").css("padding", "20px");
          $("p").css("background-color", "#ffffff");
          $("p").css("color", "#64645A");
          $("p").css("padding", "20px");
          $("a").css("color", "#E066FF");

    $( "a" ).click(function( event ) {
        alert( "Desenvolvimento Aberto.\nObrigado por visitar!" );
    });
	});       

   </script>
</head>

<body>
	<h1> Desenvolvimento Aberto</h1>
	<h2>Aprenda JQuery --> Hello World!</h2>
	<p>Desenvolvimento Aberto é uma organização voltada para o aprendizado e discussão de técnicas de
	   desenvolvimento focado em algumas linguagens de programação sendo parcialmente/totalmente abertas ou
	   com licenças gratuitas para desenvolvedores de cada uma de suas respectivas marcas registradas.<br />	<br />
		Desenvolvimento Aberto foi escrito e desenvolve utilizando ferramentas gratuitas disponibilizadas
		pelas melhores empresas de software da atualidade, incluindo a própria hospedagem e design deste site,
		sendo assim, também proporciona conteúdo gratuito, isso quer dizer que você não paga nada para aprender
		e utilizar as tecnologias de ponta que podem ser manuseadas através das linguagens de programação mais
		 requisitadas pelas empresas no mercado atual.
	</p>
	<a href="#">Clique aqui!!!</a>
</body>
</html>

 

O termo Enterprise se refere a organização empresarial corporativa. Na indústria de computadores, o termo é frequentemente usado para descrever qualquer grande organização que utiliza computadores, sistemas operacionais, softwares ou ferramentas de desenvolvimento para o mundo dos negócios. E ao analisarmos o DNA das soluções Enterprise que encontramos nos dias de hoje, sem duvida encontraremos a herança de uma empresa que foi amplamente responsável por tudo que conhecemos, a IBM, empresa pioneira no desenvolvimento de hardware e softwares corporativos.

O principal software corporativo é chamado de Enterprise Resource Planning (ERP) e grande parte de toda infraestrutura e metodologias existentes no universo corporativo prezam garantir que este software funcione perfeitamente desde o inicio da era da computação empresarial. O ERP nasceu de seu antecessor, Manufacturing Resource Planning (MRP) e evoluiram desde os primórdios dos pacote de gerenciamento de banco de dados comercial desenvolvido por Gene Thomas na IBM na década de 1960. Logo os primeiros sistemas ERP foram concebidos como uma ferramenta organizacional e de programação para as empresas industriais. A função da próxima geração de sistemas de software ERP foram estendidos além dos limites do que poderia ser feito para uso interno de uma empresa de fabricação individual e começou a incluir clientes e fornecedores. Não demorou muito para que outras indústrias reconhecessem os benefícios dos sistemas ERP, então as agências governamentais e organizações do setor de serviços também começaram a tirar proveito desta tecnologia.

A evolução se deu dos processos executados em grandes mainframes, como IBM/360 para os processos atuais que gerenciam enormes quantidades de dados em tempo real e são executados em diferentes plataformas transpondo os limites físicos das empresas, permitindo que o processo de trabalho continue sem fronteiras e a qualquer hora, em qualquer lugar.

De onde vem os softwares Enterprise?

Um rápido passeio pela historia das três maiores soluções Enterprise encontradas no mercado de software da atualidade, nos mostram o como foi o inicio dos sistemas corporativos:

A SAP AG criada em 1972 por cinco consultores da IBM que perceberam a possibilidade de criar um pacote de software padrão a ser executado em um mainframe IBM. Em dezoito meses foi criado o sistema R que foi renomeado para R/1, sendo seguido pelo sistema R/2 de duas camadas e logo depois o R/3 apareceu inicialmente no final dos anos 80 quando a IBM lançou sua arquitetura SNA, mas foi decidido trabalhar com Unix no lugar do mainframe IBM e após cinco anos de desenvolvimento, em 1992 o sistema R/3 finalmente foi lançado.

A JD Edwards World Solution Company, foi fundada em março 1977 e era uma empresa de software empresarial, o foco inicial da empresa foi o desenvolvimento de um programa de contabilidade necessário para seus clientes. Seu produto mais popular chamado World era centralizado em servidores, bem como multiusuário; os usuários poderiam acessar o sistema usando um dos vários terminais de computador da IBM ou “telas verdes”. Como um sistema ERP, o JD Edwards World incluía as três áreas básicas de atuação: analista funcional/negócios, desenvolvedor/programador e  administração do sistema.

O Microsoft Dynamics AX foi originalmente desenvolvido como uma colaboração entre a IBM e a dinamarquesa Damgaard Data que resultou no IBM Axapta. O Axapta foi inicialmente lançado em março de 1998, nos mercados dinamarqueses  e norte-americanos. A IBM devolveu todos os direitos sobre o produto para a Damgaard Data logo após o lançamento da versão 1.5 antes da Damgaard Data ser fundida com Navision Software A/S em 2000, a empresa combinada, inicialmente Navision Damgaard, depois Navision A/S, foi adquirida pela Microsoft em julho de 2002 e em setembro de 2011, a Microsoft anunciou o lançamento da versão nova AX 2012.

Hoje a IBM não possui uma solução de ERP mas ela endossa através de suas alianças poderosas soluções em conjunto com a SAP e Oracle:

IBM ERP Alliance: http://www.ibm.com/solutions/alliance/us/en/index/erp.html

????????????????????????????????????????
O que os Softwares Corporativos Podem Fazer?

Unificar os dados como um todo, integrando os sistemas de gestão empresarial, permitindo a centralização de todo o negócio em uma única fonte, pois são desenvolvidos para atender às necessidades das diferentes áreas de uma empresa.

As varias ferramentas oferecem aos seus gestores um maior controle sobre suas operações e planejamentos, interligando todos os departamentos e se tornando um importante apoio às decisões estratégicas da diretoria, indicando os mercados mais lucrativos no qual pode-se investir.

Como beneficio a empresa passa a obter maior agilidade aos processos e uma maximização de resultados a longo prazo, com a padronização das informações internas consegue-se uma ampla visibilidade dos procedimentos empresariais e uma automação das dinâmicas de apoio. A obtenção de dados em tempo real, possibilita a eliminação das falhas de comunicação entre os setores e um melhor gerenciamento de qualidade de seus produtos ou serviços e também um melhor relacionamento com os seus clientes.

Como é a arquitetura de um software Enterprise?

Os softwares Enterprise geralmente utilizam o topo da tecnologia disponível em termos de hardware. Novos hardwares são construídos para atender as novas exigências que as empresas demandam com o crescimento baseado no beneficio da tecnologia que elas adquirem, sendo assim novos hardwares necessitam de novas versões de softwares e sistemas operacionais para que possam ser controlados, gerando um ciclo de desenvolvimento de tecnologia de ponta.

Os programas Enterprise atuais utilizam uma arquitetura de três camadas, cada camada é auto contida o suficiente de forma que a aplicação pode ser dividida em vários computadores em uma rede distribuída. As camadas são compostas da interface do usuário (Camada de Apresentação ou Servidor de Apresentação); da lógica do negócio (Camada de Negócio ou Servidor de Aplicação) e da camada de banco de dados (Camada de Dados ou Servidor de Dados). Cada camada desta arquitetura é normalmente mantida em um ou mais servidores para tornar-se mais escalonável e independente das demais. Com o mesmo objetivo são utilizadas tecnologias de middleware como, por exemplo, COM, CORBA, Web Services ou RMI. Esta arquitetura tem como características baixos custos de disponibilização, de mudança da base de dados, de mudança na lógica de negócios, eficiente armazenamento e reutilização de recursos.

Três camadas SAP:

R/3 - Três camadas

R/3 – SAP – Três camadas

Três camadas Oracle:

JD Edwards - três camadas

JD Edwards – Oracle – Três camadas

Três camadas Microsoft:

Dynamics - Microsoft - Três camadas

Dynamics – Microsoft – Três camadas

Como funcionam na pratica para desenvolvedores e consultores?

Os softwares corporativos que integram a linha empresarial como já vimos ditam não só a tecnologia de hardware e software mas também o funcionamento de empresas de tecnologia, de desenvolvimento ou consultorias que trabalham com este tipo de solução.

No mercado de softwares corporativos um desenvolvedor em alguns casos também é um tipo de consultor ou especialista, outras profissões que conhecemos no mercado da tecnologia também se enquadram no time de consultores tendo sua própria nomenclatura, os códigos fontes são abertos e podem ser herdados e modificados, porem geralmente tudo que é desenvolvido dentro de um software corporativo pela licença sob o qual ele é gerido é de propriedade da empresa fabricante do software, entretanto é permitindo que consultorias desenvolvam e comercializem módulos adicionais para seus produtos seguindo as melhores praticas de desenvolvimento, implantação e manutenção da empresa detentora da solução.

Os sistemas ERP podem se conectar com qualquer banco de dados topo de linha do mercado e tem como parceiros as empresas fabricantes de cada banco, quando também não é proprietária de uma solução de banco de dados, em ambos os casos os bancos de dados possuem Features exclusivas desenvolvidas para uso com cada um destes sistemas. Os sistemas ERP contam com um dicionário de dados que controla o banco de dados em uso, permitindo que o sistema e os desenvolvedores utilizem uma linguagem única para acesso a dados. Possuem também seu próprio compilador e sua própria linguagem de programação na qual as consultorias podem desenvolver novos módulos ou modificar módulos existentes.

A SAP possui a linguagem Abap, a Oracle utiliza entre outros métodos a linguagem C e a Microsoft a linguagem X++. As empresas terceirizadas também podem desenvolver outros softwares corporativos que se comunicam com o ERP através de um protocolo de comunicação especifico, geralmente utilizando as tecnologias DCOM ou Corba e são nada mais que interfaces para a comunicação entre um sistema proprietário e outro compatível de terceiros através de conexões TCP/IP e podem chamar funções remotas do ERP que são criadas para inserir ou exportar dados garantindo a consistência de dados utilizando a própria regra de negocio do ERP e fornecendo uma maneira para que um programa externo escrito em linguagens como  Java, C, C ++C# ou outras línguas possam também atuar como o cliente ou servidor em uma chamada.

SAP – Abap: Linguagem de programação.

Oracle – JDE: Development Tools.

Microsoft – MorphX: IDE e linguagem X++.

Solutions_key
Como é a Metodologia dos Softwares Enterprise?

Com décadas de experiência no mercado corporativo os softwares empresariais desenvolveram algumas metodologias ao longo dos anos que possibilitam que as empresas utilizem de forma adequada suas soluções, abrangendo todas as fases de um projeto desde a engenharia de software, a definição de escopo, passando pela especificação funcional, design, construção, testes, até chegar à validação, implantação e uso produtivo da solução.

ASAP Methodology: Metodologia ASAP

Oracle Unified Method: Metodologia OUM

Microsoft Dynamics Sure Step methodology: Metodologia MS Sure Step

Falando de modo genérico já que estamos nos referindo a três ótimos softwares empresariais da atualidade, podemos perceber que os três possuem uma arquitetura semelhante que proporciona uma metodologia muito similar para execução de seus projetos, deste modo, segue uma visão geral de um projeto corporativo.

A fase de preparação geralmente é executada por um gerente de projetos e engloba o escopo, estimativas, planejamento inicial do projeto, cronograma, aspectos técnicos, definição de equipe, identificação de riscos e estratégias, planejamento de controle de qualidade e o inicio do projeto.

A fase inicial, já com os recursos definidos em ação, o gerente de projeto e os analistas funcionais devem tratar do levantamento dos processos de negócio, gestão do projeto, mudanças organizacionais, definição dos novos processos de negócio, necessidades e mudanças organizacionais.

Com toda a definição realizada, já na fase de customização e desenvolvimento, entra em cena os consultores especialistas que iniciam a configuração, implementação e o desenvolvimento das definições funcionais que entre elas estão a configuração base, a configuração final, desenvolvimento de programas, implementação de interfaces, testes unitários, testes integrados, documentação de cenários e processos, execução dos treinamentos aos key users e usuários, controle de qualidade e a correção de possíveis erros.

Na fase de pré-produção toda atenção se volta aos detalhes finais como, testes de volume, testes de stress, planejamento da implantação, estratégia de implantação, treinamentos finais e o controle de qualidade.

Com tudo pronto o projeto é finalmente implantado e o sistema é colocado em produção e os retoques finais são a transferência de pré-produção, ajuste da configuração de hardware, ajustes na configuração de software, base de dados, sistema operacional e outros. Só então se inicia os treinamentos finais, suporte aos key-users e usuários e encerramento do projeto.

Ambientes Corporativos

Integrando a metodologia de gestão de projeto os softwares corporativos e suas demais ferramentas são desenvolvidas para utilizar ambientes específicos nos quais tem o intuito de maximizar a eficiência dos métodos de implantação, desenvolvimento, testes, qualidade, treinamento, utilização e gerenciamento dos produtos adquiridos. Cada ambiente possui suas especificações de uso e são utilizados para uma finalidade especifica e devido a eficiência deste modelo outras metodologias também utilizam alguns destes cenários.

Ambientes do SAP:

Alguns dos ambientes SAP

Alguns dos ambientes SAP

Ambientes da Oracle:

Alguns dos ambientes Oracle

Alguns dos ambientes Oracle

Ambientes da Microsoft:

Alguns dos ambientes Microsoft

Alguns dos ambientes Microsoft

Como Desenvolver Suas Próprias Aplicações Enterprise?

As grandes empresas de tecnologia que desenvolvem o hardwaresoftware para o mercado corporativo em sua maioria também desenvolvem ferramentas para desenvolvimento de softwares para empresas terceirizadas, para que estas possam desenvolver seus próprios softwares empresariais ou soluções que complementas as soluções já existentes, entre elas a Oracle, a IBM, a Microsoft e com exceção da SAP que também utilizam em certos casos o Java da Oracle e ferramentas da IBM como a IDE Eclipse. Todas disponibilizam um vasto matérial sobre como desenvolver seus próprios projetos Enterprise, veja os seguintes links:

Microsoft: http://msdn.microsoft.com/en-us/library/ff648951.aspx

Oracle: http://www.oracle.com/technetwork/java/javaee/overview/index.html

IBM: http://www.ibm.com/developerworks/

SAP: Enterprise Learning

O primeiro passo é ter em mente que um software enterprise bem sucedido necessita de hardware adequado, arquitetura e programação adequada, metodologia adequada, consultoria adequada e o mais importante de tudo um grande know-how das regras de negocio das áreas incluídas no escopo de sua solução.

Em um navegador da web, um bookmark” é uma URL salva como um site favorito, o famoso atalho para alguns browser CTRL + D. Se você marcar um javascript: URL, você está salvando um pequeno script, conhecido como um bookmarklet.

Um bookmarklet é um mini programa que pode ser facilmente lançado de menus e barra de ferramentas do navegador. O código em um bookmarklet funciona como se fosse um script na página e pode consultar e definir o conteúdo do documento, apresentação e comportamento. Enquanto um bookmarklet não retorna um valor, ele pode operar em qualquer documento que é exibido sem substituir esse documento com novos conteúdos.

Um link como este é útil quando codificado em uma página que está em desenvolvimento, mas torna-se muito mais útil quando armazenada como um favorito que pode ser executado em qualquer página.

Bookmarklets - Javascript

Bookmarklets – Javascript

Exemplo:

Neste exemplo escrevemos um código javascript utilizando o protocolo javascript:URL, note que esta URL JavaScript está escrita em várias linhas, mas o interpretador HTML a trata como uma única linha. Além disso, lembre-se que o código é parte de um atributo HTML em aspas simples, certifique-se que seu código não contenha nenhuma aspas simples. Tente salvar este link como um favorito e verá que ele poderá ser executado em qualquer pagina.

Html / Javascript

<!DOCTYPE html>
<html> 
<head>
   <title>Desenvolvimento Aberto</title>
</head>
 
<body>
 
<h2>Desenvolvimento Aberto</h2>
<h3>Javascript - Bookmarklets </h3>

<p>Entre com numeros e operadores para efetuar calculos </p>

<a href='javascript:
         var val = "";
         var res = "";         
         do {              
              val = prompt("Calculo: " + val + "\n" + res + "\n", val);
              try { res = "Resultado: " + eval(val); }
              catch(ex) { res = ex; } 
            } 
         while(val); 
         void 0;'>Calculadora</a>

<pre>
<script>
// sem script no documento html
</script>
</pre>
 
</body> 
</html>

O Javascript pode ser utilizado de vários modos no lado cliente, um destes modos é utilizando o especificador do protocolo Javascript em uma URL, o interpretador identifica o protocolo e especifica que a URL contem código Javascript e automaticamente o executa. O código deve estar contido em uma única linha, por isto é necessário que o código seja separado pelo caractere ponto e virgula no final de cada instrução.

O código pode ser inserido dentro de uma tag HTML do tipo <a  href>, deste modo pode-se dizer que você pode usar código Javascript em qualquer lugar que você usaria uma URL comum.

Protocolo - javascript:

Protocolo – javascript:

Exemplo:

Neste exemplo utilizamos a tag  HREF para criar um link e substituímos a URL por um código javascript. Note que o Browser se comporta de um modo diferente nos links abaixo.

Html / Javascript

<!DOCTYPE html>
<html>
<head>
   <title>Desenvolvimento Aberto</title>
</head>

<body>

<h2>Desenvolvimento Aberto</h2>
<h3>Javascript - Javascript em URLs </h3>

<p><a href="javascript:new Date().toLocaleTimeString();">
Mostra hora atual sobrescrevendo o documento</a></p>

<p><a href="javascript:alert(new Date().toLocaleTimeString());">
Mostra hora sem sobrescrever o documento</a></p>

<p><a href="javascript:void window.open('about:blank');">Abre Janela Vazia</a></p>

<pre>
<script>
// sem script no documento html

</script>
</pre>

</body>
</html>

O objeto Window nos permite utilizar o evento OnError para interceptar uma exceção no código javascript, geralmente um erro contido dentro de uma tag de script é ignorado pelo browser.

Este evento do objeto Window é uma herança do tempo em que a linguagem ainda não continha a instrução Try… Catch, com a modernização da linguagem, este tipo de recurso hoje em dia é raramente usado, mas ainda é útil para explicitar quando um erro ocorre em um script.

Cria um erro de sintaxe

Cria um erro de sintaxe

Exemplo:

Neste exemplo criamos uma função que exibe uma mensagem contendo informações de erros encontrados em um script. Criamos um erro proposital de sintaxe para que o evento seja disparado.

Html/Javascript

<!DOCTYPE html>
<html>

<head>
   <title>Desenvolvimento Aberto</title>
</head>

<body>
<h2>Desenvolvimento Aberto</h2>
<h3>Javascript - Manipulando Erros</h3>
<pre>

<script>
// Mostra a menssagem de erro em uma caixa de dialogo

window.onerror = function(msg, url, line)
{
	if (onerror.num++ < onerror.max)
	{
   	alert("ERROR: " + msg + "\n" + url + ":" + line);
   	return true;
	}
}
// Define propriedades do evento de erro
onerror.max = 2;
onerror.num = 0;

write("Linux Ubuntu o comando write é case-sensitive");

// Cria Erro - Comando write com inicio maiusculo;
Write("Este comando contem um erro");

</script>
</pre>
</body>
</html>

Quando o Javascript foi criado ainda não existia uma API para manipular a estrutura de um documento HTML e o único método disponível para alterar um documento dinamicamente era utilizando códigos Javascript para escrever tags HTML enquanto a pagina fosse carregada.

Quando um script passa texto para a instrução document.write (), o texto é adicionado ao documento, e o analisador de HTML se comporta como se o elemento de script tivesse sido substituído por esse texto. Está pratica não é mais considera um bom estilo de programação, porem ainda é funcional e possui importantes implicações.

Se o interpretador de HTML encontrar um elemento <script>, deve, por padrão, executar o script antes de poder analisar o restante do documento. Está técnica não oferece problemas quando você utiliza scripts de um modo procedural. Este modo de execução de scripts é o padrão e é chamado de modo síncrono.

Html - Dinâmico

Html – Dinâmico

Exemplo:

Neste exemplo criamos uma tabela HTML em tempo de execução utilizando o modo síncrono do interpretador do browser.

Html / JavaScript

<!DOCTYPE html>
<html>
 
<head>
   <title>Desenvolvimento Aberto</title>
</head>
 
<body>
 
<h2>Desenvolvimento Aberto</h2>
<h3>Javascript - WebBrowser - HTML Din&#226mico</h3>

<pre>

<script>
// Cria função
function factorial(n) 
{
   if (n <= 1) return n;
   else return n*factorial(n-1);
}

// Escreve tags html dinamicamente
document.write("<table border="1">");
document.write("<tr><th>Valor</th><th>Numero</th><th>Fatorial</th></tr>");

// Cria conteudo da tabela
for(var i = 1; i <= 10; i++) 
{ 
    document.write("<tr><td>Valor = </td><td>" + i + "</td><td>" + factorial(i) + "</td></tr>");
}

// Fecha tag html
document.write("</table>"); 
document.write("\nCriado em: " + new Date());
</script>
</pre>
 
</body>
 
</html>

A tag <script> suporta um atributo src que especifica a URL de um arquivo contendo um código JavaScript. Usar este método é muito vantajoso porque você pode reutilizar o mesmo código dentro de um arquivo Javascript em quantas paginas forem necessário, além de deixar seu código HTML menor e mais fácil de ler.

Sintaxe:

<script src=”../../scripts/meuarquivo.js”> </script>

src - Javascript

src – Javascript

Exemplo:

Neste exemplo utilizamos um arquivo Javascript com a extensão .js para executar um código dentro de nossa pagina HTML.

Html / JavaScript

<!DOCTYPE html>
<html>

<head>
   <title>Desenvolvimento Aberto</title>
</head>

<body>

<h2>Desenvolvimento Aberto</h2>
<h3>Javascript - WebBrowser - Script Externo</h3>
<h4>JavaScript</h4>
<br>	

<pre>
<script src="externo.js"> </script>
</pre>

</body>

</html>

JavaScript – .js

// Desenvolvimento Aberto
// Testa Javascript exeterno
// externo.js

document.writeln("Este texto veio de um arquivo externo");
document.writeln("O arquivo se chama externo.js");
document.writeln("Ele pode ser lido atravez do comando SRC");
document.writeln("Para ler um arquivo externo usa-se a seguinte sintaxe:\n");
document.writeln("Utilize: src=&#34meuscript.js&#34 ");

O objeto Window é o principal ponto de entrada das APIs para todos os recursos de JavaScript do lado do cliente. Ele representa uma janela do navegador web ou um frame.

Você encontra a descrição completa do objeto Window neste link:

https://developer.mozilla.org/en-US/docs/Web/API/Window

Window

Window

Exemplo:

Neste exemplo usamos o objeto Windows para demonstrar os alguns recursos básicos de como controlar o WebBrowser do lado do cliente.

Html / JavaScript

<!DOCTYPE html>
<html>

<head>
   <title>Desenvolvimento Aberto</title>
</head>

<body>

<h2>Desenvolvimento Aberto</h2>
<h3>Javascript - WebBrowser - Client - Side</h3>
<h4>JavaScript</h4>
<br>
<p>Objeto Window:</p>
<p>String Codificada: RGVzZW52b2x2aW1lbnRvIEFiZXJ0byAtIERlY29kaWZpY2Fkbw==</p>
<button onclick="Janela()">Janela</button>
<button onclick="Alerta()">Alerta</button>
<button onclick="Decodifica()">Decodifica String</button>

<pre>
<script>

function Janela()
{
    var novajanela = window.open("Nova Janela", "Nova Janela", "width=300, height=150");
    novajanela.document.writeln("<p>Desenvolvimento Aberto</p>");
    novajanela.document.writeln("<p>Nome da Janela: " + novajanela.name + "</p>");
}

function Alerta()
{
    alert("Desenvolvimento Aberto\nCaixa de Alerta!!!");
}

function Decodifica()
{

    var str = "RGVzZW52b2x2aW1lbnRvIEFiZXJ0byAtIERlY29kaWZpY2Fkbw==";
    var dec = window.atob(str);
    alert("String decodificada: " + dec)

}

</script>
</pre>

</body>

</html>

Websites – Iteradores – Javascript

Publicado: 18 de maio de 2014 em JavaScript

Em português iterador, é um objeto que permite a um programador examinar uma coleção ou container. Vários tipos de iteradores são frequentemente fornecidos através de uma interface de container. Apesar da interface e semântica de um determinado iterador serem fixas, iteradores são frequentemente implementados em termos de estruturas subjacentes a uma implementação de container e são muitas vezes ligados intimamente ao container para permitir a semântica operacional do iterador.

Observe que um iterador percorre e também dá acesso aos elementos de dados em um container, mas não realiza iteração (isto é, não sem alguma liberdade significativa tomada com este conceito ou com uso trivial da terminologia). Um iterador tem um comportamento semelhante a um cursor de banco de dados. Iteradores datam da linguagem de programação CLU de 1974.

Iteradores - Javascript

Iteradores – Javascript

Exemplo:

Neste exemplo escrevemos iteradores que navegam por um objeto javascript e iteram suas propriedades e os conteúdos de cada propriedade, também uma função que itera valores usando a clássica instrução next.

Html / JavaScript

<!DOCTYPE html>
<html>
 
<head>
   <title>Desenvolvimento Aberto</title>
</head>
 
<body>
 
<h2>Desenvolvimento Aberto</h2>
<h3>Javascript Orientado a Objeto - Iteradores</h3>
<h4>JavaScript</h4>
<br>

<pre>
<script>
 
 
document.writeln("Iteradores: navega pelas propriedades\n");

// Cria propriedades 
var propriedade;
var conteudo ="";

// Cria objeto
var objeto = { propriedade1:1, propriedade2:2, propriedade3:3 }; 

// Itera propriedades
for (propriedade in objeto) document.writeln(propriedade);

// itera objetos
document.writeln("\nIteradores: navega pelos valores das propriedades\n");
for (var i in objeto)
   {
      conteudo = objeto[i]
      document.writeln(conteudo);
   }

document.writeln("\nIteradores: proximo e anterior");

// Função cria iterador next
function contador(valor)
{
   var iterador = valor;
   return { next: function() { return iterador = iterador + 1; }}  
}

// verifica iterador
var numeros = contador(10);
document.writeln("\nIteradores: numero = 10");
document.writeln("Iteradores: proximo = " + numeros.next());

</script>
</pre>
 
</body>
 
</html>

A grande maioria das empresas necessitam de sistemas que possam processar, guardar e manipular informações e o modo mais comum de se fazer este trabalho é usando um banco de dados relacional. Um sistema de gerenciamento de banco de dados relacional (RDBMS) é um sistema de gerenciamento de banco de dados (SGBD), que é baseado no modelo relacional introduzido por EF Codd, do Laboratório de Pesquisa de San Jose da IBM. Muitos bancos de dados populares atualmente em uso são baseados no modelo de banco de dados relacional.

Os RDBMSs tornaram-se uma escolha predominante para o armazenamento de informações em bancos de dados, usados para registros financeiros, fabricação e informações logísticas, dados de pessoal, e muito mais desde 1980. Bancos de dados relacionais, muitas vezes substituindo bancos de dados hierárquicos e bancos de dados de rede, porque eles são mais fáceis de entender e usar. No entanto, os bancos de dados relacionais vem sendo substituídos por banco de dados orientados a objeto que foram introduzidos na tentativa de resolver a diferença de impedância objeto-relacional em banco de dados relacional e bancos de dados XML.

Banco de Dados Relacional

Banco de Dados Relacional

Entre os maiores banco de dados relacionais do mercado, segundo a empresa Gartner, os líderes de vendas são:

  1. Oracle (48.8%),
  2. IBM (20.2%),
  3. Microsoft (17.0%),
  4. SAP incluindo (Sybase (4.6%), e Teradata (3.7%))

Banco de dados o grande vilão

Quem já ouviu esta afirmação? “O sistema está muito lento!”. Existem vários fatores que podem causar este problema mas eu já ouvi o que considero a pior resposta do mundo de para esta afirmação e foi de um especialista da empresa líder nacional do mercado para ERP, da qual você já imaginou o nome. O sistema estava em um cliente multinacional que fabrica peças para montadoras de carros e rodava sobre o banco de dados Microsoft SQL Server, e o consultor da tal empresa  disse: “Troca o banco de dados pelo Oracle“. Instantaneamente o gerente de TI  replicou: “Neste caso é melhor eu trocar seu sistema pelo SAP!”.

Eu concordo plenamente com a resposta do gerente de TI da multinacional, o SAP roda muito bem em SQL Server e atende a maioria das empresas no qual utiliza esta configuração e benchmark dos dois bancos de dados são comuns, basta procurar no Google, segue aqui um exemplo : BenchMark DB2 1o vs SQL Server 2012 vs Oracle 11g R2 . Será que todas as empresas utilizam as novas features dos bancos de dados em seu sistema assim como faz a SAP?

Geralmente a solução do problema é trazida por um empresa de consultoria, porque este tipo de empresa lida com vários bancos de dados, de vários sistemas diferentes e seus especialistas conhecem a fundo varias bases de dados dos mais diferentes tipos, incluindo sistemas como o SAP, JDEdwardsMS Dynamics. É comum algumas consultorias que também fabricam software desenvolver soluções que completam ou interagem com estes ERPs e estes desenvolvedores ou consultores já estão calejados e sabem que nem tudo que existe por ai é uma maravilha, e nem todos podem ter o luxo de utilizar uma base de dados criada e assinada pela SAP, Oracle, Microsoft ou IBM. E as vezes ou na maioria delas a melhor solução é sim trocar o sistema.

O que acontece por ai?

Algumas empresas não sabem utilizar corretamente o banco, ressalto que utilizar um o banco de dados não é apenas possuir um desenvolvedor SQL que saiba escrever scripts. Já presenciei sistemas de empresas que existem há mais de 10 anos no mercado e ainda não aprenderam a utilizar um banco de dados relacional corretamente, muito menos já seguiram algum dia as melhores praticas. Em um caso em particular o banco de dados era Oracle e o sistema rodava em clientes de médio porte, e a frase constantemente ouvida dos clientes era: “O sistema é muito lento e toda vez que atualiza o sistema gera muitos erros”. Bom, neste caso o especialista da empresa não poderia dizer para trocar o banco de dados e ao analisar a base dados instantaneamente se notava vários problemas como: muitas chaves primarias, a não utilização de índice único, triggers em excesso, scripts SQL no mínimo duvidosos e lembro de um script do relatório de inventario que demorava mais ou menos 10 minutos para retornar 750 produtos.

É! isto existe por ai! E pergunto para você, isto é normal?

Alguns casos são demorados de resolver como o caso da empresa acima que vinha costurando scripts e programação sem metodologia a mais de 10 anos em um banco sem normalização e outros podem ser resolvidos facilmente como o caso de um empresa cooperativa de grande porte que possuía outras 98 empresas em seu grupo e precisava importar as notas fiscais de todas as empresas para um sistema de validação fiscal  que utiliza Microsoft SQL Server e os dados seriam extraídos de um sistema da IBM, este processo demorava mais de 4 horas . Utilizando novos scripts SQL, implementando técnicas de BULK foi possível reduzir o tempo do processo para importação de 5 anos de dados  de 98 empresas para 15 minutos.

Falta de Normalização

Falta de Normalização

O Verdadeiro Vilão

Podemos apontar de primeira alguns dos principais problemas como, falta de conhecimento da documentação do banco de dados em questão, pouca ou nenhuma normalização, não tratar o modelo de dados como um organismo vivo, que respira e cresce constantemente, o armazenamento inadequado dos dados de referência, não usar chaves estrangeiras ou restrições de verificação ou o uso excessivo dos mesmos, o não uso de domínios e padrões de nomenclatura  e não escolher chaves primárias adequadamente.

Em segundo lugar está o estilo de programação tanto para os scripts do banco dados como na linguagem que acessa os dados, é comum encontrar o uso excessivo de cursores, acessos repetitivos e não saber quando usar o conceito de múltiplos bancos de dados.

Vou ilustrar os parágrafos acima com um outro caso que também é muito comum, e refere-se a uso excessivo de chaves estrangeiras,  não saber a hora de optar por um sistema de banco de dados múltiplos e não incluir no projeto do sistema a previsão de crescimento do mesmo.

O problema ocorre porque inicialmente o projeto de um tipo de ferramenta que extrai dados fiscais para validação foi escrito somente para o banco de dados Oracle, ao longo dos anos com o investimento da Microsoft no MSSQL Server o banco de dados conseguiu um bom espaço no mercado e varias empresas de médio e grande porte o adquiriram, então a ferramenta da empresa em questão precisava trabalhar e rodar nos dois banco de dados. Mas o trabalho era árduo porque era preciso extrair os últimos cinco anos de dados fiscais da empresa e suas filiais e valida-los em horas.

Com o passar dos anos as obrigatoriedades vieram a ser maiores e a empresa proprietária da ferramenta precisava atender estas obrigatoriedades e o próprio mercado ditou a necessidade da ferramenta estar apta a rodar em um banco de dados que vinha ganhando cada vez mais espaço, é obvio que se um cliente possuísse uma licença para o banco de dados que rodava em seu sistema principal (MSSQL) não iria comprar uma licença mais cara (Oracle) somente para poder utilizar uma ferramenta e sim procurar outra ferramenta que atendia sua especificação técnica.

Primeiro a empresa tentou sozinha desenvolver para o novo banco de dados e encontrou varias dificuldades ao ter que descobrir também sozinha que os conceitos entre os bancos de dados não eram iguais e decidiu procurar ajuda especializada, ficou surpresa com o resultado, ao trabalhar com mais de um banco de dados a empresa conseguiu benefícios de desempenho também para o banco de dados no qual a empresa dominava e era especialista.

Porque para competir com o Oracle a Microsoft também usou como estratégia restringir os erros cometidos pelos desenvolvedores na arquitetura do banco de dados, meio que forçando o banco de dados SQL Server a ser escrito e normalizado o mais corretamente possível, assim ganhando mais performance, um exemplo são as chaves estrangeiras, estas requerem memoria e custam para serem interpretadas pelo Engine do banco de dados e a partir da versão 2005 do MSSQL a Microsoft começou a restringir chaves estrangeiras por tabela. No caso de um banco de dados único em um sistema multi-empresas é comum possuir mais de 253 tabelas que possuem uma chave estrangeira conectada a tabela de empresas, então a Microsoft começou a emitir um erro quando se tentava deletar ou alterar um registro de uma tabela que possuía tal quantidade de chaves estrangeiras, a simples clausula executada sobre esta tabela:

Delete from EMPRESA where ID_EMPRESA = 1

retorna o seguinte erro: QUERY TOO COMPLEX.

Capacidade máxima do MSSQL Server (Atente-se para a coluna chamada Foreign key table references per table):

link: http://msdn.microsoft.com/en-us/library/ms143432.aspx

Você pode ler e inserir dados na tabela normalmente, mas não pode mais apagar ou alterar os dados devido ao alto custo da query, apesar do Oracle ou outros bancos de dados permitirem tal modelagem a query executada sobre estas circunstancias também terá um custo maior para ser resolvida pelo Engine do banco de dados. Para uma modelagem mais compacta e sem excessos de objetos no banco de dados, um sistema pode possuir múltiplos bancos de dados, um exemplo de um sistema de grande porte com múltiplos bancos de dados é o JDEdwards da Oracle.

Grande Volume de Dados

Grande Volume de Dados

Processamento de grandes volumes de dados

É recomendado seguir melhores praticas para cada banco de dados e ler os White Papers escritos para suas ferramentas e quanto a regras de programação para sistemas que acessam dados você pode seguir o critério acima ou pode buscar conhecimento em empresas que já possuem este know-how como o caso da SAP.

Como é de conhecimento de todos os sistemas da SAP foram projetados para trabalhar com grande volume de dados e a SAP especifica 5 regras para se programar com os banco de dados: Oracle, Db2, Microsoft SQL Server e Informix. Apesar destas regras serem escritas para programas ABAP e Java e a arquitetura de dados do SAP R/3, elas também se aplicam a forma como outras linguagens de programação devem acessar o banco de dados:

  1. Mantenha o conjunto de resultados Pequeno.
  2. Minimizar a quantidade de dados transferidos.
  3. Minimizar o número de transferências de dados.
  4. Minimizar a Pesquisa Overhead.
  5. Reduzir a carga do banco de dados.