Toshiba A665

Posted in Uncategorized on setembro 7, 2011 by vendettaweisheimer

Novo brinquedinho! =D
Entao, recebi ontem o meu Toshiba Satellite A665, belo de um brinquedo =).
Como sempre, fui instalar o slack, tranquilo, achei ate facil demais, mas tinha que ter um probleminha pra complicar ne? 😛
Wireless nao funciona, ah mais que novidade!
lspci : nome da placa de rede : Realtek RTL8176.
Fui no site da realtek e baixei um driver superior, ja que nao tinha o da 8176.
http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true

Baixei, descompactei e dei um make.
Resetei e pra minha surpresa deu tudo certo! Foi so colocar wlan0 no wicd que ele ja achou a wireless aqui de casa.

Bom e isso, ate a proxima!

Anúncios

Agora sim! Procedimento detalhado de como arrumar uma Broadcom 4312 (tá mais pra Broadproblem)

Posted in Uncategorized on agosto 17, 2011 by vendettaweisheimer

Esta solução foi testada em meu Notebook Dell Inspiron 1525 rodando Slackware 13.1, porém, acredito que possa ser usada em qualquer distro,  já que iremos compilar  e ativar o módulo que será utilizado pelo kernel.

Outros placa suportadas são:

* BCM4310
* BCM4311
* BCM4312
* BCM4321
* BCM4322

Primeiro abra nosso amigo Terminal 😀 e se logue como root.

# cd /usr/src
Entra no diretórios onde estão localizados alguns fontes

# mkdir hybrid_wl
Criando a pasta que vai receber o arquivo com o fonte

# cd hybrid_wl
Entrando no diretório

# http://www.broadcom.com/support/802.11/linux_sta.php
Fazendo download do fonte

# tar -xzf hybrid-portsrc_x86_64-v5_100_82_38.tar.gz (no meu caso, driver de 64 bits)
Descompactando o fonte

# make -C /lib/modules/`uname -r`/build M=`pwd` clean
Executando limpeza antes da compilação definitiva

# make -C /lib/modules/`uname -r`/build M=`pwd`
Compilando o módulo

# rmmod bcm43xx b43 b43legacy ssb wl ndiswrapper
Apagando possíveis módulos instalados anteriormente

# modprobe lib80211_crypt_tkip
# modprobe lib80211
Carregando módulos necessários

# mkdir /lib/modules/`uname -r`/misc/
Criando diretório

# cp wl.ko /lib/modules/`uname -r`/misc/
Copiando módulo para o diretório

# insmod /lib/modules/`uname -r`/misc/wl.ko
Instalando o módulo

# depmod -a
Atualizando a lista de dependências do kernel

Como garantia vamos colocar os módulos antigos que não serão utilizados na backlist
# echo “blacklist bcm43xx” >> /etc/modprobe.d/blacklist
# echo “blacklist b43” >> /etc/modprobe.d/blacklist
# echo “blacklist b43legacy” >> /etc/modprobe.d/blacklist
# echo “blacklist ssb” >> /etc/modprobe.d/blacklist

Agora vamos adicional o modulo wl que acamos de compilar para que seja carregado automaticamente
# echo “lib80211_crypt_tkip” >> /etc/modules
# echo “lib80211” >> /etc/modules
# echo “wl” >> /etc/modules

Pronto reinicie o notebook e tenha sua wireless funcionando perfeitamente.
# init 6

Post baseado em http://www.opensourcespot.org/content/view/1031/103/.

Abraços e até o próximo post.

All I ever really needed to know I learned in kindergarten

Posted in Uncategorized on maio 18, 2011 by vendettaweisheimer

Acabei de abrir o meu terminal e eis que me surge esse texto, lendo ele vejo que não valorizamos o mais simples e essencial.

