Category: Desenvolvimento


Salve,

Tive um problema após a instalação do ZendServer CE 5.6. Simplesmente não foi criado o link em /tmp/ como de costume, então é fácil resolver:

sudo ln -s /usr/local/zend/mysql/tmp/mysql.sock /tmp/mysql.sock

Se estiver usando o Navcat e ao criar a conexão com o MySQL mesmo colocando todos os dados ele insistir que não está conectando no servidor MySQL, vá para a aba Advanced marque a opção Use socket file: e passe o caminho do link simbólico: /tmp/mysql.sock

Sem problemas agora, é só mandar conectar ou testar para ter uma certeza que funcionou.

Valeu!

Salve,

Estou usando agora o MacOSX e, por hora, o melhor gerenciador de ambiente de desenvolvimento PHP para MacOSX é o MAMP e pra complementar tem o MAMP Pro que te dá mais ferramentas bacanas. Pra quem está no Linux acho que não precisa de um gerenciador por que o apt-get/yum já faz um ótimo trabalho para gerenciar esses pacotes/programas e é super fácil, ponto para o Linux.

Meu problema foi: no MAMP eu não achei como instalar ( ferramenta nele ) as extensões, coisa que no Wamp e outros tem. Isso é um super #fail. No Linux seria via pecl já estaria tudo lindo, mas no MacOSX não tem local fixo de instalação dos pacotes do PHP, ai deixa a merda fedida de usar.

Como eu tinha instala o PHP pelo Brew antes, ele continua instalado aqui, para saber basta ver se existe o comando php, via terminal. Se existir será fácil:

sudo pecl install mongo

Ele instala aqui: /usr/lib/php/extensions/no-debug-non-zts-20090626/
Depois é criar o link simbólico para a pasta de extensão do MAMP que fica aqui: /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/

* O pecl que vem no MAMP não rodou aqui, dá erro no Config.php, que eu não cheguei a procurar pois já estou com o pecl instalado aqui, mesmo sendo de outra instalação.

Depois que criou o link simbólico, agora é necessário adicionar no php.ini. Isso vai depender de duas coisas: qual versão do PHP está usando e se está usando o MAMP Pro. Seu php.ini será um desses:

/Applications/MAMP/bin/php/php5.2.17/conf/php.ini
/Applications/MAMP/bin/php/php5.3.6/conf/php.ini
/Library/Application Support/appsolute/MAMP PRO/conf/php.ini

Ai voce adiciona: extension=mongo.so

E reinicia o MAMP e pronto. Espero que eles consigam fazer uma ferramenta para realizar essa tarefa por que o valor não é tão baratinho e é algo de extrema importância.

Valeu!

Salve,

Com problema ao especificar o valor do frete para o Pagseguro, demorei mas consegui. Infelizmente a documentação não deixa de forma clara. Então segue a dica:

Na configuração do frete no painel do Pagseguro, escolha o tipo Frete fixo e Adicional com valor fixo informe 0 ( zero ) para o Valor fixo para os adicionais, na adição dos itens, informe o valor do frete no primeiro item e nos demais informe 0 ( zero ). Pronto, agora ele vai aceitar lá como valor de frete o que você informou.

Para calcular o frete direto com o webservice dos Correios/ECT com PHP use a biblioteca que peguei do iMasters e adaptei ( refatorei várias coisas e adicionei funcionalidades ) aqui:  https://github.com/silasrm/correios

Salve,

Precisei limpar todos os campos de um form e achei que o jQuery teria algo já pronto, mas não encontrei, com isso nas pesquisa achei a solução super simples do Pau Sanchez:

jQuery.fn.reset = function () {
  $(this).each (function() { this.reset(); });
}

