terça-feira, 25 de janeiro de 2011

Instalação mod_python no Apache 2

Sistema Operacional: Debian Lenny - Kernel 2.6.28-11-generic
Versão do Apache: 2.2.11
Versão do Python: 2.5.4

Para o Apache interpretar os scripts que seram criados em Python, é necessário a instalação de um módulo no Apache.

Existem duas formas de obter este módulo, que é o "mod_python". Você pode entrar no site oficial e seguir as instruções para a compilação do "mod_python". Neste caso como estou usando o Debian vou usar seu repositório, que possui o "mod_python" já pre-compilado.

# apt-get install libapache2-mod-python

Agora vou configurar no Apache um "Directory" para meus códigos Python:



AddHandler mod_python .py
PythonHandler mptest
PythonDebug on


Faça um restart em seu Apache. E por fim abaixo segue um exemplo para ver se seu código Python está sendo interpretado corretamento com o seu Apache.

Arquivo: mptest.py

#!/usr/bin/python

from mod_python import apache

def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!")
return apache.OK


# --- fim codigo --- #

Escrito por: Mario Uzae
E-mail: mariouzae@gmail.com

quarta-feira, 5 de janeiro de 2011

Acesso à Porta Paralela

Este pequeno programa, foi desenvolvido em c++ para a demostração de como efetuar um acesso à porta paralela. Inicialmente isto utiliza os 8 pinos disponíveis para a comunicação por porta paralela. O programa solicita a porta que você deseja enviar o sinal, enviando o sinal de aproximadamente de 3.5 Volts quando acionada. Não vou explicar o funcionamento da porta paralela, mais postarei um simples programa que utiliza esta porta.

Compilado: GCC-C++ 4.3 - Linux


#include <iostream>
#include <sys/io.h>

#define MAXLED 8 /* 8 BITS. */
#define LPTPORT 0x378 /* ENDERECO DE MEMORIA DE COMUNICACAO COM A PORTA PARALELA. */

int main() {
/* DECLARACAO DE VARIAVEIS */
unsigned int LUX;
unsigned int VAR;
unsigned short D[10];


/* VERIFICA PEMICOES DE ACESSO A PORTA DE MEMORIA */
if(ioperm(LPTPORT, 1, 1)) {
printf("Error ioperm in address port.\n");
}

outb(0, LPTPORT); /* FAZ COM QUE QUALQUER TENSAO SEJA DESATIVADA AO INICIAR O PROGRAMA. */

/* ARRAY MATRIZ DOS VALORES DE PINOS 8 BITS. */
D[0] = 1;
D[1] = 2;
D[2] = 4;
D[3] = 8;
D[4] = 16;
D[5] = 32;
D[6] = 64;
D[7] = 128;
D[8] = 255;
D[9] = 256;

/* LISTA OS VALORES DA OPCOES. */
printf("Escolha o pino que deseja ativar a tensao:\n\n");
printf("PINO 0 = 0:\n");
printf("PINO 1 = 1:\n");
printf("PINO 2 = 2:\n");
printf("PINO 3 = 3:\n");
printf("PINO 4 = 4:\n");
printf("PINO 5 = 5:\n");
printf("PINO 6 = 6:\n");
printf("PINO 7 = 7:\n");
printf("LIGA TODOS OS PINOS = 8:\n");
printf("DESLIGA TODOS OS PINOS = 9:\n\n");

while(1) {

printf("Entre com o PINO desejado: ");
scanf("%d", &VAR);

/* CONDICOES DE SAIDA */
if(VAR == 0){
outb(D[0], LPTPORT);
}
if(VAR == 1){
outb(D[1], LPTPORT);
}
if(VAR == 2){
outb(D[2], LPTPORT);
}
if(VAR == 3){
outb(D[3], LPTPORT);
}
if(VAR == 4){
outb(D[4], LPTPORT);
}
if(VAR == 5){
outb(D[5], LPTPORT);
}
if(VAR == 6){
outb(D[6], LPTPORT);
}
if(VAR == 7){
outb(D[7], LPTPORT);
}
if(VAR == 8){
outb(D[8], LPTPORT);
}
if(VAR == 9){
outb(D[9], LPTPORT);
}

}
}

Mario Uzae
E-mail: mariouzae@gmail.com

sábado, 14 de agosto de 2010

Clustering

http://www.beowulf.org
http://www.mosix.org/

Mario Uzae
E-mail: mariouzae@gmail.com

sábado, 12 de junho de 2010

Diodo Emisor de Luz - LED


Em geral, os leds operam com nível de tensão de 1,6 a 3,3V, sendo compatíveis com os circuitos de estado sólido. É interessante notar que a tensão é dependente do comprimento da onda emitida. Assim, os leds infravermelhos geralmente funcionam com menos de 1,5V, os vermelhos com 1,7V, os amarelos com 1,7V ou 2.0V, os verdes entre 2.0V e 3.0V, enquanto os leds azuis, violeta e ultra-violeta geralmente precisam de mais de 3V. A potência necessária está na faixa típica de 10 a 150 mW, com um tempo de vida útil de 100.000 ou mais horas.

Como o diodo, o LED não pode receber tensão diretamente entre seus terminais, uma vez que a corrente deve ser limitada para que a junção não seja danificada. Assim, o uso de um resistor limitador em série com o Led é comum nos circuitos que o utilizam. Para calcular o valor do resistor usa-se a seguinte fórmula: R = (Vfonte-VLED)/ILED, onde Vfonte é a tensão disponível, VLED é a tensão correta para o LED em questão e ILED é a corrente que ele pode suportar com segurança.

