set host=localhost
set user=youruser
set password=yourpassword
set file=%appdata%\Bitcoin\bitcoin.conf
set pf=%programfiles(x86)%
set start=start ""
if "%pf%"=="" set pf=%programfiles%
echo rpcuser=%user% > %file%
echo rpcpassword=%password% >> %file%
%start% "%pf%\Bitcoin\Bitcoin.exe" -server
for /l %%X in (0,1,1) do %start% poclbm.exe -o %host% -d%%X -u %user% --pass=%password%
quarta-feira, 6 de julho de 2011
Automatizando a mineiração de Bitcoins no Windows
Criei um pequeno script para facilitar a mineiração de Bitcoins no Windows
terça-feira, 8 de fevereiro de 2011
Como hospedar serviços WCF no IIS
Para o IIS 6.0 é necessário um comando a mais que para o IIS 7.0
"%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis" -i "%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i
Para no IIS 7.0 para Windows 64 bits é necessário adaptar o caminho
"%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis" -i
"%windir%\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i
terça-feira, 1 de fevereiro de 2011
Hudson CI versus Jenkins CI
Kohsuke Kawaguchi criou o Hudson-CI quando trabalhava na Oracle, mas a mesma licenciou o software como livre, com a exceção do nome “Hudson” que é propriedade da empresa.
Depois que Koshuke mudou de empresa, ele e a maioria esmagadora dos desenvolvedores queriam mover o repositório do site Java.net para o Github por causa do baixo percentual de disponibilidade do primeiro e das migrações com outages. A Oracle não concordou. Por isso agora o há um novo branch do Hudson. O mantido pelo desenvolvedor original e pela maioria da comunidade se passará a chamar Jenkins. Como ainda não há diferença entre as duas versões, tanto faz escolher. Mas como o Jenkins provavelmente terá mais desenvolvedores eu pretendo utilizá-lo.
Depois que Koshuke mudou de empresa, ele e a maioria esmagadora dos desenvolvedores queriam mover o repositório do site Java.net para o Github por causa do baixo percentual de disponibilidade do primeiro e das migrações com outages. A Oracle não concordou. Por isso agora o há um novo branch do Hudson. O mantido pelo desenvolvedor original e pela maioria da comunidade se passará a chamar Jenkins. Como ainda não há diferença entre as duas versões, tanto faz escolher. Mas como o Jenkins provavelmente terá mais desenvolvedores eu pretendo utilizá-lo.
Linq e seu filho mais famoso Linq-to-SQL
Com o .NET 3.0 e com o C# 3.0 foram introduzidas extensões à linguagem C# que mudou a forma de programar de muita gente. Uma das adições é uma syntaxe parecida com o SQL:
Mas também foram adicionados os Extension Methods:
Antes o tipo
int[] numbers = { 1, 2, 3 };
var numbersPlusOne =
from n in numbers
select n + 1;Mas também foram adicionados os Extension Methods:
int[] numbers = { 1, 2, 3 };
var numbersPlusOne =
numbers
.Select(n => n + 1);Antes o tipo
int[] não possuía o método Array.Select(Func<T, TResult>). Mas esse método pôde ser adicionado sem modificações à classe original através dos Extension Methods. Note que os dois trechos de código acima são equivalentes, apenas escritos de forma diferente, ambos em C# 3.0.
Breve introdução ao Mapeamento Objeto-Relacional para .NET
Antes do Mapeamento Objeto-Relacional (ORM em inglês) automatizado surgir tínhamos que desenvolver nossas classes de acesso a dados manualmente.
Esta classe é responsável por:
Esta classe é responsável por:
- expor métodos para consulta ou atualização do banco, e para cada um destes métodos:
- serializar os parâmetros
- gerar e executar o código SQL
- deserializar o resultado
E pelo fato da linguagem SQL mudar de um SGBD para outro, se ela for gerada manualmente a migração de bancos ficava muito difícil. Com a introdução dos ORMs estas classes não precisam mais serem escritas nem precisamos nos preocupar com migração de bancos.
Os principais ORMs para .NET são
- NHibernate (FOSS)
- Linq-to-SQL (.NET 3.0)
- Entity Framework 1.0 (.NET 3.5)
- Entity Framework 4.0 (.NET 4.0)
O que é o Windows Communication Foundation (WCF)?
O WCF é uma biblioteca de comunicação introduzida a partir da versão 3.0 do .NET Framework que permite isolar a "implementação do serviço" do "protocolo de comunicação". Além de facilitar a serialização e deserialização dos dados, esta biblioteca também disponibiliza implementações intercambiáveis dos principais protocolos de comunicação. por exemplo:
O WCF exige que os dados a serem comunicados e os métodos de comunicação sejam definidos em tempo de compilação, mas os protocolos de comunicação, endereços, métodos de autenticação, métodos de serialização, método de criptografia e outros detalhes da comunicação podem ser definidos em tempo de execução. A configuração destes itens pode ser feita sem escrever código, pois para a maioria das opções mais populares basta apenas mudar uma entrada no arquivo de configuração.
Alguns protocolos no WCF foram implementados para a interoperabilidade com outras linguagens e plataformas de desenvolvimento, além de poderem ser consumidos por clientes implementados em .NET. O WCF também permite expor metadados sobre o serviço, facilitando o consumo destes.
Serviços que utilizam WCF podem rodar no IIS ou em aplicações normais, sejam elas de linha de comando, aplicações gráficas ou serviços do Windows. O WCF pode ser usado em vários cenários, permitindo uma rápida e eficiente implementação de:
O WCF também foi implementado no framework Mono, mas apenas parcialmente.
- TCP
- HTTP - REST
- SOAP
- Named Pipes
- Message Queues
O WCF exige que os dados a serem comunicados e os métodos de comunicação sejam definidos em tempo de compilação, mas os protocolos de comunicação, endereços, métodos de autenticação, métodos de serialização, método de criptografia e outros detalhes da comunicação podem ser definidos em tempo de execução. A configuração destes itens pode ser feita sem escrever código, pois para a maioria das opções mais populares basta apenas mudar uma entrada no arquivo de configuração.
Alguns protocolos no WCF foram implementados para a interoperabilidade com outras linguagens e plataformas de desenvolvimento, além de poderem ser consumidos por clientes implementados em .NET. O WCF também permite expor metadados sobre o serviço, facilitando o consumo destes.
Serviços que utilizam WCF podem rodar no IIS ou em aplicações normais, sejam elas de linha de comando, aplicações gráficas ou serviços do Windows. O WCF pode ser usado em vários cenários, permitindo uma rápida e eficiente implementação de:
- comunicação entre processos da mesma máquina (ex: pipes nomeados)
- webservices
- web APIs
- comunicação desconectada (ex: message queue, envie e esqueça)
- comunicação bi-direcional (ex: assinatura e publicação)
O WCF também foi implementado no framework Mono, mas apenas parcialmente.
sábado, 29 de janeiro de 2011
As 4 componentes da programação Web
Sempre é bom relembrar: uma aplicação HTML é composta de 4 elementos:
- Conteúdo (strings)
- Estrutura (HTML)
- Comportamento (JavaScript)
- Apresentação (<br>, <font>, <center>, style e CSS)
Normalmente se separam estas partes nos seguintes arquivos:
- arquivos server-side: .php, .cs, .py, .java, .resources, etc - suporta HTML, JavaScript e CSS
- .html - suporta HTML, JavaScript e CSS
- .js - suporta HTML, JavaScript e estilos
- .css - suporta CSS
Como vocês podem ver, é possível incluir CSS em todo tipo de arquivo. Agora imagine-se desenvolvendo ou mantendo um programa que mistura tudo e põe as coisas erradas nos arquivos errados, fica uma bagunça. Então mais uma vez: ponha cada coisa no seu lugar. Essa mania de por tudo num arquivo só é coisa de quem não tem uma IDE decente e fica usando editores de texto simples para programar.
- Conteúdo no .html dificulta a internacionalização.
- Javascript no .html dificulta a compreensão e depuração do código, mesmo que seja um simples onclick.
- HTML no script do servidor ou no .js dificulta a leitura de código e formação correta do markup. Para contornar isso use um view engine. Ex: pure para JavaScript.
- CSS ou style no .html ou no .js dificulta a atualização de layout. Lembre-se: o layout ou design de uma página sempre muda.
Marcadores:
boas práticas,
css,
desenvolvimento web,
html,
javascript
Assinar:
Postagens (Atom)