quarta-feira, 22 de abril de 2009

Minha Loja

http://loja.zionlanhouse.com.br

Esse é o endereço da minha loja.

Ela foi feita com OScommerce, que é uma loja open source.

Peguei ela no phpmania.org

Fiz várias alterações.

Inclusive scripts para atualizar a tabela de sedex, cadastrar automaticamente os produtos no mercado livre e no toda oferta.

Se alguém precisar de alguma ajuda, e só postar.

segunda-feira, 6 de abril de 2009

Terra Voip - alguns exclarecimentos

Estou na incessante procura por um bom provedor VOIP.

Fui no UOL, não tem suporte para configuração de adaptadores ata, não consegui configurar com as pobres informações que está no site, cancelei, e obtive o valor que eu havia pago devolta, sem transtornos.

Fui até o Terra (no sábado dia 3 de abril de 2009), procurei saber se tinha suporte para adaptadores ata, eles disseram que sim, configurei tudo certinho, e foi de primeira.

Fui lá fazer o teste, ligação perfeita, tudo nos conformes.

Mas como eu vo oferecer voip aos clientes da minha lan house, eu preciso que o extrato da ligação seja em tempo real.

Sé que a ligação de teste demorou 1 dia para aparecer no extrato.

Liguei no suporte (na segunda dia 6 de abril de 2009), perguntei se havia algum jeito deles acelerarem o processo de extrato, e não houve jeito. Tive de cancelar.

Me botaram na linha, depois de 10 minutos de espera, uma atendente de tele-marketing, que tentava o tempo todo me persuadir de que eu estava fazendo a coisa errada. Até que ela concordou comigo, e resolveu cancelar.

Ai, claro, pedi o meu dinheiro de volta, e a resposta foi que eles não devolvem o dinheiro......

É complicado você fazer uma assinatura, e você não ter ficado satisfeito com o serviço, cancelar apenas 2 dias depois (sendo q foi por causa do final de semana), e não ter seu rico dinheirinho q vc suou pra ganhar devolta.

Deixei pra lá, pois eram apenas 15 reais, mas avisei que ia deixar os possíveis clientes deles sabendo do que houve comigo, e aqui estou avisando. Se vocês cancelarem, não vão ver seu dim dim devolta, cuidado!!!

ps.: Fui atendido pela Márcia, o protocolo de cancelamento é 79656793

terça-feira, 10 de fevereiro de 2009

Fazer o subversion trabalhar por você

Quando você está trabalhando em um repositório Subversion em um projeto para a web, a melhor coisa que tem é quando alguem faz um commit a alteração aparecer no webserver do mesmo servidor.

O subversion possui os scripts HOOK, que são executados quando alguma ação é feita no subversion.

O que eu usei foi o script post-commit. Ele é executado após um commit.

O padrão é que os scripts estejam com permissão de execução no diretório hook dentro do repositório.

Só que os problemas de permissões são inúmeros!

