Friday, August 08, 2014

:: Trying a new Linux distribution ::

Postzinho relâmpago pra informar a Matrix que troquei a distribuição Linux que uso no meu desktop e notebook do trabalho. O desktop foi ontem, o notebook foi hoje. Até então eu estava usando Elementary OS Luna. Acho que usei por mais ou menos 1 ano.

A distribuição é legal, leve e tal, mas começou a me incomodar um pouco. Por exemplo, eu conectava o meu celular na porta USB do PC/Notebook e o SO não me dava a opção de transferir arquivos entre os dispositivos. Daí pra fazer backup das tralhas que tenho no cel, tinha que esperar chegar em casa pra fazer isso com meu bom e velho Slackware de guerra.

Então agora pulei pro Linux Mint 17 Qiana - KDE. Olha, por enquanto estou curtindo. De cara a primeira coisa que testei foi conectar o smartphone ao PC e... FUNCIONOU! ;)

Bye, bye Elementary OS! Foi bom enquanto durou.

Tuesday, August 05, 2014

:: PC - Coruscant in new incarnation ::

Fazendo uma busca aqui no meu blog pra ver se eu lembrava o modelo do meu monitor, acabei encontrando um post antigo com um "histórico" das atualizações que minha máquina sofreu desde sua criação. Na época eu ainda metia muitos posts em inglês por aqui.

Bom, vamos dar continuidade ao "changelog":

2002 - Coruscant is created: ASUS A7N-Deluxe (motherboard), Athlon XP 1500+, 512MB DDR 333MHz, NVidia MX440 64MB (AGP), HD of 40GB, 17" CRT monitor LG 777Fn+ and a "generic" power suply;

2004 - about this time came the first upgrade: Athlon XP 2400+, 1.5GB DDR 333MHz, NVidia FX 5900XT 128MB (AGP), 2 HDs of 40GB each, same monitor and a SevenTeam 520W power suply (stronger and more decent than the predecessor);

2006 - next upgrade, arriving at the 64bits era: ASUS A8N-E (motherboard), Athlon 64 3500+, 3GB DDR 400MHz, NVidia 6800GT 256MB (PCI-Express), 2 HDs SATA-2 (250GB and 320GB), 19" LCD (LG) and same power suply;

2007 - only the monitor is upgraded: I sold the 19" LCD and bought a 20.1" widescreen LCD (also LG);

2008 - last upgrade (so far), arriving in the multi-core era: ASUS P5K-SE (motherboard), Intel Core 2 Quad (Q6600), 4GB DDR2 800MHz, same video card, same HDs, same monitor, same powersuply, new case.

2009 - Troquei a placa de vídeo, colocando uma NVidia 9600GT.

2010 - Coloquei mais memória, ficando com 8GB DDR2 800MHz e comprei mais um HD de 1TB SATA-2

2011 - Troquei a placa de vídeo, colocando uma AMD Radeon HD 5850 e já troquei a fonte para uma Corsair 750W. Também troquei o monitor para um Samsung P2470HN.

2013 - Upgrade mais fortinho, trocando mobo (ASUS H87M-PLUS), CPU (Intel Core i7-4770) e memória (Corsair 8GB DDR3 1600MHz)

Bom, vejamos se lembro de postar novas informações no próximo upgrade hehehehehe Ah, e notem que os HDs são os mesmos há um bom tempo hehehehee.

Saturday, July 05, 2014

:: Gravar sessão de game no PC com baixo impacto na performance ::

EDITADO em 08/07/2014 para inserção de novas infos

E não é que um sábado chuvoso pode ser proveitoso, intelectualmente falando?

Boa parte dos gamers curte gravar suas sessões de jogatina. Seja pra analisar como foi seu desempenho e tentar melhorar (usualmente quem joga competitivamente faz isso), pra mostrar alguma jogada legal para os amigos, ou mesmo pra se exibir (tem muito nego que faz isso no youtube).