Most of what I really need to know about how to live, and what to do, and how to be, I learned in kindergarten. Wisdom was not at the top of the graduate school mountain but there in the sandbox at nursery school. These are the things I learned: Share everything. Play fair. Don’t hit people. Put things back where you found them. Clean up your own mess. Don’t take things that aren’t yours. Say you’re sorry when you hurt someone. Wash your hands before you eat. Flush. Warm cookies and cold milk are good for you. Live a balanced life. Learn some and think some and draw and paint and sing and dance and play and work some every day. Take a nap every afternoon. When you go out into the world, watch for traffic, hold hands, and stick together. Be aware of wonder. Remember the little seed in the plastic cup. The roots go down and the plant goes up and nobody really knows how or why, but we are all like that. Goldfish and hamsters and white mice and even the little seed in the plastic cup — they all die. So do we. And then remember the book about Dick and Jane and the first word you learned, the biggest word of all: LOOK. Everything you need to know is in there somewhere. The Golden Rule and love and basic sanitation. Ecology and politics and sane living. Think of what a better world it would be if we all — the whole world — had cookies and milk about 3 o’clock every afternoon and then lay down with our blankets for a nap. Or if we had a basic policy in our nation and other nations to always put things back where we found them and cleaned up our own messes. And it is still true, no matter how old you are, when you go out into the world it is best to hold hands and stick together.

— Robert Fulghum, “All I ever really needed to know I learned in kindergarten”

O Retorno

Posted in Uncategorized on abril 25, 2011 by vendettaweisheimer

É, voltei.

Após quase 1 ano sem usar Linux decidi fazer uma virada completa, tirei o meu rWindows Vista (e bota r nisso) e coloquei o Slackware 13.1 64 bits.

Bom, instalei tudo certinho, mesmo tendo que recorrer a ajuda do Marco várias vezes (creditos a ele \o) eu consegui instalar o slack e configurar a minha wireless sozinha através desse post : http://blog.bedendo.eti.br/configurando-wireless-bcm4312-no-debian-versao-2 .

É uma receita de bolo, serve tanto pra Debian quanto pra Slack (comprovado), após fazer isso, vá ao WICD e muda a sua interface de Wireless para eth1 (no meu caso).

Um forte abraço e mais uma vez muito obrigado ao Marco que vem sempre me tutoriando e ajudando no mundo Linux =)

Recomendações

Posted in Uncategorized on junho 25, 2010 by vendettaweisheimer

Apostila de C da UFMG, muito boa para quem está começando em C, me ajudou muito esse semestre.

(Só digitar no google que aparece entre os primeiros)

