Skip to main content

Howto: Executar dumps extensos com phpMyAdmin

===================================================
Howto: Executar dumps extensos com phpMyAdmin
===================================================

Aqui está um truque simples e conveniente que eu uso muitas vezes para fazer o Dump de scripts  MySQL, contornando as restrições de limites do PHP/Apache  (file upload).

O exemplo abaixo foi realizado utilizando o Vertrigo, mas o procedimento é o mesmo para uma instalação Linux.

1. Vá até o diretório onde esta instalado o seu phpMyAdmin e crie uma pasta chamada “upload”.  Cole qualquer (pode ser vários) scripts SQL que você gostaria de rodar nesta pasta. Desculpe o nome desfocado, mas é por razões de segurança.

screenshot_upload1

2. Abra o arquivo de configuração do phpMyAdmin (config.inc.php). Você o encontrará na raiz da pasta  do diretório phpMyAdmin.
screenshot_config_location1
3.  Edite o config.inc.php na linha do diretório upload, como mostrado abaixo e salve.

screenshot_edit

4. Agora, quando você entrar no phpMyAdmin, você verá uma guia nova listando todos os arquivos que você tenha inserido no diretório  “upload”, criado na etapa 1 acima.
timthumb
Portanto, da próxima vez que você tentar transferir um script SQL grande para um servidor remoto,  tente o truque acima e, em seguida, faça upload dos SQL´s via FTP para dentro da pasta “upload” criada por você e selecione-o a partir da lista que phpMyAdmin apresenta… funciona que é uma maravilha..

Melhorando o sinal da sua rede Wireless

Em minha casa o sinal da minha rede wireless não pegava muito bem, devido a várias janelas de vidro que ocasionava a interferência.

Então procurando algumas alternativas baratas, onde não fosse necessário trocar a antena do AP para uma de maior DBI, encontrei esta solução abaixo, testei e realmente funciona, o sinal agora chega perfeito em todos os lugares da casa, mesmo com portas fechadas…

[youtube]http://www.youtube.com/watch?v=OYAYerjLbZE&feature=fvw[/youtube]

uma outra alternativa, similar…

Listar posts agrupados por ano no WordPress

====================================================
Howto:  Como gerar um menu agrupando as postagem por ano e mês
====================================================

A idéia é fazer um menu assim:

2009

  • Maio
  • Abril
  • Março
  • Fevereiro
  • Janeiro

2008

  • Dezembro
  • Novembro

O código é simples:

<ul>

<?php
/**/
$years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date)
FROM $wpdb->posts WHERE post_status = "publish"
AND post_type = "post" ORDER BY post_date DESC");
foreach($years as $year) :
?>

<li><a href="<?php echo get_year_link($year); ?> ">
<?php echo $year; ?></a>

<ul>
<? $months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) 
FROM $wpdb->posts WHERE post_status = "publish" 
AND post_type = "post" AND YEAR(post_date) = "".$year."" 
ORDER BY post_date DESC");
foreach($months as $month) :
?>

<li><a href="<?php echo get_month_link($year, $month); ?>">
<?php echo date( "F", mktime(0, 0, 0, $month) );?></a></li>
<?php endforeach;?>

</ul>
</li>

<?php endforeach; ?>
</ul>

Resultado de dois bancos distintos em apenas um SQL

=================================================================
Howto: Como realizar a busca em dois bancos distintos e unir o resultado em apenas um SQL?
=================================================================

Primeiro o problema:
Você precisa fazer uma busca em dois bancos de dados e mostrar o resultado em um lugar só, isso porque você tem partes dos dados em um banco e o restante dos dados em outro banco, e por motivo estrutural, burocrático… sabe-se lá porque…. você não pode unir tudo em um único database.

Solução:
Você pode unir dois resultados (inclusive de drivers/bancos que estejam na mesma conexão) em um unico result, mesclando os dados. Para isso deve-se utilizar a estrutura UNION.

Analisemos a seguinte query:

[sql]
SELECT cod, nome, idade FROM pessoas
SELECT codigo, nome_completo, idade FROM pessoas_nao_cadastradas
[/sql]

Primeiro, você deve ter resultados iguais para cada select, para isso use alias para igualar os resultados.

[sql]
SELECT cod, nome, idade FROM pessoas
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas
[/sql]

Agora, basta você usar o UNION entre os dois selects:

[sql]
SELECT cod, nome, idade FROM pessoas
UNION
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas
[/sql]

Já, agora você tem o resultado de dois bancos de dados mesclados em um só.

E como fazer um LIKE (WHERE)?

Você deve fazer um WHERE ou nos dois SELECTs ou fazer um SELECT que totaliza os dois:

