Postagens

Como informações dentro do CallContext são passadas entre threads?

Estes dias tenho feito testes para uma prova de conceito de uma infra que estou desenvolvendo, para instrumentar chamadas de métodos. Nela, a idéia é ir armazenando informações do contexto da chamada (parâmetros, tempo de chamada, usuário, máquina, etc), para se ter a rastreabilidade do que ocorre na execução dos sistemas. Cheguei na conclusão que o uso da classe CallContext é uma boa para manter essas informações, pois o que é armazenado nela é trafegado entre threads e appdomains, durante o contexto da execução (lembrando que os objetos nela armazenados devem implementar ILogicalThreadAffinative , para que funcione como desejado). Uma dúvida tinha ficado no ar... Como são mantidas as informações quando o contexto da execução passa para outras threads, por exemplo, via ThreadPool? A resposta está na classe ExecutionContext . Cada thread possui uma instância desse objeto associada, e é nessa instância que são armazenadas informações como contexto de segurança e sincronização. E ta...

MySQL error number 1005 Can’t create table ‘.\mydb\#sql-328_45.frm’ (errno: 150)

Tenho trabalhado em um projeto freelancer que utiliza base de dados MySQL. Fiz uma alteração em um modelo de dados, e entre as alterações tive que criar uma nova FK entre duas tabelas, sendo que a tabela pai antes não existia. Na hora de executar o script que cria a FK, me deparei com um erro, a primeira vista, complicado de resolver. A execução do script retornava: MySQL Error Number 1005Can’t create table ‘.\mydb\#sql-328_45.frm’ (errno: 150) Após buscar um pouco no Google (o oráculo de todos os desenvolvedores!), encontrei uma página que explicava este erro. A página, em inglês, é http://www.verysimple.com/blog/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/ . Basicamente e neste caso, este erro ocorre porque os pré-requisitos para a criação de uma FK não foram atendidos. Para conferir se todos os itens necessários para a FK foram atendidos, é só seguir a checklist abaixo: Os campos da tabela pai e da tabela filho são do mesmo tipo e tamanho? De iní...

PostSharp

Estou entusiasmado com uma ferramenta chamada PostSharp. Ela trabalha no conceito de programação orientada a aspectos (AOP), e diferente do Spring.NET ou Policy Injection App Block, ela altera o código IL das dll's geradas para inserir o código que faz a interceptação das chamadas. Acho que estou indo rápido demais, rs, mas hoje só vou colocar o link dessa ferramenta. Lá existe um ótimo tutorial de como usá-la http://www.postsharp.org/ . Depois eu coloco mais coisas sobre ela, conforme for descobrindo. []'s

Artigos "perdidos" na Internet

Olá! Tive a curiosidade de procurar meu nome no Google. Encontrei algumas coisas "esquecidas": dois artigos que escrevi faz tempo, e que nem lembrava que ainda estavam disponíveis na Internet. Um bem básico, quando estava começando a mexer com ASP.NET, que publiquei no site Asp4Developers (do Rubens Farias): http://rubensfarias.blogspot.com/2004/01/aspnet-user-controls_04.html . Outro sobre Generics, quando lançaram no .NET 2.0: http://www.linhadecodigo.com.br/Artigo.aspx?id=780 . Quem sabe me animo a voltar a escrever mais? []'s

Impressão de Etiquetas com Reporting Services

Encontrei um artigo muito legal sobre impressão de etiquetas usando o SQL Reporting Services. http://altoonait.com/CS/blogs/lee/archive/2007/12/13/printing-labels-with-sql-server-reporting-services.aspx Um item que usei diferente na minha implementação: no lugar de ter uma coluna no datasource que informa o índice de cada elemento do mesmo, usei a função RowNumber(Nothing), ao invés do que o autor sugeriu ( =IIF(Fields!Rank.value mod 3=0,false,true) ). []'s Atualização 2012-08-24: O link original está quebrado, mas encontrei o artigo do blog em outro endereço:  http://blog.altoonait.com/2011/02/printing-labels-with-ssrs-2005.html

ASP.NET AJAX e a data da máquina

Primeiramente, PQP! Pronto, já me revoltei do erro tosco que eu estava tendo. Bom, estou desenvolvendo uma aplicação ASP.NET, com Visual Studio 2008 e AJAX, quando hoje o meu site começou a dar um erro estranho... Ao tentar abrir páginas com controles como TreeView, TabControl, etc, a mesma não era carregada corretamente. Imagens e recursos (como arquivos JavaScript) faltando, o que acabava caindo no erro " Sys is undefined " (basicamente, este erro ocorre porque o browser não consegue carregar alguns scripts através do ScriptResource.axd). Fiquei chateado com o erro (para não dizer pré-desesperado, rs). Para idenficar melhor o que estava acontecendo, peguei uma das urls geradas pelo ScriptResource.axd ou WebResource.axd e testei ela no browser. Apareceu um outro erro: " Specified argument was out of the range of valid values. Parameter name: utcDate ". Google pra cá, Google prá lá, acabei encontrando algumas pessoas que tiveram esse problema quando a hora...

Permissões para uso do EventLog - Windows 2003

Olá, pessoal! Hoje vou falar sobre alguns problemas que tive que passar, a respeito do uso do EventLog, mais especificamente na gravação. São os erros: System.Security.SecurityException: Requested registry access is not allowed. Este erro ocorre quando uma aplicação tenta gravar um registro no EventLog, mas não possui permissões para gravar no registry do Windows. Isso acontece porque o os sources do EventLog ficam armazenados no registry, embaixo da seguinte chave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\Application (isso para os sources que ficam na no Application, ainda temos os do Security, System, e outros que você venha a criar). Quando se quer criar um source novo, deve-se escrever no registry. O importante a notar aqui é que a conta que está tentando escrever no EventLog deve ter permissão de escrita nessas chaves do registry. Ou então esse source já deve estar criado, para que este problema não ocorra. Obs. Esse problema de permissão pode ser verificado a...