Oferta Nacional - 234x60

Arquivo

Arquivo de setembro, 2009

PHP Conference Brasil 2009

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Será realizado em São Paulo, nos dias 26, 27, 28 e 29 de Novembro, o PHP Conference Brasil 2009,  o principal evento de PHP da América Latina.

As inscrições estão abertas desde o dia 17 de agosto.

No roteiro do evento, o dia 26 será dedicado a cursos, nos dias 27 e 28 haverá palestras, e o dia 29 será em Santos, com direito ao transporte, happy hour, pousada, café da manhã, até a churrasco!

O PHP Conference Brasil 2009 abordará temas como frameworks & ferramentas, casos de sucesso, php para iniciantes, integração, webservices, performance, multimídia, mvc, gerenciamento e estrutura de dados em aplicações PHP, mercado de trabalho, mobile, entre outros assuntos.

O valor da inscrição é a partir de R$50 (caravana com mínimo de 10 participantes).

O evento será realizado no seguinte local:

UNIFIEO
Av. Franz Voegeli, 300 – (11) 3651-9999
06020-190 – Osasco – SP – Brasil

Mais informações: http://www.phpconf.com.br

Posts Relacionados:

  • Nenhum

Como executar vários arquivos sql em um comando único pelo CMD do windows

24, setembro, 2009 3 comentários
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Olá!

Hoje vou mostrar para você uma maneira fácil e rápida para rodar vários arquivos sql em um servidor mysql através de um único comando, através do prompt de comando do windows (cmd).

A necessidade surgiu devido a uma reestruturação do banco de dados, onde vários arquivos sql são responsáveis pela criação e importação de dados, criação de novas tabelas, alteração da estrutura de tabelas dentre outras coisas. Era muito chato a cada alteração ou testes de um dos arquivos ter que apagar o banco, recriar e rodar todos os arquivos um por um.

Então vamos lá!

Primeiro vamos criar um novo banco para o exemplo, chamado meubanco:

DROP DATABASE IF EXISTS `meubanco`;
CREATE DATABASE `meubanco`;

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco.sql (use um editor como o notepad para salvar).