Muito antigamente, a gente ligava o videogame num video cassete e gravava ahahahahahah Sim, fiz um bom tanto disso. Hoje em dia, com as novas tecnologias, temos as seguintes possibilidades (talvez eu não liste todas, mas...):
  1. Liga o videogame/PC num dispositivo de gravação (ex: Avermedia Live Gamer Portable ou Elgato Game Capture)
  2. Faz a gravação usando uma placa de captura de video
  3. Usa um software de captura de video no próprio PC onde se está jogando (nesse caso os videogames dançam)
  4. Faz streaming da jogatina para um servidor e a gravação fica por conta desse servidor.
  5. Usa uma câmera para filmar a tela da TV/Monitor.
As opções #1 e #2 são boas em termos de performance, mas são caras, ainda mais em se tratando de Brasil. A #5 é uma boa opção por não afetar a performance do jogo, porém a qualidade do audio e video pode ficar comprometida, bem como, dependendo do dispositivo usado (camera digital ou celular), pode ficar complicado no que diz respeito a espaço para armazenamento. A opção #3 é barata, porém afeta a performance do jogo, pois acaba havendo queda de FPS (frames por segundo). A opção #4 fica, em termos de impacto de performance, abaixo das #1 e #2, mas acima da #3.

Porém, não é qualquer um que consegue ter um link de internet decente para fazer streaming das suas sessões de game com uma qualidade decente e, AINDA POR CIMA, conseguir jogar sem que esse streaming gere lag na sua conexão.

Pois bem, há um bom tempo eu uso o OBS (Open Broadcast Software) para gravar minhas sessões de game (usualmente SF4). Como explicado acima, ficava na #3. Mas eu queria poder gravar minha sessões sem afetar tanto assim o jogo. A #4, pra mim, é totalmente inviável, visto que a Oi/Velox, na minha cidade, me fornece apenas 512kbps de upload. Um lixo!

O OBS pode fazer streaming para serviços como TwitchTV (entre outros), mas né... meu link... Então eu pensei "Será que consigo fazer o OBS mandar o stream do jogo para um servidor LOCAL, e esse servidor gravaria a jogatina?" Dei uma pesquisa HOJE e descobri que existe um módulo para o NGINX que faz essa magia. Então a coisa fica assim:

  1. OBS pega o audio e video do jogo, gera um stream e manda para o NGINX
  2. NGINX pega o stream e grava em um arquivo de video (FLV)
Notar que o impacto, na parte de I/O (Entrada/Saída), ou seja, a gravação do video em arquivo, fica no servidor.

Então para isso precisamos de dois equipamentos: o PC onde se vai jogar e um outro que vai fazer a gravação (PC, notebook, servidor, etc)

No meu teste utilizei o Media Server que tenho em casa, um SheevaPlug (processador ARM 1.2Ghz e apenas 512MB de memória, bem fraquinho) rodando Debian. Então rodei um replay da ultima partida de SSF4AE2012 que eu tinha e mandei o OBS fazer o streaming. Depois da partida terminada, parei o OBS e fui olhar no servidor. Tinha um arquivo FLV gravado. Rodei esse arquivo com o VLC e, para minha grande surpresa, lá estava a partida perfeitinha, em 1280x720@60fps, do jeito que eu tinha configurado no OBS.

Edit: fiz uns testes mais sérios pra ver o impacto de performance. Rodei o SSF4AE2014 (PC) sem estar gravando ou streaming.

  1. Entrei no Benchmark do jogo e o resultado ficou mais ou menos em 221fps. Fiz esse teste várias vezes seguidas
  2. Fiz o Benchmark de novo, só que agora mandando o stream pro meu servidorzinho. A perda foi de cerca de 10fps. Fiz esse teste várias vezes
  3. Fiz o Benchmark mais umas vezes, agora deixando o OBS gravar o video direto no meu PC. A perda foi de quase 20fps. Fiz esse teste várias vezes.
Ou seja, acho que é viável o uso dessa solução (OBS+Nginx).