(:

Progama Final de Programação em C

Posted in Uncategorized on junho 17, 2010 by vendettaweisheimer

Programa de uma funerária em C (matei muita gente fazendo isso, HAUEHUEHUEHUHE)

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

struct caixao
{
    char comprador[30];
    char nome[30];
    int cpf[11];
    int rg[10];
    int data_nasc;
    int data_mort;
    char tamanho[10];
};

struct dados
{
    int codigo; //chave
    float preco;
    int quantidade;
    struct caixao c;
};

//Protótipos das funções
void cadastrar(struct dados *cax,int n);
void listar(struct dados *cax,int q);
void ordenar(struct dados *cax, int q);
void consultar(struct dados *cax,int q);
void alterar(struct dados *cax,int q);
void salvar(struct dados *cax, int q);
void sobre();

main()
{
    int i,op,codigo,existe,conf;
    struct dados *cax;//vetor onde serao armazenados todos os dados(ponteiro que será alocado dinamicamente)
    int q=0;//variavel que controla a qtd de dados no vetor
    FILE *arquivo;
   
    //Leitura do arquivo
    arquivo = fopen(“Verde.bin”,”a+b”);
    //Calcula a qtd de registros no arquivo
    if(arquivo!=NULL)
    {
        fseek(arquivo, 0, SEEK_END); //posiciona o ponteiro no fim do arquivo
        q = ftell(arquivo)/sizeof(struct dados); //calcula qnts registros tem no arquivo
        rewind(arquivo); //posiciona o ponteiro no inicio do arquivo
    }
    if(q!=0)
    {
        cax = (struct dados *) malloc(q*sizeof(struct dados)); //Aloca o vetor
        fread(cax,sizeof(struct dados),q,arquivo); //Lê o arquivo e coloca os dados no vetor
        fclose(arquivo);
    }
   
    do
    {
        //mostra o menu
        system(“cls”);
        printf(“###MENU###\n\n”);//
        printf(“1.Cadastrar\n”);//
        printf(“2.Deletar\n”);//
        printf(“3.Alterar\n”);//
        printf(“4.Localizar\n”);//
        printf(“5.Listar\n”);//
        printf(“6.Ordenar\n”);//
        printf(“7.Excluir tudo\n”);//
        printf(“8.About\n”);//
        printf(“9.Sair\n”);//
        scanf(“%i”,&op);//lê a opção
        existe=0;
       
        switch (op)
        {
            case 1://Cadastrar
                {
                    printf(“Digite o codigo de serie\n”);
                    scanf(“%i”,&codigo);//Lê o codigo
                    for(i=0;i<q;i++){
                        if(codigo==cax[i].codigo){//Procura se o codigo ja existe
                            existe=1;//marca a var existe com 1 caso ja exista este codigo
                            break; //caso encontre finaliza o for (break: interrompe uma repetição neste caso o ‘for’)
                        }
                    }
                    if(existe==1){//se existe este codigo no vetor(existe recebeu 1)
                        printf(“Codigo ja existe!”);
                        getch();
                    }else{//senao ele faz a alocação
                        if(q==0)//se a qtd for 0, ele faz uma alocação
                        {
                            cax=(struct dados*)malloc(sizeof(struct dados));//aloca primeira vez (sizeof: calcula quantos bytes tem a estrutura)
                            q++;//aumenta a qtd
                        }
                        else{//caso contrario ele faz a realocação com mais uma posição (acrescenta uma posição ao vetor) almenta novamente a memoria!
                            q++;//aumenta a qtd
                            cax=(struct dados*)realloc(cax,sizeof(struct dados)*q);//realoca caso exista 1 ou mais
                        }
                        cax[q-1].codigo=codigo;//poe o codigo na ultima posição do vetor
                        cadastrar(cax,q);//chama função pra ler os outros dados
                        salvar(cax,q);
                        printf(“Produto Cadastrado com sucesso!\n”);
                        getch();
                    }
                }
                break;
            case 2:
                {
                    if(q==0){//caso nao tenha nada cadastrado
                        printf(“Sem produtos cadastrados!”);
                        getch();
                        break;
                    }
                    printf(“Digite o codigo do produto que deseja excluir!\n”);
                    scanf(“%d”,&codigo);//lê o codigo
                    for(i=0;i<q;i++){//procurar o produto com esse codigo
                        if(cax[i].codigo==codigo){
                            existe=1;//caso encontre o i marca a posição a a variavel existe marca se foi encontrado ou nao
                            break;
                        }
                    }
                    if(existe==0){//caso nao encontre o produto no vetor
                        printf(“Produto nao encontrado!”);
                        getch();
                    }else{
                         printf(“Confirmar exclusao? 1-sim 2-nao\n”);
                         scanf(“%d”,&conf);
                         if(conf==1){
                             cax[i]=cax[q-1];//copia a ultima posição pro lugar onde sera removido
                             q–;
                             //diminui a memoria
                             if(q==0){
                                 free(cax);//caso a qtd seja 0: desalocar tudo
                             }else{
                                 cax=(struct dados*)realloc(cax,sizeof(struct dados)*q);//desaloca uma posição do vetor
                             }
                             salvar(cax,q);
                             printf(“Cliente removido com sucesso!\n”);
                         }else{
                             printf(“Exclusao cancelada!\n”);
                         }
                         getch();
                    }
                }
                break;
            case 3:
                {
                    if(q==0){//caso nao tenha nada cadastrado
                        printf(“Sem produtos cadastrados!”);
                        getch();
                        break;
                    }
                    alterar(cax,q);
                    salvar(cax,q);
                }
                break;
            case 4:
                {
                    if(q==0){//caso nao tenha nada cadastrado
                        printf(“Sem produtos cadastrados!”);
                        getch();
                        break;
                    }
                    consultar(cax,q);
                }
                break;
            case 5:
                {
                      if(q==0){//caso nao tenha nada cadastrado
                          printf(“Sem produtos cadastrados!”);
                          getch();
                          break;
                      }
                      listar(cax,q);
                }
                break;
            case 6:
                {
                    if(q==0){//caso nao tenha nada cadastrado
                        printf(“Sem produtos cadastrados!”);
                        getch();
                        break;
                    }
                    ordenar(cax,q);
                    salvar(cax,q);
                }
                break;
            case 7:
                 printf(“Confirmar exclusao? 1-sim 2-nao\n”);
                 scanf(“%d”,&conf);
                 if(conf==1){
                     remove(“Verde.bin”);
                     q=0;
                     free(cax);
                     printf(“Registros excluidos!\n”);
                     getch();
                 }else{
                     printf(“Exclusao Cancelada!\n”);
                     getch();
                 }
                
                 break;
            case 8:
                 sobre();
                 break;
            case 9:
                 break;
            default:
                    printf(“Opcao invalida!\n”);
                    getch();
                    break;
        }
          
    }
    while (op!=9);
}

void cadastrar(struct dados *cax,int n)
{
    int i=n-1;
    printf(“Digite o preco (minimo R$100,00): \n”);
    scanf(“%f”,&cax[i].preco);
    printf(“Digite o Nome do Morto: \n”);
    fflush(stdin);
    gets(cax[i].c.nome);
    printf(“Digite o nome do Comprador: \n”);
    fflush(stdin);
    gets(cax[i].c.comprador);// talves tenha .f aqui.. precisa de uma letra para chamar
    printf(“Digite a quantidade de Caixoes: \n”);
    scanf(“%d”,&cax[i].quantidade);
    printf(“Digite o CPF do Comprador: \n”);
    scanf(“%d”, &cax[i].c.cpf);
    printf(“Digite o RG do Comprador: \n”);
    scanf(“%d”,&cax[i].c.rg);
    printf(“Digite o tamanho do caixao -> Pequeno, Medio ou Grande: \n”);
    fflush(stdin);// descarrega o buffer de teclado (usado para antes de string)
    gets(cax[i].c.tamanho);
    printf(“Digite o ano de nasc (Ex: 1980): \n”);
    scanf(“%d”,&cax[i].c.data_nasc);
    printf(“Digite o ano de morte (EX: 2010): \n”);
    scanf(“%d”,&cax[i].c.data_mort);
   
}

void listar(struct dados *cax,int q)
{
    int i;
    system(“cls”);
    printf(“%-10s      %s       %s        %s\n”,”Tamanho”,”Codigo”,”Preco”,”Quantidade”);
    printf(“————————————————————————–\n”);
    for(i=0;i<q;i++)
    {
        printf(“%-10s      %d          R$%.2f          %d\n”, cax[i].c.tamanho, cax[i].codigo,cax[i].preco,cax[i].quantidade);
    }
    getch();
}
void ordenar(struct dados *cax, int q)
{
    int i,j,op;
    struct dados aux;
    system(“cls”);
    printf(“Ordenar por:\n\n1-Codigo\n2-Preco\n”);
    scanf(“%d”,&op);
    switch(op){
        case 1:
        for(i=0;i<q;i++){
            for(j=0;j<q;j++){
                if(cax[i].codigo<cax[j].codigo){
                    aux=cax[i];
                    cax[i]=cax[j];
                    cax[j]=aux;
                }
            }
        }
        break;

        case 2:
        for(i=0;i<q;i++){
            for(j=0;j<q;j++){
                if(cax[i].preco<cax[j].preco){
                    aux=cax[i];
                    cax[i]=cax[j];
                    cax[j]=aux;
                }
            }
        }
        break;
    }
    printf(“Ordenacao concluida com sucesso!\n”);
    getch();
   
}

void consultar(struct dados *cax,int q)
{
    int i,codigo;
    system(“cls”);
    printf(“Digite o codigo a ser consultado: “);
    scanf(“%d”,&codigo);
   
    for(i=0;i<q;i++){//procura o produto
        if(cax[i].codigo==codigo){//quando encontra, imprime seus dados
            printf(“Preco: R$ %.2f\n”,cax[i].preco);
            printf(“Quantidade: %d\n”,cax[i].quantidade);
            printf(“Comprador: %s\n”,cax[i].c.comprador);
            printf(“Codigo: %d\n”,cax[i].codigo);
            printf(“CPF: %d\n”,cax[i].c.cpf);
            printf(“RG: %d\n”,cax[i].c.rg);
            printf(“Tamanho: %s\n”,cax[i].c.tamanho);
            printf(“Nome falecido: %s\n”,cax[i].c.nome);
            printf(” Data nasc : %d\n”,cax[i].c.data_nasc);
            printf(” Data morte : %d\n”,cax[i].c.data_mort);
            getch();
        }
    }
    printf(“Produto nao encontrado!\n”);
    getch();
}

void alterar(struct dados *cax,int q)
{
    int i,codigo;
    system(“cls”);
    printf(“Digite o codigo a ser alterado: “);
    scanf(“%d”,&codigo);
    for(i=0;i<q;i++){//procura o produto
        if(cax[i].codigo==codigo){//quando encontra, imprime seus dados
            printf(“Preco: R$ %.2f\n”,cax[i].preco);
            printf(“Quantidade: %d\n”,cax[i].quantidade);
            printf(“Comprador: %s\n”,cax[i].c.comprador);
            printf(“Codigo: %d\n”,cax[i].codigo);
            printf(“CPF: %d\n”,cax[i].c.cpf);
            printf(“RG: %d\n”,cax[i].c.rg);
            printf(“Tamanho: %s\n”,cax[i].c.tamanho);
            printf(“Nome falecido: %s\n”,cax[i].c.nome);
            printf(” Data nasc : %d\n”,cax[i].c.data_nasc);
            printf(” Data morte : %d\n”,cax[i].c.data_mort);
            getch();
            printf(“\n”);
            cadastrar(cax,q);
            printf(“Produto alterado com sucesso!\n”);
            getch();
            return;
        }
    }
    printf(“Produto nao encontrado!\n”);
    getch();
}

void salvar(struct dados *cax, int q) //função que salva o vetor no arquivo
{                                                  //chamada toda vez que o vetor é alterado
                FILE *arquivo;                             //adicionar, remover, alterar, ordenar
               
                arquivo = fopen(“Verde.bin”,”wb”);//apaga o arquivo e abre para gravação
               
                if( arquivo == NULL )
                {
                        printf(“Erro ao gravar arquivo!\n”);
                        getch();
                        return;
                }
               
                fwrite(cax,sizeof(struct dados),q,arquivo);
                fclose(arquivo);
}

void sobre(){
                 system(“cls”);
               
                 printf(“UDESC – Universidade do Estado de Santa Catarina\n”);
                 printf(“CCT – Centro de Ciencias Tecnologicas\n”);
                 printf(“DCC – Departamento da Ciencia da Computacao\n\n”);
                
                 printf(“Alunos:\n”);
                 printf(”   Wellington\n”);
                 printf(”   Vinicius\n”);
                 printf(“Professor: \n   Jackson Mallmann\n”);
                 getch();
}

Concertando uma besteira…

Posted in Uncategorized on junho 9, 2010 by vendettaweisheimer

Pois e, essa semana tive que concertar uma cagada que fiz no meu computador.

Sim Sras e Srs, maculei ele com o RWindows, mas enfim, tenho meus motivos para isso 😛

Dai precisei arrumar o Lilo, chegando la encontrei um pequeno problema…como fazer para aparecer a opcao de aparecer a opcao de escolher entre o Linux e o RWindows? o.O

Enfim, depois de tanto quebrar a cabeca (e o Marco querer me subornar pra eu fazer o narguile em troca da resposta) o Walmer deu a dica..

Fazendo assim:

.

.

.

# Windows bootable partition config begins

other = /dev/sdx  //x significando a particao aonde esta instalado/

label = Windows

table = /dev/sdx   //essa e a grande sacada, significa a letra do drive que voce quer que

seja reconhecida por tal//

# Windows bootable partition config ends

# Linux bootable bootable config begins  //daqui pra frente e o que ja vem de standart no lilo, nao precisei mecher em nada aqui//

image = /boot/vmlinux

root = /dev/sdx

label = Linux //nome que eu quero dar a particao//

read-only

# Linux bootable partition config ends

facam bom proveito   🙂

PS : Agradecimentos ao Marco por emprestar o pc dele (mesmo sem as virgulas e outros caracteres e tudo mais).