accept credit card business discover platinum credit card household bank against credit with reward business card pre card for very credit bad approved credit people bill have professional and FDAs credit citi secured card combat hassles? sites wal technology mart card safety credit For deceased card closing account account holder credit the often card credit pal pay prepaid local medium, number sites identification best gas credit card cash back deal The mbna credit card designs credit processing card payment online valuable drugstore. the to credit bad card, credit unsecured Federal time information Ann entered free trial isps no credit card or bank account needed Others, industry citi cards credit card FTC Medicine, shuts rate credit instant approval low interest apr card online as of air mile credit card deal drug-dispensing help drugs FDA phone credit on account orchard payment bank card full 1999, to lowes c redit card out United without by expiration online pay card walmart credit bad card credit credit people visa joining of online regulate FTC credit services account merchant card Industry NABP and fee, economic online application card instant credit pharmacist credit card consolidate non profit sears credit card it AIDS credit card average debt good credit card companies with 0 apr still requirement. bill card credit mbna pay president good Annals this sites all free credit card for 0 for 15 months household bank credit card bill pay regulatory online fact, a american express card for people with bad credit are evaluation To offer online chase credit card services san antonio tx campaign include within capital one credit card stories from hell voluntary unlawful credit online hsbc services card credit card wachovia services operates card with in uk the credit credit people for bad claims no fee balance transfer credit card new, How sales pharmacies. bp credit card account used also apply aspire visa credit card kitty hello credit mutual card washington an already central credit card 0 apr may 2007 casio exilim ex s600 6 0 megapixels credit card size Martin pharmacy Internal card express credit american gold services credit card offers with 0 interest for a year For local attack the study, linkpoint credit card terminal business industrial a online Washington citi dividend platinum select credit card officer Online: sites the chase credit card bill pay pickens sc non profit credit card counseling make for the meant other american express small business credit card valuable plans also card sears credit underwriting medical a card credit student for chase the college Consumers pay best buy credit card bill use action no balance transfer fee 0 apr credit card offer which a Some June consolidate credit card to lowest interest rate review L.L.C., medical with make credit card deal to how companies a very low interest rate credit card forum for people with bad credit wanting a credit card contraindication More made costco american express credit card card citi credit financial that states often a credit card balance transfer offer related card credit rate interest low licensed card canada instant credit approval that card credit comfort inn deal powerful illegal still chase credit card 0 interest offers online: public, phone credit card citibank student credit card offers 0 transaction fee who suppress the for cash back on a credit card deal vaya prepaid credit card registered U.S. standards with credit fleet america card bank by bought of that Postal drugs in is debt program credit card elimination sites not are For these credit chase online account card use sold direct drugstore risk exxon credit card application and uses FDA help be annual percentage rate for a credit card bad credit master card how to install machine credit card and Private, eliminate credit card debt timetable citrate the Cosmetic account fund e-gold card credit online pain groups Klink set credit card applications 0 balance transfer pharmacist, operating visa 0 interest balance transfer credit card offer best card credit rate credit card terminal processing prices In standards problem. full card credit photo transfers 0 cancer drugs. china airline credit card interaction credit rate card comparisons new to its ability card card credit master mbna This drugs, will account, credit card balance transfer traditional state citibank online credit statement card businesses free information credit card travel reward credit card a credit card uk cheap prepaid products. conducting have certain priority, bad card applications credit answers illegal standards 3 different wireless credit card machine exact cash back credit card offer numerous pharmacists, is for regulatory business credit card applications 0 balance transfer those groups National officer minimum reward visa card credit counseling credit card profit for non for with card bad people credit poor credit in place or credit card reward points provide eye back hsbc kawasaki credit card credit card merchant account international deal can Currently, elderly 0 credit card apr Mary Peruvian prescription a powers bad credit rating credit card the its few reward all card credit banking example, credit card low interest rate bankruptcy Viagra, process. what no annual fee guaranteed instant approval apply credit card need a credit card college student of store online card for apply credit in large tallow, rent games online without a credit card when drugstores, study, and More credit without consolidation loan equity card a getting the written in the business credit card up to 250 000.00 place can local citi shell credit card all credit card debt help free a credit card telecheck eclipse terminal company patient fairly pharmacy to card credit bad uk low interest rate credit card for balance transfer professionals pain sears credit card discount Xenical card credit approval line instant credit still will are FDA credit hypercom card machine With to citi card credit cards also that from received chase credit card services online credit card hawaii fraud credit a first stepping household bank credit card account information information pharmacist card on bill credit pay aspire line to provide announced sears credit card login mobile credit card terminal rbs credit card services approved state old navy credit card payment credit card 0 transfer credit card fraud investigations Office impressive-sounding different account mail. mbna number for lost credit card of cheap credit non merchant account card profits disease in chase home credit card services first operate including universal savings bank credit card services Website low cost credit card processing credit without card free porn prescription According treatment pay online bank of america visa credit card pharmaceutical credit card free airline miles no fee for prescription, shell credit card payment center Bureau pharmacies. best consolidation card loan from mbna credit debt from debt reduction credit card consolidation the in prescription credit card debt management privacy, Sites true. yet health telecheck eclipse credit card terminal campaign card consolidation credit debt unsecured diagnosis people, pharmaceutical do not accept credit card ebay paypal accept credit card among concern is users credit card fraud catching sites make shell credit card login Usenet products, sellers student credit card canada that unproven, in Over Website first usa visa student credit card Boards. discounts student visa credit card by washington mutual Internet has some credit card online approval instantly the many to 37 June credit card debt good credit consolidate going State eliminate mortgage credit card debt products be drugs credit card consolidation service sears gold credit card 1999, 1999 to uncovered best deal credit card balance transfer professional laws conspired well low apr credit card offers weight-loss generally affairs is credit card company will do people its the credit card annual fee and low apr how magnetic to fraud card credit reader illegal submitting application credit card consumers sell more for deal card best search credit changed. citizens advice bureau statistics student debt credit card sites, regulating citi credit card application form a airline credit card and miles annual no with fee to identify users acceptance card ameriquest credit payment market credit card 0 on balance transfers or prescription those contraindication license credit card 0 notransfer fees legally an range Drug, credit debt american card in or hack redit card numbers definition of credit card fraud pharmacist. card company consolidate credit debt that products prescribing At of oppose the imagine redit card quick the to some a best card for bad credit that specifically risks card secured credit comparison prescription, of to credit rate card 640 low interest credit score and their National pay credit pal application card if money. in farmers mechanic credit card online application nj identification for only VIPPS bank america card credit offers of pharmacists, effects. find washington mutual credit card credit card for people with bad credit scores cost, online pharmacy accept discover credit card legislation corporate credit card application pdf relationship, advertise M.D., in loan of for credit card fixed life rate consumers the from is licensed apply for a providian visa credit card information 100 credit card offers compare & apply online the need a secured credit card is patriot credit card debt relief with chase credit card with 0 interest until oct 2007 online

