Wikipédia:Desenvolvimento técnico/Guia extensivo

Documents icon.svg


Desenvolvimento técnico | Guia extensivo


Este é um guia que aborda de forma bastante resumida todas as diversas áreas técnicas da Wikipédia e dos projetos Wikimedia em geral, indicando os locais onde pode ser encontradas informações mais detalhadas.


Código wiki avançadoEditar

Módulos LuaEditar

O domínio Módulo é utilizado para criar módulos na linguagem de programação Lua, que funcionam como predefinições que, em vez de código wiki, são programados com códigos Lua e, são incluídos/usados usando o código Predefinição:Cód.

Ao se criar um módulo deve-se ter em mente que o módulo deve retornar uma tabela com as funções desse módulo, e ao se chamar o módulo em uma página deve-se obrigatoriamente chamar uma função desse módulo. Veja por exemplo o seguinte trecho do Módulo:Texto:

m = {}
 
function m.semparenteses(frame)
    local str = mw.ustring.gsub(frame.args[1], ' *%([^)]+%)', '')
    return str
end

-- E no final do módulo existe a seguinte linha:
return m

Perceba que o módulo começa declarando uma tabela (Predefinição:Cód), em seguida declara uma função dessa tabela (Predefinição:Cód indica que Y é uma função da tabela X) e no final do módulo é retornada a tabela.

Quando chamamos um módulo em uma página, será chamada uma função do módulo, não o módulo inteiro. No exemplo do Módulo:Texto, a função "semparenteses" pode ser chamada nas páginas com o código Predefinição:Cód, em que o Predefinição:Cód diz que o que está sendo chamado é um módulo, o Predefinição:Cód diz qual módulo está sendo chamado, o Predefinição:Cód diz qual função do módulo está sendo chamada e Predefinição:Cód é o argumento passado para a função, como essa função retira termos entre parênteses esse código irá retornar "argumento da função" sem o "(exemplo)", que foi removido pela função.

A linguagem LuaEditar

Semi-robôsEditar

...

AWBEditar

...

RobôsEditar

Robôs são programas que tem a capacidade de fazer edições de forma automática ou semi-automática. O principal robô utilizado na wikipédia é o pywikipediabot, ou robô python, que utiliza a linguagem python, mas existe também robôs em outras linguagens como Perl, PHP, Java, entre outras.

Robô pythonEditar

Linguagem pythonEditar

Scripts do pywikipediabotEditar

Após instalado o pywikipediabot fica em uma pasta, na qual existem vários scripts python, alguns desses scripts são scripts do "sistema" do robô e outros são ferramentas que podem ser usadas através de um comando no console (Linux) ou DOS (Windows).

  • mw:Manual:Pywikipediabot/Scripts, é a lista dos scripts com instruções sobre seus funcionamentos (em inglês).
    • replace.py é um dos scripts mais utilizados, ele faz substituições no texto. É usado por exemplo para vários pedidos feitos na coordenação robótica que exigem modificações em links ou predefinições. A utilização desse script praticamente não exige conhecimentos de python, basta conhecer bem seus comandos e ter conhecimento de expressões regulares.
    • pagegenerators.py é o script usado pelo replace.py e outros scripts para gerar a lista de páginas onde as edições serão feitas, é interessante conhecer os comandos pois todos eles funcionam no replace.py e outros scripts.
    • wikipedia.py é o script principal do sistema do pywikipediabot, os usuários que desejam desenvolver scripts precisam ter um conhecimento básico desse script.

MediaWikiEditar

...

APIEditar

A API (ou Interface de Programação de Aplicações) do MediaWiki é um programa dentro do MediaWiki pelo qual pode-se fazer consultas de dados ou edições na Wikipédia sem a utilização de um navegador de internet, esse é o meio pelo qual os robôs, semi-robôs e alguns gadgets funcionam.

ExtensõesEditar

...

Wikimedia LabsEditar

...

Acesso:

  1. Crie uma conta no wikitech. No campo "Instance shell account" que será pedido na criação da conta coloque o nome que você usará para fazer login pelo terminal.
  2. Crie uma chave para o SSH (se já tem pule para o próximo passo)
    • No Linux: digite Predefinição:Cód para ver se você já tem a chave, ser der o erro "No such file or directory" você não tem. Digite então Predefinição:Cód, será pedido o diretório em que pretende instalar, pode digitar a sugestão que é dada entre parênteses, depois será pedida a passphrase, que é a senha (chamasse passphrase e não password porque a senha pode ser uma frase longa, para dar mais segurança), redigite a passphrase e a chave então será gerada.
    • No windows: Será necessário criar a chave ssh utilizando algum aplicativo. Pode ser utilizado, por exemplo, o PUTTYgen.
  3. Entre em 'Preferências>OpenStack>Add Public SSH key' e copie sua chave pública do SSH para lá (o conteúdo do seu id_rsa.pub)

Tool LabsEditar

O Tool Labs é um projeto dentro do Wikimedia Labs onde podem ser desenvolvidas ferramentas web para auxiliar os projetos Wikimedia e onde os robôs podem funcionar com hora marcada ou mesmo ininterruptamente. Uma das principais vantagens de se desenvolver uma ferramenta no Tool Labs é o acesso a uma réplica do banco de dados de todos projetos Wikimedia, possibilitando com isso operações que não seriam possíveis com API.

Para se ter acesso ao Tool Labs é necessário primeiro criar uma conta no Wikimedia Labs como descrito na seção acima, depois é necessário fazer um pedido de acesso ao Tool Labs neste formulário (você só poderá preenchê-lo se estiver logado) dizendo o que planeja fazer no Tool Labs (em inglês). Após seu pedido ser aceito pelos administradores do projeto (geralmente é aceito se demonstrado um mínimo de conhecimento do projeto) você poderá criar um novo projeto ou ser adicionado em um projeto já existente.

Para logar no sistema do Tool Labs através do terminal usando Linux digite Predefinição:Cód (seu_nome_shell é o nome que digitou no campo "Instance shell account" quando criou sua conta no Labs), então será pedida sua passphrase e após isso já estará logado no sistema do Tool Labs.

Se utiliza o windows, é necessário utilizar um aplicativo que realiza tal acesso. Recomenda-se o PUTTY, que pode ser configurado através das instruções desta página (em inglês)

Banco de dadosEditar

Todos usuários com acesso ao Tool Labs tem automaticamente acesso ao bancopt-br/basept de dados do Tool Labs, que é uma réplica dos bancos de dados dos projetos Wikimedia. Para manipulá-los é necessário conhecimentos de SQL. A estrutura do banco de dados pode ser vista em mw:Manual:database layout.

Para ter se conectar ao banco de dados da Wikipédia lusófona em python usando oursql:

import os, oursql
conn = oursql.connect(db='ptwiki_p', host='ptwiki.labsdb', read_default_file=os.path.expanduser('~/replica.my.cnf'))

Ferramentas webEditar

Para criar uma ferramenta web em um projeto você pode simplesmente colocar seus arquivospt-br/ficheirospt PHP na pasta Predefinição:Cód.

RobôsEditar

...

Scripts e GadgetsEditar

Scripts e Gadgets são scripts desenvolvidos em JavaScript que é rodado pelo navegador do usuário que está lendo ou editando a Wikipédia. São considerados Gadgets quando podem ser ativados através das preferências de usuário.

Linguagem JavaScriptEditar

  • w3schools.com/js, em inglês, é um bom local para aprender JavaScript e consultar referências de linguagem.

...