Skip to content

Month: December 2007

Quem mais comenta no seu blog?

Uma brincadeira de mão na massa com SQL e as tabelas do WordPress.

Logomarca do WordPress

Você vai precisar de:

  • Um blog em WordPress num servidor próprio.
  • Uma lugar onde você possa se conectar ao banco de dados (provavelmente o MySQL). Um terminal SSH no seu servidor ou mesmo o PhpMyAdmin servem.

Se você tiver acesso por SSH no servidor onde está seu blog, chame o prompt do mysql assim:

$ mysql -u USUÁRIO -p -h URL_DO_BANCO DATABASE

Trocando USUÁRIO por seu login no mysql, URL_DO_BANCO por a url do seu banco (geralmente 127.0.0.1) e DATABASE por a base de dados (geralmente wordpress). Em seguida será perguntada a sua senha.

Uma vez conectado dentro do seu banco de dados você pode executar algumas queries legais.

Os 10 maiores comentaristas do seu blog: você seleciona da wp_comments (a tabela de comentários do WordPress) selecionando só os nomes e agrupando pelo email do autor e fazendo uma contagem que chamados de quantidade. Também é feito uma ordenação usando o campo contagem. Aqui eu supondo que a pessoa sempre coloque seu próprio email, mas as vezes mude o nome, o que realmente acontece.

SELECT comment_author AS autor, COUNT(*) AS quantidade
   FROM wp_comments
   GROUP BY `comment_author_email`
   ORDER BY quantidade DESC
   LIMIT 10
;

Usando isso lá no banco de dados do eupodiatamatando.com que tem uns 3 mil comentários, deu o seguinte:

+---------------------------------------------+------------+
| autor                                       | quantidade |
+---------------------------------------------+------------+
| Silveira                                    |        511 |
| 2007 Janeiro 21 » Eu Podia Ta Matando       |        174 |
| Kct                                         |        133 |
| Filho                                       |         91 |
| Dora                                        |         83 |
| Leonardo                                    |         67 |
| manero                                      |         58 |
| Esdras                                      |         52 |
| Marlany                                     |         51 |
| Roney Marques                               |         50 |
+---------------------------------------------+------------+
10 rows in set (0.12 sec)

Ou seja, em primeiro lugar deu eu mesmo, com 511 comentários. Em segundo, o próprio blog com seus pingbacks. O maior comentarista mesmo foi o comentarista que se identifica como Kct.

Os 10 posts mais comentados: É necessário fazer uma junção entre a tabela dos comentários (wp_comments) e a tabela dos posts (wp_posts) usando o ID do post.

SELECT wp_posts.post_title, COUNT(*) AS quantidade
   FROM wp_comments JOIN wp_posts
   ON wp_comments.comment_post_ID = wp_posts.ID
   GROUP BY wp_posts.ID
   ORDER BY quantidade DESC
   LIMIT 10
;

A saída que eu tive:

+-----------------------------------------+------------+
| post_title                              | quantidade |
+-----------------------------------------+------------+
| Sobre o vôo 3054                        |        104 |
| Chegou o boneco do Capitão Nascimento!  |         80 |
| Vamos trocar links?                     |         74 |
| O celular Linux já está a venda         |         64 |
| O Que o Emo disse pra Ema?              |         57 |
| Bichos grandes. Falsificações?          |         46 |
| Esse ainda tem muito pra upar           |         45 |
| Entenda Heroes                          |         42 |
| Aqui pro iPhone!                        |         40 |
| Ganhe créditos de graça no celular      |         39 |
+-----------------------------------------+------------+
10 rows in set (0.11 sec)

Qual o post você mais comentou: Basta colocar um WHERE e pegar o autor que você quer, no caso, Silveira (eu). Eu coloquei um limite de 10, para pegar só os 10 posts que eu mais comentei.

