sexta-feira, 22 de abril de 2016

[Games] [SNES] Futebol Brasileiro 96 - 20 anos

Cla! Cla! Cla! Cla! Hooooooooooooo! Futbol Brahileño novienta y sieis!





E então começava a jogatina. A versão Brazuca do International Superstar Soccer Deluxe do Super Nintendo foi batizada de Futebol Brasileiro 96, uma "grande d'jogada" de marketing pirata que vendeu centenas (talvez milhares) de cartuchos no Brasil, mesmo com um narrador fake com um portunhol muito do barato.



Considerado uma espécie de tataravô do PES atual, o FB96 foi um jogo que marcou a infância de muitos marmanjos e até hoje ainda é baixado nos sites de ROMs Internet afora. Sempre que eu passava na frente de um fliperama (como nós chamávamos as casas onde se alugavam os jogos), era possível ouvir um: "Forte! gombá!" ou um "Tirooou! Pilindo!!!"



O mais interessante é que é possível encontrar muitas versões desse game com elencos dos times atualizados (Fifa Soccer pra quê?); uns até mesmo com a voz do Cléber Machado (prefiro o narrado fake portunhol). Foi então que comecei a procurar uma versão com os elencos dos times atualizados para 2016, mas não achei. Só encontrei uma versão de 2015, mas com as habilidades de todos os jogadores em 100%: o União de Araras jogando de igual pra igual com o Barcelona é meio improvável, não é?



Então fuçando um pouco sobre edição de ROMs, encontrei uma ferramenta chamada FECIC, que permite alterar alguns dados do FB96 do jogo. Assim, comecei a criar minha versão do FB2016 com elencos atualizados e habilidades mais próximas do real. Uma pena não colocar meu Mengão 100% bombado, mas temos que ser imparciais. 


O projeto de atualização ainda está em andamento, mas pra festejar os 20 anos desse jogo, disponibilizei uma versão beta (se é que podemos chamar assim) da ROM (link no final da matéria), esperando que talvez, um dia, alguém dê alguma sugestão ou comentário. Crii...crii..crii...



Quem não conhece o FB96 ou o FB2016 precisa recorrer às origens e se curvar ao talento do melhor jogador de todos os tempos:








domingo, 3 de abril de 2016

[Linux] Cairo Dock - Não consigo desligar o Ubuntu pela barra superior

Sistema(s) testado(s): Ubuntu 13.04 ,13.10, 14.04;
Solucionado pelo(s) usuário(s):  Robson Moraes
Postado em: Multimedia Ubuntu

Solução principal:

Localize o arquivo “cairo-dock-launcher-API-daemon” que pode estar nos diretórios:

  • /usr/lib/cairo-dock/ ou;
  • /usr/lib/i386-linux-gnu/cairo-dock/ ou;
  • /usr/lib/x86_64-linux-gnu/cairo-dock/.  
A seguir, edite o arquivo em modo superusuário (sudo):

  • Na linha 30 adicione from time import sleep;
  • Na linha 241 antes de ULWatcher(), adicione sleep(5)

Salve o arquivo, reinicie o computador e problema resolvido.

Solução alternativa:

O próprio Cairo Dock tem um botão personalizado, por padrão, do lado direito da barra principal. 
Se mesmo assim nada funcionar, você ainda pode recorrer ao bom e velho comando:

$ sudo shutdown -h now
ou
$ sudo shutdown -h <tempo>

[Linux] Wine - Problemas com acentuação no MsOffice


Sistema(s) testado(s): Ubuntu 14.04;
Solucionado pelo(s) usuário(s):  risislunit 
Postado em: Ubuntu Forum (ubuntuforum-br.org)

Solução principal:


Basicamente faça as seguintes passos:
1 - Aperte o botão super (botão com a figura do Windows) para iniciar o dash; 
2 - Digite "Suporte a Idiomas"
3 - No fim da janela você verá a opção "Sistema de método de entrada do teclado" com a opção IBUS. Mude para nenhum
4 - Após isto reinicie a máquina e verá que consegue digitar os acentos no Office 2010