Eu coloquei num arquivo, chamei e usei: $(‘#meu_form’).reset();

Muito fácil!

Salve,

Que o Dropbox é uma mão na roda com sua solução de nuvem integrada ao sistema de arquivo fácil e rápido todos sabem, então juntando isso com o Snippely, ferramenta para guardar Snippets bem fácil, bonita e muito boa feita em Adobe Air, é algo muito bom e simples de integrar.

* O nome da pasta do Snippely dentro da .appdata pode ser diferente entre usuários/máquinas

  1. Instale o Snippely
  2. Configure sua conta do Dropbox
  3. Mova o arquivo ~/.appdata/com.snippely.6E4C758165F11BBEC90F106AA88CF53EB51547B1.1/Local\ Store/application.db para sua pasta do Dropbox: mv ~/.appdata/com.snippely.6E4C758165F11BBEC90F106AA88CF53EB51547B1.1/Local\ Store/application.db ~/Dropbox/Snippely/application.db
  4. Crie um link simbólico desse arquivo no Dropbox: ln -s ~/Dropbox/Snippely/application.db ~/.appdata/com.snippely.6E4C758165F11BBEC90F106AA88CF53EB51547B1.1/Local\ Store/application.db

Pronto, agora é só criar e ao salvar o Dropbox atualizará seu banco de dados de snippets. Onde você desejar usar, é só fazer o link simbólico do arquivo.

Salve,

Atualizado: tive problemas ao instalar no Ubuntu 11.04, não sei a causa de não funcionar como antes, mesmo passando o ORACLE_HOME ele não estava pegando, ai descobrir que o erro erá por está fixado um padrão de diretório onde deve-se colocar os arquivos do instant client, com isso tive que seguir o padrão, eliminando 2 passos e deixando mais organizado a instalação.

Receita rápida para funcionar o suporte a Oracle no PHP, no Ubuntu Linux, usando versão 10.10 ou 11.04 64bits.

Primeiro baixe os arquivos do Instant Client aqui, versão 10.2.0.5 ou 11.2.0.2, eles são:

  • basic-10.2.0.5.0-linux-x64.zip
  • sqlplus-10.2.0.5.0-linux-x64.zip
  • sdk-10.2.0.5.0-linux-x64.zip

Vá para a pasta /usr e crie a seguinte estrutura:

cd /usr/lib
sudo mkdir -p oracle/10.2.0.5/client
cd oracle/10.2.0.5/client

Descompacte os arquivos baixados, lembrando que precisa está como root ou usando o sudo:

sudo unzip basic-10.2.0.5.0-linux-x64.zip
sudo unzip sdk-10.2.0.5.0-linux-x64.zip
sudo unzip sqlplus-10.2.0.5.0-linux-x64.zip

Mova tudo da pasta instantclient_10_2 para a atual e apague a instantclient_10_2

sudo mv instantclient_10_2/* .
sudo rm -rf instantclient_10_2/

Crie os links simbólicos:

sudo ln -s /usr/lib/oracle/10.2.0.5/client/libclntsh.so.10.1 /usr/lib/oracle/10.2.0.5/client/libclntsh.so
sudo ln -s /usr/lib/oracle/10.2.0.5/client/libocci.so.10.1 /usr/lib/oracle/10.2.0.5/client/libocci.so
sudo ln -s /usr/lib/oracle/10.2.0.5/client/ /usr/lib/oracle/10.2.0.5/client/lib
sudo ln -s /usr/lib/oracle/10.2.0.5/client/sdk/include /usr/lib/oracle/10.2.0.5/client/include

Instale a extensão oci8 via PECL:

sudo pecl install oci8

Ele vai pedir o caminho da do Instant Cliente, então você informa:

instantclient,/usr/lib/oracle/10.2.0.5/client/

Adicione a extensão no php.ini:

extension=oci8.so

Baixe o pacote PDO_OCI, via PECL, para compilarmos:

sudo pecl download pdo_oci

Descompacte e entre na pasta do PDO_OCI:

sudo tar xvfz PDO_OCI-1.0.tgz
cd PDO_OCI-1.0

Agora siga os passos da compilação:

sudo phpize
sudo ./configure --with-pdo-oci=instantclient,/usr,10.2.0.5

Se você teve problema no passo acima, principalmente em versão 32bits, abra o arquivo configure, procure por pdo_driver e nas linhas desse bloco ( IF/ELSE IF/ELSE ), mude os caminhos da pasta do php onde tem php/ext/ para php5/ext/ pois no Ubuntu a pasta do PHP é php5 em vez de php.

sudo make
sudo make install

Adicione a extensão no php.ini:

extension=pdo_oci.so

Recarregue o apache:

sudo service apache2 reload

** Plus:

Adicione o sqlplus no /usr/bin para poder executar/conectar/fazer consultas via terminal:

sudo ln -s /usr/lib/oracle/10.2.0.5/client/sqlplus /usr/bin/

Edite o arquivo /etc/ld.so.conf e adicione o caminho para a pasta de instalação do InstantClient /usr/lib/oracle/10.2.0.5/client/ e depois recarregue a ldconfig:

sudo vim /etc/ld.so.conf
sudo ldconfig

Pronto. Crie um arquivo chamando o phpinfo() e veja se está instalado o suporte a Oracle.

Meu ambiente de trabalho em 7 itens

Salve,

Após o Duodraco ( @duodraco ) iniciar o meme para que as pessoas indicadas falem sobre o ambiente de trabalho, chegou a minha vez, convidado pelo Bruno Gomes ( @brgomes ).

Segue meu ambiente:

1 – S.O.: Ubuntu ( atualmente 10.10 ). Simplesmente meu apaixonei pelo pequeno Linux, que chegou arrebentando e conquistando milhões de usuários de outras distros e novos usuários para o mundo Linux. Chegou e trás ousadia em criações e melhorias para o Linux. Simplesmente me dá agilidade e ferramentas muito boas que sem elas eu seria um nada, coisas que não consigo viver sem :D .

2 – IDE: Netbeans ( atualmente 6.9 ). Usei várias IDE’s e editores, depois migrei para o Eclipse como IDE principal, mas nunca deixei de experimentar outras ( como as da Active State, KDevelop e outras ), e ainda usando editores para coisas simples e rápidas. Mas depois que tentei usar o Netbeans para PHP ( já tinha usado ele completo pra java, quando trabalhei com a linguagem, e achava hiper-pesado ) e vi que era leve, tinha ótimos recursos e ainda é multiplataforma como o Eclipse, não voltei mais para o Eclipse e sou feliz.

3 – Git: já usei subversion antes de começar com git e quando trabalhava com Java. Como na empresa meu superior não liga e não apoia versionamento ( maluco né? ) e depois de criar um repositório para os sistemas da empresa e ele apagar, desistir e comecei no git. Comecei com o belo github, me ensinou muito, criei meus repositório na minha máquina do trabalho. Depois fiz o Workshop de Git com a School of Net do @wesleywillians e aprende coisa pra caramba e fiquei mais apaixonado, sensacional. Nunca mais usei subversion, é ruim ou bom isso? :D

4 – Filezilla: o monstro do FTP. No lado bom. Conheci, achei fácil, simples e eficiente. De lá pra cá só dá ele. Onde vou ele vai, mais uma paixão. Prove e comprove.

5 – Navegadores: Firefox é minha paixão. Acho sensacional, apesar de comer muita memória :( . Tenho o Chrome, para quando tiver que abrir sistemas pra testes, testar a interface e etc, mais leve, mas poucas coisas me agradam. Opera, ainda não reinstalei :( . IE 9 numa VM com Windows. Infelizmente ainda tem trabalhos para se testar no IE anterior ao 9, e ai é dá os pulos diversos e chatos.

6 – Gerenciamento de Tarefas: Getting Things GNOME, até achar um melhor. Não conseguia me acostumar com nenhum online, plugin de navegador, desktop e etc. O GTG me deixou feliz, por ser simples, fácil e rápido. Se encontrar um melhor quem sabe ou troco :D

7 – Terminal + Guake: sem esse eu não sou nada. Seja pra mover arquivos ( bem mais rápidos que abrir gerenciador de arquivos ou ir pela IDE ), seja pra editar algo que está fora do projeto, seja pra acessar o mysql ou SQL Server ( tsql roda beleza, mas só terminal ) ou qualquer outra atividade que seja trabalhosa abrir outra ferramenta. Apenas um F12 ele surge, aperta F12 de novo ele esconde.

Extra – Podcast e músicas. Guanacast, Nerdcast, Rapaduracast e outros, além das músicas dos mais diversos estilos, para tornar as coisas mais felizes, dá risada e parecer maluco para os outros que não estão escutando. Simplesmente muito bom.

Fica ai o convite para continuar o meme:

@hugohenrique

@mlalbuquerque

@marcelorodrigo

@plcosta

@gpupo

Valeu!

Salve,

Sempre desejei investir tempo no aprendizado e trabalhos com Python. Estudo ela, mas em ritmo lento, já tenho livro e só faltava um curso/mini-curso pra dá um empurrão e aprender com a experiência de alguém muito bom em Python. Com isso participei do mini-curso de Python ocorrido no Linguágil 2010, o mestre foi o Marco André. Ótimo instrutor, gostei pra caramba do mini-curso, foi sensacional e me deixou empolgado.

Ai estou testando a criação de aplicação desktop e escolhi o PyGTK pra isso. Depois quero ver a parte de web com o Django, mas minha paixão pra web é o PHP, então vamos começar por desktop mesmo.

Procurei uns sites mostrando o início do uso do PyGTK e foi bacana e rápido aprender, muito fácil. Segue meu código simples:

import pygtk
pygtk.require('2.0')
import gtk

class mainWindow:
 def __init__( self ):
 #janela principal
 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
 self.window.set_title('IlA')

 #caixa vertical para criacao de N elementos/widgets
 self.vBox = gtk.VBox()

 #label
 self.label = gtk.Label('Eu sou um label')

 #caixa de entrada
 self.iBox = gtk.Entry()

 #caixa horizontal
 self.hBox = gtk.HBox()

 #botao
 self.button = gtk.Button('Ola Mundo')
 self.button.connect('clicked', self.clickedButton)

 #adiciona elementos
 ##label
 self.hBox.pack_start(self.label, expand=False, fill=True)
 ##caixa de entrada
 self.hBox.pack_start(self.iBox, expand=False, fill=True)
 ##caixa horizontal
 self.vBox.pack_start(self.hBox, expand=False, fill=True)
 ##botao
 self.vBox.pack_start(self.button, expand=False, fill=True)

 self.window.add(self.vBox)
 self.window.connect('destroy', self.closeAll)
 self.window.show_all()

 def clickedButton( self, button ):
 print self.iBox.get_text()

 def closeAll( self, window ):
 self.window.hide()
 gtk.main_quit()

if __name__ == '__main__':
 mainWindow()
 gtk.main()

Aqui tem um curso de Python e tem usando PyGTK: http://infog.casoft.info/?tag=aulas

Aqui a documentação do PyGTK: http://pygtk.org/docs/pygtk/

Valeu e vamos que vamos!

O que é?

É uma linguagem de marcação muito simples e que foi criada por John Gruber e Aaron Swartz em tem seus códigos de formatação convertidos em XHTML.

No Github você pode enfeitar o README do seu projeto criando um README.markdown com as marcações e automaticamente o mesmo será interpretado e gerado um XHTML válido e bonito.

Como Usar – Códigos para Formatação

Transformar qualquer código em literal, usa-se ‘\’ (barra invertida) antes: \# ou \` ou \*
H1
# Meu Título
Resultado: <h1>Meu Título</h1>

H2
## Meu Sub-título
Resultado: <h2>Meu Sub-título</h2>

[...]

H6
###### Meu pequeno tituluzinho
Resultado: <h6>Meu pequeno tituluzinho</h6>

Itálico
*texto*
_texto_
Resultado: <em>texto</em>

Negrito
**texto**
__texto__
Resultado: <strong>texto</strong>

Código
`print_r(array());`
Resultado: <code>print_r(array());</code>

Citação
> texto
Resultado: <blockquote>texto</blockquote>

Link
[Clique aqui para Baixar o PDF](http://www.uia.com/demo.pdf “Clique e Baixe o PDF”)

Resultado: <a href=”http://www.uia.com/demo.pdf” title=”Clique e Baixe o PDF”>Clique aqui para Baixar o PDF</a>

Imagem
![aqui deveria aparecer um icone de pessoa](http://www.uia.com/pessoa_icon.png “Pessoa”)

Resultado: <img src=”http://www.uia.com/pessoa_icon.png” alt=”aqui deveria aparecer um icone de pessoa” title=”Pessoa” />

Listas não ordenadas
* item 1
* item 2
Ou
+ item 1
+ item 2
Ou
- item 1
- item 2

Resultado:
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>

Listas ordenadas
1. item 1
2. item 2

Resultado:
<ol>
<li>item 1</li>
<li>item 2</li>
</ol>

Mais informações e formatações leia a documentação http://daringfireball.net/projects/markdown/syntax

Biblioteca PHP para fazer parser de arquivos com formatação Markdown: http://michelf.com/projects/php-markdown/

Existem bibliotecas para outras linguagens: http://pt.wikipedia.org/wiki/Markdown

Projetos no Github – Backup-PHP e Levenshtein-Distance

Salve,

Já faz um tempo que postei algo aqui, venho agora divulgar mais dois projetos que criei e coloquei no Github e estão licenciados sob a GPL v3.

Backup-PHP é um conjunto de classes que Salva e Ler um arquivo com dados serializados comprimidos com gzip ( os dados estão comprimidos e não o arquivo. ). Tem também integração com o ZipArchive para compressão de diretório e descompressão de arquivo .zip. Tem também um componente para CakePHP que integra o projeto Backup-PHP.

Levenshtein-Distance é uma classe estática onde se passa duas strings e retorna em porcentagem o grau de similaridade entre elas. Usa a função levenshtein() nativa do PHP mas realiza um cálculo para saber a o grau de similaridade.

Mais novidades e projetos, posto aqui de novo!

Powered by WordPress | Theme: Motion by 85ideas.

Bad Behavior has blocked 12 access attempts in the last 7 days.