Skip to main content

Blog

Migração de SVN para GIT

Recentemente foi-me lançado o desafio de migrar um servidor de svn para git , e comecei logo a procura de importações directas, sendo que encontrei sugestões tais como o svn2git e subGit.

No entanto não se adequavam ao que se pretendia fazer, então após mais alguma pesquisa, encontrei várias referências a um comando do git que permitia clonar um repositório de SVN para Git e conseguir manter o histórico do mesmo sem configuraçoes extra ou programa externos. O comando em causa é

De volta a escrita

Ora viva,

Já faz algum tempo que andava afastado deste mundo dos blogs e companhia, e achei que estava na hora de voltar a fazer um projecto do género. Este projecto vai server como um repositório de experiencias e dicas na área de programaçao e sistemas.

Mas como todos os primeiros artigos/posts numa comunidade web, irei fazer uma pequena apresentaçao.

Tenho neste momento 27 anos , e sou programador numa empresa que faz desenvolvimento para SAP. Tenho desenvolvido nos ultimos anos em PHP , Javascript, Mysql/Mongodb, sendo que este ano tenho aprofundado mais os meus conhecimentos em c#/vb.net.

Converter Debian Wheezy para Debian Testing

Com o recente lançamento do Debian como versão final , foi anunciada a versão 8 desta distribuição. A versão 8 desta distribuição terá o codename de “Jessie” e será lançado durante 2015.
Passará os repositórios do Debian Jessie ainda estão com os pacotes que estão disponiveis para o Debian Wheezy , sendo que parassá os pacotes disponíveis no repo Security-updates do Jessie ainda não estão a ser mantidas pela equipa oficial do debian.

Instalação do yaourt em ArchLinux

Como utilizador de archlinux já há uns anos , surgiu a necessidade de instalar pacotes que estão disponíveis no AUR. No entanto instalar software que está disponível no AUR pode ser um pouco demoroso e tive necessidade de encontrar uma alternativa viável que me pudesse gerir as instalações a partir do AUR como a partir dos repos oficiais.

Como tal encontrei o software yaourt que funciona como gestor de pacotes.Umas das principais mais valias deste gestor de pacotes é que dá para gerir de forma centralizada a instalação dos pacotes tanto de repos AUR como de repos oficias.

Script - Gerir VirtualHosts do Apache

Ora boas tardes,

Depois de algum tempo sem escrever nada no blog , trago-vos um script em perl acabado de sair do forno que nos permite adicionar, remover, listar, verificar, desativar os nossos virtualhosts.

Para tal temos temos ao nosso dispor as seguintes opções:

  • -add : para adicionar um virtualhost no apache , para tal basta usar a seguinte sintax: sudo ./apache -add ex: sudo ./apache -add www.rubemlrm.com rubemlrm

  • -rem: para remover um virtualhost no apache, para tal basta usar a seguinte sintax: sudo ./apache -rem ex: sudo ./apache -rem www.rubemlrm.com

Script - Verificar máquinas de rede

Boas noites, depois de algum tempo sem postar aqui nada devido a escola .Deixo aqui um pequeno script em perl que permite testar as máquinas de rede para ver quais é que estão ativas na nossa rede informática. Para tal é preciso ter um ficheiro com os ips que queremos testar e o script trata do resto sozinho.

#!/usr/bin/perl
use warnings;
use strict;
use Net::Ping;
use autodie;
my $host;
my $my_addr="<ip>";
my $ping;
my @reportlist;
chomp(my $date = `date +%a%d%m%y%k%M`);

open(FILE, "<ficheiro com ips>");
chomp (my @ips = <FILE>);
close(FILE);
foreach $host (@ips){
    $ping = Net::Ping->new();
    if ($ping->ping($host)){
        #print "$host -> está activo.n";
        push(@reportlist,"$host -> está activo.");
    }else{
        #print "$host -> está offlinen";
        push(@reportlist,"$host -> está offline.");
    }
    $ping ->close();
}
#Reporte da lista
foreach (@reportlist)
{
    print "$_n";
}

#para um ficheiro a ser enviado por mail</p>
open(FILE , ">../logs/'$date_machine_networking_report.txt'");
foreach (@reportlist){
    print FILE "$_n";
}
close(FILE);

Script - Verificar se utilizador existe

Este script tem como fundamento verificar se um utilizador existe ou não no sistema Linux e se existir além de nos mostrar uma mensagem a dizer que existe ainda vai identificar o UID desse utilizador.
Caso contrário vai mostrar uma mensagem de erro a dizer que o utilizador não existe.
Atenção não foram utilizados comandos bash por isso é tudo perl scripting.

#!/usr/bin/perl
use warnings;
use strict;
my @finalusers;
my $utilizador;
my $statuscode = 0;
my $uid;
#Analise se foi intruzido um nome ou não
if(@ARGV != 1){
    die "Argumento inválido";
}
chomp($utilizador = $ARGV[0]);
open(FILE, "/etc/passwd") || die($!);
chomp(my @utilizadores = <FILE>);
close(FILE);
foreach my $date (@utilizadores){
    chomp $date;
    my @finalusers = split /:/, $date;
    chomp(@finalusers);
    if($finalusers[0] eq $utilizador){
        $uid = $finalusers[2];
        $statuscode++;
    }
}
if( $statuscode != 1){
    print "O $utilizador NÃO se encontra criado no sisteman";
}else{
    print "o $utilizador JÁ se encontra criado no sistema! O seu UID é $uid !n" ;
}

