quarta-feira, 28 de março de 2007

Conjunto de instruções do PIC

f qualquer local de memória
W registo de trabalho
b posição de bit no registo 'f'
d registo de destino
label grupo de oito caracteres que marca o início de uma parte do programa (rótulo)
TOS cimo da pilha
[] opcional
<> grupo de bits num registo



*1 Se o porto de entrada/saída for o operando origem, é lido o estado dos pinos do microcontrolador.
*2 Se esta instrução for executada no registo TMR0 e se d=1, o prescaler atribuído a esse temporizador é automaticamente limpo.
*3 Se o PC for modificado ou se resultado do teste for verdadeiro, a instrução é executada em dois ciclos.

Erro abrindo projeto no VS2003

"Visual Studio.Net cannot create or open the application because the current user account is not a member of the VS Developers group on the Web server computer"

No Painel de Controle, Ferramentas administrativas, Gerenciamento do computador, Usuários e grupos locais, Usuários. Nas propriedades do seu usuário, guia "Membro de", adicione o grupo VS Developers.

Link para artigo da MSDN:

Developing Software in Visual Studio .NET with Non-Administrative Privileges

Summary: Members of the local Administrators group have privileges to perform any action on a machine. This causes both a risk to the user performing actions in that environment and to the software that they develop. This article explains how to productively develop software while logged on with non-administrative privileges. (14 printed pages)

terça-feira, 27 de março de 2007

Depurar serviços no Visual Studio

1. Compilar em DEBUG, inclusive DLLs, se necessário depurá-las também;
2. Instalar E iniciar serviço;
3. No VS, em Debug, Attach to Process...;
4. Em Available Processes, selecionar o processo;
5. Attach;

6. Em Debug, Detach All para finalizar.

Arquivos *.bat podem auxiliar na instalação e remoção de serviços:

Arquivo InstalServ.bat:

@echo off
rem Linha abaixo em uma única linha:
c:\windows\microsoft.net\framework\v2.0.50727\installutil -i D:\Projects\myServicos\myServico1\bin\Release\myServico1.exe

Arquivo RemovServ.bat:

@echo off
rem Linha abaixo em uma única linha:

c:\windows\microsoft.net\framework\v2.0.50727\installutil -u D:\Projects\myServicos\myServico1\bin\Release\myServico1.exe

ANTES DE INSTALAR OU REMOVER O SERVIÇO: Pará-lo se estiver em execução.

domingo, 25 de março de 2007

Titan: o filho + novo

Algumas unidades práticas de Engenharia



