27 Abril 2009

Mostrando Imagens Armazenadas no Banco. ASP.NET com C#.

Primeiro, adicione o controle Image em uma página aspx:


<asp:Image ID="ImgFoto" runat="server" AlternateText="Sem Imagem" />

Adicione o código abaixo no CodeFile da mesma página:

id_cliente = Convert.ToInt32(Request.QueryString["us"].ToString());
//motra foto
ImgFoto.ImageUrl = "MostraImagem.aspx?id=" + id_cliente;



E finalmente o código para o arquivo MostraImagem.aspx.cs


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class MostraImagem : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
       try
       {
           int cliente = Convert.ToInt32(Request.QueryString["id"]);

           string strSql = null;
           SqlDataReader reg = null;
            
           SqlConnection Conn = new SqlConnection("string de conexão com o banco");

           strSql = "SELECT * FROM [tb_imagem_cliente] " +
                           " WHERE id_cliente = @ClienteId ";

           SqlCommand cmd = new SqlCommand(strSql, Conn);
           cmd.Parameters.Add("@ClienteId", SqlDbType.Int).Value = cliente;
           Conn.Open();
           reg = cmd.ExecuteReader();

           if (reg.HasRows == true)
           {
               while (reg.Read())
               {
                   Response.ContentType = reg["ds_tipo"].ToString();//varchar no banco
                   Response.BinaryWrite((byte[])reg["bi_imagem"]);//varbinary(MAX) no banco
               }
           }
           Conn.Close();
       }
       catch (Exception ex)
       {
           Response.Write(ex.ToString());
       }
   }
}





26 Abril 2009

Dica: Verificar Existência de Registros em um DataReader

Para verificar a existência de registros de uma consulta armazenada em um DataReader basta utilizar a propriedade HasRows. Exemplo:

.
.
.
SqlDataReader dados_cliente = null;

strSql = "SELECT * FROM [tb_imagem_cliente] " +
" WHERE id_cliente = " + _id_cliente;
dados_cliente = objDO.QueryConsulta(strSql); //verifica se já existe foto do usuario if(dados_cliente.HasRows == true) {

while (dados_cliente.Read())
{ objVO.id_cliente = Convert.ToInt32(dados_cliente["id_imagem_cliente"]); reg = objBO.Update(objVO); }
} else {
objVO.id_cliente = _id_cliente; reg = objBO.Insert(objVO);
}
.
.
.

19 Janeiro 2009

Divulgação: Oportunidade de Emprego em Brasília

Prezado Profissional,

Somos uma empresa de T.I. a mais de 17 anos no mercado em Brasília, e temos em nosso escopo a necessidade da contratação de profissionais na área de Tecnologia, dispomos de oportunidades para profissionais da área que tenham interesse em conhecer uma nova proposta profissional, para trabalhar em nossos Clientes.

Gostaríamos de contar com o seu apoio para divulgar as oportunidades de trabalho relatadas abaixo:

Os interessados em participar do processo seletivo, devem encaminhar o CV atualizado para o e-mail: recrutamentoeselecao@cast.com.br, identificando, no campo “Assunto”, o cargo de interesse.

I - ANALISTA DESENVOLVEDOR JAVA

Superior completo em TI ou áreas afins.

Sólida experiência em:

· JAVA/J2EE

· JSP/Servlets

· Struts

· Hibernate

· Javascript

· SQL Server

· HTML

· XML

· AJAX

II - TESTADOR JR

Superior incompleto em TI ou áreas afins.

Experiência em:

· Lógica de programação;

· Banco de dados - SQL básico;

· Linguagem de programação ( ASP ou Java);

· Word e Excel;

· Disciplina de testes;

· Conhecimento em ferramentas de testes;

· Conhecimento em processo de desenvolvimento de software.

III - ANALISTA DE REQUISITOS - PLENO E SÊNIOR

Superior completo em TI ou áreas afins.

Sólida experiência em:

· Levantamento de requistos;

· Identificação e definição de requisitos de software;

· Experiência na linguagem SQL;

· Java e modelos de dados relacional;

