quarta-feira, 7 de setembro de 2016

Node.js In Action



O que é Node.js?

De acordo com o site oficial - nodejs.org - é uma plataforma construída em cima de um mecanismo que interpreta código Javascript do lado do Servidor, chamado V8 - da Google. Este mecanismo é utilizado inclusive pelo Chrome.

Ele foi desenvolvido em C++ pelo desenvolvedor [Ryan Dahl] em 2009.

Neste artigo vamos aprender como criar códigos Javascript do lado do servidor Windows (node.js roda também em Linux e Mac) que possa ser consumido por qualquer Client.

Instalação

Baixe o instalador a partir do website oficial - nodejs.org - eu vou pegar a versão 6.5.0. Rode o arquivo MSI e siga os passos do wizard.



Após a instalação você já pode testar o componente abrindo o Command Prompt e digitar [node]



Hello World

Para todos nossos exercícios vamos utilizar o Visual Studio 2015 Community Edition.

Crie um arquivo novo no VS do tipo JS e adicione a seguinte linha de código


console.log('Hello world, nodejs');

Salve como helloworld.js, abre o CMD e execute o comando conforme ilustrado abaixo



Node.JS Module

Node.js provê [módulos] para nos ajudar no desenvolvimento. Você vai perceber que com ele vamos ganhar muito tempo no desenvolvimento, eliminando muitas linhas de código. Provavelmente você já possui o gerenciador de módulos ao instalar o Node.js. Para verificar isto abra o CMD e digite npm -help

Sua tela ficará conforme ilustrado abaixo



Nota1: Para usar o npm seu computador precisa estar conectado na internet e seu usuário precisa ter privilégios de administrador.

Nota2: Toda programação é baseada em Javascript (e o Node.js Module, como veremos), portanto o único pré-requisito é conhecer bem este tipo de programação.

Events Module

Vamos aprender um módulo interessante que nos ajuda a programar um código baseado em Evento. Para tanto vamos usar o objeto [EventEmitter] para criar nossos eventos.
A idéia é criar uma função de CallBack do Javascript e passar esta função como parâmetro para a função [on()] do objeto EventEmitter.

Crie o seguinte código JS


var EventEmitter = require('events').EventEmitter;
var myEmitter = new EventEmitter; 

var connection = function(id){ 
 // do something 
 console.log('client id: ' + id); 
}; 

myEmitter.on('connection', connection); 

myEmitter.on('message', function(msg)
{ 
 // do something 
 console.log('message: ' + msg); 
});

Para testar escreva este script


myEmitter.emit('connection', 6); 
myEmitter.emit('connection', 8); 
myEmitter.emit('message', 'this is the first message'); 
myEmitter.emit('message', 'this is the second message'); 
myEmitter.emit('message', 'welcome to nodejs');


Salve todo este código, por ex, eventDemo.js e execute-o no CMD, conforme ilustrado



Notou a execução dos eventos [connection] e [message]? Graças ao objeto [require('events').EventEmitter] nós conseguimos anexar a function [connection] e a [message] e executá-las através do método [myEmitter.emit()].

Se você quiser executar o método de callback apenas uma vez, basta trocar a função [on()] do objeto EventEmitter para [once()].

Para remover um evento você precisa usar o método [removeListener] do objeto EventEmitter


myEmitter.removeListener('connection',connection);

Web Applications

Com node.js podemos criar um [web server] totalmente em JS!
Node.js Module nos provê uma forma de manipulação do protocolo HTTP, com Requests e Responses.

Vamos criar um código que fará isto.


var http = require('http'); 

var server = http.createServer(function (req, res) {
 res.write('Welcome to http nodejs'); 
 res.end(); 
}); 
 
server.listen(8084); 
console.log('Server is running on port 8084');

Salve este código, por ex, webDemo.js
Execute o código no CMD para inciarmos nosso "servidor"


node webDemo.js

Quando nós executamos esta aplicação, provavelmente vai aparecer a seguinte caixa de diálogo


Clique em [Permitir Acesso]

Como resultado você terá um "server" rodando e esperando por comandos na porta 8084



Você pode agora abrir o Browser e executar a URL


http://localhost:8084/




Em resumo precisamos então:

  • Carregar o módulo HTTP
  • Criar o servidor WEB chamado o método createServer()
  • Obtemos os Resquests e Responses (req, res)
  • Manipulamos os objetos [reqs e res] pelo Client
  • Chamamos end() para terminar o envio de respostas para o Client
  • Chamamos listen() com um parâmetro de porta, por ex 8084, para ativar o processo de "escuta"

Gerenciando a Solicitação de Páginas

Para saber se o usuário solicitou uma requisição específica é muito fácil, basta usar a propriedade [url] da variável [req] da função anônima do método createServer(), conforme ilustrado abaixo


var http = require('http');

var server = http.createServer(function (req, res) {
    console.log(req.url);

    if (req.url == '/') {
        res.write('Welcome to http nodejs');
        res.end();
    } else
    if (req.url == '/customer') {
        res.write('Welcome to Customer page');
        res.end();
    }

});

