"Nada na vida é completamente errado. Até um relógio quebrado, duas vezes ao dia está marcando a hora certa."

counterstrikeOlá Pessoal! Não escondo que sou “meio” viciado em quadrinhos, games, filmes, etc. Pois bem, depois de algum tempo parado decidi voltar a jogar um dos games mais viciantes da minha adolescência: O Counter-Strike. Voltei a jogar somente para dar uma surra no pessoal do escritório (@hrosko e @andrepiresmct), mas acabei deixando-o instalado e jogando eventualmente.

Apensar das coisas não terem muito a ver uma com a outra, comecei a traçar uma linha entre Counter-Strike e Desenvolvimento de Software, uma espécie de “boas práticas” comuns para ambos. Pensei muito antes de escrever esse post, depois desencanei e vi que o máximo que pode acontecer é que essas dicas ajudem vocês a desenvolver melhor ou a jogar melhor, então vamos lá:

Não adianta ser estrela em time que está perdendo: Mesmo com o melhor jogador no seu time, não há garantias de que o mesmo será campeão. É muito mais efetivo ter membros de nível mediano e bem entrosados em um time do que ter várias “estrelas” jogando no estilo cada um por si.

Evite ser herói: Quando damos de cara com vários membros do time adversário, a melhor estratégia é “correr”. Correndo você poderá enfrentar cada adversário separadamente. Alguns desenvolvedores/times trabalham com várias estórias em simultâneo, o que dá uma falsa impressão de produtividade. Quando falamos em requisitos, a melhor estratégia também é dividir para conquistar, ou seja, ao invés de “atacar” várias ao mesmo tempo, podemos atacá-las uma de cada vez (Imagine todo o time atirando em um único membro do time adversário :) ).

90% não é 100%: É sempre melhor tirar 100% de um adversário do que 70% de dois. Um adversário com 1% de life ainda atira, e com ajuda da Lei de Murphy ele pode levar vários membros do time antes de morrer.  Em uma Sprint temos que nos concentrar em terminar cada estória antes de passar para próxima, assim, ao final da Sprint mesmo que não tenhamos concluído todas as estórias teremos algumas concluídas ao invés de todas em 90% (e nada efetivo para entregar).

Ao final de um round, devemos nos preparar para o próximo: Fases rápidas não habilitam a compra de itens no início do round, porém, ao final podemos ir a pontos específicos do mapa e comprar coletes e granadas. Estar preparado no início de uma Sprint pode fazer tanta diferença quanto lançar uma granada no início do round, mas, afinal de contas o que seria estar preparado? Poderia ser a obtenção de um conhecimento específico que adiantaria todos os requisitos em 50% de todas as estórias por exemplo.

Ser efetivo e econômico traz grandes vantagens: Se você pode acabar com um adversário com uma única bala (Headshot), por que usar 10? Quanto menos balas você gastar menos terá que recarregar durante o round, o que pode salvar sua vida. Ninguém começa no CS conseguindo 100% de Headshots, esse número vai crescendo com o tempo e experiência (pelo menos com os jogadores normais). Na área de desenvolvimento, ninguém nasce extremamente produtivo, porém, é nossa obrigação buscar aumentar a produtividade através de novos conhecimentos e/ou novas ferramentas.

Quem fica parado morre: Preciso argumentar? :)

Adaptabilidade é crucial: Você pode ter sua arma predileta, mas ela pode não ser a mais efetiva em algumas fases ou em algumas situações. Na área de desenvolvimento temos cada desenvolvedor tem sua ferramenta preferida, pode ser um linguagem, um framework, uma IDE, etc. O ideal no ramo de desenvolvimento é não ficar preso as coisas somente pela predileção, mas sim pela sua efetividade no contexto em que será aplicada.

Poderia enumerar aqui várias outras práticas que ajudam em ambas as partes, mas prefiro deixar vocês pensarem no assunto e quem sabe compartilharem aqui os seus pensamentos.

Para variar, vou jogar um pouquinho.

Abraços!

Tagged with:
 

Mercado e Carreira em Desenvolvimento de Software

"Otimismo é a fé que conduz ao sucesso." - Bruce Lee

A pedido do Prof. Lourival Cristofoletti apresentei para uma turma e Ciência da Computação na Faculdade Faesa dicas sobre o mercado e a carreira de desenvolvimento de software. Essa palestra já foi há algum tempo, mas estava organizando as apresentações no meu computador e esbarrei com essa palestra.