· Conhecimentos de UML e RUP - Rational Unified Process;

· Conhecimentos em modelagem;

· Análise de projetos de software OO;

· Conhecimentos de execução;

· Elaboração de roteiro de testes de software.

IV – ANALISTA DE TESTES - PLENO

Superior completo em TI ou áreas afins.

Sólida experiência em:

· Processos de testes de software;

· Elaboração de planos de testes;

· Elaboração de casos de testes;

· Elaboração de scripts de testes;

· Automação de testes;

· Execução de testes funcionais, regressivos, carga, stress e performance;

· UML;

· Lógica de programação;

· VB Script ou Java Script;

· RUP;

· Domínio de pelo menos 1 ferramenta de testes (Rational Test Suite, Badboy);

· Rational Clearcase, ClearQuest;

· Roscoe;

· Excelente redação e ortografia.

V – DESENVOLVEDOR ASP.NET - JÚNIOR

Superior incompleto em TI ou áreas afins.

Experiência em:

· Desenvolvimento e implementação de sistemas em Asp.net;

· Asp;

· Vb.net;

· Vb;

· HTML;

· Banco de dados SQL Server;

· XML;

· Tecnologia WEB-Service;

· UML;

· Avaliação, diagnósticos e proposições de aperfeiçoamento de soluções de produção e desenvolvimento dos sistemas.

VI – ANALISTA DE SISTEMAS – SUPORTE WEB

Superior completo em TI ou áreas afins.

Sólida experiência em:

· Gerenciamento, administração, troubleshooting e tuning em Webservers e Application Servers J2EE - Sun Java System Application Server 7, Sun Java System Application Server 8 e WebLogic 10 Server em ambientes de missão crítica;

· Identificar, mapear, resolver e documentar soluções para incidentes e problemas em ambiente WEB baseando-se nas práticas do ITIL;

· Gerenciamento/suporte a servidores SUN com Sistemas Operacionais Solaris 9 e/ou Solaris 10;

· Mapeamento de infra-estrutura, criação de manuais técnicos para utilização pelas equipes de monitoração e suporte;

· Elaboração de relatórios técnicos e gerenciais para a gestão de incidentes, problemas, capacidade e continuidade dos serviços de TI e automatizar procedimentos de restabelecimento da alta disponibilidade;

· Monitorar, administrar e realizar suporte níveis 2 e 3, auxiliar na concepção de acordos de nível operacional para gerenciamento de infra-estrutura de TI em missão crítica;

· Admistração de Sistemas Operacionais Solaris 9 e/ou Solaris 10;

· Conhecimentos especializados (suporte níveis 2 e 3) em AppServer J2EE Weblogic Server 8, 9 ou 10;

· Conhecimentos avançados (suporte níveis 2 e 3) em AppServer J2EE - Sun Java System Application Server E E 7 e Sun Java System Application Server E E 8;

· Conhecimentos avançados na arquitetura J2EE - suporte, definição, mapeamento de infra-estrutura e proposição de melhorias nas práticas de gerenciamento.

Att,


Kenia da Mota Andrade
Assistente de Recrutamento e Seleção
Cast Informática S.A
Telefone: +55(61)3429-7385 /8118-5274
Email: kenia.andrade@cast.com.br
Website: www.cast.com.br

01 Outubro 2008

Download Adobe Dreamweaver CS4 Beta



Quem não conhece o Dreamweaver?

Na minha opnião é o melhor software para desenvolvimentos de sistemas web do mercado. Isso porque ele pode ser utilizado por todos os tipos de desenvolvedores. Os iniciantes contam com ferramentas e assistentes de desenvolvimento, e os profissionais contam com várias funções e recursos que auxiliam na codificação do sistema. Além de suportar várias linguagens de programação, inclusive o C#!

Ele não é simplismente uma ferramenta para você clicar e arrastar elementos html na tela. Pois ele se preocupa em deixar o website/sistema completamente padronizado com as normas do W3C de acessibilidade e desenvilvimento.

A nova versão já pode ser baixada para testes no Adobe Labs! Basta se cadastrar e fazer o download.