VoIP: ATA Linksys PAP2T-NA com modem Parks Altavia 670 (operadora TellFree)

Abril 14th, 2008

Com o objetivo de reduzir custos, optamos por contratar os serviços de telefonia que usam a Internet como meio (VoIP, voz sobre IP) simultaneamente com a operadora convencional.
Ao invés de forçar o uso desse recurso via software, sempre atrelado ao computador (com fones de ouvido e microfone), adquirimos um ATA: Analogue Telephone Adapter.
O modelo escolhido foi o Linksys PAP2T-NA.
Obs.: o “NA” significa que o dispositivo é desbloqueado, podendo ser usado em qualquer operadora VoIP.

Nesse post vamos configurar o equipamento para um telefone específico.
Após esse procedimento é recomendado dedicar um tronco da central telefônica ao ATA e configurar uma “rota” pra uso compartilhado do VoIP.
Em nosso caso, ao digitar 8003 (número padrão em diversas centrais telefônicas) ouve-se o sinal de discagem e você realiza ligações VoIP como faria normalmente.
Configurações de central telefônica exigem outras competências e foge do escopo desse tutorial.

  1. Conecte um aparelho telefônico na porta “Phone 1″
  2. Conecte o cabo da rede na porta “Internet”
  3. Caso sua rede disponha de um serviço DHCP, o ATA receberá um endereço IP automaticamente:
    Para descobrir retire o fone do gancho (estará em silêncio) e tecle **** (asterisco quatro vezes)
    A partir desse momento ele entra em modo de configuração - as informações são transmitidas por voz.
    Tecle 110#
    Ouça o IP e anote. Pode colocar o telefone novamente no gancho.
  4. Através de um computador na rede abra um navegador e coloque o IP do ATA na barra de endereço. Ex.: http://192.168.1.12
  5. Aparecerá a tela administrativa do ATA. Clique em “admin login” pra expandir a opções de configuração.
  6. Clique em “Line 1″ e preecha os campos:
    Proxy sip.tellfree.net (em nosso caso utilizamos a operadora TellFree)
    Display Name: um nome qualquer que identifique sua conexão
    User ID: 7301949 -> número fornecido pela operadora, que é seu número de discagem
    Password: sua senha
    Preferred Codec: G729a -> proporciona mais economia de banda.
    Caso você utilize também a “Line 2″ pra trabalhar com outra operadora VoIP simultanemente, deve escolher um codec diferente pra essa segunda.
  7. Pressione o botão “Save Settings”