Edit 2: Meu amigo Rain falou das tecnologias das placas de video atuais em que dá pra fazer a própria VGA fazer o encoding de video, liberando assim a CPU da máquina, o que deve diminuir ainda mais a perda de FPS do jogo. Porém como minha VGA é meio velha (AMD Radeon HD 5850), ela não suporta essa funcionalidade. Então, na minha atual conjuntura, o jeito é usar OBS+Nginx mesmo.

Edit 3: Como minha VGA é velha e não tem suporte ao que citei logo acima, insisti nas pesquisas. Tentei achar um jeito de conseguir diminuir ainda mais o impacto na performance dos games enquanto estiver fazendo streaming pro meu servidor. E o "pior" é que encontrei. Descobri a funcionalidade QUICK SYNC, presente em processadores Intel mais novos (não, não precisa ser da última geração). Meu processador é um Intel Core i7-4770. Dei uma lida rápida nos specs dele e sim, possui suporte a Quick Sync. O que isso faz? Utiliza a GPU (sim, processador gráfico) que esses processadores da Intel tem internamente para fazer processamento de video, encoding, etc. Além de ter um processador com suporte a Quick Sync, a Motherboard (Placa-mãe) precisa ter uma saída de vídeo. Então os passos para o habilitar são relativamente simples:


  1. Na BIOS do computador, habilitar a iGPU ou placa de video onboard
  2. Baixar e instalar o driver atualizado para a placa de video onboard (isso deve requerer um reboot do PC)
  3. Habilitar o uso dessa placa nas configurações de video do Windows. Não é preciso ter um monitor conectado à saída de video onboard do PC. Basta habilitar esse display.
  4. Agora abra o OBS, vá nos Settings (configurações) e na área de Encoding deve liberar a opção para marcar Quick Sync.
Feito, com isso o encoding será feito pela GPU do seu processador, liberando "mais gás" pra CPU. Ah sim, enquanto não habilitamos isso, essa iGPU fica inativa por toda a eternidade ;)

Complementando, ontem fiz novos testes, diferente. Instalei o FRAPS no meu PC apenas para que ele fizesse o benchmark dos FPS enquanto eu rodava um replay no SSF4AE (lembrando que o jogo roda a 60fps).

  1. Rodei o replay, mandei o Fraps fazer o benchmark por 60s, sem o OBS fazer streaming. Resultado: 60fps no jogo
  2. Rodei o mesmo replay, Fraps fazendo benchmark por 60s, com o OBS fazendo streaming para meu server e encoding via Quick Sync. Resultado: 60fps no jogo
Então agora, criançada... vou gravar MUITA SESSÃO DE GAMES hehehehehehe

Ah sim, a dica de como fazer a magia acontecer eu peguei aqui: https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/

"Esses negros maravilhosos!" (ROBERTO, Luis. 2014)

Thursday, June 26, 2014

:: Dojo - 3 ::

Bom, o Alef, do grupo Street Fighter (Facebook) viu uns videos no meu canal do Youtube e pediu pra passar algumas dicas sobre Gouken, já que ele está começando a brincar com o personagem. Então aproveitei e fiz mais um "episódio" do Projeto Dojo.

Vejam bem, são dicas BÁSICAS do Gouken. Para quem está começando a brincar com esse personagem, pode vir a ser um pouco útil.



Quando der faço algo um pouco mais avançado, se for do interesse de alguém.

Por hoje deu!


Saturday, May 03, 2014

:: Ser Pai ou Mãe ::

Já faz tempo que penso em escrever sobre este assunto. Então depois de conversar com uma amiga brasileira que mora no Canada e que já viu muita gente voltar para o Brasil, resolvi que chegou a hora de postar.

Antes de mais nada, peço que os mimizentos do politicamente correto parem de ler e vão encher o saco de outras pessoas no Facebook. O que vou escrever aqui são minhas opiniões sobre o assunto e são direcionadas tanto a Pais quanto Mães. Mas para me poupar tempo vou usar as palavras "pai" ou "pais" por pura comodidade. Porém sempre estarei querendo dizer "pai e mãe".