Donwload da nova versão beta do Adobe Dreamweaver CS4



A seguir, algumas novidades desta nova versão:

Visualização dinâmica

Crie suas páginas da Web em condições de navegação reais com a nova Visualização dinâmica no Dreamweaver CS4 – e tenha ao mesmo tempo acesso direto ao código. As alterações no código são refletidas instantaneamente na exibição processada.


Dicas de código para estruturas Ajax e JavaScript

Escreva JavaScript mais eficientemente com suporte aperfeiçoado para objetos centrais JavaScript e tipos de dados primitivos. Tenha funcionalidade de código ampliada do Dreamweaver CS4 ao incorporar estruturas JavaScript populares, incluindo jQuery, Prototype e Spry.


Nova interface do usuário

Trabalhe de maneira mais rápida e inteligente em componentes do Adobe Creative Suite® 4 com um design de interface de usuário compartilhada. Alterne rapidamente de um ambiente de trabalho para o seguinte com o alternador de espaço de trabalho.


Arquivos relacionados e Navegador de código

Clique em qualquer arquivo exibido na barra Arquivos relacionados para visualizar a respectiva fonte na Visualização de código e a página-pai na Visualização de design. O novo recurso Navegador de código mostra a você o código-fonte CSS que afeta a sua atual seleção, permitindo que você acesse-o rapidamente.


Conjuntos de dados HTML

Integre a eficiência de dados dinâmicos em suas páginas da Web sem a curva de aprendizagem relacionada ao domínio dos bancos de dados ou da codificação XML. Os conjuntos de dados do Spry reconhecem conteúdo em uma tabela HTML simples como fonte de dados interativa.


Adobe InContext Editing

Crie páginas da Web no Dreamweaver de modo que os usuários finais possam editá-las sem a sua ajuda ou software adicional, usando o serviço on-line Adobe InContext Editing.*Como designer do Dreamweaver, você pode limitar alterações a páginas específicas, regiões distintas e até opções de formatação personalizadas.


Objetos inteligentes do Adobe Photoshop®

Insira algum documento PSD do Photoshop no Dreamweaver para criar uma imagem. Os objetos inteligentes são perfeitamente vinculados ao arquivo de origem. Faça alterações na imagem de origem e atualize a imagem no Dreamweaver sem abrir o Photoshop.


Práticas recomendadas para CSS

Implemente as práticas recomendadas para CSS sem gravar código. Crie novas regras CSS no painel Propriedades e obtenha explicações simples e claras de onde cada propriedade se encaixa na cascata de estilos.


Integração do Subversion®

Atualize seu site e faça modificações diretamente do Dreamweaver. O Dreamweaver CS4 integra-se com o software Subversion, um sistema de controle de versão de código aberto, para uma experiência de entrada/baixa (ou devolução/retirada) mais robusta.


Suporte à criação de aplicativos Adobe AIR™

Crie aplicativos Adobe AIR baseados em HTML e JavaScript diretamente no Dreamweaver. Visualize aplicativos AIR sem sair do Dreamweaver. Prepare o seu aplicativo AIR para implantação do pacote AIR e recursos de assinatura de código.



links úteis:

30 Setembro 2008

Aprenda a fazer jogos!


O XNA, plataforma para desenvolvimento de jogos da Microsoft, não é mais novidade e já está entrando na sua versão 3.0. Mas muitos iniciantes ainda não sabem como utilizar esta tecnologia para fazer seus primeiros jogos .

O mercado de entreterimento eletrônico já está faturando mais que o mercado cinematográfico.

Pensando nisso, e ao participar do Evento - 1º IESB Game Day, fiz uma seleção do links que com certeza irão ajudar você e motivá-lo a fazer seu primeiro jogo em XNA.

...wikipedia...

