ldev

tecnologia e afins…

Arquivo da categoria ‘programação

programando no editor nano

fazer um comentário »

O nano é um editor de textos muito leve e simples que funciona no terminal. Assim como outros editores terminal-based, podemos customizá-lo para facilitar a escrita de programas.

O nano já traz um arquivo de configuração como exemplo. Ele se localiza em /usr/share/nano/examples, então, se você quiser usar esse exemplo e modificar (o arquivo já vem bastante comentado), faça o seguinte:

$ cp /usr/share/nano/examples/nanorc.sample ~/.nanorc

$ gedit ~/.nanorc

O meu .nanorc está da seguinte maneira:

set autoindent
set brackets “”‘)>]}”
set matchbrackets “(<[{)>]}”
set mouse
include “/usr/share/nano/nanorc.nanorc”
include “/usr/share/nano/c.nanorc”
include “/usr/share/nano/python.nanorc”
include “/usr/share/nano/java.nanorc”
include “/usr/share/nano/sh.nanorc”

Escrito por Lucas Nogueira

janeiro 31, 2010 em 4:05 pm

Publicado em Linux, programação, tutoriais

Etiquetado com ,

renomear arquivos em massa com shell script

com um comentário

Muitas vezes, obtemos arquivos com nomes bastante estranhos. Se você baixar imagens diretamente de álbums do Orkut, os títulos dos arquivos serão vários caracteres randômicos. Isso pode tornar a identificação do arquivo um pouco difícil. Algumas câmeras digitais também dificultam a identificação do arquivo, pois, em vez de criar prefixos que identificassem circunstâncias relevantes das fotos, elas criam prefixos inúteis. Ex: DSC00845.JPG (Câmeras da Sony).

Através de um pequeno script, podemos renomear em massa arquivos de uma mesma pasta. Veja o script abaixo:

#!/bin/sh

