- Object Mocking em .Net (comecei a utilizar o Rhino.Mocks)
- OODB, ou seja, Object Oriented Databases (estou estudando o DB4O)
- Estou escrevendo um artigo sobre um dos novos recursos do Windows Vista (e também do Windows Server 2008), o KTM, ou, gerenciador de transações do Kernel, para uma revista sobre .Net.
- Lendo alguns livros, principalmente um sobre WCF.
- Etc.
Aug 28, 2007
Silencio...
Jun 15, 2007
Stream de dados alternativas
Para muitos usuários (e mesmo desenvolvedores) do Windows o conceito de arquivo esta tão sedimentado que muitas vezes melhorias significativas no sistema de arquivos deste sistema operacional (no caso o NTFS) são ignoradas.
Neste post apresento um dos recursos mais desconhecidos, stream alternativas de dados ou ADS (do inglês, Alternate Data Stream).
Para compreendermos este recurso é necessário primeiro definirmos (ou relembrarmos) alguns conceitos:
- Uma stream de dados nada mais é que um conjunto de bytes arranjados de forma seqüencial.
- Um arquivo é composto por uma ou mais streams de dados.
- Streams de dados possuem um nome associado através do qual a mesma é referenciada. A regra básica para formação do nome de streams é: nome-arquivo.ext:nome-stream:tipo-stream
- O nome da stream pode conter qualquer caracter válido para um nome de arquivo.
Como o Windows não possui meios (tanto no Explorer quanto no console) para detectar / mostrar arquivos que possuem ADS, abaixo listei algumas ferramentas úteis para tal finalidade:
- http://www.heysoft.de/Frames/f_sw_la_en.htm
- http://www.merijn.org/programs.php#adsspy
- http://www.gorvin.net/en/download.shtml
Usando ADSs
A forma mais simples para demonstrarmos este conceito é através do console do Windows. Abra o console (cmd.exe) e digite:
echo teste de streams > teste.txt:dados
Simples assim! O comando acima cria uma stream chamada dados com o conteúdo teste de streams.
Agora você pode conferir que o arquivo teste.txt foi criado mas o comando dir reporta o mesmo com 0 (zero) bytes.
Finalmente, para visualisar o conteúdo da stream digite
more < teste.txt:dados
Abaixo apresento um pequeno programa de exemplo para criar ADSs (note que o mesmo não possui nenhum tratamento especial, ou seja, a forma de acessar data streams alternativas é idêntica à utilizada para acessar a data stream default).
#include "stdio.h"#include "Windows.h" void main(int argc, char *argv[])
{HANDLE handle;
if (argc < 3) { printf("Nome da stream (formato: arquivo.ext:stream) ou dados nao especificados.\r\nUso: ads.exe nome-stream dados"); return;}
else { printf("\r\nGravando dados em %s", argv[1]);}
handle = CreateFile(argv[1],
GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
0, 0);
if (handle != INVALID_HANDLE_VALUE) {DWORD numberOfBytesWritten;
int n = WriteFile( handle, argv[2],
strlen(argv[2]),
&numberOfBytesWritten,
NULL);
printf("\r\n%ld bytes gravados", numberOfBytesWritten);CloseHandle(handle);
}
else { printf("Não foi possivel criar a stream de dados.");}
}
experimente executar o programa com alguns parâmetros como por exemplo:
ads teste.txt:dados "Teste de streams"
É isso ai.
Até a próxima.
May 15, 2007
Boa leitura
May 11, 2007
"COM" não esta morto (pelo menos eu espero)
Apr 10, 2007
Links sobre GC!
- http://blogs.msdn.com/tess/archive/2007/04/10/net-garbage-collector-popquiz-followup.aspx
- http://www.bluebytesoftware.com/blog/PermaLink.aspx?guid=86c71425-57bc-4fcb-b34b-3262812f12cf
- http://www.bluebytesoftware.com/blog/PermaLink.aspx?guid=88e62cdf-5919-4ac7-bc33-20c06ae539ae
- http://vineetgupta.spaces.live.com/blog/cns!8DE4BDC896BEE1AD!1104.entry
Feb 28, 2007
SerialWizard: Uau! 1649 Downloads (1 Gb!)
Descubra mais sobre você !
You are Mr. Freeze
|
You are cold and you think everyone else should be also, literally.
|
You are Green Lantern
|
Hot-headed. You have strong will power and a good imagination. |
Neste site você pode descobrir qual SO você é :)
Which OS are You? Neste site você pode descobrir qual linguagem de programação você é :)
Which Programming Language are You?
Finalmente qual extensão de arquivo você é!
Which File Extension are You?