GC - Garbage Collector (C#)

O método Collect do objeto GC (Garbage Collector) força a ocorrencia da coleta de lixo e consequentemente liberação de memória.

Porém este método deve ser evitado, pois é preferível deixarmos o próprio Garbage Collector decidir quando deve ser feita a coleta de lixo.

Mas quando realmente precisarmos realizar a coleta de lixo através do GC devemos tomar cuidado com a forma correta de chamar o método Collect, o que não é uma simples chamada de método. Veja :

- Chamamos o método Collect
- Precisamos esperar que todos os finalizes sejam rodados, liberando recursos
- Chamamos novamente o método Collect, pois a execução do finalize gera novas instancias a serem liberadas

Veja como fica :

GC.Collect
GC.WaitForPendingFinalizers()
GC.Collect

Porquê o frango atravessou a rua?

RESPOSTAS:

PROFESSORA PRIMÁRIA
Porque o frango queria chegar ao outro lado da estrada.

CRIANÇA
Porque sim.

PLATÃO
Porque buscava alcançar o Bem.

ARISTÓTELES
É da natureza do frango cruzar a estrada.

MARX
O atual estágio das forças produtivas exigia uma nova classe de frangos capazes de cruzar a estrada.

MARTIN LUTHER KING
Eu tive um sonho. Vi um mundo no qual todos os frangos serão livres para cruzar a estrada sem que sejam questionados seus motivos.

FREUD
A preocupação com o fato de o frango ter cruzado a estrada é um sintoma de insegurança sexual.

DARWIN
Ao longo de grandes períodos de tempo, os frangos têm sido selecionados naturalmente, de modo que, agora, têm uma predisposição genética a cruzar estradas.

EINSTEIN
Se o frango cruzou a estrada ou a estrada se moveu sob o frango, depende do ponto de vista. Tudo é relativo.

MACONHEIRO
Foi uma viagem...

HELOISA HELENA
A culpa é das elites estelionatárias, caucasianas e aristocráticas que usurpam a população de frangos e mostra a sua capacidade de luta em defesa dos seus direitos.

SEVERINO CAVALCANTI
Desafio alguém que possa provar que o frango atravessou a estrada... É mentira... É tudo mentira.

ZECA PAGODINHO
Porque do outro lado da rua tinha uma Brahma gelada.

AMIR KLINK
Para ir aonde nenhum frango jamais esteve.

NELSON RODRIGUES
Porque viu sua cunhada, uma galinha sedutora, do outro lado.

FEMINISTAS
Para humilhar a franga, num gesto exibicionista, tipicamente machista, tentando, além disso, convencê-la de que, enquanto franga, jamais terá habilidade suficiente para cruzar a estrada.

DATENA
É uma pouca vergonha... Uma Barbaridade... Põe no ar... Põe no ar aí as imagens do frango atravessando a estrada.

FERNANDO HENRIQUE CARDOSO
Por que ele atravessou a estrada, não vem ao caso. O importante é que, com o Plano Real, o povo está comendo mais frango.

PAULO MALUF
O meu governo foi o que construiu mais passarelas para frangos. Quando for eleito novamente vou construir galinheiros deste lado para o frango não ter mais que atravessar a estrada.

CAETANO VELOSO
O frango é amaro, é lindo, uma coisa assim amara. Ele atravessou, atravessa e atravessará a estrada porque Narciso, filho de D.Canô, quisera comê-lo...ou não!!

E PARA FINALIZAR.........

LUIZ INÁCIO LULA DA SILVA
Porque queria se juntar aos outros mamíferos.

WebService assíncrono (em C# ASP.NET)

Considere um método qualquer do webservice:

[WebMethod()]
public void myMetodo(ref object parametros)
//declarando por referência disponibilizará
//os parâmetros qdo o método terminar
{
//lógica do webservice
}

O método assíncrono é chamado usando, por exemplo,

myWebService.myMetodoAsync(parametros);
//o método assíncrono já é gerado pelo webservice, basta usá-lo
//o restante do código continua a ser executado normalmente.

Vc pode adicionar um handler (no lado cliente) para disparar o método Completed correspondente ao método assíncronopara qdo ele terminar sua tarefa. Por exemplo:

myWebService.myMetodoCompleted += new myMetodoCompletedEventHandler(myMetodoAsync_Terminou); //use TAB aqui

Em seguida, crie o novo método indicado no handler (repare q o intelli sense pode
gerar o método abaixo usando TAB na linha acima:

protected void myMetodoAsync_Terminou(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
//aqui vc coloca o código a ser executado qdo o método assíncrono terminar
//obs: repare q no parâmetro 'e' vc tem disponíveis os parâmetros
//q foram declarados por referência. Por exemplo, poderíamos ter:
Console.WriteLine(e.parametros);
}

Bom, é basicamente isso, mas ainda há muito a explorar.

Rápida introdução à linguagem JAVA

Java é uma linguagem portável orientada a objetos desenvolvida pela Sun Microsystems. Do código-fonte é gerado o byte-code, que será interpretado pela máquina virtual adequada à plataforma.

As aplicações podem ser escritas em editores ASCII puro como vi, emacs ou Bloco de notas. Por exemplo:

class HelloWorld
{
public static void main (String args[])
{
System.out.println ("Hello World!");
}
}


O byte-code é gerado por bin/javac HelloWorld.java e executado por bin/java HelloWorld. Para isso é necessário o compilador instalado, que pode ser obtido no site da Sun .

As Applets são aplicações Java adaptadas para rodarem dentro de páginas HTML e, portanto, apresentadas num browser. Por exemplo:

import java.awt.Graphics;

public class HelloWorldApplet extends java.applet.Applet
{
public void paint (Graphics g)
{
g.drawString ("Hello World!",5,25);
}
}


O byte-code será gerado por bin/javac HelloWorldApplet.java,
porém executado dentro de uma página HTML. Por exemplo:

<HTML>
<HEAD><TITLE>Exemplo de Applet Java: Hello World!</TITLE></HEAD>
<BODY>
<APPLET CODE="HelloWorldApplet.class" WIDTH="300" HEIGHT="100">
</APPLET>
</BODY>
</HTML>


ou poderá ser visualizado por bin/appletviewer HelloWorldApplet.html

Engenheiro contando a história dos 3 porquinhos

Era uma vez três porquinhos genéricos, P1, P2 e P3 e um Lobo Mau, por definição, LM, que vivia os atormentando.

P1 era sabido e fazia Engenharia de Automação e já era formado em Civil. P2 era arquiteto e vivia em fúteis devaneios estéticos absolutamente desprovidos de cálculos rigorosos. P3 fazia Comunicação e Expressão Visual na UFSC.

LM, na Escola Oficial da ABNT, para medição da Maldade (EOMM) era Mau nível 8,75 (arredondando a partir da 3a casa decimal para cima). LM tbm era um mega-investidor imobiliário sem escrúpulos e cobiçava a propriedade que pertencia aos Pn (onde "n" é um número natural e varia entre 1 e 3, inclusive), visto que era de boa conformidade geológica e configuração topográfica, e ficava perto do Shopping Beira-Mar.

Mas nesse promissor perímetro P1 construiu uma casa de tijolos, sensata e logicamente planejada, toda protegida com mecanismos automáticos. Ja P2 montou uma casa de blocos articulados feitos de mogno que mais parecia um castelo lego-tresloucado. Enquanto P3 planejou no AutoCad e montou ele mesmo, com barbantes e isopor como fundamentos, uma cabana de palha com teto solar, e achava aquilo "o máximo".

Um dia, LM foi ate a propriedade dos suínos e disse, encontrando P3:

- Uahahhahaha, corra, P3, pq vou gritar, e vou gritar e chamar o Conselho de Engenharia e Construcao Civil para denunciar sua casa de palha projetada por um formando em Comunicação e Expressão Visual!

Ao que P3 correu para sua amada cabana, mas qdo chegou lá os fiscais do Conselho ja haviam posto tudo abaixo. Então P3 correu para a casa de P2. Mas quando chegou lá, encontrou LM à porta, batendo com força e gritando:

- Abra essa porta, P2, ou vou gritar, gritar e gritar e chamar o GreenPeace, para denunciar que vc usou madeira nobre de aréas não-reflorestadas e areia de praia para misturar no cimento.

Antes que P2 alcançasse a porta, esta foi posta a baixo por uma multidão ensandecida de eco-chatos que invadiram o ambiente, vandalizaram tudo e ocuparam os destroços, pixando e entoando palavras de ordem. Ao que P3 ergue P2 e os dois correm para a casa de P1. Quando chegaram na casa de P1, este os recebe e os dois caem ofegantes na sala de entrada.

P1: O que houve?

P2: LM, lobo mau por definicao, nível 8.75, destruiu nossas casas e desapropriou os terrenos.

P3: Não temos para onde ir. E agora, que eu farei? Sou apenas um formando em Comunicação e Expressão Visual!

Tum-tum-tum-tum-tuuummm!!!! (batidas à porta)

LM: P1, abra essa porta e assine este contrato de transferência de posse de imóvel, ou eu vou gritar e gritar e chamar os fiscais do Conselho de Engenharia de Santa Catarina em cima de vc!!!

Como P1 não abria (apesar da insistência covarde do porco arquiteto e do.. do... "comunicador e expressivo visual"?) LM chamou os fiscais, e estes fizeram testes de robustez do projeto, inspeções sanitárias, projeções geomorfológicas, exames de agentes físico-estressores, cálculos com muitas integrais, matrizes, e geometria analítica avançada, e nada acharam de errado.

Entao LM gritou e gritou pela segunda vez, e veio o GreenPeace, mas todo o projeto e implementação da casa de P1 era ecologicamente correta. Cansado e esbaforido, o vilão lupino resolveu agir de forma irracional (porém super-comum nos contos de fada): ele pessoalmente escalou a casa de P1 pela parede, subiu ate a chaminé e resolveu entrar por esta, para invadir.

Mas quando ele pulou para dentro da chamine, um dispositivo mecatrônico instalado por P1 captou sua presença por um sensor térmico e ativou uma catapulta que impulsionou com uma força de 33300 N (Newtons) LM para cima. Este subiu aos céus, numa trajetória parabólica estreita, alcançando o ápice, onde sua velocidade chegou a zero, a 200 metros do chão.

Agora calcule, admitindo que a gravidade vale 9,78 m/s2:

a) a massa de LM
b) o deslocamento no eixo "x", tomando como referencial a chaminé.
c) a velocidade de queda de LM qdo este tocou o chão e
d) o susto que o Lobo Mau tomou.

sexta-feira, 16 de março de 2007

Principium est?

"Tantum homo habet de scientia quantum operatur. (O conhecimento que o homem possui é só aquele que aplica.)" São Francisco