Incrível este vídeo, dá uma bela ideia de como será a vida digital no futuro. Se reparar, a data sugerida em uma das telas é 2018. Esses recursos já são todos conhecidos, tecnologias como Wave, Surface, baseadas em WPF. Vários filmes, como The Ilsand, mostram recursos como o Surface. Esse filme inclusive, rola boatos, teve $ajuda$ da MS. O Surface é mostrado na sala do médico, a mesa. Outro é o Minority Report.
Saiba mais:
Microsoft Surface
Microsoft Wave
WPF
Silverlight
sexta-feira, 31 de julho de 2009
quinta-feira, 30 de julho de 2009
Livro de Emerson Facunte Free

O Facunte disponibilizou todos os capítulos do livro Delphi 7 Internet e Banco de Dados em PDF (gratuito).
Google Wave
Espero que um dia a Google faça um robozinho que consiga fechar uma revista, do início ao fim, contatando colaboradoes, organizando planilhas, cobrando autores, controlando prazos, editando artigos etc.
Google Wave
Google Wave
| Reações: |
Falta mão de obra em TI
Setor em crescimento oferece cada vez mais vagas para profissionais qualificados
A 20ª Pesquisa Sobre Administração de Recursos de Informática, realizada pela Fundação Getúlio Vargas entre agosto do ano passado e abril de 2009 com duas mil empresas (incluindo 60% das 500 maiores corporações do país), comprova o crescimento do setor de Tecnologia da Informação no Brasil. De acordo com o estudo, 6% do faturamento líquido das companhias foi investido em TI – quase o dobro do investimento feito pelas empresas dez anos atrás.
Recentemente, o IBGE registrou em suas pesquisas sobre emprego que o setor de TI sofreu um aumento no número de vagas da ordem de 40% nos últimos três anos, devido não apenas à expansão econômica e ao uso da tecnologia, como também ao crescimento da exportação de serviços tecnológicos.
Mesmo com todos esses dados favoráveis, as empresas dessa área enfrentam um grande revés: a falta de mão de obra especializada. Para a supervisora de Recursos Humanos da HBSIS, empresa blumenauense desenvolvedora de soluções corporativas na área de TI, existe no mercado um grande número de candidatos, no entanto, com pouca expertise. “Como a tecnologia é ágil, assim são as ambições dos jovens. Cada vez mais, procuram novos conhecimentos e desafios, faltando mergulhar e amadurecer nos processos em que se encontram”, aponta.
Falta mão-de-obra qualificada – Na opinião de Ximena Luengo, a mão de obra qualificada é essencial para as empresas, porque soma novos recursos. Segundo ela, o que diferencia os profissionais são características como conhecimento e maturidade, além do perfil comportamental. “Às vezes o conhecimento e a experiência são bons, mas os comportamentos do profissional são nocivos à equipe, prejudicando o resultado final”, assinala a supervisora de RH. Com uma mão de obra capacitada para cumprir as exigências do mercado, o setor de TI tende a se tornar cada vez mais forte, contribuindo para o fortalecimento das empresas e maior geração de emprego no país.
A influência da crise – Para os especialistas, não foram todas as empresas de TI que sofreram com a crise mundial. “O impacto vem dos projetos que estavam sendo desenvolvidos e o planejamento que a empresa teve frente à crise”, destaca Luengo. Na opinião dela, o momento é de desafio, dentro e fora das empresas. Isso porque o profissional pode contribuir para melhorar o desempenho corporativo e, por outro lado, gerenciar sua carreira com as inúmeras possibilidades que a área de TI oferece.
Números do mercado de TI
- O capital humano representa para a tecnologia da informação 70% de seu desenvolvimento.
- O mercado brasileiro de software e de serviços movimentou, em 2007, US$ 11,12 bilhões, segundo pesquisa divulgada pela Associação Brasileira de Empresas de Software (Abes).
- Um levantamento da Catho aponta que será necessário formar 100 mil profissionais para atender a demanda dos próximos dois anos.
Para a Abes, o déficit será de 50 mil técnicos, graduados, especialistas e pós-graduados.
- Filipe Rizzo, da Politec S.A., é menos otimista. Segundo ele, “vão faltar 200 mil profissionais até 2010, 40 mil técnicos - aqueles que têm entre 16 e 24 anos”. Para esse profissional iniciante, são oferecidos, atualmente, salários iniciais de R$ 1,5 mil a R$ 2 mil.
- A média brasileira é de um computador para cada três habitantes, cenário melhor que a média no resto do planeta – a previsão, em três anos, é que o número chegue a 100 milhões de PCs, ou seja, um a cada dois brasileiros.
Fonte: PRESSE Comunicação Empresarial
A 20ª Pesquisa Sobre Administração de Recursos de Informática, realizada pela Fundação Getúlio Vargas entre agosto do ano passado e abril de 2009 com duas mil empresas (incluindo 60% das 500 maiores corporações do país), comprova o crescimento do setor de Tecnologia da Informação no Brasil. De acordo com o estudo, 6% do faturamento líquido das companhias foi investido em TI – quase o dobro do investimento feito pelas empresas dez anos atrás.
Recentemente, o IBGE registrou em suas pesquisas sobre emprego que o setor de TI sofreu um aumento no número de vagas da ordem de 40% nos últimos três anos, devido não apenas à expansão econômica e ao uso da tecnologia, como também ao crescimento da exportação de serviços tecnológicos.
Mesmo com todos esses dados favoráveis, as empresas dessa área enfrentam um grande revés: a falta de mão de obra especializada. Para a supervisora de Recursos Humanos da HBSIS, empresa blumenauense desenvolvedora de soluções corporativas na área de TI, existe no mercado um grande número de candidatos, no entanto, com pouca expertise. “Como a tecnologia é ágil, assim são as ambições dos jovens. Cada vez mais, procuram novos conhecimentos e desafios, faltando mergulhar e amadurecer nos processos em que se encontram”, aponta.
Falta mão-de-obra qualificada – Na opinião de Ximena Luengo, a mão de obra qualificada é essencial para as empresas, porque soma novos recursos. Segundo ela, o que diferencia os profissionais são características como conhecimento e maturidade, além do perfil comportamental. “Às vezes o conhecimento e a experiência são bons, mas os comportamentos do profissional são nocivos à equipe, prejudicando o resultado final”, assinala a supervisora de RH. Com uma mão de obra capacitada para cumprir as exigências do mercado, o setor de TI tende a se tornar cada vez mais forte, contribuindo para o fortalecimento das empresas e maior geração de emprego no país.
A influência da crise – Para os especialistas, não foram todas as empresas de TI que sofreram com a crise mundial. “O impacto vem dos projetos que estavam sendo desenvolvidos e o planejamento que a empresa teve frente à crise”, destaca Luengo. Na opinião dela, o momento é de desafio, dentro e fora das empresas. Isso porque o profissional pode contribuir para melhorar o desempenho corporativo e, por outro lado, gerenciar sua carreira com as inúmeras possibilidades que a área de TI oferece.
Números do mercado de TI
- O capital humano representa para a tecnologia da informação 70% de seu desenvolvimento.
- O mercado brasileiro de software e de serviços movimentou, em 2007, US$ 11,12 bilhões, segundo pesquisa divulgada pela Associação Brasileira de Empresas de Software (Abes).
- Um levantamento da Catho aponta que será necessário formar 100 mil profissionais para atender a demanda dos próximos dois anos.
Para a Abes, o déficit será de 50 mil técnicos, graduados, especialistas e pós-graduados.
- Filipe Rizzo, da Politec S.A., é menos otimista. Segundo ele, “vão faltar 200 mil profissionais até 2010, 40 mil técnicos - aqueles que têm entre 16 e 24 anos”. Para esse profissional iniciante, são oferecidos, atualmente, salários iniciais de R$ 1,5 mil a R$ 2 mil.
- A média brasileira é de um computador para cada três habitantes, cenário melhor que a média no resto do planeta – a previsão, em três anos, é que o número chegue a 100 milhões de PCs, ou seja, um a cada dois brasileiros.
Fonte: PRESSE Comunicação Empresarial
| Reações: |
quarta-feira, 29 de julho de 2009
dbExpress Query Editor
Um plug-in que criei para criar automaticamente conexões dbExpress, tudo visualmente.
Artigo disponível no site da DevMedia
Código-fonte disponível no site da Embarcadero (CodeCentral)
Guinther Pauli
Editor Geral Revista ClubeDelphi
Editor Geral Revista .net Magazine
Artigo disponível no site da DevMedia
Código-fonte disponível no site da Embarcadero (CodeCentral)
Guinther Pauli
Editor Geral Revista ClubeDelphi
Editor Geral Revista .net Magazine
segunda-feira, 27 de julho de 2009
Configurando o Team Foundation Server e VSTS
O Rodrigo Sendin, colaborador e membro da comissão editorial da .net Magazine, postou em seu blog um artigo muito interessante, e quase inédito, de como configurar o TFS. Como são vários passos e prerequisitos, o tutorial é uma preciosidade para guardar nos favoritos:
Configurando o Team Foundation Server e VSTS
Guinther Pauli
Editor Geral .net Magazine Brasil
Configurando o Team Foundation Server e VSTS
Guinther Pauli
Editor Geral .net Magazine Brasil
sexta-feira, 24 de julho de 2009
.net Magazine 63