O XNA, por ser uma plataforma de desenvolvimento, é formada por alguns componentes descritos à seguir:

  • XNA Game Studio: IDE de desenvolvimento, baseado no Visual C# Studio. Assim, até o momento, só é possível desenvolver jogos usando a linguagem orientada à objetos C#. Existem duas versões:
    • XNA Game Studio Express: versão gratuita e baseada no Visual C# 2005 Express. Ele foi desenvolvido para ser usado por estudantes, desenvolvedores hobbistas e pequenos grupos de desenvolvimento (indie developers), com o intuito de permitir que os usuários desenvolvessem seus próprios videogames;
    • XNA Game Studio Professional: sem preço definido e data para lançamento ainda;
  • XNA Framework: conjunto de classes necessárias para se execução de um jogo XNA. Funciona sobre o .NET Framework 2.0 (games para PCs) ou do .NET Compact Framework for Xbox 360 (games para Xbox 360);
  • XNA Content Pipeline: componente de gerência de conteúdo e artefatos do projeto, tais como imagens (JPG, PNG, BMP, etc), modelos 3D (X, FBX, etc), sonoros (WAV, etc) e dados (XML, etc). Ele transforma os arquivos automaticamente no momento do build em um formato que será entendido pela aplicação em tempo de execução. O Content Pipeline é extensível e permite que o desenvolvedor escreva um conversor para um formato especial ou desconhecido com flexibilidade;
  • XACT (Audio Authoring Tool): ferramenta para audio designers organizarem seus arquivos de aúdio e efeitos sonoros.

Somente são suportados os formatos WAV e AIF.


...wikipedia...



Em breve estarei publicando meu primeiro jogo!




29 Agosto 2008

Saturday Night Code - Novidades do Service Pack 1 do .NET Framework 3.5 e do Visual Studio 2008

Pessoal, neste sábado será realizado um WebCast sobre as novidades do Service Pack 1 do .NET Framework 3.5 e do Visual Studio 2008.

A série de WebCast do Saturday Night Code da Microsoft é uma ótima fonte para estar sempre por dentro dos lançamentos e novidades tecnológicas.
Para quem não puder participar on-line, é possível assistir ao video posteriormente.

Veja os detalhes:

Dia 30/08/2008 - 21:00 h (Brasília)
Novidades do Service Pack 1 do .NET Framework 3.5 e do Visual Studio 2008

Palestrantes:
Alex Schulz e Rafael Godinho (Microsoft)

Resumo:

Neste webcast veremos as novas funcionalidades ou melhorias que o SP1 trouxe para o Framework 3.5 e para o Visual Studio 2008. Veremos o ADO.NET Entity Framework, ADO.NET Data Services, ASP.NET Dynamic Data, ASP.NET MVC e muitas outras sopas de letrinhas.


Alex Schulz é especialista em desenvolvimento da Microsoft Brasil, tendo trabalhado anteriormente em empresas de desenvolvimento de ERP, integradora de software e consultoria. Viciado em Rockband e XBOX, tem dividido o tempo entre estudos de novas tecnologias e shows (no Rockband).

Rafael Godinho é especialista em desenvolvimento da Microsoft Brasil, trabalhando na área há mais de 10 anos. Nesse tempo participou na elaboração de projetos críticos com tecnologia Microsoft para grandes clientes do setor financeiro e manufatura. Gosta muito de tecnologia e ultimamente tem gasto suas horas vagas estudando desenvolvimento de games e mobiliando seu apartamento.


Inscrição:
Clique aqui para fazer sua inscrição.

21 Agosto 2008

Boas práticas para garantir acessibilidade em sistemas web

A acessibilidade na Web engloba páginas, sítios, portais e demais aplicações onde as pessoas possam perceber, compreender, navegar e interagir. Engloba ainda, navegadores, tocadores de mídia, extensões (plugins) e outras ferramentas e tecnologias utilizadas para produzir e acessar o conteúdo das páginas.

Assim, um sítio projetado e desenvolvido com acessibilidade estará apto para atingir muito
mais pessoas, incluindo usuários com diferentes habilidades e em situações diversas.

Tim Berners-Lee, diretor do W3C afirma que o poder da Web está na sua universalidade.
Para ele, “ser acessada por todos, independente de deficiência, é um aspecto essencial”.
A acessibilidade na Web significa, portanto, permitir o acesso a todos, independente do
tipo de usuário, situação ou ferramenta.

BOAS PRÁTICAS