SELECT wp_posts.post_title, COUNT(*) AS quantidade
    FROM wp_comments JOIN wp_posts
    ON wp_comments.comment_post_ID = wp_posts.ID
    WHERE wp_comments.comment_author = 'Silveira'
    GROUP BY wp_posts.ID
    ORDER BY quantidade DESC
    LIMIT 10
;

O resultado no meu blog foi:

+---------------------------------------------+------------+
| post_title                                  | quantidade |
+---------------------------------------------+------------+
| Vamos trocar links?                         |         20 |
| Regnum, RPG online gratúito                 |         11 |
| Promoção: Estamos Dando 97 dólares!         |          7 |
| Aqui pro iPhone!                            |          6 |
| Vamos escrever um livro?                    |          6 |
| Democracy TV Player                         |          5 |
| Formatura, novidades                        |          5 |
| Como eu consegui cancelar minha conta na Oi |          5 |
| Chico Buarque em Fortaleza                  |          4 |
| Livro Python Guia de Bolso                  |          4 |
+---------------------------------------------+------------+
10 rows in set (0.02 sec)

Se você quiser ir mais fundo nas consultas eu recomendo dar uma olhada na sintaxe do select do Mysql.

Questões de conservação do momento linear

Algumas questões do capítulo 9 do livro Física 1, R. Resnick e D. Halliday, quarta edição.

Questão 2. Seja d a distância entre um corpo de massa m1 e outro corpo de massa m2.
Considere um sistema de coordenadas cujo centro coincida com o centro de massa dos dois corpos. Obtenha uma expressão para o cálculo da distância d1 entre o centro deste sistema e o centro do corpo de massa m1.

Resposta:
Partículas
Temos que:

  • d2 – d1 = d
  • divisão

Como sabemos que m1+m2 é não nulo então
d1·m1 + d2·m2 = 0
d1·m1 = – d2·m2
Como d2 = d + d1substituímos d2
d1·m1 = – (d + d1)·m2
d1·m1 = – d·m2 – d1·m2
d1·m1 + d1·m2 = – d·m2
d1· (m1 + m2) = – d·m2
d1 = – d·m2 / (m1 + m2)
e como estamos interessados na distância, então podemos desprezar o sinal de menos:

d1 = d·m2 / (m1 + m2)

Questão 10. Um bloco possui massa m1 e outro bloco possui massa m2 = 5·m1. Estes blocos são presos às extremidades de uma mola e colocados sobre um plano horizontal sem atrito. O bloco de massa m1 se aproxima do centro de massa com velocidade 6,5m/s. O centro de massa permanece em repouso uma vez que não existe nenhuma força externa aplicada. Calcule a velocidade do bloco de massa m2 em relação ao centro de massa.

Resposta: Seja o centro do massa do sistema a origem do sistema de referência.
Seja d1 a distância do centro de massa até o bloco 1 e seja d2 a distância do centro de massa até o bloco 2. Então temos:
d1·m1 = d2·m2
Como m2 = 5·m1
(i) d1·m1 = d2·5·m1

Imaginamos que passado um tempo Δt os blocos se moveram e agora estão na posição d1‘ e d2‘.
Nesse momento temos analogamente:
(ii) d1‘·m1 = d2‘·5·m1

Subtraindo (i) de (ii):

d1‘·m1 – d1·m1 = d2‘·5·m1 – d2·5·m1

Colocando as massas e constantes em evidencia:
m1·(d1‘ – d1) = 5·m1·(d2‘ – d2)

Dividindo ambos os lados da equação por Δt temos:
m1·(d1‘ – d1) /Δt = 5·m1·(d2‘ – d2) / Δt

A velocidade v1 do bloco 1 é dada por (d1‘-d1)/Δt e a
velocidade v2 do bloco 2 é dada por (d2‘-d2)/Δt, então
m1·v1 = 5·m1·v2
v1 = 5·v2
v2 = v1 / 5
Como v1 é 6,5 m/s então v2 é 1,3 m/s.