Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Tópicos - Diego_Rocha

Páginas: [1] 2 3
1
Programação e Scripts / exemplo de uso do map e vector em C++
« Online: 12 de Agosto de 2007, 16:30 »
Pra quem naum conhece o map e o vector do C++ aqui vai um exemplo,

Código: [Selecionar]

#include <iostream>
#include <map>
#include <vector>
#include <string>

int main(){
   std::map< std::string, std::string > MyMap; //aqui criamos o map
   /*aqui criamos o iterator do map para podermos navegar pelo mapa */
   std::map< std::string, std::string >::iterator MyIterMap;
   std::vector< std::string > MyVector; //criamos o vetor
   /*aqui iniciamos o iterator pro vetor lembrando que sempre o iterator tem q ser igual o vetor entaum se seu vetor é std::vector<int> o iterator tbm tem q ser std::vector<int>::iterator de int*/
   std::vector< std::string >::iterator MyIterVector;
   MyVector.push_back("vetor1");
   MyVector.push_back("vetor2");
   MyVector.push_back("vetor3");/* aqui adicionas no final do vetor os valores*/
   MyMap["Teste1"] = "map1";
   MyMap["Teste2"] = "map2";
   MyMap["Teste3"] = "map3";/*aqui adiconamos valores no mapa*/
/*agora vamos imprimir os conteudos do vetor e do mapa usando os iteratores */

   MyIterVector = MyVector.begin(); //aqui colocas o iterator no começo do vetor
   MyIterMap = MyMap.begin(); //aqui a mesma coisa
   while( MyIterVector != MyVector.end() ) /* enquanto o iterator for diferente do final do vetor ele vai imprimir o resultado */
   {
      std::cout << *MyIterVector<<std::endl;
      MyIterVector++; //aqui passamos o iterator pra proxima posição
   }
   while( MyIterMap != MyMap.end() ) //aqui a mesma coisa
   {
   /* aqui pegamos o primeiro valor do map ou seja o valor MyMap["teste1"] esse valor pra podermos imprimir seu valor que é "map1" */
   std::string values = (*MyIterMap).first;
   std::cout <<  MyMap[values] <<std::endl;
   MyIterMap++;
   }
   return 0;
}
resultado
Código: [Selecionar]
vetor1
vetor2
vetor3
map1
map2
map3

Agora vcs devem estar se pergutando eu posso usar um map com vetor a resposta é sim voce pode usar um std::map< std::string, std::vector<std::string> > que é um mapa de vetor de string, pode tbm usar uma mapa de vetor de struct, e pode usar ate um mapa de mapa de vetor de string mais isso voce tem que descobrir como fazer sozinho ;) pode usar template tbm pra ter mapas e vectores que possam assumir varios tipos, só pra naum deixar na curiosidade aqui vai um exemplo de mapa de vetor de struct

Código: [Selecionar]
#include <iostream>
#include <map>
#include <vector>
#include <string>

struct di
{
std::string query;
int length;
};

int main()
{
std::map< std::string, std::vector< di > > teste;
std::map< std::string, std::vector< di > >::iterator iter;
std::vector< di >::iterator viter;

di diego;
diego.query ="diego";
diego.length = strlen("diego");

teste["teste1"].push_back( diego );

std::cout << teste["teste1"][0].length <<std::endl;

diego.query = "rocha";
diego.length = strlen("rocha");

teste["teste2"].push_back( diego );

iter = teste.begin();
while( iter != teste.end())
{
std::string valor = (*iter).first;
viter = teste[valor].begin();
while( viter != teste[valor].end())
{
std::cout << (*viter).query <<" "<<(*viter).length<<std::endl;
viter++;
}
iter++;
}
return 0;
}
resultado
Código: [Selecionar]
5
diego 5
rocha 5

é isso ae espero q ajude alguem t++

2
Fiz esse simples joguinho para mostrar como usar o ncurses,

Código: [Selecionar]
#include <iostream>
#include <string>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <ncurses.h>