Solução alternativa:


Experimente colocar as opções ao final do comando Wine no atalho para o Executável do Office2010 no PlayOnLinux:
LC_ALL=pt_BR.UTF8 e TZ=America/Sao_Paulo

[Linux] Um dos grandes mistérios da humanidade: adduser x useradd

Informações iniciais




   Antes de abordamos os dois lados da força, vamos colocar alguns pingos nos i's.  Tanto o useradd quando o adduser são comandos que permitem adicionar um novo usuário no sistema, além de passar uma série de parâmetros que definem diretório pessoal, shell padrão, etc.
   Pra ser mais preciso, o useradd (Vader) é pai do adduser (Skywalker). (Yes, adduser. I'm your father!). O useradd é um binário nativo do Linux ao passo que o adduser é um script em Perl com uma interface mais amigável, que usa o useradd como back-end.
   Nas distribuições Debian-like, o arquivo de configuração padrão do comando adduser está disponível em: /etc/adduser.conf. Já para o comando useradd, as configurações estão disponíveis em outro local: /etc/default/useradd.
   Nesses arquivos são definidos, entre outras coisas:

  • Shell padrão (DSHELL): 
    • /bin/bash (no adduser)   
    • /bin/sh (no useradd)
  • Esqueleto padrão de configuração do usuário (SKEL): /etc/skel
  • Diretório home padrão (DHOME):  /home

Adduser

Sintaxe: adduser [opções] usuário [grupo]
   Esse  comando atribui por predefinição  valores  UID  e GID de acordo com a política do sistema operacional. Ele cria o diretório home conforme o esqueleto da configuração,  executando  um  script  personalizado, além de outras funcionalidades.

Opções importantes:


--disabled-login
Não executa o comando passwd para configurar a senha. Nesse caso, o usuário  não será capaz de usar sua conta até que a senha seja definida.

--disabled-password
Similar a –disabled-login. Mas nesse caso  logins  ainda  são possíveis  por exemplo através das chaves SSH RSA, mas não usando autenticação por senhas.

--gid ID
Quando se fornece um nome de grupo, esta opção  faz  com  que  o  novo groupid  seja  o  número  dado e esse grupo.

--group
Quando combinado com --system, um grupo com o mesmo nome e ID do sistema  é criado.  Se  não estiver combinado com essa opção acessória, um grupo com o nome dado é criado.  Esta  é  a  ação  padrão  quando se executa o comando addgroup.

--home DIR
Use  DIR  como  o  diretório  home  do usuário, em vez do padrão especificado no arquivo de  configuração.  Se  o  diretório  não existir,  ele  será criado e o esqueleto (skel) dos arquivos são copiados.

--shell SHELL
Usa o que é fornecido em SHELL como a login  shell  do  usuário,  em  vez  do padrão  especificado no arquivo de configuração (/etc/adduser.conf).
O shell padrão das distribuições Debian-like é  /bin/bash
O arquivo de configuração padrão

--no-create-home
Não cria o diretório home.

--system
Cria um usuário de sistema.

Useradd

Sintaxe: 
  • useradd [opções] usuário 
  • useradd -D [opções]
   Quando invocado sem a opção -D , o  useradd cria uma nova conta de usuário usando os valores especificados na linha de comando, mais os valores padrão do sistema. Dependendo das opções de linha de comando, o useradd irá atualizar arquivos de sistema e também pode criar o diretório home do novo usuário e copiar os arquivos iniciais.

b, --base-dir BASE_DIR
Diretório base padrão para o sistema se não for especificada a opção -d HOME_DIR. O BASE_DIR é concatenado com nome da conta para definir o diretório padrão do usuário
 Se essa opção não for especificada, o useradd considerará o diretório base especificado em /etc/deafault/useradd ou /home por padrão

 -d, --home HOME_DIR
 Ajusta HOME_DIR como o caminho do diretório pessoal do usuário que está sendo criado. Por padrão, esse diretório é gerado pela concatenação do nome de login do usuário com o valor de BASE_DIR.

-D, --defaults
Exibe ou altera a configuração padrão do useradd 

-k, --skel SKEL_DIR  
Usa SKEL_DIR como diretório esqueleto (skeleton) alternativo.

-m, --create-home            
Cria o diretório pessoal do usuário se ele não existir. Os arquivos e diretórios contidos no diretório esqueleto serão copiados para esse novo diretório.

-M, --no-create-home        
Não cria o diretório pessoal do usuário.

-p, --password SENHA        
Senha criptografada da nova conta.

-r, --system                
Cria uma conta de sistema.

-s, --shell SHELL            
Shell de login da nova conta.
         

[Linux] Como configurar um joystick USB no Mupen64

O Muphen64 é um emulador para Nintendo 64 leve desenvolvido para GNU/Linux, mas com versões para outros sistemas operacionais, como o Windows e MacOS
Para a alegria ficar ainda maior, há a disponibilidade de se baixar o front-end M64Py que apresenta uma interface muito mais amigável, próxima ao fiel companheiro fiel e incansável Project64.

A instalação do M64Py + Muphen64 é muito simples via apt-get:

$  sudo apt-get install m64py -y


Tela inicial do M64Py

O problema que tive que encarar no meu Ubuntu 14.04 foi que, via interface gráfica eu não conseguia fazer o M64Py reconhecer meu joystick USB parecidíssimo como esse:



E como tudo no Linux, pra funcionar bem, só sem for por linha de comando e arquivos de configuração; vamos nessa!


Editando o mupen64plus.cfg


Por padrão, o arquivo mupen64plus.cfg está localizado em 

$ /home/<seu usuário na home>/.config/mupen64plus/mupen64plus.cfg

Antes de fazer qualquer alteração, eu recomendo fazer um backup do arquivo original, por exemplo assim:

$ cd /home/<seu usuário na home>/.config/mupen64plus
$ cp mupen64plus.cfg mupen64plus.cfg.back

Dessa forma, pode alterar o mupen64plus.cfg sem medo de ser feliz.

Utilizando algum editor, como o vim, nano, emacs ou gedit, abrimos o arquivo e localizamos o trecho de código (deafaut) a partir de:

[Input-SDL-Control1]
(...)
# Digital button configuration mappings
DPad R = "key(100)"
DPad L = "key(97)"
DPad D = "key(115)"
DPad U = "key(119)"
Start = "key(13)"
Z Trig = "key(122)"
B Button = "key(306)"
A Button = "key(304)"
C Button R = "key(108)"
C Button L = "key(106)"
C Button D = "key(107)"
C Button U = "key(105)"
R Trig = "key(99)"
L Trig = "key(120)"
Mempak switch = "key(44)"
Rumblepak switch = "key(46)"
# Analog axis configuration mappings
X Axis = "key(276,275)"

Y Axis = "key(273,274)"

As configurações que precisam ser feitas consistem em ajustar manualmente os botões do joystick [Input-SDL-Control1] do emulador. Para o meu controle USB, usei o analógico direito (e as teclas auxiliares direcionais do teclados) com C-Buttons do controle do Nintendo 64, e o triângulo como Z-button.
Sem mais delongas, segue a configuração que utilizei:

[Input-SDL-Control1]
version = 2
mode = 0
device = 0
name = "Joy"
plugged = True
plugin = 2
mouse = False
MouseSensitivity = "2,00,2,00"
AnalogDeadzone = "4096,4096"
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = "hat(0 Right)"
DPad L = "hat(0 Left)"
DPad D = "hat(0 Down)"
DPad U = "hat(0 Up)"
Start = "button(9)"
Z Trig = "button(0)"
B Button = "button(2)"
A Button = "button(1)"
C Button R = "axis(2+) key(275)"
C Button L = "axis(2-) key(276)"
C Button D = "axis(3+) key(274)"
C Button U = "axis(3-) key(273)"
R Trig = "button(5)"
L Trig = "button(4)"
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = "axis(0-,0+)"
Y Axis = "axis(1-,1+)"


Salve, reinicialize o emulador e seja feliz; assim como eu.




terça-feira, 28 de outubro de 2014

Questões de Concurso: Protocolos de Roteamento

Nessa seção são listadas e discutidas algumas questões de concurso referentes a temas já abordados em publicações anteriores.

1. (CESPE, 2008, TCU) Em decorrência da manifestação, por parte do administrador, de que a rede da organização está sofrendo com problemas de roteamento, um analista avaliou minuciosamente o tráfego de pacotes, procurando identificar os protocolos de roteamento empregados. Com os dados de tráfego coletados, esse analista produziu um relatório que indicava apenas o fato de que estavam em uso, no interior da rede, os protocolos RIPv2 e OSPF. Um outro analista, após receber esse relatório, produziu um segundo relatório, no qual apontou o uso dos algoritmos de roteamento empregados pelos roteadores que implementam cada um dos protocolos indicados como origem dos problemas de roteamento na rede da organização. Nessa situação, o segundo analista agiu de modo tecnicamente correto, uma vez que protocolos de roteamento normalmente ditam quais algoritmos de roteamento são usados.


Gabarito: C

2. (CESPE, 2013, ANCINE) Ao se empregar a técnica por vetor de distância no roteamento por multicast, deve-se utilizar o protocolo DVMRP (distance vector multicast routing protocol), pois ele realiza a poda da árvore de forma recursiva.

Na verdade, o processo de poda do protocolo DVMRP ocorre por meio da técnica de repasse pelo caminho inverso (reverse path flooding), o qual não é necessariamente recursivo.
Gabarito: E

3. (CESPE, 2014, ANTAQ) O OSPF não utiliza protocolos de transporte como TCP e UDP. O OSPF gera os datagramas IP diretamente e utiliza, no campo protocolo do cabeçalho IP, o número 89, que, por convenção, representa o OSPF.

Diferente de outros protocolos de roteamento, como RIP e BGP, o OSFP não utiliza protocolos de transporte. Suas informações são enviadas diretamente utilizando-se a camada IP.
Gabarito: C

4. (CESPE, 2012, PEFOCE) Uma das vantagens do protocolo RIP v.1 é que sua tabela de roteamento considera tanto a distância entre os roteadores quanto o desempenho do caminho entre eles.

O RIP usa um único roteamento métrico, a contagem de hops (saltos) para medir a distância entre a fonte e uma rede de destino.
Gabarito: E

5. (CESPE, 2013, Telebrás) Caso o protocolo de roteamento OSPF esteja habilitado entre dois roteadores ligados por um mesmo link e que aceitam os parâmetros de comunicação do OSPF, esses roteadores passarão a ser vizinhos OSPF (OSPF neighbors).

Gabarito: C

6.  (CESPE, 2013, ANTT) O protocolo OSPF (open shortest path first) utiliza um algoritmo para traçar o caminho de menor custo e um broadcasting de informação do estado de enlace.

Segundo Kurose (2010,p.288),"O OSPF [...] é um protocolo de estado de enlace que usa broadcasting de informação de estado de enlace e um algoritmo de caminho de menor custo de Dijkstra."
Gabarito: C

Considerando a topologia de rede apresentada na figura, julgue os itens 7 e 8.


7. (CESPE, 2012, Banco da Amazônia) O RIPv1 é um dos protocolos de roteamento que pode ser implementado no switch 1.

Analisando a figura, repare que o switch 1 é de camada 2 (enlace de dados); logo não pode suportar qualquer algoritmo de roteamento, incluindo o RIP (independente da versão).
Gabarito: E

8. (CESPE, 2012, Banco da Amazônia) O switch 2 pode implementar o protocolo de roteamento OSPF.

O switch 2 é de camada 3 (layer 3). Essa classe de switch suporta roteamento. Nesse caso, é possível que se tenha roteamento por meio do OSPF.
Gabarito: C

9. (CESPE, 2012,TRE-RJ) Tanto no protocolo de roteamento OSPF quanto no RIP, a rota que um pacote de dados faz é sempre a mesma, já que os roteadores não percebem que há mais de um caminho para atingir o destino.

Com o OSPF é possível que se tenha rotas alternativas; quando os custos são os mesmos.
Gabarito: E

10. (CESPE, 2012, Banco da Amazônia) Empregado para interligar vários SAs (sistemas autônomos), o BGP utiliza uma porta UDP, não tendo, assim, de se ocupar da transmissão correta das informações de roteamento.

O BGP utiliza o TCP, não o UDP. Recordando:
- RIP: UDP porta 520;
- OSPF: não utiliza TCP ou UDP; utiliza diretamente IP com código de protocolo 89;

- BGP: TCP porta 179;
Gabarito: E

11. (CESPE, 2012, Banco da Amazônia) Uma das principais diferenças entre o BGP e o OSPF consiste no fato de o BGP possibilitar a implementação de diversas políticas de roteamento, enquanto o OSPF ocupa-se apenas da eficiência no encaminhamento dos pacotes.

Lembrando que: 
OSPF, IS-IS, RIP-> protocolos intradomínio
BGP-> protocolo interdomínio

Segundo Tanenbaum (2011,p.300),"Dentro de um único AS, OSPF e IS-IS são os protocolos normalmente utilizados. Entre os ASs, um protocolo diferente, chamado BGP (Border Gateway Protocol), é utilizado. Um protocolo diferente é necessário porque os objetivos de um protocolo intradomínio e interdomínio não são os mesmos. Tudo o que um protocolo intradomínio tem a fazer é mover pacotes da forma mais eficiente possível da origem ao destino. Ele não precisa se preucupar com a política. Ao contrário, os protocolos de roteamento interdomínio precisam se preucupar muito com a política."
Gabarito: C


12. (CESPE, 2009, INMETRO) Entre outras características do protocolo OSPF, pode-se listar: suporte à hierarquia dentro de um mesmo domínio de roteamento; uso de autenticação nas mensagens; permissão para o uso de múltiplos caminhos de mesmo custo; suporte integrado a tráfego unicast e multicast; permissão para o uso de diferentes métricas para tipos de serviço (TOS) diferentes.

Segundo Kurose(2010,p.289),"Alguns avanços incorporados ao OSPF são:
-Segurança: Trocas entre roteadores OSPF são autenticadas.
-Caminhos múltiplos de igual custo.
-Suporte integrado para roteamento unicast e multicast.
-Suporte para hierarquia dentro de um único domínio de roteamento."

Segundo Tanenbaum(2011,p.297),"O OSPF [...] tinha de dar suporte ao roteamento com base no tipo de serviço. O novo protocolo deveria ser capaz de rotear o tráfego em tempo real de uma maneira  e o restante do tráfego de outra."

Gabarito: C

REFERÊNCIAS

[1] http://www.questoesdeconcursos.com.br/

[RC] Protocolos de Roteamento (v 1.0)

    Uma das principais funções da camada de rede é a de estabelecer uma rota de menor custo entre determinada origem e destino. Essa função é chamada de roteamento e é executada por elementos ativos da rede chamados de roteadores (e, atualmente, também pelos chamados switches de camada 3).
    A literatura enumera muitas classificações para os algoritmos de roteamento. Uma delas leva em consideração a adaptabilidade (ou não) das rotas estabelecidas. Quanto a esse critério, os algoritmos de roteamento são classificados em estáticos e dinâmicos.
    Os algoritmos estático não se adaptam às mudanças na carga da rede ou em sua topologia. Através deles, as rotas a serem utilizadas pelos pacotes em tráfego, são estabelecidas normalmente off-line para, somente então, serem transferidas aos roteadores.
    Por outro lado, os algoritmos dinâmicos se adaptam de acordo com mudanças na topologia e na carga da rede. Esses algoritmos diferem na forma de obter informações de roteamento, no tempo de atualização de suas tabelas e na unidade métrica utilizada para a otimização.
    Essa última classe de algoritmos, tema central do nosso post de hoje, são classificados em mais duas categorias: vetor de distância e estado de enlace.
    Utilizando um algoritmo de vetor de distância (DV - Distance Vector), um roteador mantêm uma tabela (vetor) atualizada através da troca de informações com roteadores vizinhos. Esse mesmo procedimento é realizado pelos outros nós (roteadores), cascateando e atualizando as informações. Portanto o processo é iterativo e distribuído.
    Através do algoritmo de estado de enlace (LS - Link State), as rotas são calculadas usando conhecimento completo e global sobre a rede. Essa característica ocasiona um overhead inicial, mas que são suavizados nas alterações subsequentes na tabela. Para o cálculo do menor custo, algoritmos de estado de enlace normalmente são baseados no SPF (Shortest Path First) de Dijkstra.
    Complicou? Vamos esquematizar:



    Portando essas informações, vamos discutir alguns protocolos utilizados na Internet que se baseiam nas ideias desses algoritmos de roteamento.

1. RIP (Routing Information Protocol)

    O RIP é um protocolo de roteamento interno (intra-SA), ou seja, é rodado dentro de um sistema autônomo (SA) da Internet. Ele é um protocolo de vetor de distância que usa contagem de saltos (hops) como métrica de custo, utilizando um limite de 15 saltos por SA.
    Por meio do RIP, as tabelas de roteamento são trocadas, aproximadamente,  a cada 30 segundos por meio de mensagens chamadas de anúncios (ou resposta) RIP. Roteadores enviam mensagens RIP por UDP, porta 520.
    As principais melhorias da versão 2 do RIP em relação a sua versão original é o reconhecimento de sub-redes e uma camada de segurança por meio de autenticação utilizando MD5.

2. OSPF (Open Shortest Path First)

    O OSPF é considerado como sucessor do RIP. Ele apresenta características mais avançadas em relação ao seu antecessor. É um protocolo de roteamento interno que utiliza o algoritmo de estado de enlace (por isso o SPF em seu nome).
    Por meio do OSPF é construído um grafo de todo o sistema autônomo. O algoritmo SPF é rodado, a partir de um nó (roteador) raiz, de forma a gerar uma árvore de escoamento considerando os demais nós do SA.
     O pacote Hello do OSPF é utilizado para estabelecer adjacências de roteadores vizinho. Por padrão, esses  pacotes são enviados a cada 10 segundos.
    Diferente do RIP, o OSPF não utiliza protocolos de transporte. Suas informações são enviadas diretamente utilizando-se a camada IP.
    Outras características do OSPF:

  • Autenticação com MD5;
  • Capacidade de estruturar hierarquicamente um SA;
    • Nesse caso, cada área (ou "sub-SA") criada, roda sua própria instância do OSPF;
  • Suporte para roteamento unicast e multicast;
  • Considera caminhos múltiplos quando esses têm o mesmo custo;

3. BGP (Border Gateway Protocol)

    A versão 4 do BGP é o padrão "de fato" para roteamento entre SAs (inter-SA) na Internet. Por meio dele, são estabelecidas conexões semipermanentes TCP entre pares de roteadores (pares BGP), usando a porta 179.
    Uma sessão BGP corresponde a uma conexão TCP junto com o conjunto de mensagens trocadas entre pares BGP. Essa sessão pode ser denominada externa (ou eBGP) quando abrange dois SAs e interna (ou iBGP) quando estabelecida por roteadores dentro do mesmo SA. Sim! Também há conexões semipermanentes dentro dos SAs.

Fonte: Kurose

Para questões de concurso sobre esse tema, clique aqui.


REFERÊNCIAS
[1] TANENBAUM, A. S. – Redes de Computadores – 5ª Ed.,Pearson, 2011.
[2] KUROSE, J. F. e ROSS, K. - Redes de Computadores e a Internet - 5ª Ed., Pearson, 2010.
[3] http://imasters.com.br/artigo/3457/redes-e-servidores/roteadores-vizinhos-distance-vector
[4] http://www.dcc.fc.up.pt/~pbrandao/aulas/0405/arq_r/slides/Routing-RIP.pdf
[5] http://www.kraemer.pro.br/cisco/exploration2/cap11.pdf