· Desenvolva ações que não dependam de precisão ou rapidez;
· Crie atividades sem limite de tempo de utilização;
· Permita uma navegação com seqüência lógica quando feita por tecla TAB;
· Permita a realização de ações ativadas pelo teclado e que não dependam da pressão de mais de uma tecla simultaneamente;
· Utilize legendas ou transcrições de áudio, inclusive em Libras;
· Utilize linguagem simples e clara;
· Utilize imagens suplementares relacionadas com o conteúdo do texto;
· Ofereça ajustes de propriedades do som;
· Ofereça imagens e vídeos com texto alternativo, transmitindo as informações importantes neles contidas (não se trata, necessariamente, de transcrição);
· Evite a apresentação de textos extensos com imagens;
· Desenvolva tabelas de dados e campos de formulários com recursos de acessibilidade;
· Ofereça recursos que permitam aumentar ou reduzir as páginas facilmente;
· Crie desenhos (Layouts) que permitam ampliação sem perda do conteúdo adjacente;
· Use contrastes adequados entre cores de fonte e fundos;
· Use recursos para enfatizar o texto;
· Permita o acesso às informações por caminhos alternativos como texto ou legendas;
· Ofereça opções para desativar animações e áudio facilmente;
· Organize as páginas com consistência e clareza;
· Utilize imagens sem efeitos (tremor, por exemplo) para evitar desconforto visual;
· Utilize freqüências de áudio que não causem desconforto auditivo.



Fonte:
curso e-MAG – Modelo de Acessibilidade de Governo Eletrônico.
https://www.enap.gov.br/

20 Junho 2008

Trabalhando com registros sem banco de dados

As vezes precisamos fazer sistemas que não precisam necessariamente ficar consultando e atualizando um banco de dados. A plataforma .NET oferece várias classes para trabalhar com Coleções de Dados.

No exemplo a seguir utilizo a classe KeyedCollection que funciona de forma bem parecida com um banco de dados. Crio a classe Medico herdada da classe pessoa e a classe BaseMedico herdada de KeyedCollection . Ela permite que os registros sejam armazenados e que possam ser acessados pelo ID, no caso codigo do medico.

obs.: a key deve ser do tipo int.



using System;

using System.Collections.Generic;

using System.Collections.ObjectModel;


namespace ConSaude

{


public class BaseMedicos : KeyedCollection <int, Medico>

{

public BaseMedicos() : base() { }


protected override int GetKeyForItem(Medico item)

{

// In this example, the key is the part number.

return item.codigo;

}

}

public class Medico : Pessoa

{

//Atributo

private int M_codigo;


//Construtores


public Medico()

{

}

public Medico(int _codigo, string _nome, string _morada, string _telefone)

{

this.codigo = _codigo;

this.nome = _nome;

this.morada = _morada;

this.telefone = _telefone;


}

//Propriedades

public int codigo

{

get { return M_codigo; }

set { M_codigo = value; }

}


}


}





A seguir um exemplo de como trabalhar estas classes:
A idéia neste exemplo é um gerenciador de filas para hospitais onde tenha um cadastro de médicos e pacientes. Utilizei o Visual Studio 2008 e é um projeto C#.

Para demostração fiz um windows form para cadastro de médicos. Após o cadastro a lista de médicos é atualizada.


private void btnCadastro_Click(object sender, EventArgs e)

{

Medico objMedico = new Medico();

objMedico.codigo = txtCodigo.Text.Length;

objMedico.nome = txtNome.Text;

objMedico.morada = txtMorada.Text;

objMedico.telefone = txtTelefone.Text;


try

{

lista_medicos.Add(objMedico);

}

catch(ArgumentException erro)

{

MessageBox.Show(erro.Message.ToString());

}

atualiza_lista(lista_medicos);


}

private void atualiza_lista(BaseMedicos l_medicos)

{

lstMedicos.Items.Clear();

foreach (Medico item in l_medicos)

{

lstMedicos.Items.Add(item.codigo + " - " + item.nome);

lstMedicos.Refresh();

}

}


O exemplo deste cadastro está disponível para download no grupo DevRafael, é só entrar lá e baixar.