class Roleta
{
private:
std::string roleta1, roleta2, roleta3, roleta4; //slots

std::string format;

bool win, exec;

int credits, games, rraposta, aposta, pay;

WINDOW *screen;
int y, x;

public:
Roleta()
{
exec = true;

credits = 51;
games = 0;
rraposta = aposta = 1;

win = false;

srand( time(NULL) );

init_curses();
_init_colors();
noecho();
curs_set(0);
getmaxyx( screen, y, x );

if ( x < 120 && y < 35 )
{
wattron( screen, COLOR_PAIR(1));
format = "Sorry try increase the resolution to play this game :)";
mvwaddstr( screen,(y/2),(x/2)-24, format.c_str() );
wattroff( screen, COLOR_PAIR(1));
refresh();
close();
}
}

~Roleta()
{

resetty();
endwin();
}

bool init_curses( )
{
if ( ( screen = initscr() ) == NULL )
{
std::cout << "Erro ao iniciar window!" << std::endl;
return false;
}
savetty();
refresh();
return true;
}

void _init_colors()
{
if (has_colors())
{
start_color();
if ( use_default_colors() != ERR )
{
init_pair( 1, COLOR_RED, -1 );
init_pair( 2, COLOR_CYAN, -1 );
init_pair( 3, COLOR_BLUE, -1 );
}
}
}

std::string sorted()
{
a:  //goto
int myrandnumber = rand() % 20 + 1;
if ( myrandnumber < 5 )
return "apple";
else if( myrandnumber > 5 && myrandnumber < 9 )
return "**BONUS**";
else if ( myrandnumber > 9 && myrandnumber < 13 )
return "lemon";
else if ( myrandnumber > 13 && myrandnumber < 20 )
return "oranje";
else
goto a;

}

void update()
{
char tt[5];

sprintf( tt, "%d", games );
wattron( screen, COLOR_PAIR(2) );
format = "Games: ";
mvwaddstr( screen, 2, 4, format.c_str() );
mvwaddstr( screen, 2, 12, tt );
sprintf( tt, "%d", credits );
format = "Credits: ";
mvwaddstr( screen, 3, 4, format.c_str() );
mvwaddstr( screen, 3, 14, tt );
wattroff( screen, COLOR_PAIR(2) );
refresh();
}

void make_game()
{
char c;
int i = 0;
char tt[5];

while ( c != 'q' )
{
switch( c )
{
case 65:
if ( rraposta < credits )
rraposta++;
break;
case 66:
if ( rraposta > 1 )
rraposta--;
break;
case 10:
run();
break;
}

if ( i == 0 )
run();

aposta = credits < rraposta ? credits : rraposta;
rraposta = aposta;

wattron( screen, COLOR_PAIR(2));
sprintf( tt, "%d     ", aposta );
mvwaddstr( screen, (y/2)-6, 4, "BET = multiplies");
mvwaddstr( screen, (y/2)-6, 22, tt );
wattroff( screen, COLOR_PAIR(2));
refresh();

c = getch();
i++;
}

}

void run( )
{
clear();
int i = 0, j = -4;
bool printwin;
char tt[5];
std::string option;
win = false;



wattron( screen, COLOR_PAIR(2) );
mvwaddstr( screen, (y/2)-10, (x/2)-23,"**BONUS** = 50 credits");
mvwaddstr( screen, (y/2)-9, (x/2)-23, "orange    = 2 credits");
mvwaddstr( screen, (y/2)-9, (x/2)+6,"apple =  5 credits");
mvwaddstr( screen, (y/2)-10, (x/2)+6, "lemon = 10 credits");
wattroff( screen, COLOR_PAIR(2) );

mvwaddstr( screen, (y/2)-7, (x/2)-23, "+---------------------------------------------+");
mvwaddstr( screen, (y/2)-6, (x/2)-23, "|  Slot 1  |  Slot 2  |  Slot 3   |  Slot 4   |");
mvwaddstr( screen, (y/2)-5, (x/2)-23, "+---------------------------------------------+");

while ( i < 5 )
{
roleta1 = sorted();
roleta2 = sorted();
roleta3 = sorted();
roleta4 = sorted();
printwin = false;
if ( roleta1 == roleta2 && roleta2 == roleta3 && roleta3 == roleta4 )
{
if ( roleta1 == "**BONUS**" )
{
credits += 50 * aposta;
pay = 50 * aposta;
}
else if ( roleta1 == "apple" )
{
credits += 5 * aposta;
pay = 5 * aposta;
}
else if ( roleta1 == "lemon" )
{
credits += 10 * aposta;
pay = 10 * aposta;
}
else
{
credits += 2 * aposta;
pay = 2 * aposta;
}

win = true;
printwin = true;
}

sprintf( tt, "%d", pay );
option = tt;
if ( printwin )
wattron( screen, COLOR_PAIR(1));

format ="| "+roleta1;
mvwaddstr( screen, (y/2)+j, (x/2)-23, format.c_str() );
format ="| "+roleta2;
mvwaddstr( screen, (y/2)+j, (x/2)-12, format.c_str() );
format ="| "+roleta3;
mvwaddstr( screen, (y/2)+j, (x/2)-1, format.c_str() );
format ="| "+roleta4;
mvwaddstr( screen, (y/2)+j, (x/2)+11, format.c_str() );

if ( printwin )
{
if ( roleta1 == "**BONUS**" )
format = "| **** BONUS +50";
else
format = "| *** +"+option+" credit";
}
else
format = "|";

mvwaddstr( screen, (y/2)+j, (x/2)+23, format.c_str());

if ( printwin )
wattroff( screen, COLOR_PAIR(1));

mvwaddstr( screen,(y/2)+(++j),(x/2)-23, "+---------------------------------------------+");

refresh();
i++;
j++;

}
refresh();
games++;

if ( credits == 0 )
{
clear();
wattron( screen, COLOR_PAIR(1));
mvwaddstr( screen, (y/2), (x/2)-strlen("GAME OVER"), "GAME OVER");
wattroff( screen, COLOR_PAIR(1));
refresh();
close();
}

if ( !win )
credits -= aposta;

mvwaddstr( screen,(y/2)+(++j),(x/2)-11, "Type 'UP or DOWN' to increase or diminish bet");
mvwaddstr( screen,(y/2)+(++j),(x/2)-11, "Type 'enter' to spin");
mvwaddstr( screen,(y/2)+(++j),(x/2)-11, "Type 'q' to quit game");

update();
}

void close()
{
resetty();
endwin();
exit(0);
}
};