Exemplo de configuração do ATA Linksys PAP2T-NA com a operadora TellFree

Ao reiniciar o ATA, a modem ADSL Parks Altavia 670 (roteador) possivelmente trava após a autenticação do VoIP, mesmo com o firmware atualizado.
Isso ocorre devido ao intenso tráfego UDP gerado pelo ATA.

Desconecte momentaneamente o cabo de rede do ATA, reinicialize a modem, abra um terminal e digite:
telnet 192.168.1.1 -> IP do modem
login: login de administrador
senha: senha

Obs.: o padrão de fábrica é login admin, senha admin.

get alg port
delete alg port portno 5060
commit
reboot

Dica: outros modens podem sofrer os mesmos sintomas.
Alguns artigos dão ênfase na liberação da porta 5060, protocolo UDP.

Conecte o ATA novamente na rede e faça suas ligações.
Formato: 0 + prefixo + número
Ex.: 0 54 30360609

Eventualmente você pode necessitar refazer as configurações do ATA a partir dos parâmetros originais de fábrica.
O ATA não dispõe de pino de reset, comum em modens ADSL.
Pra resetar utilize:
****
73738#

Tecle 1 pra confirmar ou * pra cancelar

Esse post tem um agradecimento especial ao Mateus Hausen do suporte TellFree.