Engraçado como as coisas acontecem, olhando as fotos da palestra vejo que um dos coordenadores do MSDev-ES e atual membro do time de desenvolvimento da Mindworks estava lá, o Rafael Hrasko. A foto também mostra o ponto onde iniciei algumas boas amizades, afinal, ainda sou formando na Faesa.

A idéia da palestra surgiu a partir de algumas conversas com o Prof. Lourival, que sempre foca nas suas aulas em dicas sobre a carreira e no desenvolvimento profissional dos alunos. Fiquei muito feliz com a confiança depositada em mim pelo Prof. Lourival, afinal de contas, não sou tão mais velho do que os alunos daquela turma, só iniciei na área mais cedo. Depois dessa palestra, decidi escrever algumas idéias sobre Mercado e Carreira, e ingressei no time de colaboradores do Portal Minha Carreira.

Decidi gravar a palestra no formato de screencast e disponibilizá-la aqui no entuito de ajudar quem estiver começando nessa área da qual me orgulho tanto trabalhar. Espero que gostem. Aguardo o Feedback de vocês.

Screencast

Fotos

Apresentação

Tagged with:
 
"A preguiça é a mãe do progresso. Se o homem não tivesse preguiça de caminhar, não teria inventado a roda."

PrevisibilidadeA cada dia que passo na área de desenvolvimento de software percebo que a mesma é peculiar em vários aspectos. É comum pessoas de outras áreas formarem opiniões sobre a nossa área usando como referência suas áreas de conhecimento, o problemas disso é que, geralmente, só quem é da área de software consegue ter uma visão realista sobre as características e problemas da área.

Após vários debates sobre o tema, decidi fazer um post sobre Previsibilidade em desenvolvimento de software. Decidi abordar o tema em uma apresentação ao invés de escrever, pois acredito que assim consegui expressar melhor as características que fazem com que seja tão difícil na nossa área estimar o tempo de desenvolvimento dos projetos.

Veja mais sobre previbilidade em desenvolvimento de software na tag “Previsibilidade” no delicious: delicious.com/denisferrari/Previsibilidade

Fico no aguardo dos feedbacks!

Abraços!

Tagged with:
 

[OFF-TOPIC] Uniempreendedor 2009

DSC02588

O Concurso

No início do semestre passado eu iniciava a disciplina de empreendedorismo na Faesa. Passei boa parte do curso de sistemas de informação esperando por essa disciplina e as reflexões que ela causaria, porém, não imaginei que ela ofereceria a grande oportunidade de participar do Uniempreendedor, o concurso que é organizado anualmente pela Tecvitória para avaliar o potencial empreendedor do estudante.

O objetivo do concurso é avaliar dentre os projetos submetidos, qual tem a maior chance de gerar bons resultados como produto ou serviço. A faculdade seleciona os melhores projetos e envia para Tecvitória que, por sua vez, realiza uma série de avaliações até que os projetos restantes sejam apresentados para uma banca avaliadora que definirá o resultado do concurso.

A Oportunidade

Em paralelo à disciplina de empreendedorismo, o Sr. Uilton Campos e Eu estávamos preparando nosso TCC. Quem já passou por essa etapa da vida sabe o esforço necessário para conclusão desse trabalho e, como nosso projeto possui uma complexidade considerável, tínhamos mais trabalho que o normal.

Quando o professor divulgou o concurso em sala de aula, não pensei duas vezes, marquei uma reunião e apresentei o projeto com todos os argumentos que eu tinha na manga. Ao final, não existiam razões para que o mesmo não concorresse.

O poder de persuasão foi exaustivamente testado pois, além de convencer o professor que projeto era viável sem possuir um protótipo, também era necessário convencer Uilton, devido ao fato de já estarmos totalmente sem tempo, graças ao TCC.

Uma das principais características do empreendedor é acreditar na sua idéia e conseguir fazer com que as pessoas que estão ao seu redor também acreditem ao ponto de quererem ajudá-lo. Na minha opinião, essa característica definiu essa etapa.

A Faesa selecionou dois projetos para o concurso: O Velloz (nosso projeto) e um Jogo on-line desenvolvido por Rafael Hrasko.