int main()
{
Roleta rol;
rol.make_game();
return 0;
}

/*compilar
#g++ roleta.cpp -o roleta -lncurses
#./roleta
*/

Espero q sirva pra alguma coisa t++

3
Programação e Scripts / templates C++
« Online: 21 de Maio de 2007, 13:25 »
Ae pessoal é o seguinte estou estudando templates e gostaria de saber onde esta o erro nesse codigo

Código: [Selecionar]
#include <string>
#include <iostream>
using namespace std;


template<typename T, int VALOR = 125>
T teste(T a, T b)
{
cout << "Esse é VALOR = "<< VALOR<< endl;
cout << "Esse é a + b = "<< a + b<< endl;
}

template<class T, int DIM = 25>
class Stack{
T dado[DIM];
unsigned size;
public:
Stack(){ size = 0; }
~Stack(){ cout<< size<< endl; }
bool empty()const{ return size == 0; }
T& top(){ return dado[size - 1]; }
T& botton(){ return dado[size - (size + 1)]; }
void push(const T &p){ dado[size++] = p; }
void pop(){ --size; }
};

int main()
{
int a=5, b=10;
teste<int, 32>(a, b);

Stack<double, 55> Double_Stack;
Double_Stack.push( 221 );
cout << Double_Stack.top()<< endl;
}

quando compilo sai esse erro

Código: [Selecionar]
rocha:~# g++ template.cpp -o template
template.cpp:7: error: default template arguments may not be used in function templates

se alguem puder me dar uma dica de onde esta o erro ficaria grato,

4
Sistema / Compilando Kernel
« Online: 15 de Maio de 2007, 12:51 »
Ai galera resolvi hoje escrever um breve artigo de compilação de kernel, lembrando que, como nem todos tem o mesmo pc vamos abordar a compilação de uma forma generica, ficando a seu cargo escolher as opções que melhor se adaptam ao seu pc, então vamos deixar de conversa mole e partir para compilação;

Antes de começar:
Para se compilar é necessarios ter o build-essentials e o kernel-package que pode ser instalado assim

Código: [Selecionar]
diego@rocha:~$ sudo apt-get install build-essentials kernel-package

1° o primeiro passo é baixar o codigo fonte do kernel, isso pode ser feito em www.kernel.org,

2° depois de baixado o codigo fonte iremos descomprimir, se você baixou em formato tar.bz2 use o seguinte comando

Código: [Selecionar]
diego@rocha:~$ sudo tar -jxvf linux-XXXXX.tar.bz2 -C /usr/src

se baixou o codigo fonte com o formato .tar.gz use esse comando

Código: [Selecionar]
diego@rocha:~$ sudo tar -zxvf linux-XXXXX.tar.gz -C /usr/src

3° pronto já descompactamos e ja poderemos começar a compilação,

3.1 - vá ate a pasta /usr/src e crei um link do seu kernel que acabamos de descompactar para a pasta linux isso pode ser feito assim,

Código: [Selecionar]
diego@rocha:~$ cd /usr/src
diego@rocha:/usr/src$ sudo rm linux         obs:  esse comando caso voce ja tenha uma pasta antiga com nome de linux
diego@rocha:/usr/src$ sudo ln -s linux-XXXXX linux
obs: lembrando sempre que o XXXXX do linux-XXXXX é a versão do kernel que você baixou

3.2 - agora vamos vamos copiar o .config generico do seu kernel atual para podermos ter uma base, e não esquecer de selecionar alguma opção fundamental, é sempre bom usar um config ja existente de um kernel que esteja funcionando bem, para não corrermos o risco de esquecer de alguma opção e ver a tão temida mensagem de kernel-panic, então vamos fazer isso, geralmente os "configs" que ficam na pasta /boot vem com o numero da versão do kernel no final exemplo config-2.6.18, então vamos copiar ele para o /usr/src/linux com o seguinte comando

Código: [Selecionar]
diego@rocha:/usr/src$ cd linux
diego@rocha:/usr/src/linux$ cp /boot/config-XXXX .config
obs: Pegue sempre o config do kernel mais recente para uma melhor compatibilidade