server.listen(8084);
console.log('Server is running on port 8084');



Outras solicitações de Server úteis (presentes nos capítulos 11 e 12 do livro de referência)

SOCKET Module

var os = require('os');


UDP Socket

var dgram = require('dgram');


DNS

var dns = require('dns');


Socket.io

npm install socket.io

var app = require('http').createServer(handler) , 
io = require('socket.io').listen(app) , 
fs = require('fs')


Database Programming

Você pode usar Node.js para se comunicar com um Banco de Dados. Para tornar este processo um pouco mais simples, faça o seguinte:

Dentre os arquivos JS no projeto, note como ficou o js referente a conexão com o banco de dados SQL SERVER


var sqlDb = require("mssql");
var settings = require("../settings");

exports.executeSql = function (sql, callback) {
    var conn = sqlDb.Connection(settings.dbConfig)
        .catch(function (err) {
            console.log(err)
        });
    conn.Connection()
        .then(function () {
            var req = new sqlDb.Request(conn);
            req.query(sql)
                .then(function (recordset) {
                    callback(recordset);
                })
                .catch(function (err) {
                    console.log(err);
                    callback(null, recordset);
                });
        })
        .catch(function (err) {
            console.log(err);
            callback(null, recordset);
        });
};

Nota: Quando eu criei o projeto no VS eu precisei instalar um pacote do SqlServer para NodeJS. Para tanto, clique com o botão direito no item do projeto chamado [npm] e escolha a opção [Install New npm Packages] 




Desta forma você conseguirá instalar o driver necessário para se conectar ao SQL SERVER.


NodejsConsoleApp1.zip / Nodejs_Succinctly.pdf
Develop complete REST service app using pure Node.js (GET, POST, PUT and DELETE) 


Cheers!

quinta-feira, 25 de agosto de 2016

CRM Tips - Unified Service Desk


Hey Folks,
Gostaria de compartilhar um quase "eBook" sobre o assunto [Unified Service Desk] com vocês. Até o momento não encontrei um eBook oficial da Microsoft ou de algum entusiasta sobre o assunto.

Aliás, assunto é o que não falta para aprender neste novo sistema de Call Center da Microsoft, que utiliza o Dynamics CRM como base.

Acredito que ao ler todo o "eBook" do entusiasta Neil Parkhurst você vai se tornar quase um especialista no assunto.

Pelos "capítulos" vão perceber que o assunto é bom:

  • Theory
  • Hosted Controls
  • Actions
  • Events
  • Agent Scripts
  • Toolbars
  • Window Navigation
  • Interactive Service Hub
  • JavaScript / Scriptlets
  • Releases / Installation Instructions / Configuration
  • Random Cool Stuff! (Maybe my best bits!)
  • USD Basics Video Tutorial

Boa leitura!

Ref: USD - THE BOOK

quinta-feira, 4 de agosto de 2016

CRM Tips - Solution Environment - Comparison Tool



Folks,
Como sugestão, segue uma ferramenta para comparar uma Organização do CRM com outra!

https://crmcustomcompare.codeplex.com

Muito útil para manter os diversos ambientes de CRM equalizados e sob controle.




Cheers!

CRM Tips - Manage your Configuration Data

Folks
Uma dica rápida...
Existe uma ferramenta padrão da MS para nos ajudar no transporte de [dados] de uma Organização para outra.
Muito útil, porque replicar qualquer dado de configuração na mão é muito maçante!...


Configuration Migration Tool in Dynamics CRM




https://technet.microsoft.com/en-us/library/dn647421(v=crm.6).aspx

Cheers!

domingo, 19 de junho de 2016

eCommerce - XAMARIN


Olá pessoal,
Gostaria de apresentar a vocês uma tecnologia adquirida pela Microsoft, o XAMARIN.

Com ela podemos desenvolver aplicativos para Android, iOS e Windows Phone, apenas trabalhando com uma IDE (Visual Studio) e uma única linguagem de programação - C#.

E para completar nossa alegria :) tudo isto é FREE!...

Já existe muito material na net sobre isto, vou listar alguns deles aqui, e mostrar abaixo um aplicativo de e-Commerce que desenvolvi.

Não deixem de estudar sobre o Xamarin pois já se tornou uma das ferramentas mais confiáveis para desenvolvimento de Apps.

A aplicação baixo consiste em uma eCommerce, na qual o usuário pode escolher qual serviço gostaria de contratar. O app é para venda de serviços de um profissional de Grafite. O profissional realiza uma série de customizações artísticas em roupas, tênis, em peças automotivas, capacetes, etc. Desta forma, com o app, o usuário já escolhe o serviço e [paga Online] também, porque adicionei uma integração com o [PagSeguro do UOL].


Veja a versão para Android



Veja a versão para iPhone





