Search

Thursday, July 15, 2010

Banco de dados do Winehq.org


Você quando começou a se interessar por jogar no linux logo descobriu esta página não?

Bom, aqui vai uma dica para pessoas interessadas em acompanhar ou mesmo desenvolver soluções utilizando esta base de dados.



Primeiramente o link que leva ao local onde você pode baixar os comandos em SQL, o link é este aqui.

Só fiquei sabendo que tinha como fazer download da base de dados quando conversei com uma pessoa no IRC no freenode, bem que o pessoal podia deixar isso mais claro no site (do contrário vão aparecer alguns loucos fazendo web scraping... "rsrs").

Continuando, lá nos vemos:
Name                                     Last                 modified   Size      
Parent                                   Directory            -                    
Wine.xo                                  27-Aug-2009          15:33      17M       
archive/                                 24-Aug-2006          07:00      -         
cvsup/                                   26-Apr-2003          12:22      -         
docs/                                    22-Oct-2005          05:46      -         
full-cvs-2010-07-15.tar.gz               15-Jul-2010          01:11      127M      
full-cvs.README                          15-Mar-2004          13:02      598       
logos/                                   02-May-2008          07:32      -         
wine-appdb-20100715.tar.gz               15-Jul-2010          01:21      20M       
wine-bugzilla-20100715.tar.gz            15-Jul-2010          01:31      29M       

O que está destacado é o que precisamos baixar.

Quando você terminar de baixar, para importar basta descompactar é claro e digitar:
mysql <banco_de_dados> < appdb.sql

Feito isso vamos para próxima parte, vamos ter uma noção básica da estrutura da base de dados.

As tabelas:

mysql>show tables;
Tables_in_wine
appCategory
appComments
appData
appFamily
appHitStats
appMaintainers
appMonitors
appNotes
appVersion
appVotes
buglinks
distributions
prefs_list
testResults
vendor

A que contem a classificação quanto a compatibilidade (se é platinum, gold, etc.) é a tabela testResults.
mysql> desc testResults;
FieldTypeNullKeyDefaultExtra
versionIdint(11)NO0
whatWorkstextYES
whatDoesnttextYES
whatNotTestedtextYES
testedDatedatetimeNO0000-00-00 00:00:00
distributionIdint(11)NO0
testedReleasetinytextYES
installsenum('Yes','No','No, but has workaround','N/A')NOYes
runsenum('Yes','No','Not installable')NOYes
testedRatingenum('Platinum','Gold','Silver','Bronze','Garbage')NOPlatinum
commentstextYES
submitTimedatetimeNO0000-00-00 00:00:00
submitterIdint(11)NO0
stateenum('accepted','queued','rejected','pending','deleted')NOaccepted

mysql>select count(testedRating) from testResults
+---------------------+
| count(testedRating) |
+---------------------+
|               52747 |
+---------------------+
1 row in set (0.00 sec)

É, temos banstante testes aqui, 52.747 mil.
Uma coisa utils é saber quais testes reportaram o pior resultado, "garbage", assim podemos checar o que está acontecendo.

mysql> select count(testedRating) from testResults where testedRating = 'garbage';
+---------------------+
| count(testedRating) |
+---------------------+
|               16308 |
+---------------------+
1 row in set (0.08 sec)


O interessante seria fazer testes automatizados com softwares que são distribuidos livremente pela internet, freewares/opensource.

Como havia postando antes, boa parte dos jogos livres disponiveis na internet são os famigerados MMORPGs, para listalos basta digitar:

mysql>select appFamily.appName,appFamily.webPage from appFamily,testResults where testResults.submitterId = appFamily.submitterId and appFamily.catId = 103;

Para isso seria necessário um "novo protocolo" padronizado para notificação de atualizações de software (coisa que já procurei muito tempo atrás mas não encontrei, e mesmo que encontrasse nunca vi um site usando algo parecido), pois do contrário temos que fazer os web scrapers que levam um tempinho e sempre precisam de atualização.Como as vezes padrões são feitos ao longo de décadas, vamos ter que ficar com a segunda opção...

Atualmente vi que o pessoal faz testes de unidades, que é muito eficiente também (basta reproduzir o erro através de um pequeno código em c/c++ etc. e incluir na lista de testes), para você ter uma ideia visite esta página.Ligado a isso temos também engenharia reversa através de testes de caixa preta (o que é recomendado pelos devs do Wine, pois onde existe DMCA não é permitido ir "direto" ao assunto).

Bom, esse é um assunto para o próximo post.

Até mais!

No comments:

Post a Comment