Pronto kernel descopactado, config copiado vamos agora para a proxima etapa;

4° A próxima e mais dolorida etapa é a configuração, é o momento crucial da compilação, que exige que voce tenha bom conhecimento do hardware que possui, deslizes não são aceitos em uma compilação de kernel por isso usamos o config do seu kernel que esta funcionando, imagine que seu sistema de arquivos é ext3 e voce compila o kernel com a opção ext3 desativada ou como modulo, nem carregaria seu sistema, por isso é bom conhecer o que voce tem no seu pc e o que é fundamental para o funcionamento dele, lembre-se sempre que o www.google.com.br/linux esta ai para te ajudar então se voce acha que deve ativar uma opção pesquise antes sobre ela no google ele com certeza vai te explicar melhor o que fazer; a escolha entre modulo( carregado quando necessario) e build-in( carregado no boot) tambem é fundamental para um bom desempenho do sistema, por isso não va com pressa, tenha calma e va devagar na hora da escolha,

4.1° então vamos lá, se você foi esperto e leu o README que vem com o kernel você viu que temos varias opções a respeito de como fazer a configuração, podemos usar o make menuconfig, o oldconfig, o xconfig e o gconfig, se voce usa kde o xconfig é mais aconselhado pq usa a biblioteca Qt, se usa o gnome é mais aconselhado o gconfig que usa a Gtk+, se você prefere uma opção mais simples pode usar o menuconfig, que usa o dialogs para a escolha das opções, o oldconfig eu não aconselho, mais fica a seu criterio experimentar ele ou não, quando se decidir entra qual usar pode chamar ele no terminal

Código: [Selecionar]
diego@rocha:/usr/src/linux$ make menuconfig                 ***se escolheu menuconfig
diego@rocha:/usr/src/linux$ make xconfig                        ***se escolheu xconfig
diego@rocha:/usr/src/linux$ make gconfig                        ***se escolheu gconfig
diego@rocha:/usr/src/linux$ make oldconfig                     ***se escolheu oldconfig

4.2° depois de escolhida a opção de configuração, você só terá que carregar o .config que copiamos para a pasta /usr/src/linux lembra, então vai na opção load ou abrir, e carregue o arquivo .config q esta no mesmo diretorio do linux em /usr/src/linux/.config, agora é com você escolher o que lhe convém,

5° depois de escolhido tudo que queria e tendo certeza que não se esqueceu de nada, vamos compilar, com o seguinte comando

Código: [Selecionar]
diego@rocha:/usr/src/linux$ sudo make
diego@rocha:/usr/src/linux$ sudo make modules_install

Isso pode demorar horas e ate dias dependendo da sua maquina e da quantidade de opções escolhida, então nessa hora é bom ir tomar um cafezinho assistir um filme sei la XDD, se tudo ocorreu bem ja podemos partir para a etapa final,

6° agora vamos copiar o bzImage para a pasta boot com o seguinte comando

Código: [Selecionar]
diego@rocha:/usr/src/linux$ sudo cp arch/i386/boot/bzImage /boot/vmlinuz-XXXXX
obs: relebrando o XXXXX é a sua versão do kernel

7° vamos copiar o System.map

Código: [Selecionar]
diego@rocha:/usr/src/linux$ cp System.map /boot/System.map-XXXXX

7.1° E vamos linkar o System.map-XXXXX para o System.map

Código: [Selecionar]
diego@rocha:/usr/src/linux$ ln -s /boot/System.map-XXXXX /boot/System.map

8° e pro ultimo copiar o .config para o /boot para usarmos como base em uma proxima compilação

Código: [Selecionar]
diego@rocha:/usr/src/linux$ cp .config /boot/config-XXXXX

8.1° se voce compilou seu kernel com o necessario para uma inicialização em build-in pule essa parte se não sabe nem do que to falando faça isso

se usa ext3
Código: [Selecionar]
diego@rocha:/usr/src/linux$ cd /boot
diego@rocha:/boot$ mkinitrd -c -k XXXXX -m jbd:ext3 -f ext3 -r /dev/hdXX

se usa reiserfs
Código: [Selecionar]
diego@rocha:/usr/src/linux$ cd /boot
diego@rocha:/boot$ mkinitrd -c -k XXXXX -m reiserfs
obs: Sempre lembrando que o XXXXX é o numero da versão do seu kernel

se usa outro tipo de Sistema de Arquivos faça isso www.google.com.br/linux e pesquise sobre como fazer o initrd do seu FS  ;)

9° agora adicione no grub o novo kernel,

Código: [Selecionar]
diego@rocha:/boot$ gedit /boot/grub/menu.lst
e acrescente