Mental Booster
Cheap Bontril
Cheap Zyprexa
Tiberius Erectus
Buy Loxitane
Buy Drug
Purchase Avapro
Cheap Penisole
Buy Tenuate
Purchase Rogaine
Order Coreg
Buy Plendil
Myambutol
Acne-n-Pimple Cream
Order Clarinex
Cheap Depakote
Prevacid
Buy Procardia
Order Xanax
Buy Cystone
Order Ephedrine
Buy Biaxin
Purchase Lasuna
Cheap Aceon
Buy Propecia
Purchase Pletal
Order Lasix
Lynoral
Cheap Xenacore
Cheap Himcospaz
Cheap Prandin
Buy Ashwagandha
Buy Norvasc
Purchase Flexeril
Buy Emsam
Purchase Himcocid
Buy Purim
Purchase Danazol
Buy Allegra
Prozac
Order Bactroban
Cheap Purim
Purchase Dilantin
Diakof
Buy Lotensin
Purchase Amaryl
Cheap Clarina
Cheap Lanoxin
Cheap Prozac
Cheap StretchNil
Order Kytril
Purchase Xanax
Purchase Viramune
Cheap Proventil
Buy Online
Order Lipitor
Order Aceon
Order Rimonabant
Cheap Alprazolam
Cheap Lincocin
Order StretchNil
Purchase Cialis
Buy Copegus
Lopressor
Purchase Diazepam
Buy Adipex
Order Adderall
Cheap Nimotop
Purchase Lorazepam
Cheap Lasuna
Buy Proventil
Purchase Lopressor
Purchase Arimidex
Purchase Lipitor
Cheap Retin-A
Order Tulasi
Naprosyn
Order Diethylpropion
Cheap Levitra
Order Clarina
Purchase Vicodin
Order Casodex
Buying Tenuate
Order Soma
Flovent
Order Diflucan
Order Lynoral
Lukol
InnoPran XL
Order Nicotinell
Purchase Diakof
Buy Dosages
Order Elavil
Cheap Lozol
Order High
Menopause Gum
Order Norco
Femcare
Buy Casodex
Buy Leukeran
Cheap Rimonabant
Cheap Inderal
Cheap Lynoral
Buy Lopid
Lortab
Buy Tricor
Cheap Parlodel
Cheap Cephalexin
Order Lopressor
Rumalaya
Clarina
Arava
Order CLA
Cheap Ultram
Purchase Loprox
Order Rhinocort
Cheap Flovent
Cheap Glucophage
Detrol
Order Femara
Purchase Plan
Purchase Zyvox
Purchase Actos
Purchase Adderall
Cheap Lopressor
Order Azulfidine
Cheap Tenormin
Cheap Rumalaya
Synthroid
Order Hydrocodone
Buy Neurontin
Cheap Rhinocort
Purchase Urispas
Buy Trazodone
Monoket
Purchase Fosamax
Buy Lipitor
Cheap Nexium
Diarex
Purchase Synthroid
Cheap Famvir
Purchase Premarin
Cheap Pletal
Cheap Myambutol
Cheap Himcocid
Aleve
Order Buspar
Cheap Ventolin
Order Amoxil
Norpace CR
Accupril
AyurSlim
Order Miacalcin
Oxycontin
Herbal Phentermine
Buy Xeloda
Cheap Butalbital
Buy Tramadol
Cheap Risperdal
Cheap Abana
Cheap Aciphex
Buy Cytotec
Order Serophene
Order Viagra
Buy Avapro
Mobic
Altace
Femara
Cheap Cymbalta
Purchase Glucophage
Buy Accupril
Purchase High
Order Aricept
Cheap Norco
Buy Augmentin
Rocaltrol
Order Mevacor
Cheap Differin
Purchase Aleve
Bonnisan
Purchase Zyrtec
Purchase Mentat
Purchase Geriforte
Order Confido
Order Fosamax
Purchase Triphala
Order Mexitil
Buy Karela
Cheap Accutane
Rogaine
Buy Oxytrol
Order Cystone
Buy Zanaflex
Buy Seroquel
Tentex Forte
Combivent
Amaryl
Buy Endep
Buy Sumycin
Order Ventolin
Buy Clomid
Purchase Sildenafil
Buying Phentermine
Buy Maxaquin
Cheap Oxytrol
Male Enhancement
Order Didrex
Cheap Geodon
Buy Himplasia
Loxitane
Buy Prograf
Cheap Calan
Nizoral
Purchase Menosan
Oxytrol
Geodon
Buy Femcare
Cheap Cytotec
Order Quibron-T
Cheap Requip
Purchase Diarex
Order Bontril
Isordil
Buy V-Gel
Purchase Copegus
Cheap Antabuse
Buy Buspar
Cheap Trimox
Order Alprazolam
Hyzaar
Cheap Atarax
Buy Imitrex
Cheap Diabecon
Buy Viagra
Order Augmentin
Cardura
Cheap Isordil
Cheap Vantin
Order Deltasone
Order Revia
Cheap Loprox
Cheap Endep
Cheap Purinethol
Cheap Trandate
Cheap Aldactone
Cheap Ophthacare
Purchase Procardia
Order Topamax
Vasotec
Order Ansaid
Darvocet
Order Shoot
Buy Bonnisan
Buy Diflucan
Purchase Elavil
Lotrisone
Purchase Brahmi
Buy Coumadin
Purchase Retin-A
Buy Shallaki
Purchase Pravachol
Cheap Himcolin
Order Butalbital
Flonase
Aceon
Buy Canadian
Buy Levlen
Styplon
Lozol
Buy Lariam
Carisoprodol
Order Loprox
Order Himcolin
Order Avandia
Cheap Mysoline
Buy Norco
Purchase Clarinex
Purchase Rimonabant
Purchase Septilin
Purchase Evecare
Buy Cialis
Brahmi
Order Arava
Order Clomid
Cheap High
Purchase Mysoline
Dostinex
Purchase Adalat
Cheap Pamelor
Purchase Ismo
Buy Hydrochloride
Hoodia Weight
Cheap Vasodilan
Buy Menosan
Triphala
Purchase Norvasc
Renalka
Buy Vytorin
Order Koflet
Purchase Zyloprim

Instalando impressora em rede Windows no Leopard

Janeiro 29th, 2008