Bons estudos!

04 Junho 2008

Fazendo Upload de Arquivos com ASP.NET

Na plataforma .NET é possível fazer Upload de arquivos sem necessitar um componente específico por meio de uma programação. Segue um exemplo de UpLoad utilizando a linguagem C#





//Evento chamado quando o button de Upload é clicado

void UploadFile(object Sender,EventArgs E)
{

//Verifica se o arquivo foi postado
if (File1.PostedFile !=null)
{

// PostedFile.FileName passa o caminho completo do arquivo na maquina local.Usando a função Substring ela passa para string todos os dados do arquivo.
string StrFileName = File1.PostedFile.FileName.Substring(File1.PostedFile.
FileName.LastIndexOf("\\") + 1) ;

//Pega o tipo de arquivo
string StrFileType = File1.PostedFile.ContentType ;

//Pega o tamnho do arquivo postado no formulário
int IntFileSize =File1.PostedFile.ContentLength;

//Verifica se o arquivo consegue ser carregado no servidor para
ser gravado no diretório correto.

//Se for menor igual a zero significa que não conseguiu subir o arquivo
if (IntFileSize <=0) { Response.Write(" A tentativa de UpLoad do Arquivo " + StrFileName + " falhou! ");
}
else
{

//Salva o arquivo no diretório correto
File1.PostedFile.SaveAs("upload\"+ StrFileName);

//Informa na tela que o arquivo foi gravado e dados sobre o
arquivo, nome, tipo de arquivo e o tamanho em bytes dele.

Response.Write( "O seu arquivo " + StrFileName + " do tipo " + StrFileType + " e tamanho " + IntFileSize.ToString() + " bytes foi gravado com sucesso!");
}
}
}



Considerando que foi criado um formulário com o campo imput type file de id "File1"



Importante:

Por padrão a limitação para um upload é de 4mb, no entanto este valor pode ser
alterado em seu Web.Config. Veja o exemplo:

httpRuntime maxRequestLength="6000"

O valor a ser alocado do maxRequestLength é informado em KB. Portanto no exemplo acima seriam 6000kb que são aproximadamente 6mb.

O diretório onde serão gravados os arquivos do UPLOAD precisa ter permissão de escrita. Na ausência desse, aparecerá no browser uma janela solicitando usuário e senha de FTP. Apenas entrando com estes dados será possível fazer o UPLOAD.



25 Abril 2008

Acessar banco MySQL com .NET

Para conectar sua aplicação .NET em uma base MySQL é só seguir os procedimentos:

1 - Faça download do "Windows Binaries, no installer (ZIP)" no site MySQL.com. No diretório bin estará o arquivo MySql.Data.dll. Trata-se do componente MySQL Connector .NET.

2 - No seu projeto, adicione referência deste componente. "No Solution Explorer, botão direito no nome do projeto, Add Reference.., Aba Browse, Localize MySql.Data.dll, ok".

3 - Exemplo Código C#:




//adicione a diretiva
using System.Data;
using MySql.Data.MySqlClient;
.
.
.
//Criando objeto MySqlConnection - informe os parâmetros de conexão com seu banco de dados.
MySqlConnection objConexao =
new MySqlConnection("Database=nome do banco;
Data Source=servidor;
User Id=usuario;
Password=senha;
pooling=false");

//Criando objeto MySqlDataAdapter
MySqlDataAdapter objAdapter = new MySqlDataAdapter();

//Efetuando conexão e executando Query no banco de dados
objAdapter.SelectCommand = new MySqlCommand("SELECT * FROM tabela", objConexao);

//Criando objeto DataSet para trabalhar com os dados
DataSet ds = new DataSet();

//Preencher objeto Dataset
objAdapter.Fill(ds);

//Alocando referencia ao GridView
gvResultado.DataSource = ds;

//Preenchendo GridView
gvResultado.DataBind();

//Mostrando GridView
gvResultado.Visible = true;

//Encerramento dos Objetos
ds.Dispose();
objAdapter.Dispose();
objConexao.Close();
objConexao.Dispose();