Citar
#kernel-XXXX
title Kernel-XXXXX
root (hd0, 0)                         **** aqui voce coloca sua partição
kernel /boot/vmlinuz-XXXXX                    ***** se lembra de mudar o XXXXX para seu kernel
root = /dev/hda1 ro vga=773                  **** aqui tbm suas opções
initrd = /boot/initrd.gz                               

10° bom pessoal é isso, se funcionou blza parabens, se não funcionou blza, tenta denovo só que dessa vez com mais atenção e sempre usando nosso grande amigo google, peço desculpas pelos erros de ortografia e qualquer sugestão sera muito bem vinda, é isso ai espero ter ajudado t+++

5
Programação e Scripts / MySql em C
« Online: 13 de Maio de 2007, 18:44 »
Pessoal é o seguinte como estou aprendendo gtkmm e etc, gostaria de fazer um programinha que usasse interface e que usasse banco de dados, ate ai tudo bem então comecei a aprender a programar em c++ com mysql ( usando a api do c), ai fiz varios programinhas que tinha em tutoriais blza, ai tentei fazer um sozinho, compila blza só que na execução da segmentation fault aqui vai o teste

Código: [Selecionar]
#include <iostream>
#include <mysql/mysql.h>

using namespace std;

#define HOST "localhost"
#define USER ""
#define PASS ""
#define DB "teste"

int main()
{
MYSQL mysql;
mysql_init(&mysql);
if(mysql_query(&mysql, "CREATE DATABASE teste"))
fprintf(stderr, "Falha ao criar Base de Dados;\nErro: %s\n", mysql_error(&mysql));
else{
if(mysql_real_connect(&mysql, HOST, USER, PASS, DB, 0, NULL, 0))
fprintf(stderr, "Erro ao se conectar na Base de Dados;\nErro: %d: %s\n",
mysql_errno(&mysql), mysql_error(&mysql));
else{
printf("Conectado...");
mysql_close(&mysql);
}
}
return 0;
}

Código: [Selecionar]
~# ./mysql
Segmentation fault

aqui o debug do programinha

Código: [Selecionar]
(gdb) run
Starting program: /home/diego/mysql

Program received signal SIGSEGV, Segmentation fault.
0x40062c1a in mysql_send_query () from /usr/lib/libmysqlclient.so.15

gostaria de saber o seguinte, eu posso usar o mysql_query() dentro de um if ou tenho q tratar ele antes com alguma função, para criar o banco de dados tentei usar o mysql_create_db(), mas da erro na compilação, ( meu mysql é mysql  Ver 14.12 Distrib 5.0.24a, for slackware-linux-gnu (i486) using  EditLine wrapper), se alguem tiver idéia do que possa ser fico grato t+++

***lembrando que estou com meu mysql funcionando e com o daemon do mysql ativado

6
Aplicativos / Problema com firefox[RESOLVIDO]
« Online: 10 de Maio de 2007, 12:44 »
E ai pessoal não sei se essa é a sessão certa para postar meu problema mais ai vai, hoje percebi que minha tecla f não esta querendo funcionar no firefox ( so funciona se eu apertar varias vezes  ), porem no console, no pidgin, no xchat etc a tecla funciona normal, por isso tiro a conclusão que o problema não é no teclado e sim no firefox, alguem tem algum palpite ??


***Ae pessoal consegui arrumar, o problema não era só com o firefox e sim com mais aplicativos, ae tive que mapear minha tecla f com o keycode dela e ta funcionando tudo aqui blza

7
Programação e Scripts / Erro ao compilar gtkmm-2.4[RESOLVIDO]
« Online: 06 de Maio de 2007, 23:37 »
Pessoal é o seguinte estou começando a aprender gtkmm, só que estou com o seguinte problema para compilar esse codigo,

Código: [Selecionar]
#include <iostream>
#include <gtkmm.h>

int main(int argc, char **argv)
{
Gtk::Main main(argc, argv);
Gtk::Window janela;
Gtk::Main::run(janela);
}

me sai esse erro

Código: [Selecionar]
/~$ g++ teste.cpp -o teste `pkg-config gtkmm-2.4 --cflags --libs`
/usr/lib/gcc/i486-slackware-linux/3.4.6/../../../../i486-slackware-linux/bin/ld: warning: libstdc++.so.5, needed by /usr/lib/gcc/i486-slackware-linux/3.4.6/../../../libgtkmm-2.4.so, may conflict with libstdc++.so.6
root@rocha:~# removepkg cxxlibs-5.0.7-i486-1.tgz


alguem tem ideia do que seja??

***Ai pessoal consegui resolver, instalei a versão mais recente do gcc e do binutils e agora compila, so que tenho outro problema, o que tem de errado nesse codigo???

Código: [Selecionar]
#include <iostream>
#include <gtkmm.h>

using namespace std;

class MyApp : public Gtk::Window
{
public:
MyApp();
virtual ~MyApp();
protected:
Gtk::Button m_button;
virtual void botao_clicado();
};