Script - Sysadmin-toolbox

Depois de algum tempo a programar em perl , decidi “que tal por as minhas capacidades a prova” e construi um painel administrativo em perl para gerir sistemas.

E depois de algumas horas a programar , tenho uma versão 1 pronta a utilizar ainda com poucas funcionalidades é certo , mas para já considero que tem as funcionalidades básicas já implementadas , tais como:

  • Adicionar/remover utilizadores;
  • Possibilidade de fazer backups dos dados de um utilizador que se vai apagar;
  • Gestão de crons;
  • Funcionalidade para testar os pcs da rede.De forma a ver quais estão online e quais não estão;
  • Funcionalidade para encontrar pastas vazias e ficar com um registo das mesmas;
  • Funcionalidade para ver quais são os processos que estão a gastar mais recursos
  • Funcionalidade para adicionar vários utilizadores a uma máquina de forma automática
  • Funcionalidade para encontrar ficheiros que tenham um tamanho superior ao indicado.

Este projecto está disponível no github a partir do seguinte link : sysadmin-toolbox

Script - Reportar Directorias Vazias

Aqui fica um pequeno script para encontrar pastas vazias dentro de uma directoria.Este script utiliza o módulo File::Find::Rule para criar a listagem de todas as directorias e sub-directorias, utilizando uma directoria de partida.
Este script pode servir de base para a criação de um script para gerir directorias e apagar directorias vazias caso seja necessário.Para tal basta fazer pequenas alterações .

Para poderem executar este script teram que ter o módulo File::Find::Files instalado , para tal basta executarem o seguinte comando na linha de comandos:

Script Gerir Cron's com o Perl

Bem pessoal aqui fica um pequeno script para vos ajudar a a automatizar as vossas tarefas quando tiverem que mexer em crontabs. Este script surgiu numa aula de Sistemas Operativos em que tínhamos um exercício em que tínhamos que adicionar novos crons com o script.
Mas para não limitar o script acrescentei mais umas funções.Tais como tornar a criação de um novo cron mais interactiva , apagar crons , gravar o cron na localização correcta consoante o utilizador que está a executar o script.

Operadores em Perl

Desta vez irei falar de operadores de comparação, operadores de strings e operadores aritméticos. O que são e para que servem ? Bem esta vai ser a questão deste tutorial.Mas sem mais demoras vou iniciar este tutorial.

Operadores de Comparação Como ponto de partida vou falar sobre os operadores de comparação. Estes operadores servem para comparar strings e/ou números.
Mas utilizam nomenclaturas diferentes , ao seja o operador de uma string é diferente do operador de um número. E é importante nunca trocar os operadores porque podem ficar com erros no vosso programa e depois perderem algum tempo à procura do erro.

Ciclos de Controlo:"If..else" e "If..elsif.." em Perl

E aqui vem o mais um artigo relativo ao perl. Neste artigo vou-vos ensinar a utilizar um dos ciclos de controlo mais utilizados em programação que é o ciclo “if..else” e sua forma complexa “if..elsif”.
Este ciclo serve para controlar o fluxo de dados de um programa, no sentido de que se uma condição for verdadeira vai realizar uma acção e se for falsa vai realizar outra.

O ciclo “if..else” divide-se em duas partes
if (condição) {
  #bloco de código1
} else {
  #bloco de código2
}

Como podem ver tem uma estrutura muito simples. Mas para facilitar a vossa compreensão de como isto funciona vou explicar passo a passo o que está neste exemplo.

Declaração de variáveis em Perl

Bem minha gente chegou mais um artigo sobre perl. Desta vez irei focar as declarações de variáveis. Em perl só existem três tipos de variáveis. Estas são divididas por hashes, scalar e array. A declaração de variáveis em perl é um pouco diferente das linguagens mais comuns de programação.

perl

Antes de tudo o que é uma variável e como se caracteriza?

Uma variável é um “objecto” que contem informação útil para o contexto de programação. Uma variável é caracterizada por 3 coisas:

Script Adb and Linux

Cada vez mais existem pessoas a utilizar Android e Linux e muitas deles tem dificuldades em por o adb a funcionar com Linux por causa de se ter que configurar regras ou então saber os valores para as coisas.

Decidi então criar um pequeno script em perl para agilizar este processo e tornando a vida do pessoal mais fácil quando trabalham com isto.