Links úteis 
Free ebook: Creating Mobile Apps with Xamarin.Forms
Angelo Belchior
Xamarin - Visual Studio
Entendendo o Xamarin
Xamarin Blog
Saiba mais...

Cheers!

segunda-feira, 2 de maio de 2016

BMS GT - Business Management System


Olá pessoal,
Gostaria de apresentar a vocês o BMS GT - Business Management System. Eu desenvolvi este sistema com o objetivo de se tornar uma [plataforma] de desenvolvimento do seu negócio. Isto significa que você pode desenhar toda regra de negócio da sua empresa no sistema, apenas usando o módulo de configuração. Se precisar ir além, desenvolva seus próprios plugins (em .net) e suas próprias páginas HTML.

O sistema possui as seguintes características:

Tecnologia
Todo construído em ASP.NET MVC com .NET CORE 1.1
Todos os objetos complexos do sistema são reutilizáveis, se tornaram componentes, como Grid (com CRUD), campo com busca em tabela, upload de arquivos, botão do tipo toggle, etc.

Sistema Multi-Organizacional
Basta configurar qual banco de dados (ou qual DataBase do Sql Server) o sistema deve acessar

Sistema Multi-Idioma

O sistema possui uma tabela de idioma padrão, podendo ser estendido para qualquer outro idioma

Sistema Configurável

Tabelas do Sistema
– Crie seu modelo de dados, como tabelas, campos e relacionamento entre tabelas.
– Referente aos campos, crie os seguintes tipos:

  • nvarchar
  • ntext
  • int
  • decimal
  • money
  • datetime2
  • relationship (1-1)
  • relationship (1-N)
  • relationship (N-N)
  • upload Picture
  • upload File
  • checkbox
  • iframe
  • multi Lookup
  • Auto Numerator
– Crie scripts (javascript, jquery) para serem executados quando seu formulário carregar ou quando salvar um registro.
– Crie botões customizados, para visualização no formulário.
– Associe numa tabela, listas editáveis. Desta forma você poderá trabalhar com os dados como se estivesse no Excel.
– Todas as tabelas do sistema (nativas ou customizadas) podem ser exportadas para o Excel.

Perfil de Acesso – Defina o que cada usuário poderá fazer no sistema, como ler, alterar, excluir ou associar registros

Área – Defina as opções de Menu neste ponto. A medida que o administrador cria tabelas ele também relaciona a tabela com a área desejada

Construtor de Queries – Crie, teste e armazene qualquer tipo de consulta/procedure do Sql Server no sistema.

Conector de dados – Inclua, altere ou exclua dados no sistema através do serviço webAPI. Desta forma você pode integrar dados de qualquer sistema legado para o BMS ou extrair dados do BMS para um sistema legado.
Veja a documentação de uso da Web Api, usando C#
Veja a documentação de uso da Web Api, usando Javascript

Execução de Workflow – Configure fluxos de trabalho para serem executados em background. Podem ser configurados diversos tipos como, criação/atualização/conversão de registros, envio de email, envio de relatório, dentre outros.

Importação de Dados – Configure um mapeamento de campos e importe arquivos CSV para qualquer tabela do sistema.

Pesquisa de Satisfação – Crie pesquisas de satisfação, configurando tipos de respostas diversas, como texto, numérica, data, única escolha, múltipla escolha e matriz de escolhas (em colunas, única e múltipla). Após o cadastro da pesquisa, envie-a para quem quiser na forma de uma URL. Analise os resultados das pesquisas através do módulo de painel de gráficos.

Criação e reuso de página HTML - Crie suas próprias páginas HTML, armazene-as no sistema e reutilize como sub-páginas (através de uso de iFrame) ou como um Portal do sistema BMS. Ao criar o registro de um HTML, uma URL de acesso à página fica disponível para uso dentro ou fora do sistema.

Criação e reuso de bibliotecas Javascript - Armazene e reutilize suas próprias bibliotecas Javascript. Ao criar o registro de uma biblioteca, uma URL fica disponível para uso dentro ou fora do sistema.

Criação e reuso de CSS - Crie seus próprios estilos CSS, armazene-os no sistema e reutilize como desejar no sistema BMS. Ao criar o registro de um estilo, uma URL fica disponível para uso dentro ou fora do sistema.

Criação e reuso de Imagens - Armazene e reutilize suas próprias imagens. Ao criar o registro de uma imagem no sistema, uma URL fica disponível para uso dentro ou fora dele.

Importação de e-mails do MS Exchange - Sincronize os e-mails desejados do Microsoft Exchange Server como uma atividade de e-mail no sistema BMS.

Importação de comentários das redes sociais - Sincronize os comentários das redes sociais (Facebook e Twitter) como uma atividade social no sistema BMS. Responda aos comentários dentro do sistema também.

O que acham? Deixem seus comentários.

Como adquirir este sistema?

gtezini@hotmail.com
gtezini@gmail.com
+55 11 98777-6784


Menu de opções


Criação de tabelas


Relacionamentos


Workflow


Processo de Vendas