MyApp::MyApp() : m_button("Clique Aqui")
{
set_title("Hello World");
set_border_width(15);
set_default_size(250, 125);
add(m_button);
m_button.signal_clicked().connect( sigc::slot ( *this, &MyApp::botao_clicado ) );
show_all_children();
}

MyApp::~MyApp()
{
}

void MyApp::botao_clicado()
{
cout <<"Hello World\n";
}

int main(int argc, char **argv)
{
Gtk::Main kit(argc, argv);

MyApp App;
Gtk::Main::run(App);
return 0;
}

Quando compilo sai isso

Código: [Selecionar]
:~$ g++ teste.cpp -o teste `pkg-config --cflags --libs gtkmm-2.4`
teste.cpp: In constructor 'MyApp::MyApp()':
teste.cpp:22: error: missing template arguments before '(' token

8
Programação e Scripts / Problema com o autoconf no kdevelop[RESOLVIDO]
« Online: 03 de Maio de 2007, 15:27 »
E ai pessoal blza, o problema é o seguinte toda vez que tento fazer o build, o kdevelop pede para mim executar antes o automake & friends, e é justamente nessa hora que sai o seguinte erro:

*** YOU'RE USING autoconf (GNU Autoconf) 2.61.
*** KDE requires autoconf 2.52, 2.53 or 2.54
gmake[1]: *** [cvs] Error 1
gmake: *** [all] Error 2
*** Exited with status: 2 ***

não sei como posso resolver isso, andei pesquisando muito no google, e vi que o problema pode ser solucionado atualizando a pasta admin/ do meu kde, so que não sei como fazer isso, se alguem puder me ajudar icarei grato t++

9
Programação e Scripts / Duvida com um Programa em C
« Online: 28 de Abril de 2007, 17:55 »
Pessoal é o seguinte eu queria saber por que a bendita função system() nao esta querendo funcionar se alguem tiver ideia fico grato, obrigado t+++

Código: [Selecionar]
#ifndef _BACK_
#define _BACK_

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

typedef struct _dir {
char *current_dir;
int len;
}_DIR;

int
main ()
{
  _DIR *dir = (_DIR *)malloc(sizeof(_DIR));
  dir->current_dir = (char *)get_current_dir_name();

  dir->len = strlen(dir->current_dir);

  for (dir->len; dir->len >= 0; dir->len--){
  if ( dir->current_dir[dir->len] == '/' )
  break;
  dir->current_dir[dir->len] = '\0';
  }
  char cmd[dir->len + 4];
  sprintf(cmd,"cd %s", dir->current_dir);

  system(cmd);

  return 0;
}
#endif

10
Programação e Scripts / Mostrando informações do user na tela ( c++ )
« Online: 31 de MAR?O de 2007, 21:10 »
Esse codigo, é para mostrar o nome do user o diretorio corrente, o shell que ele esta usando o uid o euid o gid o egid etc;

Código: [Selecionar]
#ifndef _TESTE_
#define _TESTE_

#include <iostream>
#include <string>
#include <unistd.h>
#include <pwd.h>
using namespace std;

char *name;
char *current_dir;
char *shell;
__uid_t uid, euid;
__gid_t gid, egid;
__pid_t pid;

static inline void user(){
passwd *pw_entry;
pw_entry = getpwuid( geteuid());
if ( pw_entry == NULL) exit(1);
name = pw_entry->pw_name;
shell = getusershell();
}

static inline void __current_dir__(){
current_dir = get_current_dir_name();
}

static inline void __uid_gid__(){
uid = getuid();
euid = geteuid();
gid = getgid();
egid = getegid();
pid = getpid();
}

int main(){
user();
__current_dir__();
__uid_gid__();
cout <<"\nName:\t\t"<< name<< endl;
cout <<"Current Dir:\t"<< current_dir<< endl;
cout <<"Shell:\t\t"<< shell<< endl;
cout <<"uid:\t\t"<< uid<<"\neuid:\t\t"<< euid<< endl;
cout <<"gid:\t\t"<< gid<<"\negid:\t\t"<< egid<< endl;
cout <<"pid:\t\t"<< pid<<"\n\n";
return 0;
}
#endif

resultado

Código: [Selecionar]
# ./rocha

Name:           root
Current Dir:    /root/script/teste
Shell:          /bin/bash
uid:            0
euid:           0
gid:            0
egid:           0
pid:            4095

11
Programação e Scripts / Links para estudo da linguagem c
« Online: 29 de MAR?O de 2007, 15:41 »
E ai pessoal esse dias estive procurando codigos fontes para estudo e achei uns codigos bem legais vou postar os links aqui,

Site com codigos de varios shell, ( bash, ash, etc..)

http://www.ibiblio.org/pub/Linux/system/shells/!INDEX.html