Tipicamente, os LEDs grandes (de aproximadamente 5 mm de diâmetro, quando redondos) trabalham com correntes da ordem de 12 a 30 mA e os pequenos (com aproximadamente 3 mm de diâmetro) operam com a metade desse valor.

Assim:

Adotamos I1 = 15 mA e I2 = 8 mA, Vfonte = 12 V, VLED = 2 V:

R1 = (12 - 2)/0,015 = 10/0,015 = 680*

R2 = (12 - 2)/0,008 = 10/0,008 = 1K2*

Aproximamos os resultados para os valores comerciais mais próximos.

FONTE: Wikipedia

domingo, 30 de maio de 2010

Potênciometro

O Potenciômetro é um componente eletro-mecânico transdutor, que tem por finalidade a variação de sua resistência interna de acordo com a variação do movimento mecânico linear de 270 graus; Portanto em um Potenciômetro de 10kΩ por exemplo, nos temos a resistência de 0 à 10kΩ, que pode ser ajustada mecanicamente. Logo a frente irei demostrar gráficamente esta variação de resistência por rotações mecanicas. Segue algumas imagens dos potênciometros mais conhecidos no mercado:


A representação elétrica do potênciometro pode ser demostrado com alguns exemplos abaixo:



Características e Especifícações:

Especificação de um potênciometro de 10kΩ

10K Potentiometer (271-1715) Specifications Faxback Doc. # 14654


Type: ........................................................ Linear Taper
Resistance: ...................................................... 10 KOhms
Power Rating: ................................................... 0.5 Watts
Tolerance: ........................................................ +/- 20%

Shaft: ............................................................... 6 mm
Mounting Hole: ...................................................... 5/16"


Potencia e Voltagem

Um pote com uma potência de 0.5W terá uma tensão máxima que pode existir em todo o pote antes da classificação não seja ultrapassado. Todas as potências são com o elemento de resistência em todo o circuito, assim a dissipação máxima diminui à medida que a resistência é reduzida (assumindo série ou "dois terminais de fiação" reostato). Vamos olhar para o pote 0.5W e 10k é um bom valor para começar com uma explicação.

Se a dissipação máxima é de 0,5 W ea resistência é de 10k, então a corrente máxima que pode fluir através do elemento de resistência é determinada por toda ...

P = I² * R ... portanto
I =√P / R ... assim I = 7mA

Na verdade, 7mA é a corrente máxima que pode fluir em qualquer parte do elemento de resistência, por isso, se o pote de 10k foram ajustados para uma resistência de 1k, atual ainda é 7mA, e potência máxima é agora apenas 50mW, e não a nós 500mW tinha antes.

Este gráfico mostra a degradação de output em percentual com relação a rotação:



Escrito por: Mario Uzae
E-mail: mariouzae@gmail.com

segunda-feira, 12 de abril de 2010

Curl

O Curl é uma ferramenta para transferir dados de para um servidor, usando diversos protocolos como, ( HTTP, HTTPS, FTP, TFTP, SCP) entre outros.

Segue algumas demonstrações:

# Enviando determinado arquivo para um outro servidor por FTP.
$ curl -T 'arquivo' -u 'usuario:senha' ftp://servidor.com.br/

# Listando qualquer diretório via FTP.
$ curl ftp://'usuario:senha@servidor.com.br/'algumdir'

Very simple :)

Escrito por
: Mario Uzae
E-mail: mariouzae@gmail.com

segunda-feira, 1 de fevereiro de 2010

O Logrotate

O Logrotate tem a finalidade principal de rotacionar logs, ou seja, fazer com que os arquivos de log seja substituido, recriado ou compactado, para que não tenha problemas de espaço em disco no servidor.

O software Logrotate é composto em dus partes;
/etc/logrotate.conf - Arquivo de configuração do logrotate.
/etc/logrotate.d/ - Diretório no qual contém arquivos de configuração, dos quais iram ser rotacionados.

Em grosso modo, é necessário criar e configurar um arquivo novo em /etc/logrotate.d/novo.log. Neste novo arquivo criado em /etc/logrotate.d/ será necessário editar e configurar como o logrotate irá trabalhar de acordo com sua necessidade, Exemplo:

$ vim novo.log

/var/log/novo.log { # Arquivo que irá ser rotacionado.
daily # Período no qual o rotate vai ser executado. Pode ser daily(diário), weekly(Semanal) ou Monthly(Mensal).
rotate 4 # Até quantas vezes o log será rotacionado antes de ser deletado.
compress # Faz a compressão do log.
size 100k # Tamanho maximo no qual o arquivo de log pode ter; Se chegar a esse valor será rotacionado.
start .0 # Formato da compactação. Iniciará como "novo.log.0, depois novo.log.1 e assim por diante até chegar a quarta vez, no qual foi definido no rotate < 4."
postrotate # Esta opção executa comando pré-determinados, somente depois de ter rotacionado o log.
echo "Fazendo algum comando posterior ao rotate já executado.";
endscript
}

fim do exemplo.

Existe várias outras opções que o Logrotate proporciona, onde pode ser consultado no manual oficial.
Após configurado é hora de testar se realmente funcionou; Isto pode ser feito com o comando "logrotate -f /etc/logrotate.conf", que irá forçar os rotacionamentos dos logs especificados. Para mais consulte logrotate --help.



Escrito por: Mario Uzae
E-mail: mariouzae@gmail.com
Deus é o senhor de todas as coisas.