#Developer by : Rubem Mota
#Dont use to earn money and keep all copyrights reserved to me
#Twitter: @rubemlrm
use strict;
chomp(my @rules = (
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="091E", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="10A9", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666"',
    'SUBSYSTEM=="usb", SYSFS{idVendor}=="19D2", MODE="0666"'
));
my @brands = qw (
    Acer
    Dell
    Foxconn
    Garmin-Asus
    HTC
    Huawei
    Kyocera
    LG
    Motorola
    Nvidia
    Pantech
    Samsung
    Sharp
    SonyEricsson
    ZTE
);
my $i = 1;
my $uid = `id -u`;
#Checking if user is root or not
if ( $uid != 0 ){
    print "you need root priveleges to run this scriptn";
}else{
    #running the import part of script
    print "------------------------------:n";
    print ":Welcome to Adb rule creator :n";
    #it will create the list to choose brand
    foreach(@brands){
        print ".".$i++ ."=>". $_ ."n";
    }
    print ":Choose driver brand:n";
    chomp(my $opt = <STDIN>);
    #condition to check input
    if ($opt =~ /D/){
        print "Invalid Option choose againn";
        print ":Choose driver brand:n";
        chomp(my $opt = <STDIN>);
    }
    print "It will be created adb rules to " . $brands[$opt - 1] ."n";
    #filehandle to create rule
    open(FILE , ">>/etc/udev/rules.d/51-android.rules");
    print FILE $rules[$opt - 1];
    system("chmod a+r /etc/udev/rules.d/51-android.rules");
    close(FILE);
    print "Restarting services";
    system ("/etc/init.d/udev restart");
    print "All done";
}

Depois de fazerem download do script façam:

Introdução ao Perl

Quem já ouviu falar de Perl e quis aprender e depois pensou mas como é que vou aprender isto, ou melhor de que maneira é que vou aprender Perl.E para que serve o Perl. A  pensar nessas questões criei esta rubrica para vos mostrar como fazer algumas coisas. Para que servem algumas funções entre outros aspectos importantes de referir.

perl

Este artigo vai estar divido em 3 partes:

Auto-Join Script para Mirc

Este é um exemplo para criar um script para fazer auto join no irc.

on *:START:{
    .server chat.eu.freenode.net -i
    .server -m irc.network -i (esta é a sintaxe que você tem que usar para utilizar este script para outras redes.)
}

on *:NOTICE:*This nickname is registered and protected*:*:{
    if ($nick == NickServ && $network == freenode ) {
        .msg nickserv IDENTIFY }
    elseif ($nick == NickServ && $network == ) {
        .msg nickserv IDENTIFY }
}

on *:NOTICE:*Password accepted*:*:{
    if ($nick == NickServ && $network == freenode) {
        join
    }
    elseif ($nick == NickServ && $network == ) {
        join
    }
}

Cron e crontab o que são ? E para que servem?

Certamente muitos de vós já se depararam com estes 2 termos e questionaram-se sobre o que seriam e que função desempenhavam. Ambos são processos que são exclusivos de sistemas UNIX ou seja linux e openbsd entre outros.

O crontab serve de arquivo para as tarefas que queremos que sejam automatizadas como por exemplo:

  • fazer backups
  • apagar ficheiros
  • corrigir erros do sistema
  • actualizar o sistema
  • entre outras coisas.

Enquanto que o Cron vai utilizar esse arquivo e vai verificar de x em x tempo se a tarefa já foi executada ou ainda está a ser executada e verifica também a quanto tempo foi executada. Caso ainda não tenha sido executada o cron irá executar essa tarefa de forma autónoma e irá ter o nome de cronjob. De referir que é tudo executado na shell do sistema (terminal).

Hello World em Python

Muitos de vós já ouviram falar de python e tiveram curiosidade em saber como programar em python. E com este artigo vou explicar algumas coisas de python mas apenas coisas básicas.

E como tal vou utilizar o tão conhecido “Hello World” que é o programa da praxe em todas as linguagens de programação.

python

Antes de começar-mos a programar em python temos que instalar o software necessário.Para isso basta ir ao site do Python  e fazerem download da aplicação para os vossos sistemas operativos. Caso utilizem Linux/Unix já devem trazer instalado o python para tal basta abrir o terminal e escrever “python” se der erro é porque não está instalado e terão que seguir as informações de instalação para o vosso sistema.

Palestra sobre desenvolvimento em android na ESTG

Praticamente uma semana depois da realização desta palestra , finalmente tive tempo para fazer um pequeno resumo do que se passou e de como correu.

Apesar de um breve atraso no inicio da palestra devido a problemas técnicos iniciou-se o inicio da palestra comigo a falar sobre versões de android e suas inovações e dicas sobre como trabalhar como o GIT. As partes que gostei mais na palestra foram a palestra sobre OpenGL e sobre Rom development onde deu para aprender muita coisa que nunca se vai aprender na escola e que me fez despertar um interesse em rom development e ainda me levou a querer aprender ainda mais de programação.

Inicio do meu blog

Começar por me apresentar .Bem chamo-me Rubem Mota , nome invulgar diga-se de passagem. Tenho o curso de técnológico de informática ,e sou um ávido fã de musica, bombeiros, música, anime, Magic the gathering. Nos ultimos tenho despertado um interesse para programação que começou a aparecer durante o curso.

Quero usar este blog como portfólio, diário de teorias e ideias, tutorias, noticias, artigos sobre várias áreas entre outras coisas.

E assim concluo a minha apresentação.