Para quem quer seguir os passos do Linus o site com sources codes do Minix

http://www.minix3.org/previous-versions/

Para quem quer estudar o funcionamento do Beryl

http://www.beryl-project.org/releases.php

Aqui o source code do proprio gcc

ftp://ftp.fu-berlin.de/unix/languages/gcc/prerelease-4.2.0-20070316/

Aqui outro site com sources e Docs do Bash

ftp://ftp.gnu.org/gnu/bash/

Quem quiser colabor com links é so postar t++

12
Projetos da Comunidade / Programa drtab(** update versão 1.1) !
« Online: 26 de MAR?O de 2007, 21:19 »
Criei esse dias um programa chamado drtab, vou explicar detalhadamente o funcionamento do programa,

Uso :

Código: [Selecionar]
drtab /dev/hda1 /mnt/hda1 ext3

O programa ao ser executado com os parametros acimas, cria uma pasta em /mnt com o nome hda1, e tenta montar a partição, caso exista algum erro na montagem ( erros possiveis, partição ja montada retorna erro, partição inexistente retorna erro )ele automaticamente deleta a pasta hda1 e te retorna o erro, caso não ocorra erros na montagem ele vai para a segunda etapa que é identificar se a partição ja não existe no fstab, caso a partição ja exista no fstab ele retorna a linha existente no fstab, e retorna um erro, caso não exista a linha no fstab ele cria a linha para a partição ( com os parametros default ), no caso acima ele automaticamente adicionaria "/dev/hda1 /mnt/hda1 ext3 defaults 0 0", os formatos de partição suportados por enquanto são, " ext3, reiserfs, fat e ntfs ", caso escolha um formato invalido ele retorna um erro te avisando, caso escreva errado "/dev/" ele retorna um erro, caso a pasta que voce quer montar a partição ja exista ele retorna um erro, conclusão para passar nos testes de montagem a partição tem que estar realmente desmontada e não adicionada no fstab, não é permitido usar pastas ja existentes, se tentar usar uma pasta ja existente ele retorna erro, aqui o que voce teria que fazer sem o programa drtab;

Código: [Selecionar]
sudo mkdir /mnt/hda1
sudo mount -t ext3 /dev/hda1 /mnt/hda1 **se ocorrer algum erro voce teria que remover o diretorio com rmdir /mnt/hda1**
sudo gedit /etc/fstab

**e adicionar a linha no fstab, caso não saiba os parametros que tem que ser adicionado no fstab, voce teria que pesquisar na net ou postar o problema aqui no forum, com o drtab isso não é necessario por que ele adiciona automaticamente e mostra o resultado da adição**

Aqui o resultado do programa em ação

Código: [Selecionar]
drtab /dev/hda5 /mnt/diego reiserfs
Sucesso:
        Diretorio /mnt/diego criado com sucesso!

Erro:
        ***Particao nao montada,
        ***use --help para mais informacoes!
        ***use drtab -a para ver o correto formato da particao!
        ***Diretorio /mnt/diego removido!


**aqui o problema é que não existe a partição hda5 por isso o erro**

Código: [Selecionar]
drtab /dev/hda2 /mnt/diego reiserfs
Sucesso:
        Diretorio /mnt/diego criado com sucesso!

Erro:
        ***Particao nao montada,
        ***use --help para mais informacoes!
        ***use drtab -a para ver o correto formato da particao!
        ***Diretorio /mnt/diego removido!


**aqui a partição existe, porem ja esta montada**

Código: [Selecionar]
drtab /dev/hda2 /mnt/diego reiserfs -w
Sucesso:
        Diretorio /mnt/diego criado com sucesso!

Sucesso:
        Particao montada com sucesso!

/dev/hda2        /mnt/slack       reiserfs    defaults         1   2

Erro:
        ***Particao existente no fstab,
        ***use --help para mais informacoes!


**A partição foi montada, mas não foi editado o fstab porque a partição ja existe no fstab **

exemplo do help;
Código: [Selecionar]
HELP:

***Sintaxe
        drtab [/dev/particao] [diretorio] [formato da particao] [flag]

***Flags:
        -nw             nao escreve no fstab
        -w              escreve no fstab
        sem flag        escreve no fstab

***Exemplo
        drtab /dev/hda1 /mnt/hda1 ext3 -w

***Formatos suportados
        ntfs, ntfs-3g, ext3, fat, reiserfs;

***use drtab -a, para listar todas as particoes e seus respectivos formatos;

***use drtab --version, para ver a versao;

***Notas gerais:
        O drtab nao monta particoes em pasta existentes
        nao monta particoes ja montadas, porem o drtab
        monta a particao mesmo ela estando incluida no
        no fstab porem ele automaticamente te avisa e
        nao edita o fstab, versoes futuras do drtab, vão
        conter mais parametros para voce ter um dominio
        maior do que quer fazer com suas particoes !