Lançada mais uma edição da .net Magazine! Confira a lista de artigos:
Tipos implícitos e anônimos - Por: RODRIGO SENDIN
ASP.NET Dynamic Data - Por: RODRIGO SENDIN
Trabalhando com Azure Blobs - Por: Giovanni Bassi
Código de barras na plataforma .Net - Por: Drausio Henrique Chiarotti
Criptografia - Por: Carlos Henrique
Projetando com Generics - Por: Marco Antonio Correa Alves
Utilizando Kanban com a metodologia ágil SCRUM - Por: Marcelo Martins e Fábio Câmara
Construa uma Aplicação 100% OO – Parte 3 - Por: Guilherme Vieira e Fernando Antonio Diniz Corrêa
Desvendando os Data Controls em ASP.NET - Por: Thomas Alexander Semple
Boa leitura!
Guinther Pauli
Editor Geral .NET Magazine Brazil
| Reações: |
Cursos em Andamento
Estou com vários cursos em andamento em nosso portal www.devmedia.com.br
Delphi Prism - Curso em vídeo aulas
C# e OO - Curso em vídeo aulas
Delphi Prism - Language - Revista ClubeDelphi
Delphi OO - Revista ClubeDelphi
Delphi Prism - Curso em vídeo aulas
C# e OO - Curso em vídeo aulas
Delphi Prism - Language - Revista ClubeDelphi
Delphi OO - Revista ClubeDelphi
| Reações: |
Vaga para programador Delphi em Londrina/PR
A Info e Cia ampliando o quadro de funcionários contrata:
- Programador Delphi
Conhecimentos Necessários:
- Conhecimento em Lógica de Programação
- Linguagem de Programação Delphi
- Desejavel conhecimento em Bancos de Dados (SQL Server)
Remuneração compativel com a função
Interessados favor encaminhar curriculo para o email empregoinhotmail.com
especificando no assunto do email “Delphi”.
A vaga anunciada é para trabalhar em LondrinalPr.
Acesse nosso site e conheça nossos Sistemas de Gestão Empresariais.
www.infoeciasoftware.com.br
- Programador Delphi
Conhecimentos Necessários:
- Conhecimento em Lógica de Programação
- Linguagem de Programação Delphi
- Desejavel conhecimento em Bancos de Dados (SQL Server)
Remuneração compativel com a função
Interessados favor encaminhar curriculo para o email empregoinhotmail.com
especificando no assunto do email “Delphi”.
A vaga anunciada é para trabalhar em LondrinalPr.
Acesse nosso site e conheça nossos Sistemas de Gestão Empresariais.
www.infoeciasoftware.com.br
| Reações: |
Chamando métodos assíncronos no servidor com AJAX
Um exemplo simples, um Web Form ASPX que cadastra dados no BD de forma assíncrona, ou seja, envia os dados com XML-HTTP sem dar postback no form inteiro. É fácil:
Web Form ASPX:
Formulário com TextBoxs e Labels e um botão HTML (Input)
Script na página ASPX
Web Service
Guinther Pauli
Desenvolvedor RIA
Web Form ASPX:
Formulário com TextBoxs e Labels e um botão HTML (Input)
1: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Cadastro.aspx.cs" Inherits="Cadastro" %>
2: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3: <html xmlns="http://www.w3.org/1999/xhtml">
4: <head runat="server"><title></title>
5: <style type="text/css">
6: .Texto 7: { 8: font-family: Tahoma; 9: font-size: small; 10: font-weight: bold; 11: } 12: .Titulo 13: { 14: font-family: Tahoma; 15: font-weight: bold; 16: color: #0066FF; 17: } 18: </style> 19: </head> 20: <body>21: <form id="Form1" runat="server">
22: <span class="Titulo">Cadastro de Usuários</span><br/>
23: <asp:Label id="Label2" runat="server" CssClass="Texto">Login</asp:Label>
24: <br/>25: <asp:TextBox id="tbLOGIN" runat="server"></asp:TextBox>
26: <br/>27: <asp:Label id="Label3" runat="server" CssClass="Texto">Nome</asp:Label>
28: <br/>29: <asp:TextBox id="tbNOME" runat="server"></asp:TextBox>
30: <br/>31: <asp:Label id="Label4" runat="server" CssClass="Texto">Senha</asp:Label>
32: <br/>33: <asp:TextBox id="tbSENHA" runat="server" TextMode="Password"></asp:TextBox>
34: <br/>35: <asp:Label id="Label6" runat="server" CssClass="Texto">E-mail</asp:Label>
36: <br/>37: <asp:TextBox id="tbEMAIL" runat="server" Width="190px"></asp:TextBox>
38: <br /> 39: <br/> 40: <asp:Button id="Button1" runat="server"
41: Text="Cadastrar" onclick="Button1_Click">
42: </asp:Button>43: <input type="reset" value="Limpar"/>
44: </form> 45: </body> 46: </html> 47: 48: Script na página ASPX
1: <script type="text/javascript">
2: function pageLoad()
3: {4: $addHandler( $get("Button2"), "click", Insert );
5: }6: function Insert() {
7: WebService.Insert(8: $get("tbLOGIN").value,
9: $get("tbNOME").value,
10: $get("tbSENHA").value,
11: $get("tbEMAIL").value,
12: Sucesso,Erro); 13: }14: function Sucesso() {
15: alert("Usuário inserido com sucesso");
16: }17: function Erro() {
18: alert("Erro ao inserir usuário");
19: } 20: </script> 21: Web Service
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Web;
5: using System.Web.Services;
6: 7: /// <summary>
8: /// Summary description for WebService
9: /// </summary>
10: [WebService(Namespace = "http://tempuri.org/")]
11: [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]12: // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
13: [System.Web.Script.Services.ScriptService]14: public class WebService : System.Web.Services.WebService {
15: 16: public WebService () {
17: 18: //Uncomment the following line if using designed components
19: //InitializeComponent();
20: } 21: 22: [WebMethod]23: public void Insert(
24: String LOGIN, String NOME, 25: String SENHA, String EMAIL) 26: {27: var con = new SqlConnection(ConStr);
28: var cmd = new SqlCommand(){
29: CommandText = "INSERT INTO USUARIOS (LOGIN, NOME, SENHA, EMAIL) " +
30: "VALUES (@LOGIN, @NOME, @SENHA, @EMAIL)",
31: Connection = con};32: var cmd = new SqlCommand() {
33: CommandText = "INSERT_USUARIO",
34: CommandType = CommandType.StoredProcedure, 35: Connection = con };36: cmd.Parameters.AddWithValue("@LOGIN", LOGIN);
37: cmd.Parameters.AddWithValue("@NOME", NOME);
38: cmd.Parameters.AddWithValue("@SENHA", SENHA);
39: cmd.Parameters.AddWithValue("@EMAIL", EMAIL);
40: con.Open();41: try {
42: cmd.ExecuteNonQuery(); 43: }44: finally {
45: con.Close(); 46: } 47: } 48: } 49: 50: Guinther Pauli
Desenvolvedor RIA
quinta-feira, 23 de julho de 2009
Aplicações ASP.NET Multicamadas
Uma boa prática na arquitetura de soluções ASP.NET é desenvolver em camadas (multitier). A técnica consiste basicamente em separar regras de negócio, acesso a dados, interfaces, de forma que fiquem o mais independente possíveis, ligando-se por um único ponto.
Minha proposta de arquitetura consiste em:
Camada 1 - Interface ASP.NET Web Forms + AJAX
Camada 2 - Classe de regras de negócio (BLL - Businesse Logic Layer)
Camada 3 - Classe de acesso a dados (DAL - Data Access Layer)
Camada 4 - Banco de Dados (SQL Server)
Os dados trafegam entre as camadas em classes DTO (Data Transfer Objects).
Abaixo seguem exemplos da implementação das camadas.
Interface ASP.NET Web Forms + AJAX
[ASPX]
UpdatePanel
GridView
DetailsView
ObjectDataSource
[Code-Behind]
(não existe código na classe de interface, todo o acesso com as demais camadas é gerenciado pelo ObjectDataSource)
Classe de regras de negócio (BLL - Businesse Logic Layer)
Observe que a BLL contém uma regra de negócio e passa todas as chamadas CRUD para a DAL (abaixo).
Classe de acesso a dados (DAL - Data Access Layer)
Aqui usamos basicamente ADO.NET para receber as chamadas da BLL e repassar ao banco de dados. O ideal é usar Stored Procedures para armazenar as instruções SQL no BD e aumentar a performance.
DTO
Note que na DAL e BLL usamos tipos predefinidos, uma classe que contém os dados a serem manipulados.
Vantagens da Arquitetura:
- Independência de banco de dados
- Modularização
- Facilidade de manutenção
- Menor impacto na mudança de requisitos
- Possibilidade de usar outros tipo de interfaces como WinForms, Mobile, WPF
Guinther Pauli
Arquiteto de Sistemas
Minha proposta de arquitetura consiste em:
Camada 1 - Interface ASP.NET Web Forms + AJAX
Camada 2 - Classe de regras de negócio (BLL - Businesse Logic Layer)
Camada 3 - Classe de acesso a dados (DAL - Data Access Layer)
Camada 4 - Banco de Dados (SQL Server)
Os dados trafegam entre as camadas em classes DTO (Data Transfer Objects).
Abaixo seguem exemplos da implementação das camadas.
Interface ASP.NET Web Forms + AJAX
[ASPX]
UpdatePanel
GridView
DetailsView
ObjectDataSource
[Code-Behind]
(não existe código na classe de interface, todo o acesso com as demais camadas é gerenciado pelo ObjectDataSource)
Classe de regras de negócio (BLL - Businesse Logic Layer)
1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4: 5: namespace BLL
6: {7: public class Products
8: {9: public Types.Products Select()
10: {11: DAL.Products DALProds = new DAL.Products();
12: return DALProds.Select();
13: }14: public void Update(Types.Product Prod)
15: {16: if (Prod.Price < 0)
17: throw new Exception("Invalid value");
18: DAL.Products DALProds = new DAL.Products();
19: DALProds.Update(Prod); 20: }21: public void Insert(Types.Product Prod)
22: {23: DAL.Products DALProds = new DAL.Products();
24: DALProds.Insert(Prod); 25: }26: public void Delete(Types.Product Prod)
27: {28: DAL.Products DALProds = new DAL.Products();
29: DALProds.Delete(Prod); 30: } 31: } 32: }Observe que a BLL contém uma regra de negócio e passa todas as chamadas CRUD para a DAL (abaixo).
Classe de acesso a dados (DAL - Data Access Layer)
1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4: using System.Data;
5: using System.Data.SqlClient;
6: 7: namespace DAL
8: {9: public class Products
10: {11: private const string ConStr =
12: @"Data Source=.\SQLEXPRESS;Initial Catalog=NORTHWIND;Integrated Security=True";
13: 14: public Types.Products Select()
15: {16: Types.Products Prods = new Types.Products();
17: SqlConnection con = new SqlConnection(ConStr);
18: string SQL = "select ProductID,ProductName,UnitPrice from PRODUCTS";
19: //string SQL = "SelectPRODUCTS";
20: SqlCommand cmd = new SqlCommand(SQL, con);
21: //cmd.CommandType = CommandType.StoredProcedure;
22: con.Open(); 23: SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);24: while (dr.Read())
25: {26: Types.Product NewObj = new Types.Product();
27: NewObj.ProductId = int.Parse(dr[0].ToString());
28: NewObj.Description = dr[1].ToString(); 29: NewObj.Price = Convert.ToDouble(dr[2].ToString()); 30: Prods.Add(NewObj); 31: } 32: dr.Close();33: return Prods;
34: } 35: 36: public void Update(Types.Product Prod)
37: {38: SqlConnection con = new SqlConnection(ConStr);
39: string SQL = "update PRODUCTS set ProductName = @ProductName, UnitPrice = @UnitPrice " +
40: " where ProductID = @Original_ProductID";
41: //string SQL = "UpdateProduct";
42: SqlCommand cmd = new SqlCommand(SQL, con);
43: cmd.CommandType = CommandType.StoredProcedure;44: cmd.Parameters.AddWithValue("@ProductName", Prod.Description);
45: cmd.Parameters.AddWithValue("@UnitPrice", Prod.Price);
46: cmd.Parameters.AddWithValue("@ProductID", Prod.ProductId);
47: con.Open();48: try
49: { 50: cmd.ExecuteNonQuery(); 51: }52: finally
53: { 54: con.Close(); 55: } 56: }57: public void Insert(Types.Product Prod)
58: {59: SqlConnection con = new SqlConnection(ConStr);
60: string SQL = "insert into PRODUCTS (ProductName,UnitPrice) " +
61: "values (@ProductName,@UnitPrice)";
62: //string SQL = "InsertProduct";
63: SqlCommand cmd = new SqlCommand(SQL, con);
64: cmd.CommandType = CommandType.StoredProcedure;65: cmd.Parameters.AddWithValue("@ProductName", Prod.Description);
66: cmd.Parameters.AddWithValue("@UnitPrice", Prod.Price);
67: try
68: { 69: cmd.ExecuteNonQuery(); 70: }71: finally
72: { 73: con.Close(); 74: } 75: } 76: 77: public void Delete(Types.Product Prod)
78: {79: SqlConnection con = new SqlConnection(ConStr);
80: string SQL = "delete PRODUCTS where ProductID = @Original_ProductID";
81: //string SQL = "deleteProduct";
82: SqlCommand cmd = new SqlCommand(SQL, con);
83: cmd.CommandType = CommandType.StoredProcedure;84: cmd.Parameters.AddWithValue("@ProductID", Prod.ProductId);
85: con.Open();86: try
87: { 88: cmd.ExecuteNonQuery(); 89: }90: finally
91: { 92: con.Close(); 93: } 94: } 95: } 96: }Aqui usamos basicamente ADO.NET para receber as chamadas da BLL e repassar ao banco de dados. O ideal é usar Stored Procedures para armazenar as instruções SQL no BD e aumentar a performance.
DTO
Note que na DAL e BLL usamos tipos predefinidos, uma classe que contém os dados a serem manipulados.
1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4: 5: namespace Types
6: {7: public class Products : List<product>
8: { 9: }10: public class Product
11: {12: private int _ProductId;
13: 14: public int ProductId
15: {16: get { return _ProductId; }
17: set { _ProductId = value; }
18: }19: private string _Description;
20: 21: public string Description
22: {23: get { return _Description; }
24: set { _Description = value; }
25: }26: private double _Price;
27: 28: public double Price
29: {30: get { return _Price; }
31: set { _Price = value; }
32: } 33: } 34: }Vantagens da Arquitetura:
- Independência de banco de dados
- Modularização
- Facilidade de manutenção
- Menor impacto na mudança de requisitos
- Possibilidade de usar outros tipo de interfaces como WinForms, Mobile, WPF
Guinther Pauli
Arquiteto de Sistemas
Assinar:
Postagens (Atom)