MundoTECH
Este é o meu Blog pessoal onde pretendo publicar minhas observações sobre as mais diversas tecnologias e recursos existentes hoje na internet. Meu objetivo é compartilhar observações, dicas, e conhecimento de uma forma geral.
quarta-feira, 21 de julho de 2010
Coolite - configurações no web.config
terça-feira, 25 de maio de 2010
Aviso de problema com GodMode em Window 64bits
terça-feira, 27 de abril de 2010
NOVIDADES NO .NET FRAMEWORK 4
Existem duas grandes alterações na segurança do .net framework versão 4: As politicas de segurança Machine-wide foram eliminadas, embora o sistema de permissões permaneça no lugar; e o Security Transparency tenha se tornado o mecanismo de reforço.
WEB
O ASP.NET versão 4 introduziu novos componentes nas seguintes áreas:
- Serviços Core, incluindo uma nova API que permite a você extender o caching, suporte a compressão de dados no session-state, e um novo gerenciador de preload de aplicação (componente autostart).
- Web Forms, incluindo suporte mais integrado para rotinas ASP.NET, melhoramentos para padrões web, atualização de suporte a browser, novos componentes para controles de dados, e novos componentes para o gerenciamento do View State;
- Contoles Web Forms, incluindo um novo controle de Chart;
- MVC incluindo novos métodos de ajuda para visualizações, suporte para aplicações MVC particionadas, e controladores assincronos;
- Dados Dinâmicos, incluindo suporte para aplicações web existentes, suporte para relacionamentos muitos para muitos e herança, novos Field Templates e atributos, e filtragem de dados melhorada;
- Microsoft AJAX, incluindo suporte adicional para aplicações AJAX client-based na biblioteca ajax;
- Visual Web Developer, incluindo Intellisense melhorado para JScript, novos Snipets auto-complete para html e markups asp.net, e compatibilidade de css melhorada;
- Deployment, incluindo novas ferramentas para automatizar tarefas de deployment típicas;
- Multi-Targeting, incluindo filtrs para componentes que não estão disponíveis em verões destino do Asp.Net Framework;
SEGURANÇA - TRANSPARENT CODE
Importante: Políticas de segurança foram um componente chave nas versões anteriores do .net framework. Mas a partir da versão 4 do framework foi tornada obsoleta. A eliminação das políticas de segurança é separada da security transparency.
Proposta do Transparency Model
Tranparency é um mecanismo de reforço que separa o código que executa como parte da aplicação do código que executa como parte da infraestrutura. A Transparency desenha uma barreira entre o código que faz coisas com privilégios (código crítico), como chamar código nativo, e código que não pode (transparent code). Código transparente pode executar comandos dentro dos limites do conjunto de permissões que está operando, mas não podem executar código crítico.
O primeiro objetivo da transparency enforcement é fornecer um mecanismo simples, mas efetiva para isolar diferentes grupos de código com base em privilégios. Dentro do contexto do moddelo sandboxing, estes grupos de privilégios são fully trusted (sem restrições) ou partial trusted (restrito as permissões do sandbox).
Importante: O modelo transparency transcende segurança de acesso do código. A Transparency é reforçada pelo compilador just-in-time e permanece ativo idependente do conjunto de garantias para um assemble, incluindo full trust.
Transparency foi introduzido no framework 2.0 para simplificar o modelo de segurança, e para tornar mais fácil escrever e distribuir bibliotecas seguras e aplicações. O código Transparency também é usado no Silverlight, para simplificar o desenvolvimento de aplicações partially trusted.
Especificando o Transparency Level
O Atributo SecurityRulesAttribute em nivel de assemble, determina as regras do SecurityRuleSet que o assemble irá seguir. As regras são organizadas sob um nível numérico do sistema, onde níveis mais elevados significam super reforço das regras de segurança.
Os níveis são:
Level 2 - regras de transparencia do framework 4;
Level 1 - regras de transparência do framework 2.0;
A primeira diferença entre os dois níveis é que o nível 1 não reforça as regras de transparência para chamadas de fora do assemble e é usada apenas para compatibilidade.
Importante: você precisa especificar o nível 1 apenas para compatibilidade; isto é, especifique o nível 1 apenas para código que foi desenvolvido no framework 3.5 ou anteriores que utilizam o atributo AllowPartiallyTrustedCallersAttribute, ou não usa modelo de transparency. Por exemplo, utilize o level 1 de transparencia para assembles .net framework 2.0 que chamam de chamadores partially trusted (APTCA). Para código que foi desenvolvido no .net framework 4 sempre utilize o level 2.
Level 2 Transparency
O level 2 transparency foi introduzido no .net framework 4. Os três princípios deste modelo são código transparente, código security-safe-critical, e código security-critical.
terça-feira, 20 de abril de 2010
Uma visão sobre usabilidade na web - Parte 2
A organização do site ajuda a comunicar sua proposta ou mensagem. Ao acessar um site onde as informações estão agrupadas em categorias como peixes, cães, gatos, passaros, etc. Temos a impressão de estarmos em uma loja de petshop. A organização em categorias também ajuda a localizar facilmente os produtos que queremos encontrar.
Ao categorizar a apresentação do conteúdo de seu site é preciso ter em mente as expectativas de sua audiência. Eles são familiarizados com os termos que você utilizou? Eles associam os termos que você utilizou com o conteúdo em cada categoria? Evite termos que possam fazer sua audiência pensar sobre o que significam, ou sobre o que será que vão encontrar naquele tópico. Sua audiência e respectivos objetivos devem determinar como categorizar suas informações.
Quando conseguimos compreender a audiência do site e seus respectivos objetivos, teremos uma boa idéia de como eles esperam que as informações estejam organizadas. Com o objetivo de verificar se acertamos, é importante observar uma pessoa de sua audiência ou alguém de fora utilizando o site e analisar seus comentários.
Um teste simples que você pode fazer é pedir para membros de sua audiência organizarem cartões da maneira como lhes parecer mais lógia e comparar os resultados com o seu planejamento.
Quando você passa algum tempo na web pesquisando sobre os labels utilizados para apresentar categorias, você verá que os mais utilizados e auto-explicativos são utilizados em diversos sites. Alguns deles são "Portifólio", "Produtos", "Suporte", "Loja" e "Quem Somos". A pergunta que você pode fazer é "Como posso manter minha empresa única e ainda ter labels compreensívos e claros?". A resposta está na apresentação visual.
Os labels podem ser criados com base em tópicos, como tarefas do usuário, metáfora utilizada no site, audiência específica, ou ainda em sequência linear.
Depois de organizar será necessário informar a sua audiência sobre o conteúdo do site através dos elementos de navegação. Alguns elementos de navegação são: caixas de busca, menus horizontais e verticais, índices, tabelas de conteúdo, mapas do site, diretórios, gráficos, links, e links âncora. Estes elementos podem ser globais (existentes em todo o site) ou locais (existentes em subseções ou em uma página individual do site). Independente dos elementos que você utilize em seu site, eles terão o mesmo objetivo: orientar o acesso ao site.
Com uma navegação bem organizada e apresentada seus visitantes saberão onde estão, como chegaram onde estão, e onde eles podem ir em seguida.
Elementos de navegação que precisam estar presentes em todas as páginas do site: Link para página inicial, Identificação do site, Links de navegação principal, ferramentas de navegação no comprimeito horizontal, Utilitários no comprimento horizontal, Informações de contato.
segunda-feira, 19 de abril de 2010
Uma visão sobre usabilidade na web
A apresentação visual de um site faz muito mais do que ser bonito. Ela organiza informações de uma maneira indicativa de suas funções, engaja e direciona seus visitantes, cria uma personalidade distinta e apropriada, fornece impacto emocional e relacionado.
Na fase de planejamento é necessário ter em mente que o site tem o objetivo de comunicar, você precisa saber o que vai ser dito, para quem, e como. As respostas a estas questões fornecem um guia para seguir através do processo de design do web site.
A comunicação, de uma maneira geral, acontece através da linguagem, gestos, expressões faciais, entonações, espaço, tempo, cultura, imagens, ações, silêncio, interatividade, e outras.
Na web é preciso mais do que uma comunicação com palavras, significa pensar sobre como imagens, texto, organização, interação, movimento e som podem trabalhar juntos para criar apresentações bem sucedidas.
A web é um meio de comunicação e portanto, designs eficiente acontece com comunicação eficiente, e podemos pensar nos desafios de usabilidade como desafios de comunicação.
Para criar um web site que efetivamente transmite a mensagem desejada, é necessário começar fazendo algumas perguntas: qual é o objetivo do site? quem é a audiência do site? como será feita a comunicação? e assim por diante.
Para criar a presença de seus clientes na web significa compreende-los, o que fazem, o que querem, e como eles esperam que seja feito. Sabendo que seus clientes, podem ser você mesmo, ou um departamento da empresa em que trabalha.
Conhecer seus clientes envolve alguma leitura e muita conversa, especialmente muitas questões a serem respondidas. Assim antes de começar a "conversar" com seus clientes, você precisa aprender o que eles querem dizer. O primeiro passo envolve a leitura de documentos e brochuras sobre seus negócios. Examinar planos de negócio e plano de marketing, verificando os produtos comercializados, ou pesquisando concorrentes e desafios na industria em que eles estão inseridos. É necessário entender os clientes, suas intenções e seu fóco, assim como suas limitações. Sempre trará benefícios, sentar com alguns empregados da empresa para obter as suas descrições pessoais, com suas palavras, saber suas opinições sobre a empersa. E não tenha medo de fazer muitas e muitas perguntas, porque apenas com uma clara visão sobre os objetivos e perfil do seu cliente você poderá falar com e para eles. A resposta mais importante para "Quem é seu cliente?" é entender o que seu cliente faz, para quem, e porquê. Quando chegar a hora de se comunicar com seus clientes, tenha certeza de que esta informação esteja clara.
Depois de saber mais sobre a empresa do Johnn do que ele mesmo, você precisará compreender porque a empresa dele precisa estar na internet. Ao desenvolver o design para uma empresa, é seu trabalho compreender suas intenções e direção. Você precisa definir o problema.
A pergunta principal é "Qual necessidade o site irá resolver?". Emitir informações e suporte técnico para um produto? Fornecer ferramentas educacionais para uma escola? Promover a carreira solo de um músico? O designer precisa determinar a melhor maneira para atender as necessidades de seus clientes, e acredite ou não, esta maneira pode ser diferente do que o cliente acredita que é necessário. E esta é a razão pela qual é importante conhecer as necessidades dos clientes independente da internet. Quando você começa a falar sobre elementos do web site, você já estará pensando sobre possíveis soluções.
"Quem é sua audiência?" não é apenas uma questão. É uma série de perguntas que precisam ser respondidas para que o designer saiba com quem o site irá se comunicar. As respostas para esta pergunta também fornecerão ajuda para conhecer os indivíduos que farão parte da sua audiência. Algumas perguntas a serem respondidas são: Qual é a idade da audiência pretendida? Que tipo de experiência eles terão? Quanto eles conhecem a empresa de seu cliente? Quanto de experiência eles tem com a web? Qual tipo de cultura compartilhada eles tem como uma audiência? Quais são seus objetivos? A resposta a estas e outras perguntas irá ajudar você a determinar o conteúdo necessário dentro do seu web site, e mais importante, irá ajudar a determinar qual conteúdo você não precisará no seu site.
Talvez a questão mais importante sobre a sua audiência seja "Qual é sua proposta para vir ao seu site?". Pense no que eles querem fazer, e como suas necessidades serão atendidas. Os visitantes do seu site podem querer encontrar informações sobre o uso dos produtos, ou podem querer saber quem foi o artilheiro no último jogo de futebol da noite anterior. Antecipando estas questões, você pode criar sites que atendem e superam as expectativas de seus visitantes. Não basta somente atender as expectitivas de seus visitantes, mas também é necessário entender como eles esperam fazer uso do site.
Outro fator importante é saber como é a linguagem de comunicação utilizada pela sua audiência. Por exemplo, a conotação da cor vermelha para o publico relacionado a finanças é associado com resultados negativos, e investidores podem facilmente interpretar a cor vermelha no texto como uma notícia ruim.
Saiba o que entende como útil e efetivo, e apresente as informações desta maneira. Algumas questões relacionadas são: "Os clientes precisam de mais imagens para entender conceitos apresentados ou eles estão mais inclinados a informações apresentadas em formato tabular?". Outra questão importante neste ponto é saber se sua audiência sente-se confortável com o uso da internet? Quais os tipos de operações que eles fazem tipicamente na internet? O que eles irão esperar do site? Pode ser útil examinar outros sites em segmentos similares e ver como a apresentação para clientes é conduzida.
Outra técnica frequentemente utilizada para melhor compreender sua audiência é o uso de cenários. Um cenário é um esboço de porque os integrantes de sua audiência visitarão o site. O cenário inclui informações como, objetivos dos visitantes, a melhor maneira de realizar o objetivo, e o resultado ideal para o visitante. Podemos imaginar um site de receitas, onde existe uma diversidade de cenários possíveis: o visitante precisa criar um registro para o casamento que acontecerá, um visitante com conhecimentos que busca utensílios específicos, um visitante que está procurando um presente para um amigo, ou um visitante que recebeu uma indicação para o site e quer conhecer a empresa.
Os cenários são úteis para enxergar segundo os olhos dos usuários do site. Quando uma decisão de design precisa ser tomada, você pode perguntar, "Como a Amanda espera que isto aconteça?". Quando mais específico for o cenário, mais fácil será responder a esta pergunta. Veja o exemplo abaixo:
Perfil:
Nome: Amanda Santos
Sexo: Feminino
Idade: 28
Residência: Apartamento pequeno no bairro Jardim da Penha
Hobies: Revistas e publicações, Teatros no centro da cidade, cozinhar as vezes
Razão para visitar o site:
Ela quer construir um livro de receitas de alta qualidade, porque está cansada da baixa qualidade das receitas atuais.
Expectativa:
Ela quer ter acesso aos produtos de maneira organizada por ingredientes, ou custo, e quer ver uma descrição destes materiais, especialmente sua durabilidade
Resultado Ideal:
Ela quer comparar produtos da maneira como escolheu e comprá-los facilmente
Ao criar design para oferecer diversas opções, você pode fornecer acesso a uma seção de talheres, para uma seção de idéias de presentes, entre outras.
Em breve publicarei mais posts relacionados a design de web sites.
domingo, 18 de abril de 2010
Microsoft Expression Blend - Silverlight Application - Apresentação 1
- Silverlight Application1 e SilverlightApplication1Site. No projeto SilverlightApplication1 serão criados os seguintes arquivos e pastas:
- Pasta Reference
- Pasta Properties
- Arquivo App.xaml
- MainPage.xaml
quinta-feira, 25 de março de 2010
O comando Split em C#
Como alterar o atributo background de um div com JavaScript
document.getElementById("divBannerCabecalho").style.backgroundImage = "url(images/banner3.png)";
terça-feira, 23 de março de 2010
Como modificar o método de inserir em um DataSet para recuperar o identificador do registro criado
Exemplo:
NorthwindTableAdapters.ProductsTableAdapter productsAdapter = new NorthwindTableAdapters.ProductsTableAdapter();
// Add a new product
int new_productID = Convert.ToInt32(productsAdapter.InsertProduct("New Product", 1, 1, "12 tins per carton", 14.95m, 10, 0, 10, false));
// On second thought, delete the product
productsAdapter.Delete(new_productID);
Diferença entre usar @@identity e scope_identity()
Exemplos:
USE AdventureWorks;
GO
INSERT INTO Person.ContactType ([Name]) VALUES ('Assistant to the Manager')
GO
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
GO
SELECT @@IDENTITY AS [@@IDENTITY]
GO
Sql Server T-SQL - Alguns links de referências
Sql Server T-SQL
- USE master;
GO
--Delete the TestData database if it exists.
IF EXISTS(SELECT * from sys.databases WHERE name='TestData')
BEGIN
DROP DATABASE TestData;
END
--Create a new database called TestData.
CREATE DATABASE TestData;
Press the F5 key to execute the code and create the database.
- USE TestData
GO
domingo, 21 de março de 2010
Como copiar um arquivo utilizando a classe FileInfo
Como obter informações sobre um arquivo
- Crie um objeto FileInfo passando como parâmetro o caminho do arquivo;
- Acesse as propriedades do objeto FileInfo;
sexta-feira, 19 de março de 2010
Tabela de conversão de tamanhos de fontes
Points Pixels Ems Percent
6pt 8px 0.5em 50%
7pt 9px 0.55em 55%
7.5pt 10px 0.625em 62.5%
8pt 11px 0.7em 70%
9pt 12px 0.75em 75%
10pt 13px 0.8em 80%
10.5pt 14px 0.875em 87.5%
11pt 15px 0.95em 95%
12pt 16px 1em 100%
13pt 17px 1.05em 105%
13.5pt 18px 1.125em 112.5%
14pt 19px 1.2em 120%
14.5pt 20px 1.25em 125%
15pt 21px 1.3em 130%
16pt 22px 1.4em 140%
17pt 23px 1.45em 145%
18pt 24px 1.5em 150%
20pt 26px 1.6em 160%
22pt 29px 1.8em 180%
24pt 32px 2em 200%
26pt 35px 2.2em 220%
27pt 36px 2.25em 225%
28pt 37px 2.3em 230%
29pt 38px 2.35em 235%
30pt 40px 2.45em 245%
32pt 42px 2.55em 255%
34pt 45px 2.75em 275%
36pt 48px 3em 300%
quarta-feira, 17 de fevereiro de 2010
Como alterar o texto do comando Select do GridView
1) Modifique o parametro de AutoGenerateSelectButton para False
AutoGenerateSelectButton="False"
2) Inclua a seguinte tag dentro de
quinta-feira, 4 de fevereiro de 2010
Solução simples para problema de exibição do web control asp:menu
A solução para os visitantes do site
Quando estamos visualizando as páginas a única maneira de contornar o problema é clicar no botão Modo de Compatibilidade (localizado ao lado direito da barra de navegação). Ao clicar neste botão a página será recarregada mas desta vez o Internet Explorer 8 está funcionando como se fosse a versão 7.
A solução para os desenvolvedores de web sites
A solução é simples: crie um estilo que atribua o valor 1 a propriedade z-index do web control (asp:menu). Como no exemplo abaixo:
.adjustedZIndex
{
z-index: 1;
}
E em seguida atribuir o nome do estilo (adjustedZIndex) à propriedade CssClass do controle asp:menu. Como no exemplo abaixo:
domingo, 10 de janeiro de 2010
Atribuindo Parametros a um DataSource Programaticamente
Protected Sub GridView2_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView2.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim s As SqlDataSource = CType(e.Row.FindControl("DS_Produtos"), SqlDataSource)
s.SelectParameters(0).DefaultValue = e.Row.Cells(0).Text
End If
End Sub
sexta-feira, 8 de janeiro de 2010
Usando IDictionary Para Listar Itens
// Abaixo é definida a propriedade que "seta" os valores para o controle
// na interface
public IDictionary
{
set
{
this.dlDocumentos.DataSource = value;
this.dlDocumentos.DataBind();
}
}
// Aqui é criada a propriedade listaDocumento do tipo Dictionary
// contendo chave (long) e o respectivo conteúdo (Documento)
private Dictionary
public Dictionary
{
get { return listaDocumento; }
}
// Abaixo está a rotina para atribuir os valores ao dicionário de
// Documentos
// Lista Documentos
foreach (Servico itemServico in req.ListaServico)
{
foreach (Documento itemDocumento in itemServico.ListaDocumento)
{
if (!this.ListaDocumento.ContainsKey(itemDocumento.Id))
{
this.ListaDocumento.Add(itemDocumento.Id, itemDocumento);
}
}
}
// E para atribuir a lista de documentos
UcImprimirRequerimentoProfissional.ListaDocumentos = this.ListaDocumento;
Exemplo de Uso do Comando switch no C#
string sexo = string.Empty;
switch (req.DadosCadastrais.Sexo)
{
case DadosCadastrais.Masculino: sexo = "MASCULINO" ; break;
case DadosCadastrais.Feminino : sexo = "FEMININO" ; break;
}
Configurando uma propriedade como nullable
public DateTime? DataExp
{
set {
if (value.HasValue)
lblDataExp.Text = value.Value.ToString("ddMMyyyy");
}
}
DotNetNuke – Skin Package (Pacote de Skin)
Um pacote skin básico precisa conter:
1. SkinName.html – Um arquivo HTML contendo os elementos de layout e o posicionamento dos sking tokens para o skin Dotnetnuke.
2. Skin.CSS – Um arquivo CSS global que é aplicado no skin do portal e admin do pacote. Skins CSS específicos podem ser incluídos em arquivos separados SkinName.CSS.
3. Skin.XML – Um arquivo XML global com as configurações para o DNN skin tokens. Configurações específicas podem ser especificadas em arquivos separados, como SkinName.xml, para configurações individuais.
4. SkinName.doctype.xml – Um arquivo XML contendo o doctype para o skin. (Caso não seja incluído será utilizado o doctype default).
Singleton Pattern (Padrão Singleton)
// Exemplo Singleton C#
using System;
using System.Collections.Generic;
using System.Text;
using DAO;
using BEL;
using Utilitarios;
namespace BLL
{
public class InscricaoBLL
{
private static InscricaoBLL instancia = null;
private InscricaoBLL() { }
public static InscricaoBLL getInstance()
{
if (instancia == null) instancia = new InscricaoBLL();
return instancia;
}
public void inserirInscricao(Inscricao inscricao)
{
InscricaoDAO.getInstance().InserirInscricao(inscricao);
}
// Continua o código ...
}
}
Mensagens de Erro do ASP no IIS 7.5 do Windows 7
Em primeiro lugar a localização do IIS no Windows 7 é a pasta Ferramentas Administrativa, em Todos os Programas; Selecione Gerenciador do Serviços de Informações da Internet (IIS) e repare na seção IIS, o ícone de acesos as configurações ASP. Ao abrir este item de configuração, serão exibidas três seções de configuração para aplicações ASP: Compilação, Comportamento e Serviços. Na página de configurações ASP, podemos definir as seguintes opções de configuração:
Elementos da Página do Recurso
Nome do elemento Descrição
Página Código [codePage]
Especifica a página de código padrão de um aplicativo ASP.
Habilitar Armazenamento em Buffer [bufferingOn]
Especifica se a saída de um aplicativo ASP deve ou não ser armazenada em buffer. O padrão é True.
Habilitar Codificação em Partes [enableChunkedEncoding]
Especifica se a codificação de transferência em partes HTTP 1.1 está ou não habilitada para o serviço de publicação na World Wide Web (serviço WWW). O padrão é True.
Habilitar Fallback HTML [enableAspHtmlFallback]
Controla o comportamento do ASP quando a fila de solicitações está cheia. Quando definido para True, o ASP pesquisará um arquivo HTML que tenha _asp adicionado ao nome do arquivo e retornará o arquivo, se ele for encontrado. Por exemplo, se o nome do arquivo .asp solicitado for Hello.asp, o nome do arquivo .htm retornado será Hello_asp.htm. Se o arquivo não for encontrado, um erro 500.13 (Servidor muito ocupado) HTTP será retornado ao cliente. O erro também será retornado se o valor for definido para False. O valor padrão do atributo é True.
Habilitar Caminhos Pai [enableParentPaths]
Especifica se uma página ASP permite ou não caminhos relativos ao diretório atual (usando a notação "...\") ou acima do diretório atual. O padrão é False.
Intervalo de Teste da Conexão Cliente [queueConnectionTestTime]
Especifica o período de tempo em que uma solicitação deve ser enfileirada. Caso a solicitação seja enfileirada além do tempo especificado, o ASP determina se o cliente ainda está conectado antes da execução da solicitação. Se o cliente não estiver mais conectado, a solicitação não será processada e será excluída da fila. O padrão é 00:00:03 segundos.
Limite Máximo do Corpo de Solicitação [maxRequestEntityAllowed]
Especifica o número máximo de bytes permitidos no corpo da entidade de uma solicitação ASP. O padrão é 200000 bytes.
Comprimento da Fila [requestQueueMax]
Especifica o número máximo de solicitações ASP simultâneas permitidas na fila. O padrão é 3000.
Tempo Limite da Fila de Solicitações [queueTimeout]
Especifica o período de tempo durante o qual um uma solicitação de script ASP tem permissão para aguardar na fila. O padrão é 00:00:00 (infinito).
Limite de Armazenamento em Buffer da Resposta [bufferingLimit]
Define o tamanho máximo do buffer ASP. Se o buffer de resposta estiver ativado, essa propriedade controlará o número máximo de bytes que uma página ASP poderá gravar no buffer de resposta antes que ocorra uma liberação. O padrão é 4194304 bytes.
Tempo Limite do Script [scriptTimeout]
Especifica o tempo padrão durante o qual as páginas ASP têm permissão para serem executadas antes da tentativa de parada do script e de gravação de um evento no log de eventos do Windows. O padrão é 00:01:30 minutos.
Limite de Threads por Processador [processorThreadMax]
Especifica o número máximo de threads de trabalho por processador que o IIS pode criar para executar solicitações ASP. O padrão é 25.
ID da Localidade [lcid]
Define o identificador da localidade padrão (LCID) de um aplicativo. Os LCIDs definem quais serão os formatos de data, hora e moeda. O padrão é 1033, que representa inglês dos EUA (en-us).
Reiniciar ao Alterar a Configuração [enableApplicationRestart]
Determina se um aplicativo ASP pode ou não ser reiniciado automaticamente quando é feita uma alteração nas propriedades de configuração críticas do aplicativo. O padrão é True.
Calcular Números da Linha [calcLineNumber]
Especifica se o ASP deve ou não calcular e armazenar o número de cada linha de código executado para que o número possa ser fornecido em um relatório de erro. O padrão é True.
Capturar Exceções do Componente COM [exceptionCatchEnable]
Especifica se as páginas ASP interceptam exceções acionadas por componentes. Caso definida para False, a página ASP não captura exceções acionadas pelo componente. Isso pode ocasionar a manipulação da exceção por outra camada do processo, como VB Script ou o processo de trabalho do IIS (que normalmente encerra o processo de trabalho). O padrão é True.
Habilitar Depuração no Lado do Cliente [appAllowClientDebug]
Especifica se a depuração no lado do cliente ASP está habilitada. O padrão é False.
Habilitar Solicitações de Erro em Log [logErrorRequests]
Controla se o servidor Web grava erros ASP na seção do aplicativo do log de eventos do Windows. Por padrão, os erros ASP são gravados no navegador cliente e nos arquivos de log do IIS. O padrão é True.
Habilitar Depuração no Lado do Servidor [appAllowDebugging]
Especifica se a depuração ASP está habilitada no servidor. O padrão é False.
Registrar Erros no Log do NT [errorsToNTLog]
Especifica se os erros ASP são gravados no log de eventos do Windows. Por padrão, os erros ASP são gravados no navegador cliente e nos arquivos de log do IIS. O padrão é False.
Executar ao Encerrar Funções Anonimamente [runOnEndAnonymously]
Especifica se as funções SessionOnEnd e ApplicationOnEnd ASP globais devem ser executadas como usuário anônimo. Caso definidas para False, as funções não são executadas. O padrão é True.
Criar Script para Mensagem de Erro [scriptErrorMessage]
Especifica a mensagem de erro a ser enviada para o navegador caso nenhum erro de depuração específico seja enviado ao cliente. A mensagem padrão enviada é "Erro no servidor ao processar a URL. Contate o administrador do sistema."
Enviar Erros para Navegador [scriptErrorSentToBrowser]
Especifica se o servidor Web grava as especificações de depuração (nome do arquivo, erro, número da linha, descrição) no navegador do cliente, além de registrá-las no log de solicitações do IIS. O padrão é True.
Linguagem do Script [scriptLanguage]
Especifica a linguagem do script padrão para todos os aplicativos ASP executados no servidor Web. O padrão é VBScript.
Caminho de Diretório do Cache [diskTemplateCacheDirectory]
Contém o nome do diretório usado pelo ASP para armazenar modelos ASP compilados no disco depois do estouro do cache da memória. O padrão é raiz_do_sistema\inetpub\temp\Modelos ASP Consolidados.
Habilitar Armazenamento em Cache da Biblioteca de Tipos [enableTypelibCache]
Especifica se as bibliotecas de tipos são armazenadas no servidor. O padrão é True.
Máximo de Arquivos Armazenados em Cache no Disco [maxDiskTemplateCacheFiles]
Especifica o número máximo de modelos ASP compilados que podem ser armazenados. O padrão é 2000.
Máximo de Arquivos Armazenados em Cache na Memória [scriptFileCacheSize]
Especifica o número dos arquivos de script previamente compilados em cache. Se for definido como 0, nenhum arquivo de script será armazenado em cache. Se estiver definido para 4291967295, todos os arquivos de script solicitados serão armazenados em cache. A propriedade é usada para ajustar o desempenho, dependendo da quantidade de memória disponível e do volume de tráfego dos arquivos de script. O padrão é 500.
Máximo de Mecanismos de Script Armazenados em Cache [scriptEngineCacheMax]
Especifica o número máximo de mecanismos de script que as páginas ASP manterão em cache na memória. O padrão é 250.
Habilitar Componente Lado a Lado [appServiceFlags]
Habilita assemblies COM+ lado a lado, que permitem que aplicativos ASP especifiquem a versão de um componente DLL ou COM do sistema a ser usado. O padrão é False.
Habilitar Controlador [appServiceFlags]
Habilita o controlador COM+, que permite aos administradores ou desenvolvedores depurarem aplicativos ASP. O padrão é False.
Executar em MTA [executeInMta]
Especifica se o ASP pode ou não executar scripts em um compartimento com vários threads. O padrão é False.
Respeitar Modelo de Threading do Componente [trackThreadingModel]
Especifica se o IIS examina o modelo de threading de todos os componentes criados pelo aplicativo. O padrão é False.
ID da Participação [partitionID]
Defina a propriedade para GUID da partição COM+. Quando a propriedade estiver definida, defina o elemento Usar Partição para True.
Componente Lado a Lado [sxsName]
Defina a propriedade para o nome do aplicativo COM+. Quando a propriedade estiver definida, defina o elemento Habilitar Componente Lado a Lado para True.
Usar Partição [appServiceFlags]
Isola aplicativos em partições COM+ próprias. Quando a propriedade estiver definida para True, você deve definir um valor para o elemento Identificação da Partição. O padrão é False.
Habilitar Estado da Sessão [allowSessionState]
Habilita a persistência de estado da sessão para o aplicativo. O padrão é True.
Máx. de Sessões [max]
Especifica o número máximo de sessões simultâneas a serem permitidas pelo IIS. O padrão é 2147483647.
Nova ID em Conexão Segura [keepSessionIdSecure]
Gera um novo cookie quando é feita uma transição de uma conexão não segura para uma segura. O padrão é True.
Tempo Limite [timeout]
Especifica o tempo durante o qual o objeto de uma sessão é mantido após a última solicitação associada ao objeto. O padrão é 00:20:00.
A tabela acima foi copiada do Help da janela de configurações ASP do IIS 7.5.
Recuperar Valor em Célula do GridView no RowUpdating
// Gravar o arquivo do modo de editar
protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// Definir caminho do arquivo
string fileName = "";
string savePath = Server.MapPath("~/uploads/");
// Pegar nome do arquivo antigo
string antigoDocumento = ((Label)((GridView)sender).Rows[e.RowIndex].Cells[5].Controls[1]).Text;
antigoDocumento = string.Concat(savePath, antigoDocumento);
try
{
// Excluir arquivo antigo
if (File.Exists(antigoDocumento))
{
File.Delete(antigoDocumento);
}
// Verificar se existe arquivo no controle FileUpload e gravar em disco
if (((FileUpload)((GridView)sender).Rows[e.RowIndex].Cells[colunaArquivo].FindControl("FileUpload2")).HasFile)
{
fileName = ((FileUpload)((GridView)sender).Rows[e.RowIndex].Cells[colunaArquivo].FindControl("FileUpload2")).FileName;
savePath += fileName;
((FileUpload)((GridView)sender).Rows[e.RowIndex].Cells[colunaArquivo].FindControl("FileUpload2")).SaveAs(savePath);
//FileUpload1.SaveAs(savePath);
}
// Atribuir o nome do arquivo a coleção e.NewValues para a atualização do registro no DataTable
e.NewValues["DOCTO"] = ((FileUpload)((GridView)sender).Rows[e.RowIndex].Cells[colunaArquivo].FindControl("FileUpload2")).FileName;
}
catch (Exception ex)
{
lblErro3.Text = "Ocorreu um erro: " + ex.ToString();
}
}
Uso do Translate do Oracle
A função para a validação no formulário de entrada de dados do cliente foi a seguinte:
function LimparString(txt)
Dim xc, xs, saida, posicao, caract, X
xc = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ'"
xs = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
saida = ""
If txt <> "" then
For X = 1 To Len(txt)
caract = Mid(txt,X,1)
posicao = InStr(xc,caract)
If posicao > 0 Then
caract = mid(xs,posicao,1)
end if
saida = saida & caract
Next
LimparString = saida
End If
end function
...
E a string sql com o Translate ficou assim:
strSQL = "select CodProfissional from prof where NumCartao = '"&numeroCartao&"' and translate(NomeCliente,'ãáéêíóõúçÃÁÉÍÓÕÚÇãáéêíóõúçÃÁÉÍÓÕÚÇ','aaeeiooucAAEIOOUC') = '"&nomeCompleto&"' and Cpf = "&cpf&" and DataNascimento = to_date('"&sortDate(dataNascimento)&"') and translate(NomeMae,'ãáéêíóõúçÃÁÉÍÓÕÚÇãáéêíóõúçÃÁÉÍÓÕÚÇ','aaeeiooucAAEIOOUC') = '"&nomeMae&"'"
O funcionamento do Translate substitui cada caracter do segundo parametro, pelos respectivos caracteres do terceiro parametro, na string do campo do primeiro parametro.
Visão geral do Log4net
Uma aplicação de tamanho médio pode gerar milhares de linhas de request para logs e com isto muito esforço também é feito para medir o impacto e custo de fazer o log. Log4net pretende ser rápido e flexível.
O usuário precisa estar ciente das seguintes questões de performance:
1. A performance de loggin quando ele é desativado. Quando o loggin é desativado por inteiro ou apenas para um conjunto de níveis, o custo de requisição de log consiste de uma invocação de método mais uma comparação de inteiros.
Entretanto, a invocação do método envolve um custo escondido da construção do parametro.
Por exemplo, para alguns logs, escrevendo,
log.Debug("Número: " + i + " é " + entry[i].tostring();
incorre no custo de construir a mensagem parametro, convertendo ambo, inteiro i e entry[i] para strings, e concatenando strings intermediários, independente se a mensagem será feito log ou não. Este custo de construção de parametro pode ser forte e depende do número e tipo de parametros envolvidos.
Para enviar o custo de construção de parametros escreva:
if(log.IsDebugEnabled)
{
log.Debug("Entry number: " + i + " is " + entry[i].ToString());
}
FileAppender e RollingFileAppender
Estes appenders escrevem mensagens de logs em arquivos. Uma configuração típica para um FileAppender pode parecer com a seguinte:
Segue abaixo um resumo das configurações de atributos mais comuns para FileAppender:
- file: o caminho completo ou relativo para o arquivo de log;
- appendToFile: um campo booleano que indica se o arquivo de log será incrementado (true) ou sobrescrito (false). Se falso, o arquivo será sobrescrito na inicialização do log4net. Caso não seja especificado, o log será incrementado.
- immediateFlush: valor booleano indicando se é para o arquivo de log TextWriter depois de cada mensagem de log ser escrita. O padrão é true (enviar cada mensagem depois de ser gerada);
- lockingModel: permite a você controlar se o arquivo de log estará travado durante a execução da aplicação.
É indicado não usar o FileAppender e sim o RollingFileAppender. O arquivo de log gerenciado por FileAppender permite o crescimento do arquivo sem limites. O RollingFileAppender permite um gerenciamento básico do arquivo, configurando size- ou date-boxing do arquivo de log.
Existem diversas configurações para o RollingFileAppender:
> rollingStyle: controla como os arquivos de log são elaborados, e pode ser um dos seguintes valores:
- Once: o arquivo de log é recriado todas as vezes que o log4net é inicializado (tipicamente quando a aplicação é iniciada);
- Size: o arquivo de log é recriado quando atinge um tamanho determinado;
- Date: o arquivo de log é recriado com base na data atual;
- composite: o arquivo de log é recriado com base nos limites de tamanho e na data atual;
> maximumFileSize: a capacidade do arquivo de log. É uma expressão de tamanho no formato "#(KB|MB|GB)". Por exemplo "100KB" ou "10MB";
> maxSizeRollBackups: o número máximo de backups de arquivos de log. Indica o número máximo quando o rollingStyle é SIZE; quando o rollingStyle é COMPOSITE, isto indica o máximo número de roll-offs mantidos por dia; Esta propriedade não tem efeito quando rollingStyle é ONCE ou DATE;
> datePattern: é usado para recriar arquivos com base em datas. o valor deste parametro precisa aderir ao formato usado pela classe SimpleDateFormat;
> staticLogFileName: se true esta opção indica que o arquivo de log receberá todos os registros de maneira incremental sendo o backups através de cópias. E se false indica que o log4net irá gravar no último arquivo de log (ex: log-file1.txt, log-file2.txt..);
> countDirection: indica como a numeração de roll-off dos arquivos é gerenciada. Quando o parametro for >=, haverá uma numeração incremental no nome do arquivo, ex: log-file.txt.1, log-file.txt.2, etc..
Lembre que quando usar o file appender, o usuário executando o processo de logging precisa de premissões de escrita e/ou modificação para arquivos de log. Além disso, o arquivo de log será criado caso não exista mas não será criado o diretório informado caso não exista. E caso o file appender não seja criado a aplicação funcionará sem problemas.
Utilizando Múltiplos Appenders
usar múltiplos appenders é uma tarefa simples de especificar cada appender no root logger, como no exemplo abaixo:
Você pode utilizar quantos appenders quiser, sabendo que cada appender irá usar mais processamento.
------------------
Exemplos de Log4net criados durante teste:
Visão geral sobre o Windows 7
domingo, 2 de agosto de 2009
DropdownList has a SelectedValue which is invalid because it does not exist in the list of items
DropdownList has a SelectedValue which is invalid because it does not exist in the list of items.
A solução que adotei foi incluir o parametro AppendDataBoundItems="True" para que seja possível adicionar itens novos ao controle DropDownList e uma rotina de tratamento no evento onDataBound do controle (ondatabound="ddlOrigem_DataBound") que executa uma verificação de existência do registro que será atribuído o estado de selecionado. Repare que através do try catch é possível evitar a apresentação de mensagens de erro.
Veja o código da função abaixo:
protected void ddlOrigem_DataBound(object sender, EventArgs e)
{
FormView fv = frmEditar;
DropDownList ddl = (DropDownList)fv.FindControl("ddlOrigem");
ddl = sender as DropDownList;
ddl.SelectedIndex = 0;
try
{
ddl.SelectedValue = ((GetDataItem() as DataRowView).Row["Conteudo_OrigemID"]).ToString();
}
catch { }
}
segunda-feira, 20 de julho de 2009
Instalando o Internet Explorer 8
Para instalar o IE8 primeiramente acesse a página do portal MSN da Microsoft. Em seguida clique no banner disponibilizado logo abaixo do logotipo. A barra contém um botão com os dizeres: Baixe agora. É gratis!
Depois de clicar será exibida a caixa Salvar Como onde você deverá selecionar o local onde o arquivo de instalação ficará armazenado. O arquivo possui pouco mais que 20MB e depois do download estar concluído execute o programa. Clique em avançar até aparecer o botão concluir. Será necessário reiniciar o computador.
Ao abrir o IE8 depois de reiniciar a máquina, será exibida a janela Configurar o Windows Internet Explorer 8 já falando sobre os novos recursos como a recuperação de informações das sugestões de pesquisa enquanto digita e os Aceleradores, que permitem a você visualizar os serviços online apenas apontando o mouse para eles. Existe ainda um link para uma página de explicações dos recursos.
Ao clicar em Avançar o assistente pergunta se você deseja ativar a sugestão de sites relacionados aos sites que você navega.
No próximo passo será solicitado que você escolha se o Internet Explorer 8 utilizará as configurações pré-determinadas sobre a pesquisa de atualizaçõies, filtro de SmartScreen e modo de exibição de compatibilidade, ou determinar as configurações manualmente.
Para ver mais informações nada melhor do que o próprio site do Internet Explorer no url http://www.microsoft.com/portugal/windows/internet-explorer/welcome/tour.html e também http://www.microsoft.com/portugal/windows/internet-explorer/welcome.aspx.
Vou criar mais artigos sobre o IE8 em breve.
sexta-feira, 17 de julho de 2009
Apresentação do mundo ASP.NET ao Desenvolvedor PHP
Tópicos abordados: Comparando as Arquiteturas, Diferenças de Linguagens, Acesso a Dados e Quando Migrar de PHP para ASP.NET
Serão abordados diversos assuntos sobre os tópicos analisados.
- Comparando as Arquiteturas
- Desafios: medos do desenvolvedor php com custos, compilação de código, questões sobre multi-plataforma, conexões com bancos de dados e código aberto;
- O primeiro medo em relação a Microsoft é o custo de utilizar produtos originais licenciados;
- Também é abordado o tema da compilação através do código gerenciado diferente da antiga compilação Win32;
- Será mostrado em quais plataformas as aplicações serão executadas;
- Existe a questão do código aberto;
- Comparação entre as arquiteturas:
- O PHP é gerado pelo servidor Apache com mod_php, enquanto o ASP.NET é gerado pela combinação do IIS com o ASP.NET;
- Existe a opção de rodar ASP.NET sob Apache com a utilização de componente;
- A camada de negócios do ASP.NET é bem definida e conta com recursos de orientação ao objeto enquanto o PHP normalmente não apresenta camada de negócios bem definida, ficando a maior parte da lógica da negócios dentro da camada de apresentação do site;
- O ASP.NET possui suporte para providers diversos com recursos especiais para o SQL Server (conexão com qualquer banco de dados que suporte OLEDB ou ODBC) enquanto o PHP utiliza o banco de dados MySQL e outros;
- A plataforma PHP roda sempre no mod_php dentro do servidor web Apache enquanto no asp.net temos toda a aplicação rodando dentro do servidor IIS, e temos uma separação da interface do código de programação, chamado code-behind, permitindo que seja possível que designers e programadores possam trabalhar paralelamente;
- Camada de Negócio
- O PHP embute na própria camada de interface ou em bibliotecas, como funções;
- O ASP.NET possui camada de negócios isolada utilizando as linguagens C# e VB, e suportando mais de 50 linguagens, incluindo PHP;
- A compilação do PHP com Zend Opcodes é pouco utilizada enquanto o ASP.NET executa uma compilação durante o primeiro acesso a página utilizando MSIL;
- O ASP.NET possui ferramentas de debug nativas. O visual web developer é gratuito e possui todos os recursos do visual studio;
- Quanto a sintaxe o PHP utilizáveis fracamente tipadas enquanto o ASP.NET trabalha com varáveis fortemente tipadas. O PHP suporte apenas a linguagem de programação PHP enquanto o ASP.NET dá suporte a diversas;
- Quanto ao Gerenciamento de Estado o ASP.NET oferece outras formas de armazenamento de informações de estado além do Session como Application, Cache e ViewState, enquanto o PHP dispõe apenas de Session. O ViewState por exemplo habilita o armazenamento dos valores dos campos e respectiva recuperação automatica após qualquer postback;
- A validação deve ocorrer tanto no cliente quanto no servidor. A validação no lado do servidor executada pelo PHP é realizada através de códificação no lado do servidor e no lado do cliente também é criada pelo desenvolvedor. No ASP.NET os controles de validação são automáticos. É necessário apenas arrastar o controle e indicar o controle que deverá ser validado tanto no cliente quanto no servidor;
- O acesso a dados do ASP.NET é realizado com o ADO.NET que é o framework de acesso a dados do framework .net. Possui arquitetura de providers com acesso unificado a diversos sistemas gerenciadores de bancos de dados, trabalha de maneira conectada ou desconectada com a utilização dos DataSets que oferece os recursos para trabalhar localmente e fazer a sincronização com o banco de dados da aplicação. O ASP.NET também é fortemente tipado e assim oferece maior segurança e integridade para aplicação. E ainda o controle Connection Pooling que gerencia as conexões de dados existentes;
- A biblioteca ASP.NET AJAX disponibiliza o suporte transparente ao AJAX e acesso rico aos controles AJAX através de javascript disponível na biblioteca asp.net ajax;
- Para utilizar o ASP.NET AJAX basta acessar o endereço http://ajax.asp.net e baixar o ASP.NET 2.0 AJAX Extensions 1.0, fazer o download e instalar. E para utilizar os recursos do ASP.NET AJAX você pode criar um novo web site e selecionar o template ASP.NET AJAX-Enabled Web Site;
quinta-feira, 16 de julho de 2009
Off-Topic - Vídeo meu dropando com skate longboard
Novidades no Microsoft Word 2007
Tenho a intenção de criar artigos sobre tecnologias de diversas áreas e para diversos níveis de conhecimento em informática e tecnologias da informação. Em outras publicações abordei temas voltados para o desenvolvedor web, indiquei endereços de páginas, dicas sobre o windows, outlook, e dando continuidade, pretendo abordar nesta postagem, algumas informações sobre o programa editor de textos Microsoft Word 2007.
Não posso deixar de começar falando sobre a nova faixa de opções que traz uma nova abordagem de interface, tendo como característica a disponibilidade de dos botões de comando mais usados em cada grupo de comandos. A faixa é subdivida em guias cada uma enfatizando uma área principal de atividade, e em cada guia há grupos, exemplo Área de Transferência. Em cada comando também existem mais opções de formatação. Para exibir as caixas de diálogo é necessário apenas clicar no pequeno seletor localizado na barra de título de cada caixa de opções.
A mini barra de ferramentas é outro recurso que facilita a utilização de recursos do software. Ao selecionar objetos ou trechos de texto, a barra será exibida com transparência mas as opções serão destacadas assim que o mouse estiver sobre a mini barra.
Outra novidade importante é a barra de ferramentas de acesso rápido, que permite a inclusão de botões para que você tenha seus recursos mais usados sempre visíveis na tela. Para adicionar um botão na mini barra de ferramentas, clique com o botão direito sobre a barra e escolha a opção Personalizar a Barra de Ferramentas de Acesso Rápido.
Ao acessar o Word 2007 vemos em destaque o botão iniciar do Office localizado no canto superior esquerdo da janela. Este botão oferece os recursos iniciais para criar um novo documento, abrir documentos, acessar os últimos arquivos trabalhados, imprimir o documento, salvar cópia, preparar características de uso do documento, enviar o documento por email, publicar o documento em algum servidor, fechar o documento e ainda o acesso as opções de personalizar o Word.
Outra facilidade que ajuda muito na formatação de documentos é a caixa de estilos, que contém as formatações para aplicar a textos e títulos, agora também oferece o conjunto de estilos de formatação para documento a apenas um clique e esta facilidade de aplicação ajuda na hora de decidir qual a melhor opção.
Neste pequeno artigo falei sobre as novidades do editor de textos mais utilizado no mundo, o Microsoft Word na versão 2007.
terça-feira, 5 de maio de 2009
Erro de conflito da tag ScriptManager: System.Web.Configuration.ScriptingScriptResourceHandlerSection
Unable to cast object of type 'System.Web.Configuration.ScriptingScriptResourceHandlerSection' to type 'System.Web.Configuration.ScriptingScriptResourceHandlerSection'.
Para solucionar insira as tags abaixo dentro da tag
<assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentassembly>
<assemblyidentity publickeytoken="31bf3856ad364e35" name="System.Web.Extensions">
<bindingredirect newversion="3.5.0.0" oldversion="1.0.0.0-1.1.0.0">
</dependentassembly>
<dependentassembly>
<assemblyidentity publickeytoken="31bf3856ad364e35" name="System.Web.Extensions.Design">
<bindingredirect newversion="3.5.0.0" oldversion="1.0.0.0-1.1.0.0">
</dependentassembly>
</assemblybinding>
</runtime>