A principal dica é: Usando webdav para o subversion, dê um checkout (svn checkout http://localhost /var/www) e depois altere o dono para www-data recursivamente (chown www-data:www-data -R /var/www)

Abaixo está o script post-commit, altere-o para suas necessidades:


#!/bin/bash
/bin/sleep 3
/usr/bin/svn update /var/www/ --non-interactive --no-auth-cache --username XXXX --password XXXXX

domingo, 8 de fevereiro de 2009

Configurando o aMSN para acesso público

O aMSN é um cliente para a rede MSN que mais se assemelha ao cliente da microsoft no windows. O problema é que ele vem bem feio na sua configuração "default".

Vamos usar como base o Ubuntu Intrepid, e instalar o aMSN 0.98 com o skin do Windows Live 2009 e com suporte ao MSN Plus!

Baixe o pacote deb do aMSN no link: http://www.getdeb.net/download/3001/0 e depois instale normalmente usando o gerenciador de pacotes do ubuntu.

Agora baixe o Colored Nicks, que dá suporte ao MSN Plus! no link: http://europa.solit.us/archives/downloadstatic/6325657399, é só descompactar na pasta ~/.amsn/plugins

Agora baixe o skin do Windows Live Messenger 2009 no link: http://amsn.fr.nf/communaute/download/file.php?id=21&sid=ce88c102d6b53fc952f74772b1ad08c5 , depois descompacte na pasta ~/.amsn/skins

Pra tudo funcionar, simplesmente escolha o skin e carregue o plugin dentro do aMSN.

O unico problema do acesso público, é que os plugins tem que serem carregados toda vez que uma pessoa entra no aMSN.

Usando o perfil que tinha salvo, percebi que tinha um arquivo chamado plugins.xml que guardava as configurações de plugins. O problema é que quando vc coloca na pasta principal do aMSN, ele simplesmente era apagado...

Ai descobri um comando novo no linux, o chattr. Com ele eu consigo marcar um arquivo como imutável, assim ninguem consegue alterar o arquivo (a não ser o root).

Aqui está um exemplo do arquivo plugins.xml


<config>
<plugin>
<name>Nudge</name>
<loaded>true</loaded>
<entry>
<key>notsentinwin</key>
<value>1</value>
</entry>
<entry>
<key>notrecdinwin</key>
<value>1</value>
</entry>
<entry>
<key>soundnotsend</key>
<value>1</value>
</entry>
<entry>
<key>soundnotrec</key>
<value>1</value>
</entry>
<entry>
<key>shake</key>
<value>0</value>
</entry>
<entry>
<key>shakes</key>
<value>10</value>
</entry>
<entry>
<key>addblockbutton</key>
<value>0</value>
</entry>
<entry>
<key>notify</key>
<value>1</value>
</entry>
<entry>
<key>addclmenuitem</key>
<value>0</value>
</entry>
<entry>
<key>addbutton</key>
<value>1</value>
</entry>
<entry>
<key>shaketoo</key>
<value>0</value>
</entry>
<entry>
<key>limit</key>
<value>1</value>
</entry>
<entry>
<key>delay</key>
<value>60</value>
</entry>
</plugin>
<plugin>
<name>Winks</name>
<loaded>true</loaded>
<entry>
<key>use_extrac32</key>
<value>0</value>
</entry>
<entry>
<key>flashplayerargs</key>
<value></value>
</entry>
<entry>
<key>1</key>
<value>#</value>
</entry>
<entry>
<key>play_embed</key>
<value>0</value>
</entry>
<entry>
<key>#</key>
<value>show_add_wink</value>
</entry>
<entry>
<key>flashplayer</key>
<value></value>
</entry>
<entry>
<key>#use_queque_in</key>
<value>1</value>
</entry>
<entry>
<key>#use_queque_out</key>
<value>1</value>
</entry>
<entry>
<key>play_inmediatly</key>
<value>1</value>
</entry>
<entry>
<key>cabextractor</key>
<value>cabextract</value>
</entry>
<entry>
<key>close_on_leave</key>
<value>1</value>
</entry>
<entry>
<key>notify_in_one_line</key>
<value>0</value>
</entry>
</plugin>
<plugin>
<name>Cam Shooter</name>
<loaded>true</loaded>
</plugin>
<plugin>
<name>remind</name>
<loaded>true</loaded>
<entry>
<key>beginend</key>
<value>1</value>
</entry>
<entry>
<key>nbline</key>
<value>10</value>
</entry>
<entry>
<key>checknote</key>
<value>1</value>
</entry>
<entry>
<key>filetransfert</key>
<value>1</value>
</entry>
<entry>
<key>daysnumber</key>
<value>7</value>
</entry>
<entry>
<key>when</key>
<value>1</value>
</entry>
</plugin>
<plugin>
<name>ColoredNicks</name>
<loaded>true</loaded>
<entry>
<key>nostyle</key>
<value>0</value>
</entry>
</plugin>
<plugin>
<name>Search Contact</name>
<loaded>true</loaded>
<entry>
<key>search</key>
<value>0</value>
</entry>
<entry>
<key>hide</key>
<value>0</value>
</entry>
<entry>
<key>advanced</key>
<value>1</value>
</entry>
</plugin>
<plugin>
<name>aMSN Plus</name>
<loaded>false</loaded>
<entry>

<key>allow_commands</key>

<value>1</value>

</entry>
<entry>

<key>allow_quicktext</key>

<value>1</value>

</entry>
<entry>

<key>allow_colours</key>

<value>1</value>

</entry>
<entry>

<key>quick_text</key>

<value>[list]</value>

</entry>
<entry>

<key>parse_nicks</key>

<value>1</value>

</entry>
<entry>

<key>colour_nicks</key>

<value>1</value>

</entry>
<entry>

<key>#resource</key>

<value>aMSN</value>

</entry>
</plugin>
</config>



Coloque ele na pasta principal do aMSN: ~/.amsn

depois é só dar esse comando: chattr +i plugins.xml

Pronto! Qualquer dúvida, comente o post!

quinta-feira, 5 de fevereiro de 2009

Como colocar uma mensagem do Jquery validate dentro de um objeto definido

Fiquei um dia tentando colocar a mensagem do Jquery validate dentro de um <p>, pois o validate cria um label, e ele tava pegando as propriedades do css da pagina, e tava acabando com o layout.

Depois de ler muito o código fonte do validate, consegui o seguinte código:


<script type="text/javascript">
$(document).ready(function(){

$("#form_login").validate({ //nome do formulário
rules: {
user_login: { // regra do campo user_login
required:true, // campo requirido
minlength: 2 // deve ter no mínimo 2 caracteres
},
user_pass: {
required:true,
minlength: 4
}
},
errorPlacement: function(error, element) { // função que define onde deve ser colocado os erros
var elemento = "#"+element.attr("name")+'_p';
$(elemento).html(error.html());
}
});

});
</script>


Como eu já tinha colocado no formulário paragrafos seguindo o padrão nome_do_elemento_p, na linha var elemento = "#"+element.attr("name")+'_p'; eu crio uma variável de texto pegando o nome do elemento com erro e adicionando no final o _p

Na linha $(elemento).html(error.html()); pegamos a mensagem de erro a colocamos dentro do p.

Fácil? depois que ralei procurando como faz ficou sim!

Qualquer dúvida, comente.

Como ligar o rewriter do apache em um alias

Trabalhando com Zend, surgiu a necessidade de configurar varios aliases para diversas pastas do sistema zend, pois eu tinha uma pasta de teste, outra de produção e etc.

Eu poderia fazer por virtualhost, mas é complicado, pois eu teria que acessar cada um com um IP, e isso daria mais trabalho.

Fucei fucei, até que consegui a solução.


Eu uso o Ubuntu server, os arquivos de configuração do apache fica em /etc/apache2

Dentro desse, existe o diretório "conf.d", lá dentro eu criei um arquivo para adicionar novos aliases ao apache.

O arquivo que criei foi zend.conf, e está desse jeito


Alias /teste /home/usuario/teste/public/

<Directory /home/usuario/teste/public/ >
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>


Assim ele está mapeando o diretório /home/usuario/teste/public/ onde vamos ter um .htaccess para fazer o trabalho do rewriter do Zend.


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /teste/index.php


Percebeu que o .htaccess está direcionando para o index.php? simples né?

Se não entendeu alguma coisa, faça um comentário.

ps.: Não esqueça de reiniciar o apache!

domingo, 25 de janeiro de 2009

Zend Log

Estava precisando criar um log de acessos e etc.

O sistema que estou trabalhando é com Zend Framework, havia pensado em acessar o banco de dados diretamente pelo php para fazer, mas depois vi que existe o Zend_Log.

O problema é que eu não achava uma opção de colocar mais campos para alimentar o banco de dados. Depois de muitas procuras e testes, eis o código.


class logEvents{
private $_db;

public function __construct($db){
$this->_db = $db;
$colunas = array('logevents_type_idlogevents_type' => 'tipo',
'logevents_date' => 'timestamp',
'logevents_text' => 'message',
'idpartner' => 'parceiro',
'logevents_ip' => 'address'
);

$writer = new Zend_Log_Writer_Db($this->_db, 'logevents', $colunas);
$this->logger = new Zend_Log($writer);

}
public function set_acesso($tipo,$descricao = "",$parceiro = 0){
$this->logger->setEventItem('tipo',$tipo);
$this->logger->setEventItem('parceiro', $parceiro);
$this->logger->setEventItem('address',$_SERVER['REMOTE_ADDR']);
$this->logger->log($descricao);
}
}



Acho que dá pra entender bem o código né?

o segredo é usar o setEventItem!

Se você ficou com alguma dúvida, comente o post.