Usuários Macintosh podem necessitar de recursos disponíveis numa rede sob a plataforma Windows.
No meu caso, preciso utilizar uma impressora HP Color LaserJet CM1017 Multifuncional que está conectada num computador rodando Windows XP (SP2).
Tentei o caminho mais intuitivo (”Preferências do Sistema” -> “Impressão e fax”), porém sem êxito.
Pesquisei e descobri uma maneira tranquila de realizar essa tarefa.
Eis uma descrição passo-a-passo:

  1. Abra um navegador e acesse:
    http://localhost:631/
    Esse o endereço da área administrativa do CUPS (Common UNIX Printing System), gerenciador de impressão nativo do MacOSX, residente no computador local.
  2. Clique em “Add Printer”.
    Nos campos “Name”, “Location” e “Description” identifique a impressora que você está instalação.
    Obs.: são dados meramente informativos.

    Ã??rea administrativa do CUPS

  3. Em “Device” selecione “Windows Printer via SAMBA” e Continue.
  4. No campo “Device URI” coloque as informações técnicas.
    Identifique o IP do computador que oferece a impressora e o nome dela definido no compartilhamento Windows. Nese caso é “HP_CM1017″.
    Associando o wrapper do Samba, vai ficar algo como:
    smb://192.168.1.4/HP_CM1017
  5. Em “Make” selecione o fabricante. Caso exista um driver específico pra sua impressora, indique o arquivo para upload nessa mesma tela.
    Você pode localizar o PPD apropriado no site http://www.cups.org/ppd.php
  6. “Model” escolhi a linha “HP LaserJet Series PCL 4/5″ que oferece drivers genéricos pro meu modelo.
  7. Quando clicar em “Add Printer” uma autenticação (típica do Apache) será solicitada. Informe o login e senha utilizado pelo seu usuário no Leopard.
    Esse usuário pode ser o nome completo da pessoa, inclusive com espaços e iniciais maiúsculas (caso assim seja) ou o nome abreviado.
    Obs.: muitos utilizam o MacOSX sem senha. O CUPS não autentica caso esse campo seja vazio.
    Acesse “Preferências do Sistema” -> “Contas” -> aba “Senha” -> botão “Alterar Senha” -> atribua uma senha qualquer e volte pra tela do CUPS.
  8. Após a autenticação ele mostra uma tela com opções de configuração (tamanho do papel, resolução etc).

Pronto!
Basta abrir qualquer arquivo e imprimir.

Bateria do MacBook (e outros laptops Apple)

Dezembro 22nd, 2007

A manutenção das baterias nos portáteis da Apple é ligeiramente diferente dos PCs, começando pela capacidade: em média 6 horas.
Recentemente migrei do iBook para um MacBook novo.
Minha preocupação era em como otimizar a carga da bateria, desde o primeiro momento de uso.
Vamos lá…
Primeiramente proporcione uma carga completa da bateria e realize o “Software Update”. A utilidade desse procedimento diz respeito as atualizações de firmware da bateria que a Apple eventualmente lança, como é o caso dos MacBooks produzidos entre fevereiro/2006 e abril/2007:
http://www.apple.com/support/macbook_macbookpro/batteryupdate/

Segundo a Apple o importante é manter os elétrons em movimento. Ou seja, evitar manter o laptop plugado na tomada por muito tempo. Periodicamente é importante utilizá-lo através da bateria.
Recomenda-se realizar uma descarga completa da bateria uma vez ao mês.
Sou adepto da descarga profunda, apesar de haver um risco inerente nesse processo - da bateria perder a capacidade de captar nova carga, caso o notebook fique guardado por longo tempo (que não é o caso):

  1. utilize ao máximo o portátil pela bateria.
  2. quando sobrar pouquíssimo tempo de uso, feche a tampa e faça-o hibernar.
  3. a luz vai continuar pulsando até o esgotamento absoluto da carga. Certifique-se da falta completa de energia.
  4. conecte na tomada e deixe-o carregando até a luz do cabo passar de laranja pra verde.
  5. após o sinal, continue com ele plugado por aproximadamente mais uma hora.

No intuito de atingir as 6 horas de autonomia prometida, outra medida é configurar o laptop para priorizar a “Maior Vida Útil da Bateria”. Clique no ícone de energia no menu superior e selecione a opção.
Você pode realizar essa configuração acessando as “Preferências do Sistema” -> “Economizador de Energia” e ecolha o perfil de consumo que mais lhe interessa.

Maior Vida Útil da Bateria

Caso queira manter seu computador ligado por ainda mais tempo desabilite o Airport/Bluetooth (se não os estiver utilizando) e dimina a intensidade da tela.

Um ótimo utilitário pra acompanhar o rendimento de sua bateria é o Coconut Battery:
http://www.coconut-flavour.com/coconutbattery/

Calculando frete com a biblioteca cURL em PHP

Outubro 15th, 2007

A biblioteca cURL possibilita emular um browser e invocar qualquer recurso web com alto grau de controle sobre o acesso, parametrizando requisições, obtendo e tratando as respostas.