[sql]
SELECT xyz.* FROM (
SELECT cod, nome, idade FROM pessoas
UNION
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas

) xyz WHERE nome = ‘Paulo’
[/sql]

Selecionando objetos com Jquery

Com base neste artigo, ficou fácil fazer com que determinada coluna em uma tabela alternasse a cor, de acordo com o valor recebido.

No meu caso, tinha uma coluna com datas(dataPrazo), e queria que essas datas ficassem verde ou vemelho de acordo com a data atual. Simples:

[js]
//Para colorir a dataPrazo pelo conteudo
$(“#tabela”).find(‘.dataPrazo’).each(function(i){

if($(this).html().length > 0){

var dataPrazo = $(this).html();
dataPrazo = dataPrazo.replace(/(d+).(d+).(d+)/, “$3/$2/$1”); //modifica string para yyyy/mm/dd

$(this).css(‘color’, (new Date(dataPrazo) < = new Date()) ? 'red' : 'green'); } }); [/js] Claro que é necessário ter uma tabela e coluna identificada né: [html]

[/html]

A mágica toda esta na função “each” que permite que percorra cada elemento(representado por “this”) retornado pelo seletor $.

Foi útil pra você? Deixe um comentário….

Serviço de configuração zero – WZC – Wireless Windows

Se por algum motivo, seu Windows deixar de mostrar as redes sem fio disponíveis, mesmo você tendo absoluta certeza que esta dentro da área de cobertura, tente desabilitar e reabilitar o Serviço de configuração zero WZC.

Para parar o serviço:
%windir%\system32\net.exe stop wzcsvc

Para iniciar o serviço:
%windir%\system32\net.exe start wzcsvc

Faz assim:

Menu Iniciar – Executar e digite o comando abaixo para parar o serviço:

  • net.exe stop wzcsvc

Menu Iniciar – Executar e digite o comando abaixo para iniciar o serviço:

  • net.exe start wzcsvc

Erro: service XYZ does not support chkconfig

Erro clássico. Você faz um script shell, e ao tentar colocar ele na lista dos serviços de start e stop do servidor, recebe a mensagem do título deste post, veja como resolver, de forma simples.

(Assumindo que o nome do meu script seja: myscript)

1 – Copie seu script para dentro de: /etc/init.d
2 – cd /etc/init.d
3 – chmod +x myscript
4 – Adicione essas linhas abaixo, incluíndo #,  logo após  #!/bin/bash ou #!/bin/sh:

# chkconfig: 2345 95 20
# description: descricao
# O que seu script faz (Acho que isso nem é mais necessário)
# processname: myscript

Salve, saia e execute a linha abaixo:

5 – chkconfig –level 2345 myscript on

Pronto…

Migrando repositórios subversion com erro database crashing (errcode=160029)

HOWTO: Migrando repositórios
=======================================
Ambiente: Linux CentOS 5.2 / RHEL / Fedora

1. Problema:

O Servidor onde estava rodando o Subversion deu crash de disco (CentOs 4.4), e nem permitia logar diretamente na console.

Ante ao desespero, realizou-se o update para a versão mais nova do CentOS 5.2, com isso o servidor voltou a permitir logar, e foi possível reintalar o subversion, e migrar os repositórios para uma outra máquina.

A instalação foi executada seguindo este tutorial: http://wiki.centos.org/HowTos/Subversion

2. Ao tentar fazer um checkout nos projetos, o mesmo não permitia, e apresentava o seguinte erro:

<D:error>
<C:error/>
<m:human-readable errcode=”160029″>
Could not open the requested SVN filesystem
</m:human-readable>
</D:error>

Depois de algumas pesquisas, descobri que o banco de dados dos repositórios (diretório DB) estava corrompido, e era necessário fazer um recover.

3. Rodei o comando:

# svnadmin recover /var/www/svn/projetoxyz/

Como resposta recebi:

Repository lock acquired.
Please wait; recovering the repository may take some time…
svnadmin: DB_RUNRECOVERY: Fatal error, run database recovery
svnadmin: bdb: /var/www/svn/projetoxyz/db/log.0000000015: log file open failed: No such file or directory
svnadmin: bdb: PANIC: No such file or directory
svnadmin: bdb: DB_ENV->log_put: 15: DB_RUNRECOVERY: Fatal error, run database recovery

Certo, com isso percebi que o problema era um pouquinho mais grave, na verdade sempre que vejo essa frase Fatal error, imagino um problema um pouco mais trabalhoso 🙂

4. Acessei a pasta db de dentro do projetoxyz

# cd /var/www/svn/projetoxyz/db
# ls