Bora lá!

Como vejo, querer ser pai, não é deveria significar querer colocar no mundo alguém para ter sempre por perto, sob nosso controle. Se tu achas que paternidade/maternidade é isso, então pare por aí. Se ainda não tiveste um fiho, não o tenha. Se o que almejas é ter uma criatura sempre por perto, sob seu controle, etc, melhor adotar um animal de estimação, seja ele cão, gato, peixe, etc. Filho, ser humano, não é para isso.

Filho é para ser cuidado, educado, guiado até ter idade de "se virar", de encarar o mundo por conta própria. Sim, nós pais não deixamos de nos preocupar com nossos filhos, desde quando nascem até..... até o final dos tempos.

Pais não devem querer escolher a profissão dos filhos. Sim, muitos pais sonham que seus filhos sejam pessoas importantes, médicos, advogados, engenheiros, etc. Mas se o filho escolhe outro caminho, que assim seja. Acredito que os pais só devem interferir quando os filhos escolhem CAMINHOS ERRADOS. Que caminhos são esses? Caminhos que levem à ilegalidade, criminalidade, etc.

Quando eu era pequeno (não lembro a idade com exatidão), de tanto ouvir adultos dizerem "meu filho será isso ou meu filho será aquilo..." acabei perguntando "Pai, o que tu quer que eu seja quando crescer?" Ao que meu pai respondeu "Nem eu nem tua mãe vamos escolher o que tu vais ser quando crescer. Quem vai escolher é tu. O principal é tu escolher uma profissão que goste. Se tu trabalhar no que gosta e for bom no que faz, o sucesso profissional e financeiro é pura consequência." É por causa de conversas e conselhos desse tipo, que tive tanto dele quanto da minha mãe, que hoje escrevo este post.

Outro exemplo que meus pais me deram quando era pequeno, foi a conversa que tiveram com minha avó. Mudamo-nos para muito longe de Santa Maria quando eu tinha apenas três anos de idade. Então meu pai disse para minha avó que era muito grato por todo o carinho, educação e cuidado que ela teve com ele, mas que agora (a partir do casamento dele e do nascimento dos filhos), nós éramos a família dele, que a principal preocupação dele seria essa família. Mas claro, na medida do possível, ajudaria minha avó e os irmãos dele.

É a partir dessas situações e ensinamentos que eu digo: Não devemos criar nossos filhos para ficarem debaixo de nossas asas. Filhos não devem ser criados PARA A GENTE. Eles devem ser criados PARA O MUNDO. Eles devem ficar sob nossas asas até poderem voar por conta própria (como fazem os pássaros). Daí pra frente, devemos deixá-los tocar suas vidas.

Seu filho é adulto e quer morar na outra ponta do Brasil? Deixe-o ir. Ele quer ir morar em outro país? Deixe-o ir. Ficar choramingando que os filhos estão longe muitas vezes MINA a felicidade deles. Se ele tiver vontade fraca, irá ceder e voltar para perto (ou debaixo) da sua asa e, muito provavelmente, vai se arrepender, algum tempo depois, de ter cedido, mas então será tarde demais.

Ah, nunca pensou em ter filhos ou já pensou bastante e resolveu não os ter? Tranquilo! É um diretio seu e de sua esposa. Entendo e respeito decisões como essa perfeitamente. Por incrível que pareça, tem gente que não entende ou aceita essa escolha. Sabe como é, gente atrasada.

Agradeço aos meus pais pelas orientações, educação e exemplos que deram tanto a mim quanto minhas irmãs.

Bom, estou cansado por conta do feriado (por incrível que pareça). Então vou parando por aqui. Quero só ver se este post vai gerar discussão/debate/mimimi, apesar de não o ter escrito com o intuito de "causar", mas sim de tentar ajudar algumas pessoas a serem menos apegadas aos pais/filhos, de forma a que toquem suas vidas, sejam felizes seguindo seus projetos.

See ya!