O Desenvolvimento do projeto

A proposta que foi submetida inicialmente era muito simples. Era bascimente uma visão geral do projeto.

Quando chegamos à segunda fase do concurso, fomos premiados com um curso para análise de viabilidade técnica e financeira de projetos. O curso foi ministrado por Douglas Chamon, que, atendendo às minhas preces, é formado em economia e não em marketing.

O curso foi muito produtivo. Ganhamos argumentos para provar a viabilidade dos projetos de uma forma que não conhecíamos. Foi também nessa fase que conhecemos melhor os projetos concorrentes.

Todo dia após o curso tínhamos uma missão: Melhorar o nosso plano de negócios. Era muito trabalho para pouco tempo pois, logo ao final do curso, já tínhamos que entregar o documento. Uilton e Eu passamos o final de semana na Qualidata (empresa que ele trabalha) confeccionando o documento. Eu não agüentava mais olhar para ele e vice-versa. Foi extremamente cansativo.

O documento tinha que apresentar os detalhes da execução do projeto. Só as equipes que persistiram chegaram ao final dessa fase, pois algumas pessoas perceberam durante o curso que seus projetos não eram viáveis. Foi necessária muita força de vontade para concluir essa etapa.

O pior entrave dessa fase foi separar o que era plano de negócios do que era TCC. Como estávamos desenvolvendo os dois ao mesmo tempo, em alguns momentos nossas mentes não faziam essa distinção.

A experiência de escrita foi muito rica e muito cansativa. Basicamente tínhamos sempre que dizer indiretamente as coisas, de forma responsável e com as respectivas fontes. O documento ficou muito bom (avaliação pessoal) e até hoje, o tenho como referência para elaboração de documentos semelhantes.

A Defesa do projeto

DSC01997Depois de ouvir todo tipo de rumores sobre a banca de avaliação, fiquei extremamente preocupado com os questionamentos que seriam feitos. O que aumentou minha insegurança foi que na mesma época eu havia realizado uma palestra, na qual não obtive um bom desempenho. Sendo assim, fora a pressão da avaliação, eu estava de moral baixa.

Devido à importância da defesa do projeto, passei o final de semana ensaiando cada parte da apresentação. Sempre me preparei para dar aulas, palestras ou dissertar sobre qualquer assunto em público, mas como estava de consciência pesada devido à minha última performance, não podia errar duas vezes consecutivamente. Até hoje me pergunto se o resultado do concurso seria diferente se eu não tivesse me preparado tanto para a defesa do projeto.

Quando chegamos para apresentação, outra equipe estava apresentando e por sinal sendo muito criticada (o que não quer dizer nada). Entramos, apresentamos o projeto e ao final da apresentação, ocorreu um silêncio na sala. Não sabíamos se o silêncio era bom ou ruim, mas foram alguns segundos de tensão.

A banca elogiou muito a apresentação e o projeto, mas o negócio que estávamos propondo era consultoria, e esse não era o melhor modelo de negócio para o concurso, pois não era tão escalável quanto os outros modelos de negócio. Saí de lá com a sensação de missão cumprida e com minha moral de volta, mas não esqueço a lição da preparação e ensaio, sempre.

O Resultado

Duas semanas após a apresentação o resultado foi divulgado: Ficamos em terceiro lugar. O projeto que ganhou foi o que estava sendo criticado pela banca quando chegamos para a apresentação.

Não gostei de ter ficado em terceiro lugar, mas entendi o motivo. Os outros projetos eram realmente bons e conseguiam ser escalados mais facilmente. Isso definiu o resultado do concurso.

O Prêmio

Fizemos uma viagem à São Paulo, onde finalmente pude conhecer melhor a cidade. O Sr. Vinícius, da Tecvitória fez um tour muito bacana com a gente. Visitamos alguns eventos que estavam ocorrendo e ainda conhecemos a Endeavor, que particularmente, foi a parte da viagem que eu mais gostei.DSC02576

Como ninguém é de ferro, aproveitamos para conhecer os principais bairros e bares da cidade. Por obra do destino, em pleno Saint Patrick’s Day eu estava em São Paulo e, como devoto fiel, fui celebrar no Asterix (sozinho, pois o pessoal não aguentou e foi dormir cedo).