if [ $# -eq 2 ]
then
 i=0
 files=`ls -1 $1`

 for file in $files
 do
 filename="$file"
 fileextension=$(echo $filename | awk -F . '{print $NF}')

 echo "$filename will be renamed to $2-$i.$fileextension"

 i=$((i+1))
 done

 echo
 echo "Do you really want to rename these files? (y/n)"
 read yesno

 if [ "$yesno" = "y" ]
 then
 i=0
 files=`ls -1 $1`

 cd $1

 for file in $files
 do
 filename="$file"
 fileextension=$(echo $filename | awk -F . '{print $NF}')

 echo "renaming $filename to $2-$i.$fileextension ..."

 mv $filename $2-$i.$fileextension

 i=$((i+1))
 done
 else
 exit
 fi

elif [ $# -ne 2 ]
then
 echo "Usage:"
 echo "$0 (dir) (new_prefix)"
 echo "(dir) -> directory where the files that will be renamed are located"
 echo "(new_name) -> the pattern name"
fi

A usagem desse script é bem simples. Cole o código acima em algum editor de texto e salve o arquivo. Aqui eu o armazenei como massrename.sh. Agora abra um terminal e vá para o diretório onde o script se localiza. Estando no diretório correto, digite:

$ ./massrename.sh  <diretório onde se localizam os arquivos a serem renomeados> <prefixo>

Veja um exemplo:

$ ./massrename.sh /home/lucas/pics/aniversario bday_lucas

De acordo com o exemplo, os arquivos da pasta /home/lucas/pics/aniversario serão renomeados para: bday_lucas-0.JPG, bday_locas-1.JPG, etc…

Escrito por Lucas Nogueira

janeiro 30, 2010 em 11:16 am

Publicado em Linux, programação

Etiquetado com

checar atualização em páginas com shell script

fazer um comentário »

Nessa semana, o resultado do vestibular 2010.1 da UFC saiu. Graças a Deus eu passei. Mas, antes disso, eu sempre ficava checando a página da CCV (Comissão Coordenadora de Vestibular) para ver se eu já poderia olhar a lista dos aprovados.

Mas, então, tive uma ideia: “Por que não faço um script que faça esse trabalho pra mim?”. Então pensei em como faria o tal script e assim o fiz:

O script baixa a página sem o resultado e usa ela como um modelo. De 5 em 5 minutos, a página é baixada novamente, sendo, então, comparada com a página modelo. Se houver mudança, o usuário é alertado, senão o processo é reiniciado.

pagina=http://www.ccv.ufc.br/newpage/vtb/vtb2010/vestib2010.php #mude aqui
modelo=modelo.php
temp=temp.php
alerta=acorda.mp3 #mude aqui
delay=300

clear

wget -q $pagina -O $modelo

while [ 1 = 1 ]
do
 echo "Checando a página..."
 wget -q $pagina -O $temp

 cmp -s $modelo $temp

 if [ $? = 0 ]
 then
 echo "Não houve mudança. Daqui a $delay segundos haverá uma nova checagem."
 echo "última checagem: "
 date
 echo
 else
 echo "HOUVE MUDANÇA!"
 echo "Para sair, digite CTRL + C"
 mplayer -loop 0 $alerta
 exit
 fi

 rm $temp
 sleep $delay
done

OBS: Para me alertar, eu abri um sinal sonoro usando o mplayer. Caso você queira apenas um alerta visual, tente usar xdialog.

Escrito por Lucas Nogueira

janeiro 29, 2010 em 1:52 pm

Publicado em Linux, programação, programas

Etiquetado com , , ,

Introdução ao Zilog Z80

fazer um comentário »

Antes de você ler esse artigo, é bom que você tenha conhecimentos de sistemas numéricos, conversão de bases etc, pois tudo isso será útil ao trabalhar com eletrônica digital e programação em baixo nível.

Leia o resto deste post »

Escrito por Lucas Nogueira

janeiro 17, 2010 em 9:57 pm

Publicado em eletrônica, programação

Etiquetado com , ,

estruturas de dados – resumo teórico

fazer um comentário »

Lista linear

Lista linear é uma estrutura de dados dinâmica cujos elementos estão organizados de maneira seqüencial. São estruturas flexíveis, que podem crescer ou diminuir durante a execução do programa, de acordo com a demanda.

Leia o resto deste post »

Escrito por Lucas Nogueira

outubro 24, 2009 em 3:37 pm

Publicado em programação

Etiquetado com , ,

Programação orientada a objetos com Java – Objetos

fazer um comentário »

Antes de tudo, é bom termos em mente a definição da programação orientada a objetos (POO). A POO é um dos vários paradigmas de programação. De acordo com a Wikipedia, um paradigma de programação é a visão que o programador possui sobre a estruturação e execução do programa.

Esse paradigma trabalha com relações entre objetos, visando o melhor conjunto de relações para formar um programa. Neste post, será definido algumas das relações entre objetos, além de algumas características dos objetos.

Leia o resto deste post »

Escrito por Lucas Nogueira

julho 28, 2009 em 5:37 pm

Publicado em programação

cheatsheets

fazer um comentário »

Aqui estão os cheat sheets que mais uso. Aproveitem!

Programação

Desenvolvimento para Web

Sistemas

Outros

Se você estava procurando por um cheat sheet e ela não está aqui, provavelmente ela estará ai: All cheat sheet in one page

Escrito por Lucas Nogueira

julho 14, 2009 em 5:26 pm

Publicado em internet, programação

ponteiros e matrizes

fazer um comentário »

como os elementos do vetor estão contíguos na memória, podemos fazer o seguinte procedimento para associar uma matriz a um ponteiro:

# include <stdio.h>
# include <string.h>

void get_name( char *v )
{
 printf("What's your name?\n");
 scanf("%s",&v[0]);
}

int main(void)
{
 char n[50];
 get_name( n );
 printf("How you doing, %s ?\n",n);

 return 0;
}

Escrito por Lucas Nogueira

julho 2, 2009 em 8:24 pm

Publicado em programação

Etiquetado com , ,

Alocação dinâmica em C

fazer um comentário »

A alocação dinâmica é o processo que aloca memória em tempo de execução. Ela é utilizada quando não se sabe ao certo quanto de memória será necessário para o armazenamento das informações, podendo ser determinadas em tempo de execução conforme a necessidade do programa. Dessa forma evita-se o desperdício de memória. Julio Battisti
Para alocarmos espaço na memória, teremos que usar certas funções da biblioteca stdlib.h. Algumas dessas funções são:
  • malloc( size_t tamanho ): aloca tamanho bytes na memória.
  • sizeof(tipo): retorna o tamanho do tipo de dados em bytes.
  • free( *ptr ): desaloca da memória o ponteiro. ATENÇÃO: Toda memória alocada dinamicamente deve ser liberada antes do término de um programa, caso contrário ela não estará disponível para outras aplicações ou programas.
Alocação dinâmica unidimensional (vetor):
#include <stdio.h>
#include <stdlib.h>

int main(void)
{

int i,x;
int *vetor;

scanf("%d",&x); //tamanho do vetor

vetor = malloc( x * sizeof( int )); 

for ( i = 0 ; i < x ; i++ ) scanf("%d",&vetor[i]);

free(vetor); //liberando a memoria alocada.

return 0;
}
Alocação bidimensional (matriz)
#include <stdio.h>
#include <stdlib.h>

int main(void)
{

int i,j;
int x,y;

int **matriz;

scanf("%d",&x);
scanf("%d",&y);

matriz = malloc( x*sizeof(int) );

//preenchendo as colunas
for ( i = 0 ; i < x ; i++ )
    matriz[i] = malloc( y*sizeof(int) );

//lendo as celulas  
for ( i = 0 ; i < x ; i++ )
    for ( j = 0 ; j < y ; j++ )
        scanf("%d",&matriz[i][j]);

free(matriz);

return 0;
}

Escrito por Lucas Nogueira

abril 18, 2009 em 2:07 pm

Publicado em programação, Uncategorized

Etiquetado com

brincando com javascript (básico)

com um comentário

Basicamente, isso é uma página com uma caixa de texto (textarea) com alguns “botões” que adicionam tags na caixa de texto. Apesar de básico, pode ser bem útil.

Leia o resto deste post »

Escrito por Lucas Nogueira

março 27, 2009 em 8:42 pm

Publicado em programação

Etiquetado com ,

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.