O link para quem quiser, testar é este  **update, 28/03/07

http://rapidshare.com/files/23236471/drtab-1.1.tar.gz

para utilizar ele,  leia o README.txt que vem junto com ele;

Espero que gostem e que seja util para a comunidade, qualquer duvida é só postar, aceito sugestoes e criticas desde que as criticas sejam construtivas, é isso ai t++

13
Programação e Scripts / Programação com socket no linux.
« Online: 26 de MAR?O de 2007, 11:12 »
E ai pessoal gostaria de saber onde eu poderia encontrar apostilas sobre socket, tenho procurado muito no google porem parece que so tem apostilas e tutoriais de socket para windows, se alguem souber de um site ou ate mesmo de livros ou apostilas e puder me indicar onde achar ficarei grato, t++

14
Programação e Scripts / Pointer this
« Online: 20 de MAR?O de 2007, 18:29 »
Alguem poderia me explicar com clareza para que serve o pointer this em c++, sempre vejo ele nos headers e em arquivos de c++ porem não compreendi muito bem o que ele faz e o pior ja cansei de procurar no google e nada se alguem puder me explicar fico grato t++

15
Café com Ubuntu / Como os programadores caçam elefantes;
« Online: 05 de MAR?O de 2007, 21:43 »
HUMOR
Como os programadores caçam elefantes

Este divertido texto foi recolhido pelo professor Alexandre Sobrino, da Universidade Santa Cecília (Unisanta), que o publicou assim em seu website acadêmico:

Esta é uma versão levemente ampliada pelo Prof. Ricardo Jurczyk (docente da UFRJ e meu amigo desde os tempos do MSX) do divertido texto técnico "Como os Programadores Caçam Elefantes" (autor desconhecido).

dBASE
Programadores dBASE caçam elefantes apenas à noite, quando ninguém pode perceber que ainda usam tacapes, paus e pedras.

C
Recusam-se a comprar os rifles, preferindo adquirir canos de aço e todo o material necessário para construir o "rifle perfeito" a partir do zero - enquanto todos os outros já estão matando elefantes há muito tempo.

Turbo Pascal
Torcem o nariz para os programadores C, mas fazem igualzinho a eles. Como não usam "goto", têm dificuldades extras de locomoção (o que consideram uma vantagem). Os elefantes livram-se deles mudando de plataforma.

FoxPRO
Pegam os rifles que os programadores C jogaram fora e gastam mais tempo aprendendo novas técnicas de tiro do que realmente caçando elefantes.

Clipper
Não caçam elefantes realmente. Eles apenas compram bibliotecas de material de caça, uma após a outra, e gastam anos e anos tentando integrá-las e resolver os conflitos que surgem dessa integração.

Paradox
Viajam para a África com cópias de scripts de filmes de Hollywood sobre caçadas de elefantes, achando que esse material realmente irá ajudá-los a pegar um elefante.

Access
Programadores Access não têm experiência prévia em caça a elefantes. No entanto, estão sempre impecavelmente vestidos, com excelente visual. Conseguem enquadrar um elefante perfeitamente, mas sentem falta de um gatilho. Não importa: isso já é 99,9% da solução...

Visual Basic
Só caçam elefantes se tiverem o VBX adequado e a munição do tipo VBRUNxxx.DLL.

Java
Primeiro eles precisam esperar os governantes dos países onde irão caçar elefantes decidirem-se sobre como fazer uma única lei de caça. Depois, precisam esperar que a selva desses países seja totalmente padronizada (só assim eles não terão que trocar de roupa e de arma a toda hora). E. por fim, ainda precisam fazer uma última coisa... Epa... para onde foram os elefantes ?

Delphi
São mais independentes para a caçada do que os programadores Visual Basic, mas, em compensação, passam mais tempo se auto-promovendo do que dando tiro.

PowerBuilder
A arma que eles usam faz tudo sozinha: procura, acha, mira, atira, abate o alvo e recolhe o corpo. É tão boa, tão boa que dispensa o programador.

Assembly
Criam suas próprias manadas de elefantes-anões, pequenos e mais velozes do que um coelho.

ADA, APL e Fortran
São tão fictícios quanto Papai Noel, Branca de Neve e Dumbo, o elefante voador.

REXX/2
Esses podem ser encontrados fossilizados, perseguindo mamutes e mastodontes no período quaternário. Hoje em dia, estão extintos.

RBase
Programadores RBase são mais raros do que os elefantes. De fato, quando um elefante vê um programador RBase, considera-se em seu dia de sorte.

COBOL
Programadores COBOL têm uma profunda simpatia com os elefantes e jamais caçariam outra espécie em extinção.

***Meu nesse site tem um monte de piadinhas da epoca jurassica, vale a pena ver e rir,

http://www.novomilenio.inf.br/humor/0004h041.htm

Páginas: [1] 2 3