A experiência do concurso foi muito rica, mas estar em São Paulo como turista tendo a oportunidade de trocar idéias com um empreendedor como o Vinícius da Tecvitória realmente foi muito benéfico.

Conclusão

O Uniempreendedor foi uma experiência única. Daquelas em que a viajem vale mais do que o destino final.

Apesar das noites perdidas, do trabalho e de todo o stress que passamos, eu participaria novamente.

Fica a dica para os empreendedores de plantão. Essa experiência e o conhecimento obtido vão me acompanhar por toda a vida.

Tagged with:
 

Como você define qualidade de software?

"A qualidade nunca se obtém por acaso; ela é sempre o resultado do esforço inteligente." (John Ruskin)
Doctor Who

Doctor Who

Muitos profissionais da nossa área têm dificuldades em definir qualidade de software devido à quantidade de aspectos que precisam ser considerados para avaliar se um software possui ou não qualidade. Apesar do processo de avaliação da qualidade ser amplo e complexo, a definição de qualidade de software é simples de ser compreendida.

Para avaliar a qualidade de um computador, avaliamos separadamente a qualidade de seus componentes, como vídeo, som, capacidade de processamento e quantidade de memória. A qualidade do computador pode ser considerada uma média das avaliações individuais de seus componentes. No software, a mesma idéia pode ser aplicada, porém, ao invés de olharmos para os componentes que o formam devemos olhar para como ele atende aos seus stakeholders: o cliente que paga pelo software, o usuário que trabalha diretamente com o software no seu dia-a-dia e o fornecedor que constrói ou mantém o software.

Um software que atende ao cliente é aquele que atende ao objetivo para o qual ele foi construído (atender ao objetivo é mais importante do que respeitar o escopo inicial). Outro fator importante é fazer com que o software seja construído de forma a preservar o investimento do cliente, ou seja, fazer com que o trabalho de mapeamento do domínio e de seus processos não se perca quando uma tecnologia específica precisar ser substituída (a camada de apresentação, por exemplo).

Um software que atende ao usuário é aquele que resolve os principais problemas do seu dia-a-dia de forma simples e objetiva e usa como base da comunicação a linguagem que o usuário domina: A linguagem de seu domínio.

Um software que atende ao fornecedor é aquele que visa não só a construção rápida do projeto, mas também práticas de engenharia e testes que possibilitem à equipe responsável pela manutenção do sistema tenham total autonomia na execução de suas tarefas. Usar práticas que facilitem a manutenção do software é fazer com que o investimento do cliente dure ao máximo, e todo profissional da área tem a responsabilidade de construir softwares pensando na próxima pessoa que irá manter o projeto.

Um software de qualidade é a base para um bom relacionamento com o cliente, com os usuários e com as equipes de desenvolvimento. Um software que não atende aos três stakeholders terá uma vida curta e será responsável por muitas dores de cabeça.

Cada área de estudo citada aqui direta ou indiretamente possui métodos e processos específicos para garantia da qualidade. É dever de todo profissional de desenvolvimento conhecer essas técnicas e utilizá-las da melhor forma possível visando obter um bom resultado ao final da jornada de desenvolvimento.

Aguardo feedbacks!

Recomendações de leitura:

Ubiquitous Language

DDD

Integração contínua

Negociação de contratos

Veja também:

Tagged with:
 

Guia de estudo: Exame 70-536

"Quanto mais aumenta nosso conhecimento, mais evidente fica nossa ignorância." (John F. Kennedy)

Sheldon ensinando...Como comentei no post anterior pretendo publicar todo conteúdo que tenho off-line, e o que meus alunos e colegas de trabalho mais solicitam são os resultados das pesquisas que fiz quando estava estudando para realizar as provas da Microsoft.

Como já trabalhava há algum tempo com desenvolvimento, não foi tão difícil completar os skills que eram necessários para realizar a prova com segurança, mas como estudar não mata ninguém resolvi revisar uma série de aspectos do framework que não trabalhava com tanta frequência, foi a melhor coisa que fiz. Você realmente conhece o framework .net? Reflita um pouco, respire fundo e olhe os assuntos abordados nas provas conceituais e técnicas, você vai se surpreender.

