TED Talks, Ideias que valem a pena espalhar

Estou iniciando uma ideia que talvez possa contribuir em algo no mundo, vou aproveitar meu tempo livre ,enquanto almoço, para ver as palestas do TED (Technology, Entertainment, Design) e postar alguns comentários a respeito do vídeo, para que assim eu consiga atingir o objetivo real destas palestras “Ideas worth spreading”, ou seja, “Ideias que valem a pena espalhar”, então faço minha parte espalhando.

Não sei a frequência em que saem novos vídeos, porém neste exato momento tem 974 vídeos apenas no site oficial, então ver todos, arredondando para cima e considerando uma média de 20 minutos, já seria uma quantidade razoável: 2 semanas vendo vídeos sem parar, mas acho que varia muito.

Acho que recupero este tempo, levantando ao acordar, já que devo perder algum tempo entre o despertador tocar e eu levantar da cama, junto com o tempo que passo no ônibus e no almoço. Assim dá pra ver muita coisa e formular alguns artigos legais.

No mais, espero que alguma palestra possa mudar o pensamento de pelo menos uma pessoa para melhor, assim meu objetivo já seria alcançado, mas lógico que mudar o de um monte seria bem melhor.

Trilha Sonora Rock n’Roll Racing

Como me pediram, estou colocando a disposição a trilha sonora do jogo Rock n’Roll Racing de snes. Como enviar por e-mail iria dar muito problema (ao todo 70mb) resolvi colocar aqui pra ficar mais fácil pra baixar.

 

Tem a versão original e a versão do jogo (ótimo para ringtones). Então aproveitem

 

Versão do jogo Original
Rock N’ Roll Racing – Bad To The Bone (By George Thorogood) George Thorogood – Bad To The Bone
Rock N’ Roll Racing – Highway Star (By Deep Purple) Deep Purple – Highway Star
Rock N’ Roll Racing – Born To Be Wild (By Steppenwolf) SteppenWolf – Born To Be Wild
Rock N’ Roll Racing – Paranoid (By Black Sabbath) Black Sabbath – Paranoid
Rock N’ Roll Racing – Radar Love (By Golden Earring) Golden Earring – Radar Love
Rock N’ Roll Racing – Peter Gunn (By Henry Mancini) Henry Mancini – Peter Gun

Extra:

Adendo aproveito pra colocar o tema do Mortal Kombat The Immortals – Techno-Syndrome 7 Mix e a a música Wild Thing que também fica legal pra toque de celular Zz Top – Wild Thing

Function para formatar datetime SQL Server

Seguindo a filosofia de que pensar que: tempo = dinheiro, mulher gosta de dinheiro, quanto mais dinheiro mais mulher, quanto mais mulher melhor. Utilizando o sislogismo hipotético: quanto mais tempo, melhor o mundo. Resolvi fazer esta function que provavelmente será apenas uma vez na vida, para que as coisas melhorem no mundo ao se ganhar mais tempo.

Com o padrão de formatação do C# (conforme pode ser encontrado aqui http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx), peguei na net uma base e modifiquei quase totalmente para utilizar este padrão do C# (sorry, foram vários endereços e acabei não guardando). Utilizei padrão de linguagem em português e tem a maioria das codificações disponívels nesse link aí em cima.

Tem uma parte relacionada com microsegundos e nanosegundos que está comentada pois só funciona para SQL Server 2008. Para utilizar basta descomentar.

Se encontrar algum bug, código pronto com melhoria, ou coisas do tipo para me enviar. Basta comentar que eu estarei gerando uma versão mais atual.

Espero que isso ajude a quem usar.

CREATE FUNCTION [dbo].[FN_FORMATA_DATE](
  @Datetime DATETIME,
  @FormatMask VARCHAR(64)
)
RETURNS VARCHAR(64)
AS
BEGIN
  DECLARE
    @StringDate VARCHAR(64)

  SET @StringDate = @FormatMask