CREATE TABLE  `tabela1` (
  id INT(11) NOT NULL AUTO_INCREMENT,
  descricao VARCHAR(45) NOT NULL,
  data DATETIME,
  PRIMARY KEY id,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE  `tabela2` (
  id INT(11) NOT NULL AUTO_INCREMENT,
  descricao VARCHAR(45) NOT NULL,
  data DATETIME,
  PRIMARY KEY id,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_estrutura.sql (para tornar mais fácil o processo, salve todos os arquivos sql na mesma pasta).

Agora vamos inserir alguns dados nas tabelas:


INSERT INTO tabela1 (descricao,data) VALUES
('Esta é a linha 1 da tabela 1','2009-09-16 13:45:12'),
('Esta é a linha2 da tabela 1',now()),
('Esta é a linha 3 da tabela 1',now()),
('Esta é a linha 4 da tabela 1',now());

INSERT INTO tabela2 (descricao,data) VALUES
 ('Esta é a linha 1 da tabela 2','2009-09-23 23:12:30'),
 ('Esta é a linha2 da tabela 2',now()),
 ('Esta é a linha 3 da tabela 2',now()),
 ('Esta é a linha 4 da tabela 2',now());

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_dados.sql .

Agora suponhamos que você tenha feito a seguinte alteração na estrutura:


ALTER TABLE `tabela1` ADD COLUMN `usuario` INT(11) , ADD INDEX `ix_usuario`(`usuario`);

ALTER TABLE `tabela2` ADD COLUMN `id_tabela1` INT(11) , ADD INDEX `ix_id_tabela1`(`id_tabela1`);

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_alteracao.sql, na mesma pasta que os outros.

Este exemplo é bem simples perto da real necessidade de se rodar vários arquivos sql, mas serve apenas para ilustrar uma situação em que realmente exista esta necessidade (como foi o meu caso, onde várias pessoas fizeram várias alterações em partes diferentes da estrutura de dados, e era necessário reestruturar o banco algumas vezes no mesmo dia, e várias vezes para testar localmente para não correr risco de perder os dados existentes no servidor live).

Voltando ao exemplo, abra o prompt de comando do windows (Iniciar => Executar => cmd), e teste se você consegue executar o mysql de qualquer pasta:

C:\Documents and Settings\usuario>mysql – u root

Se você usa senha, use -p no final do comando. Verifique se sua tela ficou parecida com a tela abaixo:

C:\Documents and Settings\usuario>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.1.32-community MySQL Community Server (GPL)Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>

Se você não conseguiu, você terá de setar o caminho para o mysql como uma variável de ambiente do windows. Para isso, entre no Painel de controle e abra Sistema (ou tecle simultaneamente a tecla com o logo do windows e a tecla Pause Break). Vá na guia Avançado e clique em Variáveis de Ambiente. Na janela que abre, selecione Path em Variáveis do sistema e clique em Editar. Na nova janela que abrir, em Valor da variável, acrescente o caminho para o mysql (no meu caso, C:\Arquivos de programas\MySQL\MySQL Server 5.1\bin). Certifique-se de que exista um ; separando o caminho que você acrescentou e os que já existiam, e que não existem espaços em branco antes e depois de ;. Salve e dê ok nas janelas. Pronto. Feche o cmd e tente novamente. Se conseguir, de exit para voltar a pasta e vá até a pasta dos arquivos sql:

mysql> exit
Bye

C:\Documents and Settings\usuario>cd C:\dados\meubanco

C:\dados\meubanco>

Agora vamos criar o arquivo *.bat que fará a execução dos scripts sqls. Abra o bloco de notas ou seu editor preferido, e digite nele:


@echo OFF
echo Criando o banco de dados...
mysql -u root < meubanco.sql
echo Criando a estrutura de dados...
mysql -u root meubanco < meubanco_estrutura.sql
echo Inserindo os dados...
mysql -u root meubanco < meubanco_dados.sql
echo Alterando a estrutura...
 mysql -u root meubanco < meubanco_alteracao.sql
echo Fim do Script!

Salve o arquivo como cria_meubanco.bat. Volte ao prompt do windows, digite cria_meubanco e voilá! Se tudo correu bem, você verá a tela abaixo:

C:\dados\meubanco>cria_meubanco

Criando o banco de dados…
Criando a estrutura de dados…
Inserindo os dados…
Alterando a estrutura…
Fim do Script!

C:\dados\meubanco>

Pronto! Você acabou de criar um arquivo em lotes executável pelo prompt do windows, que poderá te poupar muito tempo no seu dia a dia de desenvolvedor.

Deixe seu comentário!

Até a próxima!

Posts Relacionados:

Forçar download em servidor remoto como Amazon S3 com opção “salvar como”

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Olá!

Este artigo mostra como fazer para que apareça a opção “salvar como” para downloads de arquivos hospedados em servidores remotos, o que é muito útil para se poupar recursos do servidor.

Para poder utilizar a solução apresentada aqui, será necessário que o Apache esteja com os módulos mod_rewrite e mod_proxy habilitados, ou que você possa editar o arquivo httpd.conf do servidor Apache (ou solicitar as configurações ao seu serviço de hospedagem).

Há um certo tempo atrás a equipe do meuInglês decidiu hospedar os arquivos pesados do site, como FLV e MP3, e as imagens, nos servidores Amazon S3. As vantagens eram muitas, tais como a rapidez no carregamento dos arquivos, o baixo custo e a segurança envolvidos. Tudo era maravilhoso, até que esbarrei com as opções de download que o meuInglês oferece aos seus usuários. Outros sites concorrentes também hospedam seus arquivos na Amazon S3, e a opção de download para seus usuários é de clicar com o botão direito do mouse para selecionar salvar o destino do link (pelo menos com instrução, para facilitar a vida de usuários menos experientes).

Particularmente, acho esta solução muito deselegante, pois é tão cômodo para o usuário simplesmente clicar no botão de download e aparecer uma janelinha pedindo para “Salvar o arquivo como…”. Comecei a googlar pesquisando uma solução.

A primeira coisa que fiz foi usar a função fopen() do php com permissão a acessar arquivos remotos, e depois setar o header do php para disponibilizar o arquivo como attachment. Logo vi em conjunto com a equipe de tecnologia que isso não seria uma solução, mas sim um problema, pois a função fopen() baixava os arquivos da Amazon S3 para o servidor, e depois disponibilizava o arquivo para o usuário, logo, iríamos pagar os custos de tranferência de dados duas vezes: uma pela transferência dos arquivos da Amazon S3 para o servidor, e depois do servidor para o usuário, além do tempo de download ser a soma desses dois downloads.

Perdi três preciosos dias buscando uma solução, pesquisando, pensando, tentando várias coisas que encontrei, tais como setar cabeçalhos (HTTP Header) diretamente nos arquivos, ou ao subir os arquivos para a Amazon S3… Estava quase desistindo, quando encontrei um site maravilhoso com ótimas dicas de configurações do Apache e do .htdocs (salve nos seus favoritos! Você vai precisar!).

Então saí da câmara escura e comecei a enxergar novos horizontes.

Criei uma pasta downloads na raíz do site e dentro dela coloquei um arquivo .htacces com a seguinte configuração:


IndexIgnore *
RewriteEngine On

RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^mp3/(.*)$ http://seubucket.s3.amazonaws.com/pasta/$1?%1 [P,E=PERMITE:1]

RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^pdf/(.*)$ http://seubucket.s3.amazonaws.com/pasta/$1?%1 [P,E=PERMITE:1]

RewriteCond %{ENV:PERMITE} !1$ [NC]
RewriteRule .* - [R=404,NS,L]

Header set Content-Disposition "attachment;" env=PERMITE

Explicando:

  1. A primeira linha simplesmente não permite listar os arquivos do diretório.
  2. A segunda linha habilita o módulo rewrite do apache.
  3. A quarta linha (assim como a sexta) pega os parâmetros passados pela url (como a autenticação para arquivos protegidos na Amazon S3) através de uma condição Rewrite e coloca no lugar de %1 na linha seguinte.
  4. A quinta linha (assim como a sétima) faz o rewrite, ou seja, reescreve a url recebida para a url original. A mágica acontece ao setar a flag P, que diz que a url será acessada via mod_proxy do Apache. Nesta linha também é setada uma variável PERMITE, que terá o valor 1 se a condição RewriteRule for satisfeita.
  5. Na décima linha, verifico se a varíavel PERMITE possui valor diferente de 1, através de uma condição Rewrite, e, se for o caso, apresento uma página de erro 404, e ecerro a execução do código (flag L).
  6. Finalmente, na linha 13, se o código chegar até lá (ou seja, pelo menos uma das duas condições foi satisfeita => PERMITE = 1), defino o cabeçalho do conteúdo como attachment, ou seja, para download, e então aparece aquela janelinha linda de “Salvar arquivo como…”

Desta forma, para fazer download do arquivo com a opção “Salvar como”, basta que a url do botão/link de download seja no formato


http://www.exemplo.com.br/downloads/mp3/nomedoarquivo.mp3?par=XXX&par=YYY ou

http://www.exemplo.com.br/downloads/pdf/nomedoarquivo.pdf?par=XXX&par=YYY

(os parâmetros são opcionais dependendo do que você estiver fazendo)

Se o arquivo


http://seubucket.s3.amazonaws.com/pasta/nomedoarquivo.pdf?par=XXX&par=YYY

existir aparecerá a janela de download, caso contrário, será exibido um erro 404.

Enfim, como disse no começo, para isso funcionar, o servidor Apache deve estar com os módulos mod_rewrite e mod_poxy, e mod_proxy_http habilitados. Para isso, certifique-se de que as seguintes linhas do httpd.conf estejam descomentadas:


LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

Eu usei Apache 2.2.X e não testei em outras versões.

Espero que este artigo tenha sido útil para você, e, se era isso o que você estava procurando, fico feliz se você encontrou a solução em menos de 3 dias! ;)

Até a proxima!

Posts Relacionados:

Plugin wordpress para destacar código – code markup highlight

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Bom, logo no início do desenvolvimento deste blog, senti a necessidade de um plugin do wordpress para fazer a marcação dos meus exemplos de código.

Numa pesquisa no google, não foi difícil encontrar o wp-syntax (http://wordpress.org/extend/plugins/wp-syntax/). Instalei, mas ele não me agradou muito, visto que ele apresenta problemas quando uma linha é muito extensa.

Além do mais eu já havia visto em um outro blog (que não me recordo agora) uma marcação de códigos que eu achei linda, e além do mais, com opções para visualizar, copiar e até imprimir o código. Sem aquela coisa chata de ter que ficar tirando a formatação quando a gente dá um CTRL+C + CTRL+V em códigos de outros blogs. Por sorte, alguns disponibilizam o código fonte.

Mas depois de alguma googladas, encontrei o bendito plugin: SyntaxHighlighter. Perfeito! Apesar de que vou espalhar códigos várias vezes, veja o exemplo abaixo, em funcionamento:

<?php
function escreveAlgumaCoisa()
{
    echo "Alguma coisa.";
}
escreveAlgumaCoisa();
?>

Adivinhe qual plugin estou usando?

Posts Relacionados:

Como passar parâmetros para um arquivo js

22, setembro, 2009 2 comentários
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Olá!

Num dia destes eu precisei criar um arquivo js com parâmetros de configuração variáveis para cada caso específico.

Como uma solução pratica e rápida, eu costumava criar um arquivo php que gera o código do js, e assim eu poderia passar variáveis em get, no formato

arquivo.js.php?parametro=***&parametro2=*** etc

A questão é que ao editar este arquivo, não é muito agradável, principalmente se for muito longo, porque o arquivo é um PHP e os códigos javascript se tornam apenas textos simples para o editor (beleza, isso é o de menos ;) ).

A idéia era passar parâmetros como fazemos com php, via get, da forma arquivo.js?parametro=valor&parametro2=valor… Pois bem, isso não é possível (até dá, mas você vai dar a volta ao mundo!).

Depois de fazer uma busca no Google por “Como passar parâmetros para um arquivo js”, e não achar nada satisfatório, parei para pensar um pouquinho, e encontrei uma solução muito simples: definir as variáveis antes de chamar o arquivo .js

Simples assim:

<script type="text/javascript">
// Aqui defino os parâmetros/variáveis, que por sua vez podem ser escritos pelo php
var par1 = "valor1";
var par2 = "valor2";
// e assim por diante... e em qualquer parte do código após este bloco, faço a chamada do arquivo javascript que vai herdar as variáveis
</script>
<script type="text/javascript" src="js/arquivo.js"></script>

Dessa forma se torna muito simples passar variáveis, por exemplo, do php para o javascript, assim:

var par = "<?=$variavel?>";

Ou ainda, se quiser passar um número variável de parâmetros:

<script type="text/javascript">
//Passamos o parâmetro como um vetor para ser trabalhado no arquivo .js
var par = new Array();
<?php
for($i=0;$i<sizeof($array);$i++){
echo par[$i]." = ".$array[$i];
}
?>
</script>
<script type="text/javascript" src="js/arquivo.js"></script>

Agora é só adaptar o código às suas necessidades. ;)

Espero que esse artigo tenha sido últil! Deixe um comentário!

Até o próximo!

Posts Relacionados:

Olá, mundo!

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Então, primeiro post para avisar que estou lançando este blog no improviso, devido a quantidade de informações que pretendo disponibilizar, a escassez de tempo, e ainda a edição do próprio blog.

Ainda estarei adaptando o template, enquanto posto artigos, então não leve a mal se você encontra algum “teste” por ai… ;)

Agradeço muito aos desenvolvedores do wordpress por esta ferramenta maravilhosa, e aos desenvolvedores de templates para wordpress que os disponibilizam gratuitamente (e ainda podemos alterar para se adaptar às nossas necessidades!).

Posts Relacionados:

  • Nenhum
Categories: geral Tags:
SEO Powered by Platinum SEO from Techblissonline