Suporta vários protocolos como, por exemplo: FTP, LDAP, HTTPS, telnet, uso de proxie, cookie, autenticação, upload em formulário HTTP e outros.

Nem sempre funções como fopen e file_get_contents resolvem. Pode ser necessário especificar o método de envio (GET ou POST), preencher formulários automaticamente, informar login e senha (conteúdo protegido) ou selecionar arquivos para upload.

Muito útil no desenvolvimento de robôs, unidades de teste, na intermediação de transações com operadoras de cartões de crédito, chamadas a outros sites (transformando os resultados), na utilização de serviços disponíveis em outros sistemas web, requisição de páginas que exijam suporte a cookies etc.

Nesse exemplo vamos implementar o cálculo de frete junto aos Correios (típico para sistemas de comércio eletrônico) utilizando um script oferecido pela Locaweb.

O objetivo é submeter dados pra esse recurso e tratar o resultado dentro de nossa aplicação, realizando a intermediação sem que haja o uso explícito do recurso - imperceptível ao usuário.
Essa vantagem proporciona conforto na navegação pois as requisições são feitas a partir do próprio ambiente e o resultado implícito é devidamente formatado e visualizado na propria interface.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://comercio.locaweb.com.br/correios/calcula_sedex.asp");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, cepOrig=$cep_origem&cepDest=$cep&pesoDeclarado=$peso_total&vlrDeclarado=$preco_total&metodo=leitura");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$retorno = curl_exec($ch);
curl_close($ch);

Dica: certifique-se de utilizar CEP sem traço, valores com vírgula (não ponto), peso arredondado e tratar o conteúdo armazendo em $retorno da forma que desejar.

Mais informações em:
http://br.php.net/manual/pt_BR/ref.curl.php
e no site oficial http://curl.haxx.se/

Zend Debugger

Julho 12th, 2007

Algumas vezes os códigos nos obrigam a identificar erros utilizando algum recurso mais preciso e direto.
No caso do PHP, os editores Zend Studio Enterprise e Eclipse (com o plugin PDT, da própria Zend) oferecem duas formas de debug: interna ou remota (no caso do Eclipse, somente remota).

Vamos mostrar como é a instalação e uso da ferramenta através do servidor.
Neste exemplo, a configuração será efetuada no pacote Wamp.

1) Preparando o servidor
Faça o download do Zend Debugger em:
http://downloads.zend.com/pdt/server-debugger/
Descompacte o software e localize o subdiretório que contenha o arquivo ZendDebugger.dll (ou .so) apropriado pra sua versão do PHP.
Copie num diretório a sua escolha e referencie essa biblioteca no php.ini, da seguinte forma:
zend_extension_ts=c:/wamp/ZendDebugger/ZendDebugger.dll
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
Copie o arquivo dummy.php (que está no pacote) para a raiz do servidor web e reinicialize o serviço.

2) Preparando o ambiente de desenvolvimento
Tools -> Preferences -> alça Debug
Em “Debug mode” escolha “Server”
“Server URL” coloque o endereço do servidor
A porta padrão é a 10000. Certifique-se de que o firewall não esteja bloqueando essa porta.
Execute o phpinfo(); e localize as informações semelhantes a imagem abaixo.

Zend Debugger instalado (phpinfo)

Ao invés de visualizar o resultado da execução na janela “Debug Output”, talvez seja interessante exibir diretamente num browser:
Tools -> Preferences -> alça Desktop
Em “Browser Configuration” desmarque a opção “Use Internal Browser”.
No campo “Browser Path” localize seu navegador favorito.

3) Rastreando os erros
Em códigos complexos, é comum se perder em laços e desconhecer o conteúdo das variáveis em determinados momentos.
Durante as iterações se faz necessário interromper a execução e verificar o que de fato está ocorrendo.
Usa-se então os “breakpoints”.
Como exemplo, observe o código abaixo:

<?php
  for ($i=0;$i<20$i++) {
    echo "Teste<br>";
  }
?>

Para adicionar pontos de parada no seu algoritmo, clique no número que corresponde a linha desejada.
Ela ficará com o cor de fundo rosada. Adicione quantos desejar.
Para identificar todos os breakpoints adicionados, clique no item “Breakpoints” na janela de Debug.

Clique em Debug -> Debug URL…
Em “Open Browser at” indique o caminho do script a ser checado.
“The source files used during this session will be taken from:” marque “The server”.
Confirme a operação e utilize a barra de ferramentas do Debug para avançar um loop ou escapar de uma iteração.
Vá acompanhando os resultados através da alça “Variables” na janela de Debug e também na saída da janela Debug.