-rwxrwxrwx 1 apache apache  172032 Dec 11 10:16 changes
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 copies
-rwxrwxrwx 1 apache apache    1955 Oct  3  2008 DB_CONFIG
-rwxrwxrwx 1 apache apache       4 Oct  3  2008 fs-type
-rwxrwxrwx 1 apache apache 1048518 Oct 15 10:39 log.0000000013
-rwxrwxrwx 1 apache apache   13746 Dec 11 10:16 log.0000000014
-rwxrwxrwx 1 apache apache  126976 Dec 11 10:16 nodes
-rwxrwxrwx 1 apache apache  122880 Dec 11 10:16 representations
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 revisions
-rwxrwxrwx 1 apache apache 8777728 Dec 11 10:16 strings
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 transactions
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 uuids

Observe que existe na pasta dois arquivos de log (log.0000000013 e log.0000000014). Apaguei este dois arquivos.

# rm -rf log.0000000013 log.0000000014

5. Voltei para a pasta svn, e executei o comando svnadmin recover novamente:

# cd /var/www/svn/
# svnadmin recover /var/www/svn/projetoxyz/

Agora como resposta obtive:

Repository lock acquired.
Please wait; recovering the repository may take some time…

Recovery completed.
The latest repos revision is 25.

Com este retorno podemos concluir que o banco de dados do repositório foi restaurado.

6. Agora podemos fazer o backup do repositório e restaurar em nosso novo servidor.

# cd /var/www/svn/
# svnadmin dump projetoxyz > projetoxyz_dump

Ao concluir o dump, será criado o arquivo projetoxyz_dump, agora é so enviar para o novo servidor, e fazer a restauração.

# scp projetoxyz_dump root@192.168.1.10:/var/www/svn/

7. No servidor novo, você cria o projeto e faz o restauração do arquivo recebido.

# svnadmin create projetoxyz

altera o dono do projeto:

# chown apache.apache projetoxyz -R

Realiza o reload:

# svnadmin load projetoxyz < projetoxyz_dump

8. Ao terminar o restaure, você deve acrescentar uma entrada no subversion.conf do nome do projeto criado, conforme visto no tutorial: http://wiki.centos.org/HowTos/Subversion

# vi /etc/httpd/conf.d/subversion.conf

Acrescente:

<Location /projetoxyz>
DAV svn
SVNPath /var/www/svn/projetoxyz
AuthType Basic
AuthName “Descricao do Projeto”
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>

Reinicie o apache:

# service httpd restart
ou
# /etc/init.d/httpd restart

lembrando que só terão acesso ao repositório os usuários criados em /etc/svn-auth-conf.

# htpasswd -cm /etc/svn-auth-conf primeiro_usuario
New password:
Re-type new password:
Adding password for user primeiro_usuario

Adicionando mais usuários:

# htpasswd -m /etc/svn-auth-conf outro_usuario
New password:
Re-type new password:
Adding password for user outro_usuario

e assim sucessivamente.

9. Após esses passos, já é possivel fazer checkout utilizando sua ferramenta favorita, como o TortoiseSVN, diretamente pelo Windows, colocando a url de seu servidor:

http://192.168.1.10/projetoxyz

Ufa!!! É só isso 🙂

Cabo de redes par-trançado e conectores RJ45

Howto:  Como fazer a cabo de rede par-traçado?

Pra nunca mais esquecer, pois a idéia deste howto é focar no iniciante.

Será explicado abaixo dois tipos de cabos, um utilizado em HUB/Switch e também o famoso cabo cross-over (ponto-a-ponto).

1. Cabo para ser utilizado em um Hub ou Switch,  basta fazer as duas pontas iguais, seguindo o modelo abaixo.

1) bv.v.bl.a.ba.l.bm.m

2) bv.v.bl.a.ba.l.bm.m

2. Se for para ligar dois computadores diretamente, você precisará de um cabo cross-over, para isso basta fazer cada uma das pontas conforme modelo abaixo.

1) bv.v.bl.a.ba.l.bm.m

2) bl.l.bv.a.ba.v.bm.m
E pronto.

Howto: WordPress 2.7.x muito lento no Debian

Depois de muito apanhar juntamente com meu amigo Sílvio, chegamos a resolução.

Problema:
Ao instalar o WordPress 2.7.1 no Debian Etch, o mesmo estava demorando até 30 segundos para iniciar, principalmente a parte administrativa.

A solução:

Existe várias formas de resolver, registradas aqui:  http://core.trac.wordpress.org/ticket/8590

A mais simples:

  1. Edite o arquivo: /wp-includes/http.php
  2. Vá até a linha 210, e encontre esse bloco de código:
  3. function request( $url, $args = array() ) {
    global $wp_version;

    e deixe dessa forma:

    function request( $url, $args = array() ) {
    return;
    global $wp_version;
  4. Salve o arquivo e tenta acessar a área administrativa do wordpress novamente.