domingo, 18 de novembro de 2012

Utilizando o GIT

git clone = Clona um repositório para um novo diretório.

git clone -b <branch> = Você pode clonar um projeto especificando qual branch você deseja ter como cópia local.

git add = Adiciona um arquivo novo ou modificado na área de "staging" para ser comitado.

git commit -m '' " = Comita as criações e alterações. É necessário comentar.

git branch = Monstra em qual branch você está trabalhando atualmente se não especificado nenhum parâmetro.

git branch [ -a | -r ] = Monstra os branchs remotos disponíveis "remote-tracking", muito útil quando não trabalhando com repositórios locais.

git branch [ -d | -D ] = Deleta um branch específico, você pode especificar mais de um branch.

git branch --color = Coloca um identificação colorida em seu branch atual =)

git log = Monstra os logs dos commits.


git log -p -m  = Monstra as diferenças entre as modificações. 

git checkout <branch> = Muda do branch atual para o especificado.
 
git checkout <commit-ref> <file> = Reverte o arquivo para o commit-ref que foi especificado.

git checkup HEAD <file> = Reverte o arquivo para a mais recente versão.

git fetch = Baixa os objetos e referências de outro repositório.
 

terça-feira, 29 de maio de 2012

Valgrind Framework

Framework para criar ferramentas de analise dinâmica( threading degug, memory management, etc).
http://valgrind.org/

quinta-feira, 26 de maio de 2011

ISCSI - Internet Small Computer System Interface

ISCSI - Internet Small Computer System Interface

Programa: iscsiadm
S.O: Redhat 5.2

Mais Informações:
http://docs.redhat.com/docs/pt-BR/index.html
http://www.open-iscsi.org/index.html#intro

Este comando mostra as sessões iscsi.
# iscsiadm -m session

Deleta um host específico.
# iscsiadm -m discovery -t discovery_type -p 10.1.80.165:3260 -o delete

Mario Uzae
Email: mariouzae@gmail.com

domingo, 24 de abril de 2011

Vlan no Freebsd

Carregue o módulo if_vlan. Caso queira compilar diretamente no kernel, adicione a seguinte linha:

device vlan

e compile o novo kernel.

no arquivo rc.conf

cloned_interfaces="vlan1 vlan2"
ifconfig_vlan1="inet 10.0.0.1 netmask 0xffffff00 vlan 1 vlandev em0 description int"

ifconfig_vlan2="inet 100.0.0.1 netmask 0xffffff00 vlan 2 vlandev em1 descr ext"


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

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.

quinta-feira, 17 de dezembro de 2009

Segurança e Ajuste no Servidor

Inicialmente para preparar um servidor é necessário avaliar o tipo de serviço que o mesmo irá oferecer. Para isso se o serviço for para segurança, rede e sistemas, todos devem ser avaliados conforme a necessidade.
Como atualmente em nosso mercado toda informação vale ouro, é necessário saber-mos tratar essas informações de forma organizada e segura. Algumas normas como a NBR ISO/IEC 17799:2001 são de boas práticas para se seguir em um plano de um servidor. Este assunto é muito grande e tem várias formas de traduzir a norma NBR em conceitos técnicos de aplicação, no início vou explicar pequenos ajustes de detalhes que irá melhorass a segurança de seu servidor e de sua informação.

Usando ACL - Access Control List

O ACL permite manter as permições do usuário e grupo. Mesmo que um usuário pertencente ao grupo crie um arquivo, o mesmo arquivo fica com o grupo deste mesmo usuário.

Para poder utilizar o ACL é necessário que a partição tenha sido montado com acl eemplo:

mariouzae@mgusilva:# mount -t ext3 -o acl /dispositivo /local

Despois de montar a partição com o ACL você já pode começar a configurar as permições, exemplo:

setfacl -m  

Rules () must be specified in the following formats. Multiple rules can be specified in the same command if they are separated by commas.

u::

Sets the access ACL for a user. The user name or UID may be specified. The user may be any valid user on the system.

g::

Sets the access ACL for a group. The group name or GID may be specified. The group may be any valid group on the system.

m:

Sets the effective rights mask. The mask is the union of all permissions of the owning group and all of the user and group entries.

o:

Sets the access ACL for users other than the ones in the group for the file.

White space is ignored. Permissions () must be a combination of the characters r, w, and x for read, write, and execute.

If a file or directory already has an ACL, and the setfacl command is used, the additional rules are added to the existing ACL or the existing rule is modified.

