Bruger:Byrial/Offline rapporter
Fra Wikipedia, den frie encyklopædi
Jeg har lavet offline analyser af databasedump. Som udgangspunkt for disse har jeg brugt en:User:Topbananas SQL-kode til at lave en henvisningsanalysedatabase.
Indholdsfortegnelse |
[redigér] Faste rapporter
- Wikipedia:Dobbelte omdirigeringer (Data udtrukket med C-programmet nedenfor).
- Wikipedia:Artikler som henviser til sig selv gennem en omdirigering (Data udtrukket med denne SQL-kode af Topbanana).
- Wikipedia:Omdirigeringer til ikke-eksisterende sider (Data udtrukket med denne SQL-kode af Topbanana).
- Wikipedia:Forældreløse artikler sorteret efter størrelse
- Wikipedia:Artikler med flertydige titler som der henvises til
- Wikipedia:Henvisninger som måske er skrevet forkert
- Wikipedia:Mest ønskede artikler
[redigér] Ad hoc-rapporter
- Wikipedia:Artikler som indeholder en Ref-skabelon (Tilbage til ...) (data fra 16. maj)
- Wikipedia:Artikler som bruger det udgåede minnan: interwiki-præfiks (data fra 16. maj)
Se også Maitchs offline rapporter, hvis du ikke kan finde hvad du leder efter her.
[redigér] Status
Jeg er, efter nogle måneders pause, ved at tilpasse mine programmer til MediaWiki 1.5's eksportformat (XML) og UTF-8-indkodning. Det meste er ved at være på plads, og de fleste lister er regeneret med data fra 26. marts 2006. Øvrige vil følge, men måske først når næste databasedump kommer. Listen over henvisninger som måske er skrevet forkert indeholder mange åbenlyst falske positive pga. nogle tegnsætproblemer, til gengæld har jeg af hensyn til størrelsen ikke oploaded hele den genererede liste - der skulle være nok at tage fat på alligevel. Jeg regner med at have løst problemerne når næste dump skal behandles, og så bringe den fulde liste. Byrial 5. apr 2006 kl. 19:19 (CEST)
Forrige statusrapport fra 2. juli 2005: Alle faste rapporter er genereret ud fra databasedumpet fra 23. juni. De er som tidligere lavet ud fra en analysedatabase, men analysedatabasen er nu lavet med et nyskrevet C++-program i stedet for med en:User:Topbananas rene SQL-kode. Det giver betydeligt større fleksibilitet og flere muligheder. Men programmet er helt nyt, og der udvikles stadig på det. Det kan derfor stadig indeholde væsentlige fejl. Blandt de kendte fejl er at henvisninger til artikler som indeholder kolon, ikke behandles korrekt. Jeg modtager gerne fejlmeldninger hvis der er noget galt med de genererede rapporter.
[redigér] Planlagte forbedringer (med ubestemt tidsramme)
Der er p.t. ingen planlagte forbedringer.
Jeg modtager meget gerne forslag til forbedringer af eksisterende rapporter og til nye rapporter på denne sides diskussionsside eller på diskussionssiderne for de enkelte rapporter.
[redigér] C-program til udtræk af dobbelte omdirigeringer
#include <mysql/mysql.h> #include <stdio.h> #include <ctype.h> #define URL1 "http://da.wikipedia.org/w/wiki.phtml?title=" #define URL2 "&action=edit" #define DATABASE_HOST NULL #define DATABASE_USER NULL #define DATABASE_PASSWD NULL #define DATABASE_NAME "da_20041115_link" #define DATABASE_PORT 0 #define DATABASE_SOCKET NULL void urlify (const char *p) { while (*p) { unsigned char u = *p; if (isalnum(u) && u < 128) putchar (u); else printf ("%%%02X", u); ++p; } } void spaceify (const char *p) { while (*p) { putchar (*p == '_' ? ' ' : *p); ++p; } } int main () { MYSQL mysql; mysql_init (&mysql); mysql_options (&mysql, MYSQL_READ_DEFAULT_GROUP, "link"); if (!mysql_real_connect (&mysql, DATABASE_HOST, DATABASE_USER, DATABASE_PASSWD, DATABASE_NAME, DATABASE_PORT, DATABASE_SOCKET, 0)) { printf ("mysql_real_connect() failed: %s\n", mysql_error (&mysql)); return 1; } if (mysql_query (&mysql, "SELECT a1.art_title, a2.art_title, a3.art_title " "FROM art a1 " "JOIN good_links l1 ON a1.art_id = l1.from_id " "JOIN art a2 ON l1.to_id = a2.art_id " "JOIN good_links l2 ON a2.art_id = l2.from_id " "JOIN art a3 ON l2.to_id = a3.art_id " "WHERE a1.art_is_redirect = 1 " " AND a2.art_is_redirect = 1 " " AND a3.art_is_redirect = 0 " "ORDER by a1.art_title")) { printf ("mysql_query() failed: %s\n", mysql_error (&mysql)); return 1; } MYSQL_RES *result = mysql_use_result (&mysql); if (! result) { printf ("mysql_use_result() failed: %s\n", mysql_error (&mysql)); return 1; } char last_headline = '\0'; MYSQL_ROW row; while (NULL != (row = mysql_fetch_row (result))) { const char *a1 = row[0]; const char *a2 = row[1]; const char *a3 = row[2]; if (a1[0] != last_headline) { last_headline = a1[0]; printf ("== %c ==\n", last_headline); } fputs ("*[" URL1, stdout); urlify (a1); fputs (URL2 " ", stdout); spaceify (a1); fputs ("] → ", stdout); spaceify (a2); fputs (" → [[", stdout); spaceify (a3); fputs ("]]\n", stdout); } mysql_free_result (result); mysql_close (&mysql); return 0; }