As provas e certificações não são um fim, mas sim um meio de se obter o conhecimento necessário para dominar a plataforma ou ferramenta que você trabalha, sendo assim, a postura de profissionais que acham que suas certificações os diferenciam em alguma coisa não é uma verdade absoluta, o que realmente diferencia um profissional é o fato dele saber usar corretamente o seu “cinto de utilidades“, ou seja, saber aplicar corretamente o conhecimento adquirido ao longo de sua carreira. Participei de uma mesa redonda no grupo DFTestes onde vários profissionais apresentaram suas visões sobre o assunto, o resumo está disponível no site QualidadeBR, invista um tempo para refletir sobre os comentários feitos lá.

Vamos ao que interessa, seguem os links que me ajudaram a estudar para o exame 70-536:

Página oficial do exame
http://www.microsoft.com/australia/learning/exams/70-536.mspx

E-book
http://www.free-ebooks-download.org/free-ebook/dotnet/MCTS%20Dumps/mcpd-70-536.php

Links e artigos com o conteúdo da prova

Nessa relação constam artigos do MSDN, Israel Aece e Macoratti.

Developing applications that use system types and collections

Manage data in a .NET Framework application by using .NET Framework system types

Value Types (C# Reference)
Nullable Types (C# Programming Guide)
Reference Types (C# Reference)
Attributes (C# Programming Guide)
Generic Type Parameters (C#)
Exception Class
Boxing and Unboxing (C# Programming Guide)
TypeForwardedToAttribute Class (System.Runtime.CompilerServices)

TypeForwardedToAttribute at C# Online.NET (CSharp-Online.NET)Tipos de dados em .NET

Manage a group of associated data in a .NET Framework application by using collections

BitArray Class (System.Collections)
ICollection Interface (System.Collections)
Queue Class (System.Collections)
ReadOnlyCollectionBase Class (System.Collections)
LinkedList Generic Class (System.Collections.Generic)
EqualityComparer(T) Class (System.Collections.Generic)

Israel Aéce – Trabalhando com Coleções – Parte 1
Israel Aéce – Trabalhando com Coleções – Parte 2
Israel Aéce – Trabalhando com Coleções – Parte 3
Israel Aéce – Trabalhando com Coleções – Parte 4

Manage data in a .NET Framework application by using specialized collections

BitVector32 Structure (System.Collections.Specialized)

Implement .NET Framework interfaces to cause components to comply with standard contracts

IComparable Interface (System)
IDisposable Interface (System)
IConvertible Interface (System)
ICloneable Interface (System)
IEquatable(T) Interface (System)
IFormattable Interface (System)

Liberando os objetos de forma apropriada

Control interactions between .NET Framework application components by using events and delegates

Delegate Class (System)
EventArgs Class (System)
EventHandler Delegate (System)
delegate (C#)
How to: Combine Delegates (Multicast Delegates)(C#)

Simple and Multicast Delegates in C#.net
Linha de Código – Delegates e Eventos com C#.NET

Implementing service processes, threading, and application domains in a .NET Framework application

Implement, install, and control a service

Linha de Código – Por dentro da Base Classe Library – Capítulo 11 – Criando Serviços do Windows

Develop multithreaded .NET applications

Thread Class (System.Threading)
ThreadPool Class (System.Threading)
WaitCallback Delegate (System.Threading)

Foreground and Background Threads
Linha de Código – Usando Threads e Timer em ASP.NET
Israel Aéce – Threading – Parte 1
Israel Aéce – Threading – Parte 2
Israel Aéce – Threading – Parte 3
Israel Aéce – Threading – Parte 4

Embedding configuration, diagnostic, management, and installation features into a .NET Framework application

Embed configuration management functionality into a .NET Framework application

Linha de Código – Por dentro da Base Classe Library – Capitulo 3 – Utilização de Assemblies

Manage an event log by using the System.Diagnostics namespace

EventLog Class (System.Diagnostics)
How to: Create EventLog Component Instances
How to: Read Event Log Entries

Israel Aéce – Monitoramento e depuração de aplicações – Parte 1

Manage system processes and monitor the performance of a .NET application by using the diagnostics functionality of the .NET Framework

Process Class (System.Diagnostics)
PerformanceCounter Class (System.Diagnostics)
PerformanceCounterCategory Class (System.Diagnostics)
CounterCreationData Class (System.Diagnostics)
StackTrace Class (System.Diagnostics)
StackFrame Class (System.Diagnostics)

Retrieving Information About Processes
Process.GetProcessesByName Method (String) (System.Diagnostics)
How to: View Running Processes
How to: Investigate Libraries Loaded by Processes
Israel Aéce – Monitoramento e depuração de aplicações – Parte 2
Linha de Código – Manipulando processos através da classe System.Diagnostics.Process
How to get the Process Name in C#? C# Friends

Debug and trace a .NET Framework application by using the System.Diagnostics namespace

Debug Class (System.Diagnostics)
Classe Debugger (System.Diagnostics)
Classe Trace (System.Diagnostics)
TraceSource Class (System.Diagnostics)
SourceSwitch Class (System.Diagnostics)
CorrelationManager Class (System.Diagnostics)
TraceSwitch Class (System.Diagnostics)

Israel Aéce – Criando um DebuggerVisualizer
What is the difference between the Debug class and Trace class?
Israel Aéce – Monitoramento e depuração de aplicações – Parte 2
Israel Aéce – Monitoramento e depuração de aplicações – Parte 3
Israel Aéce – Monitoramento e depuração de aplicações – Parte 4
Israel Aéce – Monitoramento e depuração de aplicações – Parte 5
Usando técnicas de Trace e Debug – Tiago Colombo – .Net

Embed management information and events into a .NET Framework application

Retrieving Collections of Management Objects
WQL (SQL for WMI) (Windows)
Windows Management Instrumentation (Windows)
Win32_Environment Class (Windows)
Win32_Service Class (Windows)
SelectQuery Class (System.Management)
ManagementQuery Class (System.Management)
ManagementObjectSearcher Class (System.Management)
ManagementOperationObserver Class (System.Management)
CompletedEventHandler Delegate (System.Management)
ObjectReadyEventHandler Delegate (System.Management)

Implementing serialization and input/output functionality in a .NET Framework application

Serialize or deserialize an object or an object graph by using runtime serialization techniques

System.Runtime.Serialization Namespace ()
StreamingContext Structure (System.Runtime.Serialization)
FormatterServices Class (System.Runtime.Serialization)
FormatterConverter Class (System.Runtime.Serialization)
Formatter Class (System.Runtime.Serialization)
ObjectManager Class (System.Runtime.Serialization)
SerializationInfo Class (System.Runtime.Serialization)

Linha de Código – Por dentro da Base Classe Library – Capítulo 6 – Serialização

Control the serialization of an object into XML format by using the System.Xml.Serialization namespace

System.Xml.Serialization Namespace ()
XmlSerializer Class (System.Xml.Serialization)

Implement custom serialization formatting by using the Serialization Formatter classes

SoapFormatter Class (System.Runtime.Serialization.Formatters.Soap)
BinaryFormatter Class (System.Runtime.Serialization.Formatters.Binary)

Access files and folders by using the File System classes

Linha de Código – Por dentro da Base Classe Library – Capítulo 5 – Manipulando o sistema de arquivos

Manage .NET Framework application data by using Reader and Writer classes

StringReader Class (System.IO)
StringWriter Class (System.IO)
TextWriter Class (System.IO)
TextReader Class (System.IO)
StreamReader Class (System.IO)
StreamWriter Classe (System.IO)
Classe BinaryWriter (System.IO)
BinaryReader Classe (System.IO)
System.IO Namespace ()

VB.NET -  Lendo e escrevendo em arquivo Textos
Linha de Código – System.IO: Criando um arquivo usando Visual Studio.NET 2005

Compress or decompress stream information in a .NET Framework application and improve the security of application data by using isolated storage

System.IO.Compression Namespace ()
DeflateStream Class (System.IO.Compression)
GZipStream Class (System.IO.Compression)
IsolatedStorageFileStream Class (System.IO.IsolatedStorage)
IsolatedStorageFile Class (System.IO.IsolatedStorage)

Como: obter armazenamentos para o armazenamento isolado
Israel Aéce – Compressão de Arquivos no .NET
Macoratti – Compactando e Descompactando arquivos
Compactando e Descompactando Arquivos com a classe GZipStream

Improving the security of .NET Framework applications by using the .NET Framework security features

Implement access control by using the System.Security.AccessControl classes

System.Security.AccessControl Namespace ()
DirectorySecurity Class (System.Security.AccessControl)
FileSecurity Class (System.Security.AccessControl)
FileSystemSecurity Class (System.Security.AccessControl)
RegistrySecurity Class (System.Security.AccessControl)
AccessRule Class (System.Security.AccessControl)
AuthorizationRule Class (System.Security.AccessControl)
AuthorizationRuleCollection Class (System.Security.AccessControl)
CommonAce Class (System.Security.AccessControl)
CommonAcl Class (System.Security.AccessControl)
CompoundAce Class (System.Security.AccessControl)
GenericAce Class (System.Security.AccessControl)
GenericAcl Class (System.Security.AccessControl)
AuditRule Class (System.Security.AccessControl)
MutexSecurity Class (System.Security.AccessControl)
ObjectSecurity Class (System.Security.AccessControl)
SemaphoreSecurity Class (System.Security.AccessControl)

Implement a custom authentication scheme by using the System.Security.Authentication classes

System.Security.Authentication Namespace ()

Encrypt, decrypt, and hash data by using the System.Security.Cryptography classes

System.Security.Cryptography Namespace ()
DES Class (System.Security.Cryptography)
DESCryptoServiceProvider Class (System.Security.Cryptography)
SHA1CryptoServiceProvider Class (System.Security.Cryptography)
SHA1 Class (System.Security.Cryptography)
DSACryptoServiceProvider Class (System.Security.Cryptography)
DSA Class (System.Security.Cryptography)
HashAlgorithm Class (System.Security.Cryptography)
TripleDES Class (System.Security.Cryptography)
RC2CryptoServiceProvider Class (System.Security.Cryptography)
RC2 Class (System.Security.Cryptography)
CryptoConfig Class (System.Security.Cryptography)
CryptoStream Class (System.Security.Cryptography)
RandomNumberGenerator Class (System.Security.Cryptography)
MD5CryptoServiceProvider Class (System.Security.Cryptography)
MD5 Class (System.Security.Cryptography)
TripleDESCryptoServiceProvider Class (System.Security.Cryptography)
HMAC Class (System.Security.Cryptography)
CryptoAPITransform Class (System.Security.Cryptography)
CspParameters Class (System.Security.Cryptography)
RijndaelManagedTransform Class (System.Security.Cryptography)
RijndaelManaged Class (System.Security.Cryptography)
ProtectedData Class (System.Security.Cryptography)
ProtectedMemory Class (System.Security.Cryptography)
AsymmetricAlgorithm Class (System.Security.Cryptography)
SymmetricAlgorithm Class (System.Security.Cryptography)

Linha de Código – Por dentro da Base Classe Library – Capítulo 8 – Criptografia
Linha de Código – Por dentro da Base Classe Library – Capítulo 8 – Criptografia
Linha de Código – Por dentro da Base Classe Library – Capítulo 8 – Criptografia

Control permissions for resources by using the System.Security.Permission classes

Code Access Security
Code Groups
Evidence
Named Permission Sets
System.Security.Permissions Namespace ()
SecurityPermission Class (System.Security.Permissions)
PrincipalPermission Class (System.Security.Permissions)
Evidence Class (System.Security.Policy)
FileIOPermission Class (System.Security.Permissions)
StrongNameIdentityPermission Class (System.Security.Permissions)
UrlIdentityPermission Class (System.Security.Permissions)
DataProtectionPermission Class (System.Security.Permissions)
IsolatedStorageFilePermission Class (System.Security.Permissions)
IUnrestrictedPermission Interface (System.Security.Permissions)
SiteIdentityPermission Class (System.Security.Permissions)
StorePermission Class (System.Security.Permissions)
ReflectionPermission Class (System.Security.Permissions)
KeyContainerPermission Class (System.Security.Permissions)
System.Security.Policy Namespace ()
PermissionRequestEvidence Class (System.Security.Policy)
ApplicationTrust Class (System.Security.Policy)
ApplicationSecurityManager Class (System.Security.Policy)
ApplicationSecurityInfo Class (System.Security.Policy)
UnionCodeGroup Class (System.Security.Policy)
NetCodeGroup Class (System.Security.Policy)
FirstMatchCodeGroup Class (System.Security.Policy)
FileCodeGroup Class (System.Security.Policy)
CodeGroup Class (System.Security.Policy)
IIdentityPermissionFactory Interface (System.Security.Policy)
IMembershipCondition Interface (System.Security.Policy)
IApplicationTrustManager Interface (System.Security.Policy)
PolicyStatement Class (System.Security.Policy)
PolicyLevel Class (System.Security.Policy)

Israel Aéce – Utilizando Code Access Security – CAS – Parte 1
Israel Aéce – Utilizando Code Access Security – CAS – Parte 2
Israel Aéce – Utilizando Code Access Security – CAS – Parte 3
Code Access Security – Wikipedia, the free encyclopedia

Implementing interoperability, reflection, and mailing functionality in a .NET Framework application

Expose COM components to the .NET Framework and .NET Framework components to COM

Platform Invoke Data Types
Linha de Código – Por dentro da Base Classe Library – Capítulo 12 – Interoperabilidade com componentes COM

Implement reflection functionality in a .NET Framework application, and create metadata, Microsoft intermediate language (MSIL), and a PE file by using the System.Reflection.Emit namespace

AppDomain Class (System)
Type Class (System)
System.Reflection Namespace ()
System.Reflection.Emit Namespace ()
MethodInfo Class (System.Reflection)
MethodBase Class (System.Reflection)
MethodBody Class (System.Reflection)
Assembly Class (System.Reflection)
AssemblyName Class (System.Reflection)
BindingFlags Enumeration (System.Reflection)
Binder Class (System.Reflection)
AssemblyBuilder Class (System.Reflection.Emit)

Linha de Código – Consultando e invocando métodos dincamicamente usando Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection

Send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery from a .NET Framework application

Linha de Código – Por dentro da Base Classe Library – Capítulo 10 – Envio de Mensagens (E-mails)

Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application

Format data based on culture information

CultureInfo Class (System.Globalization)
CultureInfo.CurrentCulture Property (System.Globalization)
CompareInfo Class (System.Globalization)
RegionInfo Class (System.Globalization)
CultureAndRegionInfoBuilder Class (System.Globalization)
Using the CultureInfo Class
Formatting Numeric Data for a Specific Culture
Formatting Date and Time for a Specific Culture
Performing Culture-Insensitive String Comparisons

Using Custom Cultures—Using CultureAndRegionInfoBuilder at C# Online.NET (CSharp-Online.NET)
Israel Aéce – Globalização de Aplicações – Parte 1
Israel Aéce – Globalização de Aplicações – Parte 2
Israel Aéce – Globalização de Aplicações – Parte 3

Fique ligado, em breve estarão disponíveis outros guias de estudo.

Abraços!

Tagged with:
 

Para variar, Hello World!

"O conhecimento é o processo de acumular dados; a sabedoria reside na sua simplificação." (Martin H. Fischer)

Heróis da T.I.Depois da experiência com outro blog no ano passado, decidi reestruturar minha linha de publicações criando um blog exclusivamente para tratar de desenvolvimento de software.

Este blog é a saída que encontrei para apresentar idéias sobre a área e poder divulgar pesquisas, estudos e treinamentos. Não tenho como objetivo criar conteúdos exclusivos ou fazer propaganda, o objetivo deste blog é simplesmente ajudar a comunidade com informações técnicas e reflexões sobre práticas, metodologias e manias que fazem da nossa área uma das áreas mais interessantes para se atuar (se você não gosta de ficar acomodado :) ).

Como tenho uma série de artigos preparados e muito conteúdo off-line, grande parte das publicações terão temas técnicos sobre .net e outras plataformas, porém, não acredito que nossa área seja deficiente nesse aspecto, acredito que muitos dos nossos profissionais precisem aprender a olhar o todo independente do papel que desempenham na equipe, no projeto ou na empresa onde estão.

Como profissionais de desenvolvimento, precisamos conhecer sobre diversas áreas, entender e mapear processos, criar realidades nos sistemas de informação que muitas vezes funcionam melhor do que no mundo real. Ajudamos empresas a melhorar seus processos e a otimizar suas rotinas, sem falar que nosso trabalho cria vantagens competitivas e também reduz drasticamente custos. Realmente somos heróis do mundo moderno, porém, infelizmente somos desconhecidos, somos desenvolvedores de software.

A partir de hoje vou usar outro twitter para publicar novidades sobre a área, irei usar o twitter do blog @heroisdati.

Fiquem ligados e contribuam com feedbacks.

Abraços!

Tagged with: