int regexcmp(char *myregex, char *entrada) {
/* aloca espaço para a estrutura do tipo regex_t */
regex_t reg;
/* compila a ER passada em (a)
* em caso de erro, a função retorna diferente de zero
*/
if (regcomp(®, myregex, REG_EXTENDED | REG_NOSUB) != 0) {
fprintf(stderr, "erro regcomp\n");
exit(1);
}
/* tenta casar a ER compilada (®) com a entrada
* se a função regexec retornar 0 casou, caso contrário não
*/
return regexec(®, entrada, 0, (regmatch_t *) NULL, 0);
}// Fim da função
// exemplo de uso
//-----------------------------------------------------------------------------------
void main(int argc, char *argv[]){
if(!regexcmp("<[[:alnum:]]+>", argv[1])){
printf("Tem tags XML\n");
}else{
printf("Não tem tags XML");
}
}
/*
Pessoal,
Todos que usam C e C++ com mais seriedade sabem que a utilização da
memória pode ser um problema.
Matreizes dinâmicas, ponteiros de char e tudo o mais que pode crescer
e explodir o programa.
Não seria bom se a linguagem C tivesse um recurso para controlar a
memória ? Em alguns projetos, sim. Em outros é bom ter um controle
manual da memória.
Tudo que é automático falha automaticamente.
Mas e se fosse possível usar este recurso sempre que for conveniente
sem perder o poder de poder fuçar na unha quando for necessário ?
Hmmmm agora estamos falando como programadores de verdade!
A linguagem C é extensível e existe como adicionar uma lib que faça o
sujo trabalho de coletar o lixo para nós.
Sim, a biblioteca de GC (Garbage Colector), possui um algoritmo de
"limpeza" de memória e basicamente você não vai ficar perdido em meio
a funções free() não finalizadas e também vai ter uma indicação melhor
em tempo de execução se alguma área de memória explodiu, e onde.
Isso dá uma grande agilidade e poder de depuração.
Bom, as referências dessa lib: Está hospedada e mantida pela HP. É
usada no projeto Mozilla, Inkscape, Mono e vários projetos.
Abaixo um simples exemplo de programa devorador de memória alocada e
como ele fica simples feito com a lib.
Vejam que basta utilizar GC_MALLOC() no lugar do mal-loco() original
ou seja a lib possui interface com o esquema de alocação de memória
feito por programadores cabra-macho sim senhor.
E notem também que o free() foi pra /dev/null
*/
//Exemplo de utilização da biblioteca. loop.c
#include "gc.h"
#include <assert.h>
#include <stdio.h>
int main()
{
int i;
GC_INIT(); /* Optional on Linux/X86; see below. */
for (i = 0; i < 10000000; ++i)
{
int **p = (int **) GC_MALLOC(sizeof(int *));
int *q = (int *) GC_MALLOC_ATOMIC(sizeof(int));
assert(*p == 0);
*p = (int *) GC_REALLOC(q, 2 * sizeof(int));
if (i % 100000 == 0)
printf("Heap size = %d\n", GC_get_heap_size());
}
return 0;
}
//EOF
// Compilação:
// cc -I/home/xyz/gc/include loop.c /home/xyz/gc/lib/libgc.a -o loop
//Referencias da lib:
//http://www.hpl.hp.com/personal/Hans_Boehm/gc/
//http://www.hpl.hp.com/personal/Hans_Boehm/gc/simple_example.html
Os monitores widescreen são ótimos para ver filmes e vídeos, mas para editar textos, programar e criar webpages mostram bem poucas linhas e “desperdiçam” muito espaço lateral.
Mas com um pequeno suporte de madeira podemos colocar o monitor a 90 graus e aproveitar a largura dele como se fosse altura .
Fica como aqueles monitores de Arcade antigos.
No KDE fica fácil ajustar a tela para que ela funcione “de lado” a 90 graus.
Crie um script e coloque em:
~/.kde/Autostart com a seguinte linha:
#!/bin/bash
/usr/bin/kdialog --yesno "Virar tela 90%"
if [ "$?" == "0" ] ; then
/usr/bin/xrandr -o 1
fi
.
Isso gera um popup no KDE perguntando se deseja virar o vídeo a 90 toda vez que logamos no kde.
Um <enter> vira a tela e um <esc> sai do popup.
Na imagem como ficou meu “novo monitor de programação”:
Fala pessoALL. Tudo tranquilo com vcs?
Bom, estou postando novamente para compartilhar o problema que tive com a instalação da JDK do Java 6 update 21. Troquei meu notebook por um da DELL e resolvi pegar esse fim de semana para fazer a instalação dos programas o qual eu utilizo no meu dia a dia de trabalho. Primeiro fiz as cópias de todos os meus arquivos para o notebook novo e depois resolvi instalar as ferramentas de desenvolvimento que eu utilizo.
Bom quando baixei a SDK do Java, tentei executá-la e obtive um erro um tanto quanto estranho. O erro apresentado foi o seguinte: “Erro ao aplicar transformações. Verifique se os caminhos de transformação especificados são válidos”. Como foi a primeira vez que obtive esse erro, fui dar uma googlada para verificar se achava alguma coisa, e pra minha surpresa a maioria dos itens que achei, não resolviam meu problema. Quebrando um pouco a cabeça, cheguei a solução da seguinte maneira:
1º Passo: Executei o instalador em modo de log com o comando: jdk-6u21-windows-i586.exe -l*v c:\arquivo.log. Este comando faz com que seja gerado um arquivo de log, o qual armazenei na pasta raiz com o nome arquivo.log
2º Passo: Analisei o arquivo gerado e vi que ele extraia um arquivo .MSI em uma determinada pasta, no meu caso era: “C:\Users\Jederson\AppData\LocalLow\Sun\Java\jdk1.6.0_21″. Para localizar essa linha procure pelo termo: “Package we're running from ==>".
Com isso siga para o caminho localizado ai, e execute o arquivo .MSI, com isso a instalação irá percorrer sem problemas.
É isso ai pessoal. Java is the future.
Abraço ALL
yo! Vamos a mais uma nerdica simples. Você, assim como eu, pode ter alguns servidores espalhados por aí, servidores de clientes que, por algum motivo ou outro, quer desligar o servidor durante do fim de semana ou por dar umas férias coletivas e fechar a empresa por algum tempo (ok, acho que ninguém faz mais isso hoje em dia…).
Geralmente os servidores não tem monitor e é um desperdício de tempo ir no local só para desligar o servidor e nem sempre temos a chance de fazer isso remoto. Pior ainda é fornecer a senha root (ou qualquer outra) para o dono da empresa e deixar ele fazer isso, já que é um perigo permitir acesso ao servidor sem necessidade e ainda mais se a pessoa, como é na maioria dos casos, não possui conhecimento em Linux.
Read more…
yo!
O csh (ou tcsh), shell padrão do FreeBSD desde há um bom tempo não é muito legal, ao meu ver, então segue a dica para deixá-lo mais com a cara do bash.
Basta editar o arquivo .cshrc e para ativar as mudanças sem precisar relogar no sistema, basta executar:
source .cshrc
1. Mudar a aparência:
set prompt="%B%n@%m:%~# "
O prompt ficará assim:
root@scoobydoo2:/home#
Read more…
Outro dia, num dos servidor www que administro, uma atualização na árvore do ports resultou na quebra do php5-gd. No /var/log/httpd-error.log constava:
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/gd.so’ – Shared object "libjpeg.so.10" not found, required by "gd.so" in Unknown on line 0
Tentei atualizar o php5 para o php52 e as extensões. Depois tentei ir mais fundo e reinstalar a gd e a php52-gd, mas mesmo assim não resolveu. Era necessário recompilar mais coisas e eu não sabia por onde começar. Googlando um pouco descobri que o portmanager podia resolver o problema. Read more…
O date é um comando que sempre foge á memória, pois seu formato é um pouco prolixo.
Vamos ser sinceros, todos já erramos na sintaxe desse monstinho !
Normalmente eu uso o ntpdate para acertar hora e data e mando o date as favas. Mas nem sempre isso é possível.
Vou passar a dica rápida para alterar a data do linux sem ter que mexer nas horas e minutos e como alterar as horas e minutos sem mexer na data. Read more…
Comentários