/*

Function v1.0

"d"		The day of the month, from 1 through 31.	6/1/2009 1:45:30 PM -> 1
"dd"	The day of the month, from 01 through 31.	6/1/2009 1:45:30 PM -> 01
"ddd"	The abbreviated name of the day of the week.	6/15/2009 1:45:30 PM -> Seg
"dddd"	The full name of the day of the week.	6/15/2009 1:45:30 PM -> Segunda-Feira
"n"		The milisecond in a date and time value.	6/15/2009 13:45:30.617 -> 123

--Sql Server 2008
"nn"	The microsecond in a date and time value.	6/15/2009 13:45:30.617 -> 123456
"nnn"	The nanosecond in a date and time value.	6/15/2009 13:45:30.617 -> 123456700

"h"		The hour, using a 12-hour clock from 1 to 12.	6/15/2009 1:45:30 AM -> 1
"hh"	The hour, using a 12-hour clock from 01 to 12.	6/15/2009 1:45:30 AM -> 01
"H"		The hour, using a 24-hour clock from 0 to 23.	6/15/2009 1:45:30 AM -> 1
"HH"	The hour, using a 24-hour clock from 00 to 23.	6/15/2009 1:45:30 AM -> 01

--não implementado
"K"	(Não implementado) Time zone information.	With DateTime values:
	More information: The "K" Custom Format Specifier.	6/15/2009 1:45:30 PM, Kind Unspecified ->
		6/15/2009 1:45:30 PM, Kind Utc -> Z
		6/15/2009 1:45:30 PM, Kind Local -> -07:00 (depends on local computer settings)
		With DateTimeOffset values:
		6/15/2009 1:45:30 AM -07:00 --> -07:00
		6/15/2009 8:45:30 AM +00:00 --> +00:00

"m"		The minute, from 0 through 59.	6/15/2009 1:09:30 AM -> 9
"mm"	The minute, from 00 through 59.	6/15/2009 1:09:30 AM -> 09
"M"		The month, from 1 through 12.	6/15/2009 1:45:30 PM -> 6
"MM"	The month, from 01 through 12.	6/15/2009 1:45:30 PM -> 06
"MMM"	The abbreviated name of the month.	6/15/2009 1:45:30 PM -> Jun
"MMMM"	The full name of the month.	6/15/2009 1:45:30 PM -> Junho
"s"		The second, from 0 through 59.	6/15/2009 1:45:09 PM -> 9
"ss"	The second, from 00 through 59.	6/15/2009 1:45:09 PM -> 09
"ampm"	The AM/PM designator lowercase.	6/15/2009 1:45:30 PM -> pm
"AMPM"	The AM/PM designator uppercase.	6/15/2009 1:45:30 PM -> PM
"yy"	The year, from 00 to 99.	1/1/0001 12:00:00 AM -> 01
"yyyy"	The year as a four-digit number.	1/1/0001 12:00:00 AM -> 0001

--não implementado
"z"		Hours offset from UTC, with no leading zeros.	6/15/2009 1:45:30 PM -07:00 -> -7
"zz"	Hours offset from UTC, with a leading zero for a single-digit value.	6/15/2009 1:45:30 PM -07:00 -> -07
"zzz"	Hours and minutes offset from UTC.	6/15/2009 1:45:30 PM -07:00 -> -07:00

*/

  IF (CHARINDEX ('MMMM', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
    SET @StringDate = REPLACE(@StringDate COLLATE SQL_Latin1_General_CP1_CS_AS, 'MMMM', '|Q|')

  IF (CHARINDEX ('MMM', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
	SET @StringDate = REPLACE(@StringDate COLLATE SQL_Latin1_General_CP1_CS_AS, 'MMM', '|E|')

  IF (CHARINDEX ('AMPM', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
    BEGIN
      SET @StringDate = REPLACE(@StringDate, 'AMPM' COLLATE SQL_Latin1_General_CP1_CS_AS, '|X|')
    END

  IF (CHARINDEX ('ampm', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
    BEGIN
      SET @StringDate = REPLACE(@StringDate, 'ampm' COLLATE SQL_Latin1_General_CP1_CS_AS, '|x|')
    END

  IF (CHARINDEX ('YYYY', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'YYYY', DATENAME(YY, @Datetime))

  IF (CHARINDEX ('YY', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'YY', RIGHT(DATENAME(YY, @Datetime), 2))

  IF (CHARINDEX ('MM', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
    SET @StringDate = REPLACE(@StringDate, 'MM' COLLATE SQL_Latin1_General_CP1_CS_AS, RIGHT('0' + CONVERT(VARCHAR,DATEPART(MM, @Datetime)),2))

  IF (CHARINDEX ('M', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
    SET @StringDate = REPLACE(@StringDate, 'M' COLLATE SQL_Latin1_General_CP1_CS_AS, CONVERT(VARCHAR, DATEPART(MM, @Datetime)))

  IF (CHARINDEX ('DDDD', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'DDDD', '|O|')

  IF (CHARINDEX ('DDD', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'DDD', '|P|')

  IF (CHARINDEX ('DD', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'DD', RIGHT('0' + DATENAME(DD, @Datetime),2))

  IF (CHARINDEX ('D', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'D', DATENAME(DD, @Datetime))

  IF (CHARINDEX ('h', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
    BEGIN
      DECLARE @Hour INT; SET @Hour = DATEPART(HH, @Datetime)
      SELECT  @Hour = CASE WHEN @Hour >= 12 THEN @Hour - 12 ELSE @Hour END

      IF (CHARINDEX ('hh', @StringDate) > 0)
        SET @StringDate = REPLACE(@StringDate, 'hh' COLLATE SQL_Latin1_General_CP1_CS_AS, RIGHT('0' + CONVERT(VARCHAR, @Hour), 2))

      IF (CHARINDEX ('h', @StringDate) > 0)
        SET @StringDate = REPLACE(@StringDate, 'h' COLLATE SQL_Latin1_General_CP1_CS_AS, @Hour)
    END

  IF (CHARINDEX ('HH', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
	SET @StringDate = REPLACE(@StringDate, 'HH' COLLATE SQL_Latin1_General_CP1_CS_AS, RIGHT('0' + CONVERT(VARCHAR, DATEPART(HOUR, @Datetime)), 2))

  IF (CHARINDEX ('H', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0)
	SET @StringDate = REPLACE(@StringDate, 'H' COLLATE SQL_Latin1_General_CP1_CS_AS, CONVERT(VARCHAR, DATEPART(HOUR, @Datetime)))

  IF (CHARINDEX ('mm', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'mm', RIGHT('0' + CONVERT(VARCHAR, DATEPART(mi, @Datetime)), 2))

  IF (CHARINDEX ('m', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'm', DATEPART(mi, @Datetime))

  IF (CHARINDEX ('ss', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 'ss', RIGHT('0'+CONVERT(VARCHAR,DATEPART(ss, @Datetime)),2))

  IF (CHARINDEX ('s', @StringDate) > 0)
    SET @StringDate = REPLACE(@StringDate, 's', DATEPART(ss, @Datetime))

--  IF (CHARINDEX ('nnn', @StringDate) > 0)
--	SET @StringDate = REPLACE(@StringDate, 'nnn', DATEPART(nanosecond, @Datetime))

--  IF (CHARINDEX ('nn', @StringDate) > 0)
--	SET @StringDate = REPLACE(@StringDate, 'nn', DATEPART(microsecond, @Datetime))

  IF (CHARINDEX ('n', @StringDate) > 0)
	SET @StringDate = REPLACE(@StringDate, 'n', DATEPART(millisecond, @Datetime))

  IF (CHARINDEX ('|Q|', @StringDate) > 0)
    SET @StringDate = CASE DATEPART(MONTH, @Datetime)
						WHEN 01 THEN  (REPLACE(@StringDate, '|Q|', 'Janeiro'))
						WHEN 02 THEN  (REPLACE(@StringDate, '|Q|', 'Fevereiro'))
						WHEN 03 THEN  (REPLACE(@StringDate, '|Q|', 'Março'))
						WHEN 04 THEN  (REPLACE(@StringDate, '|Q|', 'Abril'))
						WHEN 05 THEN  (REPLACE(@StringDate, '|Q|', 'Maio'))
						WHEN 06 THEN  (REPLACE(@StringDate, '|Q|', 'Junho'))
						WHEN 07 THEN  (REPLACE(@StringDate, '|Q|', 'Julho'))
						WHEN 08 THEN  (REPLACE(@StringDate, '|Q|', 'Agosto'))
						WHEN 09 THEN  (REPLACE(@StringDate, '|Q|', 'Setembro'))
						WHEN 10 THEN  (REPLACE(@StringDate, '|Q|', 'Outubro'))
						WHEN 11 THEN  (REPLACE(@StringDate, '|Q|', 'Novembro'))
						WHEN 12 THEN  (REPLACE(@StringDate, '|Q|', 'Dezembro'))
					END

  IF (CHARINDEX ('|E|', @StringDate) > 0)
    SET @StringDate = CASE DATEPART(MONTH, @Datetime)
						WHEN 01 THEN  (REPLACE(@StringDate, '|E|', 'Jan'))
						WHEN 02 THEN  (REPLACE(@StringDate, '|E|', 'Fev'))
						WHEN 03 THEN  (REPLACE(@StringDate, '|E|', 'Mar'))
						WHEN 04 THEN  (REPLACE(@StringDate, '|E|', 'Abr'))
						WHEN 05 THEN  (REPLACE(@StringDate, '|E|', 'Mai'))
						WHEN 06 THEN  (REPLACE(@StringDate, '|E|', 'Jun'))
						WHEN 07 THEN  (REPLACE(@StringDate, '|E|', 'Jul'))
						WHEN 08 THEN  (REPLACE(@StringDate, '|E|', 'Ago'))
						WHEN 09 THEN  (REPLACE(@StringDate, '|E|', 'Set'))
						WHEN 10 THEN  (REPLACE(@StringDate, '|E|', 'Out'))
						WHEN 11 THEN  (REPLACE(@StringDate, '|E|', 'Nov'))
						WHEN 12 THEN  (REPLACE(@StringDate, '|E|', 'Dez'))
					END

  IF (CHARINDEX ('|X|', @StringDate) > 0)
    BEGIN
      DECLARE @AMPM VARCHAR(2)
      IF DATEPART(HH, @Datetime) > 12
        SET @AMPM = 'pm'
      ELSE
        SET @AMPM = 'am'

      IF CHARINDEX ('|X|', @StringDate COLLATE SQL_Latin1_General_CP1_CS_AS) > 0
        SET @AMPM = UPPER(@AMPM)

      SET @StringDate = REPLACE(@StringDate, '|X|', @AMPM)
    END

   IF (CHARINDEX ('|O|', @StringDate) > 0)
	SET @StringDate = CASE DATEPART(dw, @Datetime)
						WHEN 01 THEN  (REPLACE(@StringDate, '|O|', 'Domingo'))
						WHEN 02 THEN  (REPLACE(@StringDate, '|O|', 'Segunda-Feira'))
						WHEN 03 THEN  (REPLACE(@StringDate, '|O|', 'Terça-Feira'))
						WHEN 04 THEN  (REPLACE(@StringDate, '|O|', 'Quarta-Feira'))
						WHEN 05 THEN  (REPLACE(@StringDate, '|O|', 'Quinta-Feira'))
						WHEN 06 THEN  (REPLACE(@StringDate, '|O|', 'Sexta-Feira'))
						WHEN 07 THEN  (REPLACE(@StringDate, '|O|', 'Sábado'))
					  END

  IF (CHARINDEX ('|P|', @StringDate) > 0)
	SET @StringDate = CASE DATEPART(dw, @Datetime)
						WHEN 01 THEN  (REPLACE(@StringDate, '|P|', 'Dom'))
						WHEN 02 THEN  (REPLACE(@StringDate, '|P|', 'Seg'))
						WHEN 03 THEN  (REPLACE(@StringDate, '|P|', 'Ter'))
						WHEN 04 THEN  (REPLACE(@StringDate, '|P|', 'Qua'))
						WHEN 05 THEN  (REPLACE(@StringDate, '|P|', 'Qui'))
						WHEN 06 THEN  (REPLACE(@StringDate, '|P|', 'Sex'))
						WHEN 07 THEN  (REPLACE(@StringDate, '|P|', 'Sab'))
					  END			

   RETURN @StringDate

END

GO

Como excluir Work Itens no TFS 2010

Estou tirando uns textos que tenho armazenado e colocando aqui para facilitar consulta.

Dentre eles está este que tem o template de exclusão de Work Itens (WI), pois o mesmo não pode ser feito via nenhuma interface disponível que eu tenha encontrado.

Basta executar no servidor o seguinte comando:

“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\witadmin.exe” destroywi /Collection:http:\\sql.servidor.com.br:8080\tfs\NomeCollection /id:1,2,3,4,5,6,7,8,9,10

 

 

Office Tabs – Como sobrevivi sem isso?

Estava eu na aula da pós, muito ocupado prestando atenção nas tirinhas do Laerte e um amigo me mostrou: Tabs para o Office 2003, 2007 e 2010. Esse é o segundo plugin que uso para office e pelo visto é o melhor de todos.

Segundo os primeiros testes, não consigo imaginar como eu sobrevivi sem isso antes. Principalmente na época do TCC onde eu estava sempre com várias versões e vários textos.

Além de ter o costume de sempre utilizar muitas abas navegando (média de 20 a 30) em geral eu tenho estado mais tranquilo.

Sugestão: utilize a versão 32bit, mesmo tendo computador 64bit, só funcionou quando coloquei a versão 32bit.

http://office-tabs.com/

mscorsvw causando problema no Visual Studio 2010

Hoje peguei meu samsung galaxy 5 do conserto e ao abrir o programa Kies ele pediu para atualizar, aí de repente o mscorsvw.exe começou a processar sem parar, ao fim, tive que reiniciar e ao tentar abrir o Visual Studio 2010, não estava mais funcionando. Visual Studio 2010 sem funcionar para um programador é o mesmo que ter um órgão vital parado.

Mas pesquisando descobri que tem um jeito de dar uma limpada no processamento: basta executar o comando

C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executequeueditems

então ele vai dar uma compilada nos seus assemblies, o que no meu caso fez voltar a funcionar.

Overload e reuso de contrutor

Hellow everybody, hoje vai ter um techo de código mostrando como se faz o overload com reuso no construtor no C#, algo que dá muito problema de memória ao ocorrer esquecimentos de como funciona que atrapalham explicações de exemplos. O código passado será de como reutilizar contrutores no C#, assim vc pode ter apenas um construtor com código inteligente (dependendo do programador) e o resto ser um código mais simples.

public class Pessoa
{
  private string nome;
  private DateTime dataNascimento;

  public Pessoa(string Nome) : this(Nome, DateTime.Now) { }

  public Pessoa(string Nome, DateTime data)
  {
    this.nome = Nome;
    this.dataNascimento = data;
  }
}

Explicando: você usa o “: this” para chamar o construtor que vc quer de acordo com os parâmetros. Muito simples.

Inversor de Links

Como estive baixando alguns links por aí (80gb de trilhas sonoras, 50gb de templates de sites, 20gb de lixo) então resolvi fazer meu próprio inversor de links disponível aqui: http://filipivc.com/inversor/

 

Simplifiquei ao máximo para ficar com menos de 1kb, então certamente é o mais rápido e simples que você encontrará por aí.

Frases

Coleção de algumas frases encontradas por aí.

# Será o Windows a praga dos sete discos da qual falava a Bíblia.doc?

# O Windows é a resposta para uma pergunta que ninguém perguntou.

# Papel higiênico e tempo de acesso acabam quando você mais precisa!

# Namorada é uma versão shareware, esposa é a versão registrada!

# Gripe: único vírus que meu micro não tem.

# Teclado é o hardware usado para inserir erros nos micros.

# Diga-me que computador tens e direi quem és.

# Nossa tive um pesadelo em binário: 01010101 11100010 01010101 00101010 10111011 11000011.

# Não preciso comer nem beber, tenho internet banda larga em casa.

# Se não fosse pelo C, estaríamos usando BASI, PASAL e OBOL.

#  Teclado não instalado, favor apertar a tecla ENTER.

# O verdadeiro problema do seu computador é a BIOS: Bicho Ignorante Operando o Sistema!

# Todo mundo tem clientes, só analista de sistemas e traficante que tem usuários.

# O verdadeiro problema de seu computador está entre o monitor e a cadeira.

# O Pato Donald trouxe o teclado e o Mickey Mouse. (podre esta)

# Achoqueminhabarradeespaçosestáquebrada!

# Devemos esquecer tudo de ruim deste mundo. O que é mesmo Windows?

# A informática nasceu para resolver os problemas que antes dela não existiam.

# Pra quem não sabe, Hardware é aquilo que você chuta e Software é aquilo que você xinga. (ótima!!!)

# Teclado não encontrado, aperte F1 para continuar.

# Abençoados sejam os pessimistas, pois eles fizeram backup!

# Pascal era um cientista de alto nível e o C++ também.

# Errar é humano, perdoar é um bug do sistema.

# Você percebe que esta usando o computador demais, quando uma mosca pousa na tela do computador e você tenta matar com a seta do mouse.

# Uma impressora disse para outra: Essa folha é sua ou é impressão minha? derrrrrr

# Há dois tipos de pessoas na informática. Os que perderam o HD e os que ainda vão perder…

# A verdadeira inclusão digital, é o exame de próstata.

#  Sogra.exe – Ocupa muito espaço e não serve pra nada.

# Não confunda modess com modem, o slot é diferente.

# Quem com vírus infecta, com vírus será infectado.

# Quem clica seus males multiplica.

# Meu computador não tem memória. Só uma vaga lembrança!

# Se a mensagem não estiver clara, aumente o brilho da tela.

# Quem nunca pirateou que atire o primeiro disco… que eu atiro uma cópia!

# Errar é humano, colocar a culpa no computador é mais humano ainda.

# Se o computador atrapalha os estudos, saia da escola.

# Na informática nada se perde, nada se cria. Tudo se copia… e depois se cola.

# Me identifico com o meu computador: legítimo, de boa qualidade, bonito, esperto e rápido.

# Meu computador é pancadão, se não bater, ele não funciona.

# A diferença entre um vírus e o Windows é que o vírus funciona.

# O Windows é tão lento, que não tem tempo de resposta, tem prazo de entrega.

# Não sei usar bem o computador, será que sou analfabyte?

# Contratar um hacker é fácil, difícil é depois que você o despediu!

#  Excel é como a mulher: maravilhoso, se você conseguir compreendê-lo.

# Dorme filhinho, senão vem um vírus e te apaga da memória!

# XT não tem placa mãe, tem placa avó.

# Nunca deixe o computador saber que você está com pressa!

# Errar é humano, persistir no erro é bug!

# Existem apenas 10 tipos de pessoas neste mundo: as que entendem códigos binários e as que não entendem!

# Um computador sem Windows é como um bolo de chocolate sem mostarda.

# A diferença entre o Bill Gates e o Batman é que o Batman consegue derrotar o Pingüim.

# Se chefe fosse arquivo, teria a extensão .fdp.

# Se seu Windows não trava, reclame com a Microsoft.

# Enquanto você lê esta frase, o Bill Gates está ganhando mais 1 milhão de dólares.

# Na era da informática, o castigo vem via internet.

# Aluno de informática não cola, faz backup.

# 640kb sempre serão suficientes! (Bill Gates, em 1981)

# Atenção, o vírus requer mais espaço para ser executado, por favor libere mais memória.

# O Universo por nos conhecido é apenas uma versão beta.

# O Natal das pessoas viciadas em computador é diferente. No dia 25 de Dezembro, o Papai Noel desce pelo cabo de rede, sai pela porta serial e diz: Feliz Natal, ROM, ROM, ROM!

# O problema do computador é o USB (Usuário Super Burro).