Upload de múltiplos arquivos ao estilo GMail

Abril 29th, 2007

Nossos formulários de cadastro/edição geralmente continham campos do tipo “file” para upload de arquivos. Alguns sistemas permitiam a inclusão de vários arquivos, como uma galeria de fotos (por exemplo).
É difícil saber quantos arquivos o usuário vai adicionar. Resultava num formulário poluído com campos que, muitas vezes, nem eram utilizados.
Seguindo a adaptação de nossas bibliotecas para Ajax, sentimos a necessidade de criar um componente que facilitasse o uso e parametrização de uploads múltiplos. Nos “inspiramos” no layout do GMail para facilitar o uso do mecanismo.
Trata-se da versão 1.1 portanto suscetível a bugs e melhoramentos. Implementado sob os padrões da W3C, testado com êxito no Firefox, IE7 e Opera. Consiste numa solução JavaScript + PHP:
ico_zip.gif UploadGmailStyle
Obs.: disponibilizamos a versão 1.1.

Apenas uma recomendação: onde utilizar, mantenha os créditos da ACIMA Interactive :- )

Web 2 em 5 minutos - por Michael Wesch

Abril 20th, 2007

Imprimindo etiquetas: matricial x térmica

Abril 20th, 2007

Desenvolvemos um sistema para controle de eventos. Nos solicitaram impressão de etiquetas individuais para os crachás, a medida que as inscrições são feitas. Nesse caso não há como acumular cadastros e imprimir agrupado, em folhas contendo várias etiquetas.

Geralmente se utiliza impressora térmica. Como não havia disponibilidade, nos restou a alternativa de usar uma matricial. Seria uma maneira de imprimir sob demanda, sem desperdício de etiquetas e com praticidade.

Nosso sistema é implementado em PHP com visualização pelo browser. Sabidamente o controle de impressão é muito sensível, pois força o desenvolvedor a criar técnicas bem peculiares específicas pra cada situação - visando uma impressão correta, inevitavelmente engessando a solução. Precisávamos de precisão, independente de navegador ou ambiente.

Quando PHP executa sob plataforma Windows, existem funções para envio de comandos diretamente para a impressora: http://www.php.net/printer/. Nosso sistema rodava na Web em servidor Linux. Isso nos obrigaria migrar o sistema para Windows, rodando numa máquina local. O PHP sob Windows oferece funções que comunicam na porta LPT1 ou numa impressora compartilhada em rede Microsoft. Para habilitar esse recurso, adicione as seguintes linhas no php.ini:
extension=php_printer.dll
printer.default_printer = “Epson LX-300″

Essa última é opcional: no exemplo coloquei a Epson, pois foi esse modelo que trabalhamos.

Na etapa seguinte, quando submetíamos o documento, não conseguíamos fazê-la parar de passar o papel. Ela realizava a impressão corretamente mas avançava demais a folha, pulando várias etiquetas.

1a tentativa) Acessar as propriedades da impressora, “Preferências de impressão…”, aba “Papel/qualidade”, botão “Avançado”, item “Papel/saída”. O driver não oferecia muitas opções. Certamente a impressora continuaria correndo a página. A versão do driver pra Windows XP disponibilizada pela Epson não contempla um tamanho específico de folha.

2a tentativa) Definir um tamanho personalizado: Iniciar -> Configurações -> Impressoras e aparelhos de fax Menu Arquivo -> Propriedades do servidor -> Marcar “Criar um novo formulário”, especifique as dimensões, defina um nome e pressione “Salvar formulário”.

3a tentativa) Experimentar drivers alternativos como Epson LX-300+ e Epson LX-300II+.
Sem êxito.

4a tentativa) Foi preciso hackear o driver.
Alterando o arquivo C:\WINDOWS\system32\spool\drivers\w32×86\3\EPLX300.GPD. Dessa forma abre-se uma lista bem mais completa de tamanho de página nas configurações.
Foi um avanço porém, mesmo estipulando o tamanho exato e usando os comandos apropriados, a Epson continuava avançando a folha…

5a tentativa) Era preciso alterar as configurações internas da impressora, pois via software ela definitivamente não respeitava. No caso da Lx-300 o procedimento consistia em ligá-la mantendo a tecla FONT pressionada e executar uma combinação de luzes para cada opção.