For example, to give read and write permissions to user andrius:

setfacl -m u:andrius:rw /project/somefile

To remove all the permissions for a user, group, or others, use the -x option and do not specify any permissions:

setfacl -x  

For example, to remove all permissions from the user with UID 500:

setfacl -x u:500 /project/somefile



Mario Uzae
e-mail: mariouzae@gmail.com

sexta-feira, 30 de outubro de 2009

# Este comando lota o partição.

for ((i=1;i<=200000;i++)); do touch $i && echo mariouzae pirate >> $i; done


Mario Uzae
E-mail: mariouzae@gmail.com

domingo, 2 de agosto de 2009

Formatando o terminal BASH

$ PS1=`[\u@\h (\t):\w] \$ `

\u Username do usuário.
\h Nome curto de hostname.
\t Hora atual do sistema formato 24 horas.
\W Caminho completo do diretório.


E-mail: mariouzae@gmail.com
Mario Uzae

segunda-feira, 6 de julho de 2009

Comando Kill

Este comando usa os paramêtros para fazer um reload do aplicativo atráves do pid.

# kill -HUP $(cat /var/run/httpd.pid)

exemplo utilizando o httpd.pid.


Mario Uzae
E-mail: mariouzae@gmail.com

sexta-feira, 3 de julho de 2009

Fstab - Iniciando autmaticamente a partição

Na postagem anterior eu criei uma partição de 200M, agora desejo que esta partição fica montada automaticamente quando eu iniciar meu sistema; É para este tipo de necessidade que temos o fstab, que através do arquivo de configuração pode ser editado para fazer com que esta partição monte automaticamente.
Geralmente o arquivo de configuração fica no /etc/fstab

quinta-feira, 2 de julho de 2009

Criando Partições disponíveis do Zero

Se você estiver precisando de uma nova partição parao uso de algum programa, ou até mesmo para utilizar desta partição como backup; Você pode utiliza o comando DD veja:

# dd if=/dev/zero of=/home/mario bs=1M count=200
Bem, no comando acima o comando dd pegou um espaço livre no HD e criou um dispositivo chamado mario com o tamanho de 200M. Ok, o dispositivo já foi criado, agora para o sistema reconhecer este dispositivo vamos ter que formata-lo como um sistema de arquivo, exemplo ext3.

# mke2fs -j -m10 /home/mario
Com este comando eu criei o sistema de arquivo em /home/mario. Para ter mais informções sobre os paramêtros veja o manual do sistema.
Agora temos que montar nossa partição criada, Veja:

# mount -o loop /home/mario /mnt/

Pronto, a nova partição já esta criada e disponível.


Mario Uzae
E-mail: mariouzae@gmail.com

segunda-feira, 29 de junho de 2009

Visão Geral da Árvore de Diretórios

Inicialmente para falar da árvore de diretórios, é importânte saber que existe um padrão para a estrutura de diretórios no Linux, cujo o nome é (FHS - Filesystem Hierarchy Standart), mas nem todas as distribuições seguem a risca as especificações da FHS.
A FHS organiza a estrutura do sistema por meio de duas categorias principais:

  • "Compartilháveis" ou "Não Compartilháveis".
A separação entre dados compartilháveis e não compartilháveis é de utilizar em um ambiente de rede, onde o compartilhámento de dados visa a redução de dados em disco.

  • "Variáveis" ou "Estáticos".
A ideia de diretórios estáticos ou não é para facilitar a integração e funcionamento do sistema, além de aumentar a segurança dos dados, permitindo proteger diretórios estáticos com permições mais restritas.

Descrições mais detelhadas dos diretórios.

/bin

É nesse diretório que são armazenados os binários do sistema, não pode estar em uma partição separada. Neste diretório não pode conter sub-diretórios; Padrão FHS.

/boot

Nesse diretórios estão contidos os arquivos de boot, componentes essenciais para a inicialização do Linux, além do kernel. Este diretório ppode ser montado em outras partições sem problemas.

/dev

Os dipositivos do sistema ficam armazanados no /dev. Este diretório não pode ser montado em outras partições.

/







TAR

O Tar é a ferramenta de becape mais difundida no mundo Linux. Ele é capaz de arquivar vários arquivos em um só.

Para compactar os dois arquivos:
prog01.c prog02.c

basta:
tar -cvzf programas.tar.gz prog01.txt prog02.txt .

Para descompactar esses dois arquivos:
tar -xzvf programas.tar.gz

Mario Uzae
E-mail: mariouzae@gmail.com