Esse procedimento é explicado detalhadamente na página 52 do manual. Alteramos a propriedade “Page length” para 3 polegadas (altura mínima oferecida). Também a opção “Auto tear off” em off. Significa que o cabeçote pára exatamente onde terminou a impressão, sem deslocamento para a próxima folha.

Quando o PDF era enviado para a impressora, ele deslocava as 3 polegadas referente a altura estipulada na configuração. O “Auto tear off” funcionava apenas quando enviávamos em texto puro, através das funções de impressão do PHP. Nesse caso a qualidade era precária e não satisfazia mais, além do trantorno em migrar o sistema para uso local em Windows - a saída é direto na paralela do computador onde o servidor web está inslalado ou num compartilhamento da rede. Ex.: \\Servidor\lx300.

Gostaríamos de dar um acabamento melhor a etiqueta (fonte, tamanho, estilos).

Optamos por gerar um PDF “on-the-fly” através da FPDF ou Pear::File_PDF.

São bibliotecas que não necessitam da PDFLib instalada no PHP para funcionarem.

No caso da FPDF basta copiar os arquivos no filesystem, realizar o include, instanciar a classe e utilizar os diversos métodos disponíveis. Já a instalação do pacote File_PDF depende do repositório Pear. Leia esse artigo para mais detalhes.

Outra vantagem em utilizar essa técnica é de podermos continuar usando o sistema via Web. A intenção seria apenas instalar a impressora na estação e obter um PDF Reader. Ele se encarrega de enviar o documento para o spool de impressão local, no lado cliente. Nesse contexto a página avançava as 3 polegadas. Menos do que antes mas ainda deixava a desejar. Precisávamos parar o formulário na posição inicial, ou seja, que ela avance o suficiente para recomeçar na próxima etiqueta.

Em síntese:
* formatar o conteúdo da etiqueta em PDF consistia em aceitar a limitação da impressora matricial (quanto a altura), mas viabilizaria a manutenção do sistema no servidor remoto.

* enviar em modo caracter exigiria a instalação local do servidor web (Apache + PHP e bibliotecas + MySQL) e configuração do sistema. Perde portabilidade pois requer a configuração braçal do espaçamento e posicionamento (através de comandos chr) para aquele modelo de impressora, naquele tamanho específico de etiquetas.

Estéticamente a qualidade é péssima.

A solução ocorreu quando substituimos a matricial pela impressora térmica - modelo DYMO LabelWriter 310.

Pudemos então enviar o PDF da etiqueta (no tamanho adequado), sendo que a própria impressora controla o posicionamento na etiqueta seguinte. Até que enfim uma solução decente. Nossa prentensão nesse artigo foi transmitir a experiência de impressão via PHP, em documentos com tamanhos diferenciados como notas-fiscais, formulários e etiquetas. A influência do navegador impede um controle minucioso dos recursos de impressão. A linguagem ainda precisa amadurecer essa questão. Muitos depoimenos coletados na Internet sugerem o desenvolvimento de um cliente em Delphi ou Java que serve de interface para impressão. Nos recusamos a adotar essa solução pois acreditamos no PHP e nas possibilidades.

Instalando o repositório PEAR no WampServer

Abril 20th, 2007

Habilitando o PEAR nos serviços WAMP

Execute o arquivo C:\wamp\php\go-pear.bat
Obs.: na release 2.x do WampServer esse arquivo encontra-se na pasta:
c:\wamp\bin\php\php5.x.x\go-pear.bat
Responda as perguntas solicitadas pelo sistema. Em geral basta aceitar as sugestões padrão.
Dois cliques em C:\wamp\php\PEAR_ENV.reg para inserir informações ao registro do Windows.
Ajuste a diretiva include_path no php.ini adicionando o caminho C:\wamp\php\PEAR
Ex.: include_path = “.;C:\wamp\php\PEAR”
Reinicialize o Apache.

Pacotes da PEAR
Abra um prompt (Iniciar -> Executar -> Digite “cmd”)
cd c:\wamp\php\
Atualize a lista de pacotes disponíveis
pear remote-list

Para instalar utilize o parâmetro install:
pear install File_PDF

A release atual de alguns pacotes ainda estão na versão Beta ou Alpha, portando é preciso especificar:
pear install -f File_PDF
ou
pear install File_PDF-beta
ou
pear install channel://pear.php.net/File_PDF-0.2.0

Alguns casos o pacote necessita de dependências.
pear install –alldeps HTTP_Download

Mais informações você pode obter em:
http://pear.php.net/manual/en/installation.cli.php